「Kotlin 1.9.0」が公開 次世代コンパイラ「Kotlin K2」がβ版にWebAssemblyバイナリのサイズも大幅に縮小

Kotlinチームは、プログラミング言語「Kotlin」の最新版となるバージョン1.9.0を公開した。

» 2023年07月14日 08時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Kotlinチームは2023年7月6日(米国時間)、プログラミング言語「Kotlin」の最新版となるバージョン1.9.0を公開した。

 Kotlin 1.9.0では、JVM(Java仮想マシン)用の次世代コンパイラとして開発中の「Kotlin K2」がβ版となった。新しい言語機能も導入された他、「Kotlin Multiplatform」と「Kotlin/Native」にも改良が加えられた。

 Kotlin Multiplatform(β版)は、ネイティブプログラミングの柔軟性やメリットを維持しながら、異なるプラットフォーム間でKotlinコードを共有するための技術。Kotlin/Nativeは、LLVMを活用し、Kotlinコードを仮想マシンなしで実行できる各種プラットフォームのネイティブバイナリにコンパイルする技術だ。

Kotlin 1.9.0の主な変更点

K2がβ版に移行

 K2コンパイラがβ版となった他、Kotlin/Nativeとマルチプラットフォームプロジェクトの基本的なサポートも追加された。

 Kotlin 1.9.0からKotlin 2.0のリリースまでは、Gradleプロパティの「kotlin.experimental.tryK2=true」という設定により、K2コンパイラを簡単にテストできる。以下のコマンドを実行してもよい。

./gradlew assemble -Pkotlin.experimental.tryK2=true

WebAssemblyバイナリのサイズが縮小

 2023年4月に公開された「Kotlin 1.8.20」で、KotlinコードをWebAssemblyバイナリとしてコンパイルできる「Kotlin/Wasm」(Kotlin WebAssembly)が実験的機能として提供開始された。単純なHello Worldの例で見ると、Kotlin 1.9.0でのWebAssemblyバイナリのサイズは、Kotlin 1.8.20の場合と比べて10分の1に縮小している。

 WebAssemblyは、Web(およびWeb以外の)プラットフォームを対象とした、サイズとロード時間の両面での効率性を高めるバイナリフォーマットだ。

values関数を置き換えるenumクラスのentriesプロパティが正式な機能に

 Kotlin 1.8.20で、enumクラスの entriesプロパティが実験的機能として導入された。entriesプロパティは、合成関数であるvalues()を置き換え、パフォーマンスを向上させる。Kotlin 1.9.0では、entriesプロパティが正式な機能となった。

values関数を置き換えるenumクラスのentriesプロパティ(提供:Kotlinチーム)

2次コンストラクタを受け入れるインライン値クラス

 インライン値クラスは、値を格納する基本的なクラスだ。通常のクラスの側面も持っているが、パフォーマンスを最大化するために非常に制限されている。Kotlin 1.9.0では、2次コンストラクタを作成できるようになった。

Kotlin/WasmとJavaScriptの相互運用性の向上

 Kotlin/Wasmでは、KotlinからJavaScriptのコードを使ったり、JavaScriptからKotlinのコードを使ったりできる。Kotlin 1.9.0では、この相互運用性が向上しているが、Kotlin/Wasmは実験的な機能であるため、一定の制限がある。

  • Kotlin 1.9.0から、Kotlin/WasmでのDynamic型の使用は非推奨となった。JavaScriptとの相互運用性を促進する新しいJsAny型を優先するためだ
  • Kotlin 1.9.0から、Kotlin/WasmとJavaScriptの相互運用では、外部型、プリミティブ型、文字列型、関数型のみがサポートされている。さらに、JavaScriptとの相互運用で使用可能なKotlin/Wasmオブジェクトへのハンドルを表すために、「JsReference」と呼ばれる別の明示的な型が導入された

 なお、現在、Kotlin Playgroundを使ってWebAssemblyビルドをオンラインでテストできるが、ターゲット環境(Google Chrome、Firefox、Microsoft Edge)で、実験的なWebAssemblyガベージコレクタを有効にする必要がある。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。