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