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 и другие свои продукты.
