Вышел Coil 3.1.0 - популярный загрузчик картинок с поддержкой KMP
👉 Улучшили производительность AsyncImage: скорость работы стала лучше на 25-40%, а потребление памяти - на 35-48%
👉 FakeImage теперь deprecated
👉 Появился ColorImage - полезен для возвращения фейковых значений в тестах и для Compose превью
👉 coil-compose-core больше не зависит от
🛠 Множество других исправлений и улучшений API
#kmp #android #compose
👉 Улучшили производительность AsyncImage: скорость работы стала лучше на 25-40%, а потребление памяти - на 35-48%
👉 FakeImage теперь deprecated
👉 Появился ColorImage - полезен для возвращения фейковых значений в тестах и для Compose превью
👉 coil-compose-core больше не зависит от
Dispatchers.Main.immedate, что позволило исправить баги в работе Paparazzi и Roborazzi🛠 Множество других исправлений и улучшений API
#kmp #android #compose
👍25
  Используете runBlocking в продакшен коде приложений (не тесты)?
  Anonymous Poll
    32%
    Да
      
    57%
    Нет
      
    3%
    Не знаю
      
    7%
    Не участвую в опросе
      
    👍5
  KMP for Mobile Native Developers: The Book - открытая онлайн книга про KMP.
Что входит:
1️⃣ Введение в KMP
2️⃣ Базовая структура проекта
3️⃣ Dependency Injection
4️⃣ Модуляризация
5️⃣ Тестирование
6️⃣ Использование нативных библиотек в KMP
7️⃣ Библиотеки: сеть, хранилище, база данных, Jetpack KMP
#kmp
Что входит:
#kmp
Please open Telegram to view this post
    VIEW IN TELEGRAM
  1❤49👍14🔥12🎉1
  На основе обратной связи от партнеров JetBrains отказалась от разработки отдельной IDE для KMP разработки, а также свернет поддержку KMP в Fleet к июню 2025.
🎉 Поддержка KMP будет сделана в IntelliJ IDEA and Android Studio. Жду когда все фичи из Fleet для KMP перейдет в IDEA
Лично меня новость очень порадовала, чтобы не плодилось кучу IDEA
#kmp #idea #fleet
Please open Telegram to view this post
    VIEW IN TELEGRAM
  🎉72👍6❤2
  Junie - новый кодинг ассиcтент от JetBrains. На момент выхода поста находится в EAP
#idea #ai #jetbrains
#idea #ai #jetbrains
❤11👍4
  💡Делайте как можно меньше public
Представьте, что вы случайно сделали внутреннюю функцию публичной – и ваш Gradle-модуль начинает "протекать" наружу лишним кодом. Неявное указание модификаторов доступа может привести к тому, что даже те классы и функции, которые вы планировали использовать только внутри модуля, становятся частью публичного API. Это усложняет поддержку и тестирование, а также увеличивает риск возникновения нежелательных зависимостей.
Решение? Включите Kotlin Explicit Mode (введён в Kotlin 1.4)! С включением этой опцией разработчики будут обязаны явно указывать модификаторы доступа для всех элементов. Таким образом, вы контролируете, что именно экспортируется, и защищаете внутреннюю логику от случайного использования.
Пример настройки в Gradle
Рекомендация: используйте internal или private, а к public прибегайте только тогда, когда вы точно понимаете, что этот API должен быть доступен в модулях, подключивших ваш код.
Это небольшое усилие на этапе разработки поможет сохранить чистоту архитектуры и упростить поддержку вашего кода в будущем. Хотя данная функция рекомендуется для авторов библиотек, в современных многомодульных проектах, где работает целая команда разработчиков, она позволяет эффективно ограничить доступ к API из других модулей.
#kotlin #лучшиепрактики
Представьте, что вы случайно сделали внутреннюю функцию публичной – и ваш Gradle-модуль начинает "протекать" наружу лишним кодом. Неявное указание модификаторов доступа может привести к тому, что даже те классы и функции, которые вы планировали использовать только внутри модуля, становятся частью публичного API. Это усложняет поддержку и тестирование, а также увеличивает риск возникновения нежелательных зависимостей.
Решение? Включите Kotlin Explicit Mode (введён в Kotlin 1.4)! С включением этой опцией разработчики будут обязаны явно указывать модификаторы доступа для всех элементов. Таким образом, вы контролируете, что именно экспортируется, и защищаете внутреннюю логику от случайного использования.
Пример настройки в Gradle
kotlin {
    // Без указания модификатора доступа код не скомпилируется
    explicitApi()
    // или
    explicitApi = ExplicitApiMode.Strict
    // Сборка пройдет успешно, но в логах появятся предупреждения
    explicitApiWarning()
    // или
    explicitApi = ExplicitApiMode.Warning
}Рекомендация: используйте internal или private, а к public прибегайте только тогда, когда вы точно понимаете, что этот API должен быть доступен в модулях, подключивших ваш код.
Это небольшое усилие на этапе разработки поможет сохранить чистоту архитектуры и упростить поддержку вашего кода в будущем. Хотя данная функция рекомендуется для авторов библиотек, в современных многомодульных проектах, где работает целая команда разработчиков, она позволяет эффективно ограничить доступ к API из других модулей.
#kotlin #лучшиепрактики
🔥49👍23👎1
  🚀 Ktor 3.1.0 уже здесь!
JetBrains выпустила новый минорный релиз, который приносит множество полезных обновлений для Android-разработчиков.
👉 Новый CLI-конфигуратор – генерация проектов стала проще.
👉 Поддержка SSE – улучшенная сериализация и heartbeat-события.
👉 Multipart в HttpClient – удобная работа с загрузкой файлов.
👉 Экспериментальная поддержка WASM – новые горизонты для Ktor.
👉 Начало интеграции gRPC – первый шаг к мощной серверной коммуникации.
👉 Движок на основе Curl больше не требует установки сторонних зависимостей, поддерживает ARM и WebSocket
#kotlin #ktor #wasm #grpc
JetBrains выпустила новый минорный релиз, который приносит множество полезных обновлений для Android-разработчиков.
👉 Новый CLI-конфигуратор – генерация проектов стала проще.
👉 Поддержка SSE – улучшенная сериализация и heartbeat-события.
👉 Multipart в HttpClient – удобная работа с загрузкой файлов.
👉 Экспериментальная поддержка WASM – новые горизонты для Ktor.
👉 Начало интеграции gRPC – первый шаг к мощной серверной коммуникации.
👉 Движок на основе Curl больше не требует установки сторонних зависимостей, поддерживает ARM и WebSocket
#kotlin #ktor #wasm #grpc
🔥32👍9🎉3❤1
  Кажется, я совсем недавно еще работал с бета-версиями первой версии Kotlin, писал приложения с расписанием для университета, где учился, чтобы попробовать эту технологию. Тогда была только поддержка JVM и проводились эксперименты с JS.
Сегодня Kotlin - это уже целая экосистема
Уже появилось поколение разработчиков, которые начали свой путь именно с Kotlin для разработки под Android 🤯🤯🤯
Поделитесь в комментариях под постом в @kotlin_broadcast своей историей знакомства с этим языком и тем, что вас привлекло в нем.
#kotlin
Please open Telegram to view this post
    VIEW IN TELEGRAM
  ❤65🔥14👍8🎉7
  Forwarded from Kotlin Adept Notes (Alex Panov)
Decompose Detekt Rules
Я написал кастомные правила для Detekt, которые будут полезны в каждом проекте с Decompose.
На данный момент в библиотеке есть два правила:
🟣 DecomposeComponentContextRule — проверяет, что вы не создаете ComponentContext внутри Composable функций, так как это может привести к падениям в рантайме.
🟣 SerializableDiscriminatorRule — это правило не относится напрямую к Decompose, но тесно с ним связано. Оно проверяет, что в конфигурации компонента не указаны свойства, совпадающие с дискриминатором класса в kotlinx.serialization, подробнее про это здесь.
Правила работают с обычной конфигурацией Detekt, без type resolution. Также я не пытался охватить все возможные краевые кейсы, поэтому, если в вашем проекте они не работают, смело зводите issue.
🐱  Документация и инструкция по подключению находится здесь.
Я написал кастомные правила для Detekt, которые будут полезны в каждом проекте с Decompose.
На данный момент в библиотеке есть два правила:
Правила работают с обычной конфигурацией Detekt, без type resolution. Также я не пытался охватить все возможные краевые кейсы, поэтому, если в вашем проекте они не работают, смело зводите issue.
Please open Telegram to view this post
    VIEW IN TELEGRAM
  ❤24🔥5👍1👎1
  Используйте Kotlin Sequences ?
  Anonymous Poll
    22%
    Что это?
      
    34%
    Знаю, но не использую
      
    33%
    Использую очень редко
      
    6%
    Использую регулярно
      
    1%
    Не пишу на Kotlin
      
    4%
    Не участвую в опросе
      
    👍12❤2
  Kotlin Sequences - это API для процессинга набора данных, где каждый оператор в цепочке обрабатывает каждый элемент в последовательности, а не все элементы на каждом шаге оператора
Операторы Kotlin Std Lib для коллекций на каждом этапе обрабатывают все элементы.
Сравнение работы таких подходов вы найдете в статье "Should you use Kotlin Sequences for Performance?" (EN, 5 минут).
Операторы Kotlin Std Lib для коллекций на каждом этапе обрабатывают все элементы.
Сравнение работы таких подходов вы найдете в статье "Should you use Kotlin Sequences for Performance?" (EN, 5 минут).
🔥18👍10❤1
  Какая нейросеть лучше для помощи с Kotlin кодом?
  Anonymous Poll
    5%
    OpenAI o1
      
    11%
    DeepSeek-R1
      
    5%
    OpenAI o3-mini
      
    4%
    Google Gemini 2.0 Flash
      
    6%
    Anthropic Claude 3.5 Sonnet
      
    14%
    OpenAI GPT-4o
      
    3%
    Другая
      
    52%
    Не участвую в опросе
      
    👍5
  JetBrains провела сравнение популярных AI моделей, оценивая, как они отвечают на вопросы, связанные с Kotlin. Для этого они создали свой бенчмарк - KotlinHumanEval. Победители:
Второй бенчмарк - Kotlin_QA, который проверяет, как модель качественно отвечает на вопросы по Kotlin и объясняет, что делает Kotlin-код. Dev Advocate собрали 47 популярных вопросов и отправили нейросеткам. Победители второго теста поменялись:
#kotlin #ai #jetbrains
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍45
  🔥26
  Разбор Kotlin Guard в when (EN, 12м) из Kotlin 2.1 (фиче в экспериментальном статусе)
🔗 Ссылка без VPN
#kotlin
🔗 Ссылка без VPN
#kotlin
👍20