Вышел Kotlin 2.1: что изменилось в языке программирования
JetBrains официально анонсировала выход стабильной версии Kotlin 2.1. Это первый крупный релиз после версии 2.0, вышедшей в мае 2024 года. Новая версия приносит множество улучшений, которые затронули как базовый синтаксис, так и инфраструктуру для мультиплатформенной разработки. Разберём самые значимые нововведения.
Ключевые изменения в языке
Разработчики сосредоточились на повышении стабильности и расширении возможностей языка. Главные новинки:
- Стабильный режим non-local break и continue. Ранее экспериментальная функция для встроенных лямбд стала окончательной. Теперь можно прерывать внешние циклы изнутри лямбда-выражений (например, в
forEach) без дополнительных обёрток. Это упрощает написание чистого кода. - Subtypes of discriminated unions (экспериментально). Введена поддержка подтипов для sealed-классов и интерфейсов. Теперь можно объявлять sealed-интерфейсы и наследовать их в классах, сохраняя строгую проверку when-выражений.
- Улучшенная поддержка Java 21. Компилятор Kotlin теперь корректно обрабатывает новые конструкции Java, такие как
record patternsиswitchс паттернами. Это особенно важно для проектов, мигрирующих на свежие версии Java.
Обновления в Kotlin Multiplatform
Kotlin 2.1 продолжает развитие мультиплатформенной экосистемы:
- Стабильный Kotlin/Wasm. Поддержка WebAssembly стала окончательной. Теперь можно компилировать код в Wasm, запускать его в браузере или на сервере через Wasmtime.
- Ускорение компиляции для Kotlin/Native. Оптимизирована работа с LLVM. По оценкам JetBrains, время сборки для нативных проектов сократилось на 15–20%.
- Новый артефакт для Android. Добавлена поддержка Android Gradle Plugin 8.7 и улучшена совместимость с библиотеками Jetpack Compose.
Изменения в стандартной библиотеке
В stdlib появилось несколько полезных функций:
- Функция
buildMapиbuildSet. Теперь можно создавать иммутабельные коллекции с помощью билдера, аналогичноbuildList. Это делает код более безопасным и выразительным. - Новые методы для работы с датами. Добавлены
LocalDate.daysUntilиLocalDate.monthsUntil. Они упрощают вычисление разницы между датами без сторонних библиотек. - Улучшенная работа с nullable-типами. Функция
?.letтеперь корректно обрабатывает вложенные вызовы без создания временных переменных.
Производительность и улучшения для разработчиков
JetBrains уделила внимание и инструментам разработчика:
- Умное автодополнение в IntelliJ IDEA. Плагин Kotlin обновлён до версии 2.1. Теперь IDE предлагает более релевантные варианты автодополнения на основе контекста.
- Оптимизация работы K2-компилятора. Ускорен анализ кода и вывод ошибок. Особенно заметно на больших проектах с тысячами файлов.
- Новый инспектор производительности. Встроенный анализатор подсказывает,