Услуги Портфолио Контакты БлогНовости +7 (800) 302‑79‑27 Обсудить проект
Облако

JetBrains выпустила Kotlin 2.5.0-RC: Swift export вышел в бету, компилятору теперь нужен JDK 17

13 ноября 2026·5 мин чтения
Kotlin 2.5Kotlin Multiplatform
JetBrains выпустила Kotlin 2.5.0-RC: Swift export вышел в бету, компилятору теперь нужен JDK 17

11 ноября 2026 года JetBrains выпустила релиз-кандидат Kotlin 2.5.0. Главное для мобильных команд: Swift export, который отдаёт Kotlin-код в iOS-проект напрямую на Swift, без промежуточного Objective-C-заголовка, перешёл из альфы в бету и получил новый Gradle DSL. Одновременно компилятор перестал запускаться на JDK ниже 17.

RC означает, что набор возможностей заморожен и до стабильного 2.5.0 правятся только ошибки. Если ваша разработка мобильных приложений построена на Kotlin Multiplatform с общей бизнес-логикой для Android и iOS, сейчас удобный момент прогнать проект на 2.5.0-RC и найти несовместимости до релиза, а не после.

Ниже — что вошло в релиз, что придётся поменять в сборке и как проверить проект. Если вы ещё выбираете стек, сравните подходы в разборе Kotlin Multiplatform или Flutter.

Что нового в Kotlin 2.5.0-RC для iOS-разработки

Swift export — главное изменение релиза для KMP-проектов. Раньше общий модуль попадал в Xcode через Objective-C-интерфейс, и Swift-разработчики получали API с потерей части типов и неудобными именами. Swift export генерирует Swift-обёртки напрямую.

  • Статус Beta. По классификации JetBrains это значит, что функцию можно пробовать в реальных проектах, но API ещё может меняться.
  • Новый DSL. Блок swiftExport {} заменён на export { swift {} }, свойство flattenPackage переименовано в rootPackage. Старый блок помечен устаревшим и выдаёт диагностику с подсказкой.
  • Зависимости экспортируются сами. Библиотеки, объявленные через api, попадают в Swift-интерфейс без отдельного вызова export().
  • Публикуемая конфигурация. Настройку Swift export теперь можно переиспользовать между модулями, а не дублировать в каждом.

Какие ещё изменения вошли в релиз

Помимо Swift export, Kotlin 2.5.0-RC меняет язык, мультиплатформенную сборку и бэкенды компилятора.

  • Язык, стабильные функции. Деструктуризация по именам в режиме only-syntax стала режимом по умолчанию, проверка неиспользованного возвращаемого значения включена по умолчанию, улучшены константы времени компиляции, появилась аннотация @IntroducedAt для перегрузок по версиям.
  • Язык, экспериментальные функции. Расширения и блоки companion без объявления companion object, полноценные value-классы с несколькими свойствами, абстрактные value-классы и value objects, строгая проверка сравнений, которые всегда дают один результат.
  • Kotlin Multiplatform. Экспериментальная схема компиляции общих source set, которая ведёт себя так же, как анализ в IDE. Новый формат публикации .kar упаковывает платформенные артефакты в один архив: по данным JetBrains, библиотека cryptography-kotlin сократилась с 7539 файлов и 91 МБ до 1036 файлов и 23 МБ.
  • JVM, JS и стандартная библиотека. Генерация байткода для Java 28, цель ES2020 для Kotlin/JS с поддержкой BigInt, экспериментальные onTrue(), onFalse(), ifOrNull() и класс CodePoint для работы с Unicode на всех платформах.
  • Компилятор. Согласованный межмодульный инлайнинг при компиляции klib включён по умолчанию, вывод типов стал быстрее за счёт меньшего числа генерируемых ограничений.

Что сломается при переходе на Kotlin 2.5

Основное ломающее изменение — минимальный JDK 17 для запуска компилятора (раньше хватало JDK 8). Речь о JDK, на котором работает сборка, а не о целевой версии байткода. Временно ошибку можно отключить флагом -Xallow-pre-17-runtime-jdk, но JetBrains оставляет эту возможность только до Kotlin 2.5.20 или 2.6.0.

Для Android-проектов это обычно не проблема: современные версии Android Gradle Plugin и так требуют JDK 17. Проверить стоит CI-агенты со старыми образами и серверные модули, которые до сих пор собираются на JDK 11. Второй источник предупреждений — проверка неиспользованных возвращаемых значений: в старой кодовой базе она может дать десятки новых предупреждений, а при включённом allWarningsAsErrors сборка упадёт.

Как проверить проект на Kotlin 2.5.0-RC: пять шагов

  1. Обновите JDK на CI и у разработчиков до 17 или новее, проверьте org.gradle.java.home и toolchain в Gradle.
  2. Поднимите версию Kotlin до 2.5.0-RC в отдельной ветке и обновите IntelliJ IDEA или Android Studio до последней версии.
  3. Перепишите конфигурацию Swift export на export { swift {} } и уберите лишние вызовы export() для api-зависимостей.
  4. Разберите новые предупреждения о неиспользованных результатах функций, прежде чем включать RC в основной ветке.
  5. Соберите iOS-таргет и прогоните тесты на обеих платформах, сообщения об ошибках отправьте в YouTrack, пока релиз не стабилизирован.

Что Kotlin 2.5 меняет для продуктовых команд

Swift export в бете снижает главный барьер Kotlin Multiplatform для iOS-команд: общий модуль выглядит в Xcode как обычная Swift-библиотека, а не как обёртка над Objective-C. Это упрощает совместную работу Android- и iOS-разработчиков над одним кодом и уменьшает число сторонних плагинов, которые раньше закрывали этот разрыв.

Для бизнеса это аргумент рассматривать KMP там, где нужна общая логика, а интерфейс остаётся нативным; подробнее о таком подходе — на странице разработки iOS-приложений.

Часто задаваемые вопросы

Можно ли использовать Kotlin 2.5.0-RC в продакшене?

JetBrains выпускает RC для проверки перед релизом. Для продакшена надёжнее дождаться стабильной 2.5.0, а RC прогнать в отдельной ветке и на CI.

Стал ли Swift export стабильным?

Нет, в 2.5.0-RC он получил статус Beta. Пользоваться им в проектах можно, но конфигурация и генерируемый API ещё могут измениться.

Нужно ли переводить Android-приложение на Java 17?

Требование касается JDK, на котором запускается компилятор. Целевую версию байткода приложения оно не меняет.

Источники

Материал подготовлен редакцией YuSMP Group по открытым источникам. Нужна экспертиза по теме или разработка под задачу — обсудим проект.

Подготовим KMP-проект к Kotlin 2.5

Обновим JDK и CI, переведём Swift export на новый DSL, разберём предупреждения компилятора и проверим общий модуль на Android и iOS до выхода стабильного релиза.

Обсудить Android и KMP-разработку