Kotlin мощно обновился до версии 2.1.20. Собрали главное:
1. Улучшения компилятора K2Теперь в Kotlin используется новый компилятор K2. Он быстрее и эффективнее. Если при работе с ним возникнут проблемы, можно временно вернуть старый компилятор, добавив в файл
gradle.properties строку:
kapt.use.k2=false
Также появилась поддержка аннотации
@SuperBuilder из библиотеки Lombok. Она упрощает создание объектов, особенно если есть наследование классов.
2. Kotlin Multiplatform (KMP): новый способ настройки приложенийВ этой версии появился новый способ настройки приложений для разных платформ. Теперь вместо плагина Application в Gradle используется блок executable {}. Он помогает настраивать задачи и распределение для JVM-целей. Пример использования можно найти в официальной документации.
3. Kotlin/Native: новые оптимизацииДобавлены новые оптимизации, которые делают программы быстрее. Чтобы их включить, нужно добавить в настройки компилятора опцию:
-Xbinary=preCodegenInlineThreshold=40
Рекомендуется значение 40, но можно экспериментировать.
4. Kotlin/Wasm: улучшенная отладкаТеперь отлаживать приложения на Kotlin для WebAssembly стало проще. Добавлена поддержка формата DWARF, который позволяет пошагово выполнять код и смотреть значения переменных. Чтобы включить эту функцию, используйте опцию компилятора:
-Xwasm-generate-dwarf
5. Поддержка GradleKotlin 2.1.20 полностью совместим с Gradle версий от 7.6.3 до 8.11. Если после обновления возникнут проблемы со сборкой, можно добавить в файл
gradle.properties строку:
kotlin.kmp.isolated-projects.support=disable
6. Новые функции стандартной библиотекиАтомарные типы: Появились общие атомарные типы в пакете kotlin.concurrent.atomics. Они экспериментальные, поэтому для их использования нужно добавить аннотацию:
@OptIn(ExperimentalAtomicApi::class)
• UUID: Теперь объекты UUID можно сравнивать и сортировать напрямую.
• Время: Интерфейс kotlinx.datetime.Clock теперь доступен как kotlin.time.Clock, а kotlinx.datetime.Instant — как kotlin.time.Instant.
7. Compose: улучшения• Аргументы по умолчанию в открытых функциях с аннотацией
@Composable теперь работают корректно.
• Удалены ComposableSingletons из публичного API, чтобы избежать утечек в inline-функциях.
• Включена функция, которая добавляет информацию о месте, где был сгенерирован Compose-код.
Фул доки и сведения об обновлении —
тут.