Kotlin Multiplatform Broadcast
Открыть в Telegram
Новости и фичи Kotlin, а также Kotlin Multiplatform YouTubе канал: https://youtube.com/androidBroadcast Compose Multiplatform @compose_broadcast iOS разработка @ios_broadcast Новости Android @android_broadcast Реклама и прочее @ab_manager
Больше9 554
Подписчики
-124 часа
+57 дней
+930 дней
Архив постов
🏝 Kotlin 2.5.20 потребует JDK 17+ для запуска компилятора
JetBrains поднимает минимальную версию JDK, на которой работает компилятор Kotlin, с 8 до 17. Причины: ускорить разработку, получить доступ к новым библиотекам и сохранить совместимость с новыми Gradle и Maven.
👉 2.5.0-Beta1 выдаёт предупреждение, с 2.5.0-Beta2 на JDK ниже 17 будет ошибка компиляции. Временно её отключает флаг
-Xallow-pre-17-runtime-jdk (KT-88174)
👉 С 2.5.20-Beta1 JDK 17 обязателен без опций обхода. По плану 2.5.0 выйдет в декабре, 2.5.20 в марте 2027
👉 Речь о JDK, который запускает Gradle-демон, Maven или kotlinc, а не о jvmTarget. jvmToolchain() на это не влияет, байткод не меняется
👉 Кого касается: Android-проекты на AGP 8.0+ уже запускают Gradle на JDK 17. Проверьте CI и проекты на JDK 8/11: укажите JAVA_HOME или org.gradle.java.home
Если обновиться не получается, JetBrains просит описать ваш кейс в YouTrack.
🔗 Гайд: Upgrading to JDK 17
🔗 What's new in Kotlin 2.5.0-Beta1
#Kotlin #JDK #Gradle🏝 JetBrains теперь советует Kotlin Toolchain для новых KMP-проектов
Kotlin Toolchain — это единый CLI с декларативным конфигом проекта. Он сам скачивает JDK, Android SDK и iOS runtimes, а ещё собирает, тестирует и публикует KMP-приложения и библиотеки. Это бывший Amper, в мае я его пробовал. С версии 0.13 JetBrains рекомендует его для большинства новых KMP-проектов и добавит в гайды и визарды.
Что нового в 0.13:
👉
kotlin new для интерактивного создания проекта, как в KMP Wizard
👉 iOS runtimes скачиваются сами, а simulator создаётся, если его нет
👉 импорт зависимостей через SwiftPM
👉 кэши Kotlin/Native переиспользуются между сборками и даже проектами
👉 недостающие компоненты Android SDK докачиваются при импорте в IDE
👉 для AI-агентов Hot Reload MCP server и skills: npx skills add kotlin/kotlin-agent-skills
⚠️ Важно: переводить существующие Gradle-проекты JetBrains пока не советует. Нужна IntelliJ IDEA 2026.2.3 или Android Studio Rabbit 1 и новее.🔗 Анонс в блоге Kotlin #Kotlin #KMP
🏝 Вышел Kotlin 2.4.21 с исправлениями багов
Это патч к Kotlin 2.4.20: 12 фиксов и никаких новых фич. Обновляться стоит тем, кто пишет под JS, Wasm, Native или использует скрипты.
👉 JS: в production-сборке библиотеки снова минифицируются имена members, а обычный класс с companion теперь может наследовать external class (KT-89449, KT-89363)
👉 Wasm: лямбда
(T) -> R с аргументом не того типа бросает ClassCastException, а не падает с trap, и починили невалидный Wasm для generic-класса с @Serializable (KT-89267, KT-89275)
👉 Native: SwiftPM import не заваливает лог, пропала плавающая ошибка линковки «truncated or malformed archive» (KT-89285, KT-86251)
👉 JVM reflection: NoSuchElementException для Java non-static inner class внутри generic-класса (KT-89280)
👉 Scripting и JSR-223: NoClassDefFoundError при повторном запуске, сломанный eval() после generic Java bindings и утечка file handle, из-за которой на Windows не удалялся файл скрипта (KT-89247, KT-89220, KT-88453)
🔗 Release на GitHub
#Kotlin🏝 Kotlin 2.5.0: раздельная компиляция common и платформенного кода в KMP
Сталкивались с багом IDE, когда подсвечивает вызов в
commonMain красным, а сборка проходит. Это не баг IDE, так устроена текущая схема компиляции KMP.
Когда собирается, например, JVM-таргет, код из commonMain компилируется вместе с jvmMain против платформенных артефактов зависимостей, то есть против JAR. Поэтому common код может незаметно зарезолвиться в платформенную декларацию библиотеки. IDE же анализирует commonMain только по metadata KLIB, где есть лишь common-декларации.
Из-за этого возникают три класса проблем.
❌ Красный код в IDE компилируется
// lib/jvmMain
class Foo
// app/commonMain
Foo() // IDE: Unresolved reference, сборка: ок
То же самое с commonTest: тесты могут вызывать код из jvmMain вместо commonMain.
❌ Выбирается другая перегрузка
// lib/commonMain
fun foo(x: Any) = "common"
// lib/jvmMain
fun foo(x: String) = "platform"
// app/commonMain
println(foo("")) // IDE ведёт в common, в рантайме печатается "platform"
❌ Вывод типов ломается только на одной платформе
Если actual-классы на JVM добавляют лишний супертип (например, Serializable), то if (...) ClickEvent() else ScrollEvent() на JVM выводится в Any вместо Event. В итоге .name не резолвится, хотя IDE ошибок не видит.
Что меняется с раздельной компиляцией в Kotlin 2.5.0
✔️ 1. Common-код ведёт себя одинаково на всех платформах Сейчас один и тот же вызов из commonMain может выбрать разные перегрузки на разных таргетах:
// lib/commonMain
fun foo(x: Any) = "common"
// lib/jvmMain
fun foo(x: String) = "platform"
// app/commonMain
println(foo("")) // JVM: "platform", остальные таргеты: "common"
С тем же связан вывод типов. Если actual-класс на JVM добавляет супертип (например, Serializable), то if (...) ClickEvent() else ScrollEvent() на JVM выводится в Any, и код не собирается только там. В новом режиме common-код резолвится один раз и одинаково для всех.
✔️ 2. Common-код по-настоящему common Сейчас commonMain может случайно вызвать платформенный класс зависимости, и всё соберётся. Проблема всплывёт, когда добавите iOS или Wasm, и чинить придётся задним числом. Новый режим ловит это сразу, а исправление явное: через expect/actual.
✔️ 3. Тесты проверяют то, что заявлено commonTest сейчас может вызвать код из jvmMain вместо commonMain. Тест зелёный на JVM, хотя common-контракт он не проверяет. В новом режиме тесты видят только common API.
✔️ 4. Задел для ускорения сборки Если common source sets компилируются отдельно, их можно будет собирать инкрементально. JetBrains прямо называет это следующим шагом. Для больших KMP-модулей это потенциально заметный выигрыш.
✔️ 5. Согласованность IDE и компилятор Красный код в IDE больше не будет собираться, а Go to declaration будет вести туда, что реально вызовется.
✔️ Как включить (experimental, по умолчанию выключено):
# gradle.properties
kotlin.kmp.separateCompilation=true
Перед включением важно учесть:
👉 Авторам библиотек нужно публиковать metadata KLIB. KMP Gradle plugin делает это по умолчанию, но теперь без них работать не будет
👉 С cinterop пока есть проблемы коммонизации (KT-88178, KT-41509), так что включайте осторожно
👉 Модули с единственным таргетом пока не затронуты
👉 После включения часть старого кода может перестать собираться. Это места, где common-код случайно опирался на платформенные API
Совет: включите флаг на ветке и посмотрите, что упадёт. Каждая такая ошибка показывает место, где common-код на самом деле не был common.
🔗 Подробнее в блоге Kotlin
#Kotlin #KMP #IDEA😄🏝 Kotlin от IntelliJ IDEA теперь в VS Code и Cursor
JetBrains выпустила Release Candidate расширения Java and Kotlin by IntelliJ IDEA: это движок IntelliJ IDEA, который через LSP работает в VS Code и его форках. Внутри автодополнение, навигация, инспекции, рефакторинги по всему проекту, отладка, Gradle и Maven, а ещё к нему может обращаться Cursor Agent для поиска и анализа кода. Саму IDEA ставить не нужно: языковой сервер встроен в расширение и запускается сам, когда открываешь проект. Стабильная версия выйдет скоро, после неё будет 30-дневный триал, а дальше понадобится подписка IntelliJ IDEA Ultimate.
Я давно говорил, что JetBrains стоит либо выносить свои наработки в собственного агента, либо продавать их другим, и вот они начали это делать. Жду такую же интеграцию в Claude Code, Codex и Grok.
🔗 Анонс JetBrains
#Kotlin #IntelliJIDEA #Cursor
🏝 State of Kotlin 2026: главное из отчёта JetBrains к 15-летию языка
👥 Kotlin знают 8,1 млн разработчиков. Чем на нём пишут: Android 63%, backend 53%, KMP 31%, desktop 19%. 87% довольны языком, а для 7% Kotlin стал первым языком программирования.
KMP
👉 Доля KMP среди кроссплатформенных фреймворков за год выросла с 7% до 18%
👉 В топ-10 000 App Store KMP-приложений почти 3%, в начале 2024-го было меньше 1%. За год их добавилось больше, чем на Flutter, а по выручке они Flutter уже догнали
👉 60% проектов шарят всю или почти всю бизнес-логику, а 81% KMP-разработчиков используют Compose Multiplatform (хотя бы на одном экране)
Backend
👉 В компаниях, где больше 100 backend-разработчиков, Kotlin на бэке есть в 89% случаев
👉 По данным IDE, цикл разработки на Kotlin на 15–20% короче, чем на Java
👉 После миграции Spring Boot 2→3 Kotlin добавляли в 8 раз чаще. Следующее окно для этого открывает переход на Spring Boot 4
AI
👉 93% пишут код с AI-инструментами, 81% уже пробуют агентов
👉 AI-код на Kotlin в 63% случаев требует мелких правок, в 18% сразу корректен
Учитывайте, что основная часть цифр взята из опросов и телеметрии самой JetBrains.#Kotlin #KMP
🏝 JetBrains убирает поддержку Swift из KMP-плагина
Начиная с IntelliJ IDEA 2026.3 и Android Studio Rabbit 2 (2026.2.2), в плагине Kotlin Multiplatform больше не будет IDE-фич для Swift.
❌ Уходит редактирование, подсветка синтаксиса и навигация по Swift-файлам, а также переходы между Swift и Kotlin.
✔️ Все также можно будет запускать iOS-приложения и делать отладку Kotlin-кода на iOS. Kotlin/Native тоже не затронут, то есть Swift Export и импорт Swift-пакетов работают как раньше.
Поддержка Swift досталась плагину от закрытого AppCode и поддерживать её совместимость с Swift, Xcode и IntelliJ Platform дорого. При этом пользовались ей мало, и с каждым годом всё меньше: iOS-разработчики в KMP-проектах пишут Swift в Xcode, а то и вовсе в агентах в терминале, а Kotlin-команды всё чаще делают UI на Compose Multiplatform.
Замену JetBrains не планирует. В старых версиях IDE и плагина Swift-поддержка останется, но обновляться они уже не будут. Так что Swift-часть KMP-проекта теперь окончательно живёт в Xcode.
🔗 Источник - официальный блог Kotlin
#Kotlin #KMP #iOS #Swift
🐱 KtorMonitor - библиотека для инспектинга Ktor запросов прямо на клиенте
‼️ ВАЖНО! Не тяните либу в продакшен! Только в дев и тестовые сборки
Live Demo можно попробовать тут
Опрос разработчиков на Kotlin от JetBrains - потратьте немного своего времени, чтобы помочь развитию экосистемы Kotlin!
👉 Пройти опрос!
🏝 Скрестил пальцы и очень жду новостей по Unused return value checker в Kotlin 2.5.0. Какую фичу в Kotlin вы ждете или хотеил бы увидеть?
⚡️⚡️AI-агент съел токены и потерял контекст. Что делать? Разберемся на Mobius 2026 Autumn.
Когда AI становится частью рабочего процесса, появляются вполне инженерные вопросы: сколько токенов уходит на задачу, где агент теряет контекст, оправдан ли MCP, как поделиться рабочими практиками внутри команды и где автоматизация начинает создавать больше проблем, чем решает.
Этим вопросам посвятят отдельный блок на Mobius 2026 Autumn — конференции по мобильной разработке. Восемь докладов, где AI-разработку рассмотрят с разных сторон: от оптимизации агентов и оркестрации до юридических ограничений и локальных моделей.
Подробности — в карточках и на сайте.
Конференция пройдет 21–22 октября в Санкт-Петербурге + онлайн.
🔥С промокодом
kotlinbroadcast персональные билеты дешевле
Купить билет
Реклама. ООО «Джуг Ру Груп». ИНН 7801341446🏝 Вышла первая Beta Kotlin 2.5.0
Что уже известно про новую версию (самое интересное)
✔️ Стабильный name based destructing
(val mail = email, val name = username) = user
Более простой (пока экспериментальный) способ реализации extention для companion object
// Объявление UnitX в качестве companion extension
companion val Vector.UnitX get() = Vector(1.0, 0.0)
data class Vector(val x: Double, val y: Double) {
companion {
// Объявление Zero в companion блоке
val Zero: Vector get() = Vector(0.0, 0.0)
}
}
// Можно вызывать
Vector.UnitX или Vector.Zero
🔗 Подробнее можно прочитать тут
#Kotlin #Kotlin250🚀 Вышел Ktor 3.6
Главное для тех, кто тащит Ktor на KMP/Android — артефакт
ktor-client-engine-defaults. Кладешь в common, создаешь клиент без Android/CIO/OkHttp в shared-коде: на каждом таргете подтянется свой engine. Рядом HttpCache переехал на Path из kotlinx-io, так что файловый кэш больше не привязан к java.io.File:
// было в 3.5
// engine выбираешь сам в common или ожидаешь expect/actual
val client = HttpClient(OkHttp) {
install(HttpCache) {
publicStorage(FileStorage(...))
}
}
// стало в 3.6: commonMain
api("io.ktor:ktor-client-engine-defaults:3.6.0")
val client = HttpClient() {
install(HttpCache) {
publicStorage(FileStorage(Path(...)))
}
}
Ещё по клиенту: ContentNegotiation больше не обязан дописывать свои типы в Accept, если ты уже выставил заголовок сам — ContentTypeMergeStrategy.SkipIfPresent. Мелочь, но спасает, когда API капризный к точному Accept.
🔗 Анонс
#Kotlin #Ktor #KMP💉 Koin Compiler 1.2 проверяет уже весь DSL, то что стоило делать еще в 1.0
Koin Compiler - плагин Kotlin комплиятора, проверящий гарф зависимостей Koin 4.XДо 1.2 плагин ловил дыры только в своём reified-DSL. Классика проходила мимо компилятора и падала уже в рантайме:
single<UserService>() // проверялось
singleOf(::UserRepository) // нет
single { AnalyticsHelper(get()) } // нет
В 1.2.1 оба стиля попадают в проверки. Плюс починили видимость определений зависимостей через два и больше Gradle-модуля и добавили entry point для install(Koin) в Ktor.
Минимум - Koin 4.2.0 и Kotlin 2.3.20
Пока все также циклы в single { get() } всё ещё не видит, для этого лучше singleOf или single<T>(). Ждем следующий релиз!
🔗 Разбор от автора
#Kotlin #Koin #KMPRepost from Кирилл Розов
Хакатон, который не про ещё один чат-бот за выходные, а про реальные задачи
Узнал про КосмоХакатон и хочу поделится с вами, так как реально интересный формат, где участникам будут предложены реальны задачи: мониторинг пожаров и гидрологии по снимкам ДЗЗ, автономное управление группировкой, верификация «зелёных» кредитов по состоянию леса. Можно взяться за решения задачи "топливный контур к 2035-му", где нужно спроектировать систему снабжения орбитального топливного узла на 2035–2040 гг. 🤯
Обычный хакатон часто сводится к скорости собрать демо и хорошо его презентовать. Здесь же идея другая - растить сферу у себя и давать людям пощупать настоящие задачи, а не выдуманный финтех на выходные. Участвовать могут школьники с 14 лет, студенты, молодые учёные.
В ближайшие выходные 18-20 сентября будет очный тур в Красноярске и Санкт-Петербурге. По итогам будет финал в Москве с 25 по 27 сентября. Общий призовой фонд - 7.2 млн рос. рублей. Вы сможете завести полезные знакомства и обратить внимание для себя, поэтому рекомендую собрать команду или присоединится к существующей, чтобы ощутить не себе атмосферу.
#Хакатон
⚙️ Podlodka Android Crew: Android × AI: новый workflow разработки
С 21 по 25 сентября пройдет Podlodka Android Crew. Организаторы конференции собрали сезон, в котором будет очень много свежего опыта, специфичного именно для мобильной разработки — это возможность обсудить актуальные задачи с опытными коллегами и ускорить свою работу.
Что ждёт слушателей сезона
🤖 эффективный AI-пайплайн для Android: от дизайна до отладки и тестирования,
⚙️ настройка агента для предсказуемых результатов в мобильной разработке,
🔥 профилирование агентом: как делать это в 3 раза дешевле,
⭐️ необычные задачи, и как научить агентов их решать автономно.
Сезон практический — в результате можно будет забрать не только новые идеи, но и сразу начать использовать собственные наработки, сделанные в ходе пяти дней конференции.
Подробности о сезоне смотрите на сайте, и там же забирайте билеты.
👉 Билеты на Podlodka Android Crew
По промокоду BROADCAST16 получите скидку🎁
🏝 Kotlin 2.4.20 вышел. Те кто знает зачем - обновляйтесь, позже расскажу что там полезного
#Kotlin
