Как работает Gradle
Команда Gradle начала новую серию постов про разные интересные детали того, как работает билд тулинг. В первом посте разбирается, чем отличаются разные способы запуска билда и что происходит в каждый момент под капотом.
Команда Gradle начала новую серию постов про разные интересные детали того, как работает билд тулинг. В первом посте разбирается, чем отличаются разные способы запуска билда и что происходит в каждый момент под капотом.
Бесплатные вебинары от Gradle
Только блогом активность Gradle не ограничивается. В январе пройдет несколько интересных вебинаров, которые открыты всем для участия:
📆Воркшоп по ускорению билдов и траблшутингу, 24 января
📆Интервью Николая Красько, тимлида инфраструктурной команды в Kotlin, про то, как оптимизируется опыт разработчиков внутри команды Kotlin, 25 января
📆Воркшоп по разным аспектам конфигурации Gradle с помощью Kotlin DSL, 26 января
📆Deep dive в Maven Build Cache, 31 января
Только блогом активность Gradle не ограничивается. В январе пройдет несколько интересных вебинаров, которые открыты всем для участия:
📆Воркшоп по ускорению билдов и траблшутингу, 24 января
📆Интервью Николая Красько, тимлида инфраструктурной команды в Kotlin, про то, как оптимизируется опыт разработчиков внутри команды Kotlin, 25 января
📆Воркшоп по разным аспектам конфигурации Gradle с помощью Kotlin DSL, 26 января
📆Deep dive в Maven Build Cache, 31 января
Develocity
Events & Trainings
Как Lyft собирает метрики потребления памяти в проде
Для каждой новой фичи, выпускаемой в виде эксперимента, Lyft дополнительно собирает различные технические метрики, в частности, потребление приложением памяти. Если при включенном эксперименте оно повышается, это служит сигналом наличия утечки памяти.
В статье рассказывается о метриках, по которым можно судить о потреблении памяти, границах их применимости, особенностях сбора и анализа.
Для каждой новой фичи, выпускаемой в виде эксперимента, Lyft дополнительно собирает различные технические метрики, в частности, потребление приложением памяти. Если при включенном эксперименте оно повышается, это служит сигналом наличия утечки памяти.
В статье рассказывается о метриках, по которым можно судить о потреблении памяти, границах их применимости, особенностях сбора и анализа.
Релиз compose.compiler 1.4.0
Вышла новая версия androidx.compose.compiler с поддержкой Kotlin 1.8.0. Промежутки между релизами Kotlin и совместимой версии Compose становятся все меньше, это радует!
Вышла новая версия androidx.compose.compiler с поддержкой Kotlin 1.8.0. Промежутки между релизами Kotlin и совместимой версии Compose становятся все меньше, это радует!
Android Developers
Compose Compiler | Jetpack | Android Developers
Как работает Activity
Цикл из двух статей, в которых разбирается, как стартует процесс приложения и все Activity, как показывается сплеш-скрин, в чем суть концепции Window, как вызываются методы жизненных циклов Activity и что происходит с Activity при сворачивании и разворачивании.
Цикл из двух статей, в которых разбирается, как стартует процесс приложения и все Activity, как показывается сплеш-скрин, в чем суть концепции Window, как вызываются методы жизненных циклов Activity и что происходит с Activity при сворачивании и разворачивании.
Роадмап Koin на 2023
Koin переходит на шестимесячный релизный цикл, синхронизированный с Kotlin. Основные планы (H1 – первый мажорный релиз, H2 – второй):
*️⃣KMM Compose API (H1/H2)
*️⃣Улучшения Koin Annotations (H1/H2)
*️⃣Оптимизация кишков (H2)
*️⃣Бридж с iOS и Kotlin Native (H1/H2)
*️⃣DSL и аннотации для Graph Test API (H2)
*️⃣Поддержка новых фичей Ktor (H1/H2)
Koin переходит на шестимесячный релизный цикл, синхронизированный с Kotlin. Основные планы (H1 – первый мажорный релиз, H2 – второй):
*️⃣KMM Compose API (H1/H2)
*️⃣Улучшения Koin Annotations (H1/H2)
*️⃣Оптимизация кишков (H2)
*️⃣Бридж с iOS и Kotlin Native (H1/H2)
*️⃣DSL и аннотации для Graph Test API (H2)
*️⃣Поддержка новых фичей Ktor (H1/H2)
Всем привет! Мы в команде Kotlin очень хотим пообщаться с теми, кто активно разрабатывает проекты на Flutter или React Native. Или, наоборот, попробовал, а потом вернулся к нативной разработке. Если готовы созвониться, рассказать про свой опыт и поотвечать на наши вопросы – заполняйте форму, за участие в интервью отсыпаем всяких ништяков.
Важный момент – эти ништяки мы отсыпать можем только тем, кто находится не в России/Беларуси, поэтому стоит отзываться, только если вы сейчас находитесь за пределами.
Важный момент – эти ништяки мы отсыпать можем только тем, кто находится не в России/Беларуси, поэтому стоит отзываться, только если вы сейчас находитесь за пределами.
Зачем нужен тип Either в ArrowKt
Arrow.Kt – библиотека, которая дает кучу типов и абстракций, которые помогают писать на Kotlin в функциональном стиле. Один из ее типов – Either. Он может содержать в себе значения одного из двух явно указанных типов. Самый стандартный юзкейс для него – быть одновременно и типом данных, представляющим успешный ответ сервера, и типом, представляющим ошибку с деталями.
Arrow.Kt – библиотека, которая дает кучу типов и абстракций, которые помогают писать на Kotlin в функциональном стиле. Один из ее типов – Either. Он может содержать в себе значения одного из двух явно указанных типов. Самый стандартный юзкейс для него – быть одновременно и типом данных, представляющим успешный ответ сервера, и типом, представляющим ошибку с деталями.
Новый UI доступен в Android Studio
В Android Studio Giraffe Canary 2 появилась возможность включить новый UI. Пробуйте и рассказывайте в комментах, что удобно, а что – не очень.
В Android Studio Giraffe Canary 2 появилась возможность включить новый UI. Пробуйте и рассказывайте в комментах, что удобно, а что – не очень.
dependency-guard – плагин для контроля зависимостей
В большой команде периодически возникают проблемы с изменением версий или добавлением зависимостей. Можно случайно добавить в продакшн тестовую зависимость, или вызвать креш в рантайме из-за поднятой версии какой-то из транзитивных зависимостей. Gradle-плагин dependency-guard позволяет это контролировать.
Он генерирует файл, содержащий явный список всех транзитивных зависимостей и их версий, что дает возможность следить за изменениями на PR и составлять черные списки библиотек.
В большой команде периодически возникают проблемы с изменением версий или добавлением зависимостей. Можно случайно добавить в продакшн тестовую зависимость, или вызвать креш в рантайме из-за поднятой версии какой-то из транзитивных зависимостей. Gradle-плагин dependency-guard позволяет это контролировать.
Он генерирует файл, содержащий явный список всех транзитивных зависимостей и их версий, что дает возможность следить за изменениями на PR и составлять черные списки библиотек.
GitHub
GitHub - dropbox/dependency-guard: A Gradle plugin that guards against unintentional dependency changes.
A Gradle plugin that guards against unintentional dependency changes. - dropbox/dependency-guard
Профилирование и оптимизация Compose
Разбор возможных проблем, которые могут повлечь за собой лишние рекомпозиции и ухудшить перфоманс Compose, и инструментов, которые помогают в дебаге.
Разбор возможных проблем, которые могут повлечь за собой лишние рекомпозиции и ухудшить перфоманс Compose, и инструментов, которые помогают в дебаге.
Сериализация sealed interfaces с kotlinx.serialization
В статье разбирается, как с помощью поддержки полиморфизма в kotlinx.serialization можно написать сериализатор, выюирающий разные классы в зависимости от значения поля type.
В статье разбирается, как с помощью поддержки полиморфизма в kotlinx.serialization можно написать сериализатор, выюирающий разные классы в зависимости от значения поля type.
Что происходит со Scala
На этой неделе вышел топовый пост про текущее состояние Scala, ее проблемы и возможные пути будущего развития. Очень советую даже тем, кто со Scala совсем не имеет дела – путь, выбранный языком, сильно отличается от Kotlin, и сравнивать их друг с другом очень интересно.
На этой неделе вышел топовый пост про текущее состояние Scala, ее проблемы и возможные пути будущего развития. Очень советую даже тем, кто со Scala совсем не имеет дела – путь, выбранный языком, сильно отличается от Kotlin, и сравнивать их друг с другом очень интересно.
John A De Goes
Scala Resurrection
Scala's market may not grow any larger unless we take action to address the challenges the language faces
Совместимость библиотек и binary-compatibility-validator
В статье разбирается несколько типов совместимости, о которых должны думать авторы библиотек: backward/forward и source/binary compatibility. А для того, чтобы авторы библиотек случайно ломали binary совместимость, есть binary-compatibility-validator.
В статье разбирается несколько типов совместимости, о которых должны думать авторы библиотек: backward/forward и source/binary compatibility. А для того, чтобы авторы библиотек случайно ломали binary совместимость, есть binary-compatibility-validator.
Релиз Kotlin 1.8.10
Вышла патч-версия для последнего мажорного релиза Kotlin с исправлениями багов в новом фронтенде, serialization плагине, Gradle и Kapt.
Вышла патч-версия для последнего мажорного релиза Kotlin с исправлениями багов в новом фронтенде, serialization плагине, Gradle и Kapt.
GitHub
Release Kotlin 1.8.10 · JetBrains/kotlin
Changelog
Compiler
KT-55483 K2: Fir is not initialized for FirRegularClassSymbol java/lang/invoke/LambdaMetafactory
KT-55729 "None of the following functions can be called with the arguments ...
Compiler
KT-55483 K2: Fir is not initialized for FirRegularClassSymbol java/lang/invoke/LambdaMetafactory
KT-55729 "None of the following functions can be called with the arguments ...
Планы Kotlin по улучшению опыта авторов библиотек
Опыт авторов библиотек – один из приоритетов команды Kotlin на ближайший год. В частности, планируется сделать следующее:
✍️Улучшить синтаксис и тулинг для KDoc
🗒️Выпустить стабильную Dokka
📚Написать подробный гайд с лучшими практиками по дизайну JVM и мультиплатформенных библиотек
Опыт авторов библиотек – один из приоритетов команды Kotlin на ближайший год. В частности, планируется сделать следующее:
✍️Улучшить синтаксис и тулинг для KDoc
🗒️Выпустить стабильную Dokka
📚Написать подробный гайд с лучшими практиками по дизайну JVM и мультиплатформенных библиотек
The JetBrains Blog
We Are Improving Library Authors' Experience! | The Kotlin Blog
Improvements for library authors’ experience planned and what’s already been done, particularly the Dokka documentation update.
Как Square оптимизировал время билда
Команды Square подбивает итоги последнего года работы команды, которая занималась оптимизацией Gradle билда. Основная идея – даже для очень больших проектов можно оптимизировать работу Gradle настолько, чтобы сделать миграцию на Bazel или другую новую билд-систему бессмысленной.
Команды Square подбивает итоги последнего года работы команды, которая занималась оптимизацией Gradle билда. Основная идея – даже для очень больших проектов можно оптимизировать работу Gradle настолько, чтобы сделать миграцию на Bazel или другую новую билд-систему бессмысленной.
Релиз Compose Multiplatform 1.3.0
Вышел новый релиз мультиплатформенного Compose, в котором поправили баги, подтянули версии используемых зависимостей до актуальных, и завезли несколько новых фичей для Compose Desktop.
Вышел новый релиз мультиплатформенного Compose, в котором поправили баги, подтянули версии используемых зависимостей до актуальных, и завезли несколько новых фичей для Compose Desktop.
GitHub
Release 1.3.0 · JetBrains/compose-multiplatform
Common
Fixes
Fix configuration cache issues
Use global directory to download wix toolset
IDEA plugin - Redo: set until-build to undefined value
Desktop
Features
Desktop AlertDialog scrim color
M...
Fixes
Fix configuration cache issues
Use global directory to download wix toolset
IDEA plugin - Redo: set until-build to undefined value
Desktop
Features
Desktop AlertDialog scrim color
M...
Вышла первая Beta версия Kotlin 1.8.20
🕸️Kotlin/Wasm официально вышел в статус Experimental, с поддержкой в stdlib и kotlin.test. Код, скомпилированный Kotlin/Wasm, будет запускаться в последних версиях Chrome, Firefox и Edge со специальным включенным флагом.
🏎️Новая инкременталка для Kotlin/JVM включена по дефолту.
☠️Задепрекейчена часть таргетов Kotlin/Native. Детали описаны в отдельном блогпосте.
🧱В мультиплатформу завезли поддержку Gradle Composite Builds.
🤩В стандартной библиотеке появилась экспериментальная поддержка Base64 и common Closeable интерфейса.
А самое главное – заспойлерили, что один из следующих мажорных релизов будет называться Kotlin 2.0!
🕸️Kotlin/Wasm официально вышел в статус Experimental, с поддержкой в stdlib и kotlin.test. Код, скомпилированный Kotlin/Wasm, будет запускаться в последних версиях Chrome, Firefox и Edge со специальным включенным флагом.
🏎️Новая инкременталка для Kotlin/JVM включена по дефолту.
☠️Задепрекейчена часть таргетов Kotlin/Native. Детали описаны в отдельном блогпосте.
🧱В мультиплатформу завезли поддержку Gradle Composite Builds.
🤩В стандартной библиотеке появилась экспериментальная поддержка Base64 и common Closeable интерфейса.
А самое главное – заспойлерили, что один из следующих мажорных релизов будет называться Kotlin 2.0!