🏝 Вышел Kotlin 2.5.0-RC: пора прогнать 2.5 на своём проекте11 ноября JetBrains выпустили первый релиз-кандидат
Kotlin 2.5.0. Новой волны фич в RC нет: в этой сборке стабилизируют то, что пришло в Beta1 и Beta2, и чинят регрессии. Релиз-кандидат как раз для того, чтобы собрать свой проект и прислать баги до стабильной версии.
Что уже стабильно и работает без флагов, коротко было в
обзоре Beta2. Проверка неиспользуемых результатов включена по умолчанию,
деструктуризация по именам в режиме only-syntax стала режимом по умолчанию, стабильны улучшенные compile-time константы и
@IntroducedAt.
Для KMP в RC остаются Swift export в Beta с новым DSL и инкрементальная компиляция на Apple-таргетах, уже включённая по умолчанию. Авторам библиотек новый формат публикации упаковывает платформенные артефакты, кроме JVM и Android, в один архив
.kar, и набор файлов становится меньше. В Beta2 Gradle мог не включить в публикацию JS, Wasm и Native-таргеты, в RC это исправили.
Экспериментальные
value-классы с несколькими полями никуда не делись. В 2.5 также можно объявлять companion-расширения и блоки
companion {}: свойства и функции доступны через имя типа, даже если у него нет companion object. На JVM компилятор делает из них статические члены, и
@JvmStatic не нужен.
data class Vector(val x: Double, val y: Double) {
companion {
val Zero = Vector(0.0, 0.0)
}
}
companion val Vector.UnitX get() = Vector(1.0, 0.0)
val start = Vector.Zero
val axis = Vector.UnitX
Это экспериментально и включается флагом
-Xcompanion-blocks-and-extensions.
В RC кросс-модульный инлайнинг при сборке klib включён по умолчанию. Запуск компилятора на JDK ниже 17 уже даёт ошибку, как
предупреждали: речь про JDK, которым крутится Gradle или kotlinc, а не про
jvmTarget. Временно ошибку снимает
-Xallow-pre-17-runtime-jdk, но к 2.5.20 или 2.6.0 этот обход уберут.
🔗
What's new in Kotlin 2.5.0-RC ·
Changelog#Kotlin