JetBrains выпустила Kotlin 1.8.20

1cce89be280bef97e6c63633dd1a8b7e

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

© Habrahabr.ru