Вышел Kotlin 2.1: что нового в языке и инструментах
16 ноября 2024 года компания JetBrains представила стабильную версию Kotlin 2.1.0 — крупное обновление, которое продолжает развитие языка после революционного перехода на компилятор K2 в версии 2.0. Новый релиз не только исправляет ошибки, но и вводит ряд долгожданных экспериментальных возможностей. Разбираем главные изменения для разработчиков.
Стабилизация K2: что это значит для разработчика
Главная новость — компилятор K2, который в Kotlin 2.0 был опциональным, теперь стал основным для JVM и мультиплатформенных проектов. K2 обеспечивает:
- Значительное ускорение сборки (до 2–3 раз на больших проектах);
- Улучшенный вывод типов (type inference) — меньше явных аннотаций;
- Более точные и понятные сообщения об ошибках;
- Полную поддержку Kotlin Multiplatform (KMP) и Compose Multiplatform.
Разработчикам, использующим Gradle, достаточно обновить плагин Kotlin до версии 2.1.0 — K2 активируется автоматически.
Новые экспериментальные возможности языка
Версия 2.1 вводит несколько предварительных фич, доступных через аннотацию @OptIn. Вот самые интересные:
- Non-local break/continue — теперь можно использовать
breakиcontinueвнутри лямбда-выражений, переданных в инлайн-функции. Это упрощает работу с циклами в функциональном стиле. - Explicit backing fields — новая конструкция для прямого доступа к полю свойства внутри геттера/сеттера без вызова рекурсии. Упрощает написание делегированных свойств.
- Named arguments in lambda — экспериментальная поддержка именованных аргументов для лямбда-параметров. Делает код с несколькими лямбдами более читаемым.
Улучшения для Kotlin Multiplatform
Kotlin 2.1 — важный шаг для мультиплатформенной разработки. Ключевые изменения:
- Полная поддержка expect/actual для стандартных библиотек — теперь можно объявлять платформо-зависимые функции прямо в commonMain.
- Улучшена интеграция с CocoaPods и Swift Package Manager для iOS-таргетов.
- Новый режим конфигурации для Android: автоматическая настройка source sets под современные AGP (Android Gradle Plugin) 8.x.
Обновления в Compose Multiplatform
Для разработчиков UI-приложений в релизе появилась поддержка Resource API — нового способа работы с ресурсами (изображения, строки, шрифты) в Compose Multiplatform. Ресурсы теперь можно размещать в общем модуле, а плагин автоматически генерирует типобезопасные ссылки для каждой платформы. Это упрощает создание кроссплатформенных приложений с единой логикой отрисовки.
Как обновиться до Kotlin 2.1
Обновление тривиально для проектов на Gradle. Добавьте в build.gradle.kts:
plugins {
kotlin("jvm") version "2.1.0"
// или kotlin("multiplatform") version "2.1.0"
}
JetBrains рекомендует перед обновлением прогнать проект с флагом --warning-mode all, чтобы проверить совместимость с новым компилятором. Для Int