JetBrains выпустила Kotlin 1.8.20
JetBrains выпустила обновление языка программирования Kotlin 1.8.20. Разработчики могут протестировать обновлённую версию компилятора Kotlin K2 и использовать автоматическую компиляцию кода в WebAssembly.
В версии Kotlin 1.8.20 компилятор Kotlin K2 обеспечивает альфа-поддержку компилятора JS IR и работает с языковой версией Kotlin 2.0. Для активации новой версии K2 необходимо использовать новую языковую версию со следующей опцией -language-version 2.0
.
Также можно указать это в файле build.gradle(.kts)
:
kotlin {
sourceSets.all {
languageSettings {
languageVersion = "2.0"
}
}
}
Команда Kotlin просит разработчиков принять активное участие в процессе тестирования. Свои отзывы можно оставить в официальном канале Slack. Также можно включить опцию «Отправлять статистику использования», что поможет специалистам из JetBrains автоматически получать анонимные данные об использовании K2.
В версии Kotlin 1.8.20 разработчики добавили новый способ для получения значений из классов Enum. Раньше для этих целей использовался метод values()
, возвращавший массив констант текущего перечисления. Такой способ приводил к проблемам с производительностью в Java и Kotlin, а многие API требуют, чтобы возвращаемые значения были изменяемыми.
Для решения проблемы в классах Enum появилось свойство entries
, которое возвращает предварительно распределённый список констант. Свойство следует использовать вместо values()
, но поддержку последнего пока оставили:
enum class Color(val colorName: String, val rgb: String) {
RED("Red", "#FF0000"),
ORANGE("Orange", "#FF7F00"),
YELLOW("Yellow", "#FFFF00")
}
@OptIn(ExperimentalStdlibApi::class)
fun findByRgb(rgb: String): Color? = Color.entries.find { it.rgb == rgb }
Поддержка entries
пока отключена по умолчанию, и её надо активировать вручную.
В обновлении добавили поддержку компиляции кода на Kotlin в WebAssembly. Разработчики JetBrains считают, что функция поможет создавать новые решения, высокопроизводительные веб-приложения и запускать код в браузере.
Для активации функции Kotlin/Wasm необходимо следующим образом обновить файл build.gradle(.kts)
:
plugins {
kotlin("multiplatform") version "1.8.20-RC2"
}
kotlin {
wasm {
binaries.executable()
browser {
}
}
sourceSets {
val commonMain by getting
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
}
}
val wasmMain by getting
val wasmTest by getting
}
}
Вместе с этим необходимо подготовить целевую среду выполнения кода. В комментариях к выпуску предусмотрены подробные инструкции для Chrome, Firefox и Edge.
С полным списком изменений можно ознакомиться в блоге JetBrains или в записях к релизу в репозитории GitHub. Вместе с Kotlin компания обновила PyCharm, IntelliJ IDEA, WebStorm, Aqua IDE, GoLand и другие свои продукты.