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: пять шагов
- Обновите JDK на CI и у разработчиков до 17 или новее, проверьте
org.gradle.java.homeи toolchain в Gradle. - Поднимите версию Kotlin до
2.5.0-RCв отдельной ветке и обновите IntelliJ IDEA или Android Studio до последней версии. - Перепишите конфигурацию Swift export на
export { swift {} }и уберите лишние вызовыexport()дляapi-зависимостей. - Разберите новые предупреждения о неиспользованных результатах функций, прежде чем включать RC в основной ветке.
- Соберите 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, на котором запускается компилятор. Целевую версию байткода приложения оно не меняет.
Источники
- Kotlin Docs — What’s new in Kotlin 2.5.0-RC, 11 ноября 2026 (первоисточник).
- GitHub JetBrains/kotlin — Release v2.5.0-RC, список изменений релиза.
- Kotlin by JetBrains в X — анонс Kotlin 2.5.0-RC.
Подготовим KMP-проект к Kotlin 2.5
Обновим JDK и CI, переведём Swift export на новый DSL, разберём предупреждения компилятора и проверим общий модуль на Android и iOS до выхода стабильного релиза.