BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Kotlin 1.6.20プレビュー版でコンテキストレシーバーが提供され、パフォーマンスが改善

Kotlin 1.6.20プレビュー版でコンテキストレシーバーが提供され、パフォーマンスが改善

ブックマーク

原文(投稿日:2022/02/28)へのリンク

JetBrainsはKotlin1.6.20-M1をリリースした。これは、次のGAリリースのプレビューバージョンであり、コンテキストレシーバー、コンパイル時間を短縮するためのいくつかのパフォーマンス改善オプション、同時ガベージコレクターが取り入れられる。

IntelliJ IDEAまたはAndroid Studioは、「ツール - Kotlin - Kotlinプラグインアップデートの設定」で早期アクセスプレビュー機能を使用するように設定できる。次に、最新のプレビューバージョンをインストールする。アプリケーションのビルドスクリプトは、最新のKotlinプレビューバージョン1.6.20-M1に更新する必要がある。

コンテキストレシーバーは、1つだけではなく複数のレシーバーをサポートする。関数、プロパティ、クラスの宣言に追加してコンテキスト依存にすることができる。すべてのコンテキストレシーバーは、呼び出し元のスコープで暗黙のレシーバーとして宣言する必要がある。たとえば、Loggerへの参照を含むインターフェイスを宣言し、LoggingContextインターフェイスを暗黙のレシーバーとして宣言して、関数内でloggerプロパティを使用する。

interface LoggingContext {
    val logger: Logger 
}

context(LoggingContext)
fun saveUser(student: Student) {
    // Logic to save the user to the database
    logger.info("User has been saved in the database")
}

現在、機能をテストするために、-Xcontext-receiversコンパイラオプションを使用してプレリリースバイナリを作成できる。この機能はまだ完成していないため、バイナリを本番環境で使用することはできない。また、IDEからのサポートは最小限の範囲である。

モジュール内のすべてのファイルを並行してコンパイルしてコンパイル時間を短縮するために、実験的なJVM IRバックエンドモードが導入された。コンパイラオプション-Xbackend-threadsによって、このモードが有効になり、スレッド数は、マシンのCPUコアごとに1つのスレッドを使用する0、あるいはマシンのCPUコア数よりも小さい値のいずれかに設定できる。コンパイル時間の短縮とのトレードオフはヒープメモリの増加で、使用されているスレッドの数に比例する。

ビルドがビルドツールによってすでに並列化されている場合は、並列化の別のレイヤーを追加すると、ビルド時間がさらに長くなる可能性がある。kaptはバックエンドモードを無効にするため、JVM IRバックエンドモードはメンテナンスされなくなったkaptアノテーションプロセッサでは機能しない。

gradle.propertiesを設定することで、Kotlin/JS IRコンパイラを使った開発バイナリのインクリメンタルコンパイルが利用できるようになった。

kotlin.incremental.js.ir=true

インクリメンタルコンパイルを有効にした後、compileDevelopmentExecutableKotlinJs Gradleタスクを使うと、コンパイラは以前のモジュールコンパイルをキャッシュする。特に小さな変更では、モジュールを再度コンパイルする代わりにモジュールキャッシュを使用できる。

デフォルトでは、Kotlin 1.6.20によって、マルチプラットフォームプロジェクトの階層構造サポートが有効となる。これによって、ネイティブターゲット間でソースコードを共有し、ビルドセットアップがシンプルになり、IDEサポートが改善する。

Kotlin/Nativeコンパイルのパフォーマンスは実行時間、バイナリサイズ、コンパイル時間を短縮することで改善された。これは、コンパイラによって生成された合成オブジェクトのいくつかが静的に初期化され、コンパイラキャッシュが最適化されたことによる。新しいメモリマネージャーは実行時間を短縮し、ガベージコレクションスイープフェーズの同時実装が含まれるようになった。これは-Xgc=cmsで有効にできる。

Slack eapチャネル登録することでサポートを利用できる。IssueはYouTrackで報告されることがある。

作者について

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT