JetBrains випустила Kotlin Toolchain 0.12.0 — оновлення, яке нарешті приносить кілька довгоочікуваних можливостей: публікацію мультиплатформних бібліотек, попередній перегляд підтримки Wasm-застосунків, а також роботу Compose Hot Reload безпосередньо з термінала.
Повний перелік змін та виправлень команда опублікувала в нотатках до релізу, а нижче — головні нововведення.
Показово, що сервіс klibs.io тепер працює на Kotlin Toolchain у продакшені — це не демонстраційний приклад, а реальний бекенд на JDK 21, Spring Boot 4 (зі Spring AI), PostgreSQL та OpenSearch. Розробники перевели дев'ять конвенційних плагінів у шаблони Kotlin Toolchain, а також реалізували як локальні плагіни Kotlin Toolchain два Gradle-плагіни без вбудованих аналогів — Jib і Git Properties. Вихідний код доступний для ознайомлення.
Щоб скористатися найновішими можливостями Kotlin Toolchain, потрібна IntelliJ IDEA 2026.2.1 або новіша версія, а також актуальна версія плагіна Kotlin Toolchain.
Публікація мультиплатформних бібліотек Kotlin
Можливість публікувати бібліотеки з'явилася ще у версії 0.11, але тоді вона стосувалася лише JVM-бібліотек. Починаючи з версії 0.12, така сама конфігурація працює і для мультиплатформних бібліотек:
product:
type: lib
platforms: [jvm, android, iosArm64, iosSimulatorArm64, wasmJs]
settings:
publishing:
enabled: true
group: org.example
version: 1.0.0
Kotlin Toolchain публікує все необхідне для того, щоб користувачі могли підключити вашу бібліотеку з будь-якої з її цільових платформ: спільне API, окремий артефакт для кожної платформи, вихідні файли та метадані публікації модуля, які дозволяють інструментам збірки автоматично обирати потрібні частини.
Підтримуються й cinterop-прив'язки — вони публікуються як у комонізованому вигляді, так і окремо для кожної платформи, тож користувачі отримують те саме C API, з яким ви компілювали код, без необхідності самостійно налаштовувати взаємодію. Результат можна підключати з Gradle-проєктів так само, як і будь-яку іншу мультиплатформну бібліотеку.
Детальніше про це можна прочитати в документації.
Варто зауважити, що ресурси бібліотек Compose Multiplatform поки не входять до публікації — прогрес відстежується у KTC-5698.
Краща відповідність квотам Maven Central
У зв'язку з новими квотами на публікації Maven Central, які найближчим часом введе Sonatype, команда внесла зміни, що зменшують кількість файлів, які публікуються за замовчуванням:
- Контрольні суми файлів підписів (.asc.sha1) більше не потрібні й не публікуються.
- За замовчуванням тепер публікуються лише контрольні суми .md5 та .sha1. Якщо потрібно продовжувати публікувати .sha256 і .sha512, використовуйте налаштування
settings.publishing.checksums: [md5, sha1, sha256, sha512].
Підтримка Wasm-застосунків
Модулі wasm-js/app тепер можна збирати у готовий до використання веб-застосунок. Серед нових можливостей:
- запуск Wasm-застосунків командою
kotlin run - налаштування index.html та інших ресурсів
- отримання транзитивних npm-залежностей з мультиплатформних бібліотек Kotlin
Докладніше про роботу з Wasm веб-застосунками можна дізнатися в документації.
Покращення термінального інтерфейсу
Команда продовжує роботу над тим, щоб вивід команди kotlin був менш перевантаженим і зручнішим для користувача.
Діагностика
Серед недавніх поліпшень — оновлена подача діагностичних повідомлень.
Тести у віджеті статусу
Тепер запущені тести відображаються у віджеті статусу під відповідними завданнями та їхніми наборами. Під час виконання також показується коротка статистика проходження тестів. Роботи над деталями ще залишається, але команда обіцяє продовжувати вдосконалення.
Покращення в IDE
Підтримка попереднього перегляду Compose
Android-модулі та модулі kmp/lib, які мають Android серед своїх цільових платформ, тепер підтримують функцію попереднього перегляду Compose завдяки анотації androidx.compose.ui.tooling.preview.Preview та Android-плагіну.
Краща підтримка ресурсів Compose
IDE тепер коректно розпізнає ресурси Compose, оновлює класи Res на льоту та пропонує навігацію, автодоповнення й рефакторинги, які одночасно оновлюють і XML-файли, і код.
Поліпшення інструментів для Android
На додачу до підтримки попереднього перегляду Compose з'явилася підтримка інших звичних Android-можливостей:
- Android Lint
- Live Edit
- Layout Inspector
- навігація та автодоповнення для ресурсів (клас R)
Поліпшення для iOS
Починаючи з IntelliJ IDEA 2026.2.1, робота з iOS-застосунками стала більш схожою на звичний досвід у Gradle-проєктах.
Конфігурація запуску тепер дозволяє обирати пристрій, налаштовувати параметри Xcode та вибирати режим debug чи release.
Також виправлено кілька проблем із взаємодією Kotlin і Swift, що мало підвищити стабільність цього процесу.
Підказки з координатами залежностей каталогу
Залежності каталогу у файлах модулів і шаблонах тепер супроводжуються вбудованою підказкою з координатами, на які вказує кожен запис.
Покращена підтримка Compose Hot Reload
Тепер повноцінно підтримується Compose Hot Reload з командного рядка за допомогою команди kotlin run --compose-hot-reload-mode.
Загальні поліпшення
- Перше перезавантаження стало значно швидшим, а сама збірка споживає менше ресурсів.
- З'явилася підтримка дії Restart the application з меню DevTools.
Compose Hot Reload MCP
Тепер підтримується MCP-сервер, який дає змогу агентам взаємодіяти із застосунками, запущеними через Compose Hot Reload. Щоб почати, потрібно додати такий фрагмент у mcp.json:
{
"mcpServers": {
"Compose Hot Reload": {
"command": "./kotlin",
"args": [
"compose-hot-reload-mcp-server"
]
}
}
}
Завдяки цьому агенти можуть взаємодіяти із застосунком, перезавантажувати й перезапускати його, переглядати знімки вікон і отримувати дерево композиційних елементів. Детальніше про ці можливості можна прочитати за посиланням з офіційного оголошення.
Інші поліпшення
Новий рекомендований формат локальних залежностей із префіксом //
Раніше єдиним способом визначити залежність від локального модуля були відносні шляхи, що починалися з крапки. Такий підхід мав кілька недоліків: наприклад, переміщення модуля на інший рівень каталогів вимагало зміни всіх шляхів залежностей — скажімо, з ../../foo на ../foo. Крім того, велика кількість ../ у глибоко вкладених структурах каталогів робила шляхи важкими для читання.
Тепер рекомендовано визначати залежності локальних модулів за допомогою шляхів відносно кореня проєкту з префіксом // — подібний синтаксис знайомий тим, хто працював із Bazel. Префікс // позначає кореневий каталог проєкту і може використовуватися не лише в блоці залежностей, а й у будь-якому місці, де очікується шлях, наприклад, у apply.
Старий підхід із відносними шляхами поки що продовжує працювати.
Це крок до можливості мати кілька модулів з однаковою назвою каталогу.
Підвищено мінімальні версії JDK та Kotlin
Досі мінімальна версія JDK, яку підтримує Kotlin Toolchain, не була чітко задокументована, і збірка просто падала в різних місцях, якщо використовувалася застара версія JDK. Тепер є ясна діагностика та чіткий мінімум: для компіляції коду підтримуються лише JDK 17 і новіші версії. Втім, за допомогою налаштування settings.jvm.release досі можна встановити нижчу цільову версію, якщо код має запускатися на старіших JRE.
Мінімальну версію компілятора Kotlin підвищено з 2.1.10 до 2.2.20. Це дозволило спростити код і узгоджується з новою політикою підтримки безпеки стандартної бібліотеки Kotlin.
Оновлено версії за замовчуванням
Також оновлено типові версії для вбудованих інструментів і фреймворків:
- Kotlin 2.4.10
- JDK 25
- JUnit Platform 6.1.3
- KSP 2.3.11
- Ktor 3.5.2
- Spring Boot 4.1.0
- DataFrame 1.0.0-rc01
- Kotlinx.rpc 0.10.3
Як спробувати Kotlin Toolchain 0.12.0
Почати роботу з Kotlin Toolchain можна за посібником Getting started, а також переглянувши приклади, пройшовши туторіал або звернувшись до повного посібника користувача — залежно від того, як вам зручніше вчитися.
Щоб оновити наявний проєкт, використовуйте команду kotlin update.
Поділитися відгуком
Kotlin Toolchain досі перебуває на стадії Alpha й активно розвивається. Поділитися враженнями від використання можна у Slack-каналі #kotlin-toolchain (запрошення доступне за посиланням https://kotl.in/slack) або залишивши пропозиції та ідеї у відповідному тікеті YouTrack. Розробники наголошують, що зворотний зв'язок і реальні сценарії використання допомагають формувати майбутнє Kotlin Toolchain.
Джерело: Kotlin Blog


