Kotlin Multiplatform Broadcast
9.68K subscribers
890 photos
55 videos
1.23K links
Новости и фичи Kotlin, а также Kotlin Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Compose Multiplatform @compose_broadcast
iOS разработка @ios_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
💉 Koin получил получит Compile Time Safety через плагин Kotlin компилятора, а пока пора на него переходить, чтобы отказаться от KSP

Готовится к релизу Koin 4.2 где уже в RC версии появился Gradle плагин, которые будет использоваться для включения Compile Time Safety в будущем. Плагин способен работать с Koin Annotations и традиционным DSL подходом.

Что нужно сделать
1️⃣ Обновить Koin до версии 4.2 или выше
2️⃣ Подключить Gradle плагин io.insert-koin.compiler.plugin

Сложность может быть одна - нужен Gradle 8.X и Kotlin 2.3.20, а по результатам опроса не всего на него перешли

🔗 Источник - официальный блог Koin на Medium

#Kotlin #Koin #KMP
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36👍7👎2🤔2
🏝 Вышел Kotlin 2.3.10 - багфикс версии 2.3.0

Что важного в исправлениях
⚙️ Поправили работу с Compose Multiplatform
👉 Исправлены баги в рефлексии
‼️ Исправлены критичные баги компилятора
🛠 Исправление проблемы с null типами

Кажется пора переехать на новую версию и посмотреть, подойдет ли она вам

🐱 Список изменений на GitHub

💬 Делитесь вашим опытом миграции и починило ли проблемы

#Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍103👏1
🐱 AutoService IR - Правильный AutoService плагин для Kotlin/JVM проекта

Для тех кто активно используется Kotlin на JVM и любит работать с Auto Service - теперь есть решение которое под капотом полностью работает на Kotlin и его технологиях без хождения в Java механизмы генерации.

// Подключаем Gradle плагин AutoService IR
plugins {
kotlin("jvm") version "2.3.0"
id("com.fueledbycaffeine.autoservice") version "<latest>"
}

// Пример использования
import com.fueledbycaffeine.autoservice.AutoService

// Описываете ваш сервис
interface Logger {
fun log(message: String)
}

// Добавляете @AutoService аннотацию
@AutoService
class ConsoleLogger : Logger

// Еще вариант объявления
@AutoService(Logger::class)
class FileLogger : Logger


🏆Переходите с Google AutoService на AutoService IR. Для простоты миграции сделали режим совместимости с Google аннотациями AutoService

#Kotlin #JVM #OpenSource
Please open Telegram to view this post
VIEW IN TELEGRAM
6👎4👍1
🏝 Серия статей от JetBrains про Koog и AI‑агентов в Kotlin

JetBrains выкатили очень приличную серию «Building AI Agents in Kotlin» про Koog.

Koog — это официальный open‑source фреймворк от JetBrains для сборки AI‑агентов на Kotlin с идиоматичным Kotlin DSL и мультиплатформенной поддержкой


1️⃣ A Minimal Coding Agent
Старт с нуля: собираем минимального coding‑агента на Koog, который умеет читать/редактировать файлы в проекте и применять изменения через инструменты. По сути, «LLM + tools» в виде нормальной Kotlin‑архитектуры.

2️⃣ A Deeper Dive Into Tools
Дальше копают в сторону tools: как описывать инструменты, прокидывать параметры, интегрироваться с внешними сервисами и оборачивать всё это в удобные Kotlin‑абстракции. Хорошо показывает, как не превратить агента в «god‑object».

3️⃣ Under Observation
Этот выпуск про наблюдаемость: логирование шагов агента, трейсинг tool‑вызовов, что именно решает LLM и где всё ломается. Полезно, если вы хотите не «магический чёрный ящик», а систему, которую можно дебажить.

4️⃣Delegation and Sub‑Agents
Как только один агент начинает уметь слишком много, появляется потребность в делегации. Здесь как раз показывают sub‑agents, композицию агентов через tools и разбиение сложных задач на специализированные роли.

5️⃣Teaching Agents to Forget
Финальная часть про память и «забывание»: как управлять историей, не раздувая контекст до бесконечности, какие куски опыта агента сохранять, а какие сбрасывать, чтобы он оставался полезным и дешёвым.

Если вы смотрите в сторону своих AI‑агентов на Kotlin (IDE‑помощник, internal‑бот, автотюнинг CI и т.д.), серия даёт очень неплохой «скелет» архитектуры на Koog: от минимального агента до наблюдаемости, делегации и памяти.

Также эта серия статей поможет вам понять как устроены современные AI агенты.

#Kotlin #AI #Koog
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍9👎2🤔1
💉 Выпустил первый релиз detekt-rules-koin — Detekt-расширение с 51 правилом для Koin 4.x

Если используете Koin и Detekt, то знаете, что стандартный Detekt ничего не знает о специфике Koin. Можно написать рабочий, но проблемный код — и никаких предупреждений.

Что ловит библиотека:
👉 Service Locator антипаттерны (5 правил)
👉 Ошибки в Module DSL (14 правил)
👉 Проблемы управления скоупами (8 правил)
👉 Platform-специфичные проблемы (8 правил)
👉 Архитектурные нарушения (4 правила)
👉 Koin Annotations (12 правил)

Подключение:
// build.gradle.kts
dependencies {
detektPlugins("dev.androidbroadcast.rules.koin:detekt-koin4-rules:1.0.0")
}


Требования: Kotlin 2.0+, Detekt 1.23.8+, Koin 4.x

🐱 GitHub Репо

Жду фидбэк — каких не хватает, ложные срабатывания, что настраивается неудобно и всё всё. Пишите в комментариях к этому посту или в Issues репозитория 🙌
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👎7👍2
Forwarded from Aurora Developers (Vitaliy Zarubin)
🔥 Compose Multiplatform доступен на ОС Аврора!

Отличные новости для Kotlin-сообщества и всех, кто интересуется российской мобильной разработкой. Теперь вы можете создавать приложения для ОС Аврора, используя современный и привычный инструментарий — Kotlin и Compose Multiplatform.

Что опубликовано:
В репозитории на mos.hub выложены компоненты, необходимые для разработки:

- Проекты Compose Multiplatform для сборки.
- Готовые артефакты в репозитории Aurora Maven.
- Плагин для Gradle, упрощающий сборку приложений.

Что дальше?
В планах — расширение поддержки платформы и стабилизация проекта. А уже сейчас в документации вы найдете подробное руководство по началу работы, а также два демонстрационных приложения, которые помогут быстро разобраться с особенностями платформы.

👉 Документация

Хотите помочь проекту стать лучше?
Присоединяйтесь к разработке на mos.hub! Мы открыты к вашему коду и экспертизе. Только #ВМЕСТЕ мы сможем сделать инструмент максимально полезным для всего сообщества.

👉 Репозиторий
🔥46👎41🤔115
🏝 В последнее время новостей про Kotlin в инете совсем немного. Только в выход новой версии Kotlin и на Kotlin Conf. Стагнация или неспешный ритм разработки?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔22👎3👍2
🏝 Каждые полгода JetBrains проводит ревью: что сделали, что не сделали, как переоценивают приоритеты.

Вчера обновили Kotlin roadmap. И там произошло много интересного.
За полгода завершили 14 пунктов (Swift Export finally released, улучшения в Gradle, стабилизация Kotlin/Native). Добавили новые направления (и это индикатор того, что команда видит пробелы в экосистеме). Убрали несколько старых (это тоже информация — о чем они отказались и почему).

Дальше я разберу каждое направление отдельно: что произошло в мультиплатформе, что с инструментами, как развивается язык и экосистема. Потому что в одном посте это просто каша будет.

🔗 Roadmap тут

#Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍11👎1🤔1
🏝 Kotlin язык: от синтаксиса к семантике

Когда я смотрю на roadmap, первое, что кидается в глаза — четыре ключевых приоритета. И один из них звучит просто: "Language evolution: keep Kotlin concise and expressive, prioritizing meaningful semantics over ceremony." Это значит что новых фичей в синтаксисе будет меньше и приоритет улучшению семантики

Это важно для долгосрочных проектов, которые втянут Kotlin — ты теперь знаешь, что Kotlin не будет делать breaking changes ради новой фишки. Код, написанный сегодня, будет понятен и работать через год.

Второй пункт в списке после развития языка - Kotlin Multiplatform. В целом уже и так было понятно важность этого направления развития Kotlin

#Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21👎1
🏝 K2 компилятор и incremental compilation для KMP: ремонт того, что было

Если ты используешь KMP, то ты знаешь боль: сборка проекта занимает времени. Особенно когда меняешь common код. Почему? Потому что когда JetBrains переходили на K2 компилятор, они изменили схему компиляции. Инкрементальная сборка вдруг перестала работать для KMP проектов так, как работала до Kotlin 2.X.

Реализация будет в июне 2026 года. Ждем.

💬 А вы заметили регресс инкрементальной сборки?

#Kotlin #K2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🤔8👎1🥰1
🏝 Что сделали в Kotlin за последние 6 месяцев (с августа 2025 по февраль 2026):

Компилятор:
JSpecify support (null-safety в интеропе с Java)
K1 компилятор deprecated (K2 теперь основной)
Kotlin/Wasm Beta

Мультиплатформа:
CMS GC by default (производительность)
KMP IDE plugin на Windows и Linux
Compose for Web в Beta
Compose Hot Reload в Stable

Инструменты:
K2 mode вIDEA теперь основной режим
Улучшение импортов (IDE работает быстрее)
NPM publishing для JS/Wasm артефактов
Улучшили опыт разработки под Kotlin/Wasm в IDEA

Экосистема:
OpenAPI для Ktor
WebRTC client в Ktor
Exposed 1.0.0 (работа с БД)
Поддержка R2DBC в Exposed

#Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥10👎1🤔1
🏝 kotlinx.collections.immutable будут стабилизировать в ближайшие полгода

После долгих лет в experimental статусе, JetBrains планируют стабилизировать kotlinx.collections.immutable. Добавят новые типы (PersistentOrderedSet, PersistentHashSet), улучшат API, документацию. Может вовсе стоит их сделать частью stdlib ?

Это долгожданная новость. Но вот интересный вопрос: нужна ли она вообще сейчас?

Immutable collections были критичны для Compose, потому что помогали избежать рекомпозиций. Но потом пришел Strong Skipping Mode в Compose. И теперь Compose намного умнее в том, что перерисовывать и что нет. Нужна ли immutable collection для этого теперь? Я честно не знаю ответ. 🤷

Потому что вопрос к вам:
👉 Кто сейчас юзает immutable collections в Compose проектах? Зачем?
👉 Помогает ли это производительности, или это уже не нужно?
👉 Где вы их юзаете еще, кроме Compose?
👉 А может быть, наоборот, нужны еще больше?

💬 Пишите в комментариях — помогите разобраться

#Kotlin #KotlinX #Compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍233🙏2👎1
🏝 Kotlin stdlib будут поддерживаться 18 месяцев

JetBrains будет поддерживать новые версии Kotlin Stdlib на протяжении 18 месяцев. Это значит: если ты обновился на какую-то версию Kotlin — JetBrains гарантирует исправления уязвимостей и критические баги для этой версии. Потом можешь обновляться, когда будешь готов.

Кому это вообще нужно? Командам кто не гонится за новыми фичами и обновлениями. Новая версия выходит, а с ней баги или непредсказуемое поведение:
👉 Tooling не подтянулся
👉 Просто нет времени на большое обновление
👉 У вас внешние требования и надо всё перепроверять перед обновлением

‼️ Это важный сигнал - Kotlin взрослеет и становится более production-ready в другом смысле. Kotlin 1.X был про "новые фишки каждую версию". Версии 2.X это про стабильность. JetBrains готовы поддерживать долгую версию — исправления уязвимостей, критические баги, без принуждения обновляться на новые версии языка.

Это как Java с LTS-версиями. Есть гарантии и предсказуемость, что важнее новых фичей.

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👎9👍5🤔2
This media is not supported in your browser
VIEW IN TELEGRAM
🐱 TwoFac - KMP приложения двухэтапной верификации, которое написано активно при использовании AI

По дизайну - копия Google Authenticator на основе Material 3.

#OpenSource #KMP #Android #IOS #Desktop
Please open Telegram to view this post
VIEW IN TELEGRAM
👎86👍6🔥2
🤯 «Если работает — какая разница, что там внутри» — так думает любой менеджер. Посмотрите на свой стек: сколько там софта, на который вы постоянно жалуетесь? Я видел десятки приложений с сомнительными решениями, тяжёлой поддержкой и горами легаси, но ведь работает и деньги приносит. Смартфоны становятся мощнее и вытягивают это всё, а до бюджетников большинству разработчиков просто нет дела.

Я не оправдываю утверждение «писать говнокод — это нормально». Конечно нет! Но бизнесу, который за всё это платит, важно одно: чтобы работало и приносило деньги.

Руками писали плохой код — ИИ тоже пишет плохой код. Проблема не в инструменте, а в том, кто его использует. Инструментом нужно учиться пользоваться, правильно его настраивать. Но у ИИ есть особая опасность: низкий порог входа. Взял, запустил, что-то получилось — и понеслось. Это открывает дверь для людей без достаточной квалификации, которые даже не понимают, что именно они сгенерировали.
💯6911🔥4👎2
🏝 Вышел стабильный Decompose 3.5.0 — KMP-библиотека для навигации и декомпозиции UI с управлением жизненным циклом.

‼️ Главное в этом релизе — перевод в стабильный статус фичи Duplicate Configurations. Теперь Child Stack и Child Pages официально поддерживают дублирующиеся конфигурации. По умолчанию отключено, включается через DecomposeSettings.

👉 Тип Child#key изменён с Any на String — это breaking change, но нужный. Раньше иногда падало с Key XYZ was used multiple times в Compose. Теперь ключ можно использовать напрямую как Compose key без лишних приседаний.

👉 Новый DecomposeSettings API собирает глобальную конфигурацию в одном месте. Настроить можно через update {}:

// Инициализация в точке входа (Application / main)
DecomposeSettings.update { settings ->
settings.copy(
duplicateConfigurationsEnabled = true,
mainThreadCheckEnabled = false,
onDecomposeError = { error -> Timber.e(error) }
)
}


👉 Из остального: поддержка per-child аниматоров в Child Panels, новые ChildPages composable с доступом к PagerState, улучшенный handleDeepLink с дополнительными параметрами, Compose обновлён до 1.9.3.

#KMP #Kotlin #Decompose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍5👎4🎉1
🏝 Вышел Kotlin 2.3.20

👉 Name-based destructuring — пожалуй, самое интересное. Раньше деструктуризация работала по позиции через componentN(), и если порядок полей в data class не совпадал с переменными — получали молчаливый баг. Теперь можно явно привязать переменную к имени свойства. Пока это Experimental, включается через -Xname-based-destructuring. Жду когда дойдёт до Stable.

👉 Поддержка Gradle 9.3.0. Плюс Kotlin/JVM теперь по умолчанию использует Build Tools API при компиляции. Тихое, но важное изменение для тех, кто следит за тулингом.

👉 Kotlin/Native получил новый экспериментальный режим интероперабельности с C/ObjC — призван решить проблему совместимости KMP-библиотек между версиями компилятора. Если используете cinterop — стоит попробовать и оставить фидбек.

🔗 Больше подробностей в "What's new"

#Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍9👎2
🏝 Name-based destructuring в Kotlin 2.3.20

Destructuring Declarations - несамая популярная фича в Kotlin. На мой взгляд, её привязка к порядку декларации свойств делает его очень ненадёжной. Теперь же можно будет делать привязку "имя - имя" помимо "имя - позиция":

data class User(val username: String, val email: String)
val user = User("alice", "alice@example.com")
// Было
val (email, username) = user
// Стало
(val mail = email, val name = username) = user


Фича экспериментальная и требует включения через опции компилятора
// build.gradle.kts
kotlin {
compilerOptions {
freeCompilerArgs.add("-Xname-based-destructuring=only-syntax")
}
}


🔗 Подробности в документации

#Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33🤔18👍6
🏝 То чего так долго ждали в Kotlin 2.3.20 - копирование элемента Map, да еще и в экспериментальном режиме (уффф, не дай бог что сломает)

@OptIn(ExperimentalStdlibApi::class)
fun main() {
val map = mutableMapOf(
1 to 1,
2 to 2,
3 to 3,
4 to 4
)

val toRemove = map.entries
.filter { it.key % 2 == 0 }
.map { it.copy() }

map.entries.removeAll(toRemove)

println("map = $map")
// map = {1=1, 3=3}
}


#Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯35🔥9🤔8🏆3
🏝 Вышел Koin 4.2.0

Вышел стабильный Koin 4.2.0 — изменений ощутимо больше, чем обычно в минорных релизах. Kotlin 2.3.20 внутри и несколько новых модулей.

Что появилось:

🏝 Ktor 3.4 DI Bridge — двунаправленная интеграция между Ktor DI и Koin. Если используете Ktor на бэке или в KMP-проекте — теперь зависимости резолвятся в обе стороны без лишних танцев

💉 koin-dagger-bridge — новый модуль для тех, у кого смешанный проект и часть уже сидит на Dagger. Можно инжектить Koin-компоненты со стороны Dagger. Редкий сценарий, но кому надо — поймут ценность

⚙️ AndroidX Navigation3 — полноценная поддержка Navigation3 1.0.1: EntryProvider с передачей метаданных (анимации и прочее), generic EntryProvider, навигационные скоупы. Плюс скоупированная навигация теперь есть и для классического Compose Nav 2

🚀 Производительность — параллельная загрузка lazy-модулей при старте, оптимизация ThreadLocal на уровне скоупов.

👉 strictOverride — новая опция для явного переопределения дефиниций. Раньше override был неявным, теперь можно сделать это контролируемым

🤖 koinActivityInject() — хелпер для получения зависимостей из скоупа Activity напрямую

‼️ Breaking: минимальный API level поднят до 23 (Android 6.0). Также изменился конструктор BeanDef.

На мой взгляд, Dagger Bridge и поддержка Navigation3 — самые интересные новинки. Первый открывает путь к постепенной миграции с Dagger, второй закрывает ожидаемый пробел для тех, кто уже на новом стеке навигации.

🐱 Release Notes

#Kotlin #KMP #DI #Koin #AndroidDev #Compose #AndroidJetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥11👎5
🐱 Небольшая KMP-библиотека kotlinx-datetime-fun, которая закрывает многословность стандартного kotlinx.datetime extension функциями.

// Парсинг с кастомным форматом
val date = "11/15/2024".toLocaldate("MM/dd/yyyy")

// Вместо plus(n * -1, DateTimeUnit.DAY)
val yesterday = date.minusDays(1)

// Готовые утилиты
val isWeekend = LocalDate.today().isWeekend()
val nextMonday = LocalDate.nextMonday()


До 1.0 ещё далеко, но для KMP-проекта подключить и не писать одни и те же хелперы в каждом модуле — звучит разумно.

#Kotlin #KMP #Android #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍40👎11🥰2