BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Kotlin 1.5への道

Kotlin 1.5への道

原文(投稿日:2021/03/31)へのリンク

JetBrainsがKotlin 1.4.30をリリースした。2021年中頃にGAリリースがスケジュールされているKotlin 1.5(現在はマイルストンリリース)で安定版になる予定の、新たな実験的機能が含まれている。Kotlin 1.4.xとしては最後のインクリメンタルバージョンになると思われる今回のリリースには、新機能として、新たなJVM IR(Internal Representation)コンパイラバックエンド、Java recordsealedインターフェースのサポート、Kotlin Gradle Pluginでのコンフィギュレーションキャッシュのサポートなどが追加されている。JetBrainsはKotlinコミュニティに対して、これらの新機能、特に新しいJVM IRバックエンドをKotlin 1.4.30アプリケーションで試用して、バグレポートをYouTrackイシュートラッカにレポートするように依頼している。

コンパイラフロントエンドを補完してソースコード解析を行う、新たなJVM IRバックエンド(現在はベータ版)は、Kotlin 1.5では既定のコンパイラになる予定である。このバックエンドは、Kotlin/JVMKotlin/JSKotlin/Nativeという3つの分類したバックエンドで構成されている。別々に開発されてきた最初の2つが、Kotlin/Native内の新たなJVM IRインフラストラクチャに統合される予定だ。

新バックエンドでの変更には、旧バックエンドにあった多くのバグ修正に加えて、パフォーマンス向上のための新たな言語機能の開発も含まれている。AndroidのUI構築用の新ツールキットJetpack Composeは、この新しいバックエンドでのみ動作するものになる。

JetBrainsのマーケティング責任者であるAlina Grebenkina氏は、3つのバックエンドを統合することのアドバンテージを論じて、次のように記している。

多くのバックエンドロジックを共有し、パイプラインを統合することで、機能実装や最適化やバグ修正の大部分は、一度の実施ですべてをターゲットにできるようになります。

共通のバックエンドインフラストラクチャを持つことは、よりマルチプラットフォームなコンパイラエクステンションへのドアを開きます。パイプラインにプラグインして、処理や変換を追加すれば、自動的にすべてのターゲットで動作するようになるのです。

Java 16のリリースに合わせて、KotlinとJavaとの相互運用性を維持するため、新たなrecordデータ型のサポートが提供されている。Javaのrecordデータ型は、Kotlinでは新しい@JvmRecordアノテーションを使って宣言する。

    
@JvmRecord
data class User(val name: String, val age: Int)
    

この新機能を試すには、コンパイラオプション-Xjvm-enable-preview-language-version 1.5を使用する必要がある。

sealedインターフェースはsealedクラスを補完して、より柔軟なsealedなクラス階層の構築を可能にするために設計された。派生クラスが複数のsealedインターフェースを継承することも可能だ。

    
sealed interface Fillable {
    fun fill()
    }

sealed interface Polygon {
    val vertices: List<Point>
    }

class Rectangle(override val vertices: List<Point>): Fillable, Polygon {
    override fun fill() {
        /*...*/
        }
    }
    

ビルド時のパフォーマンスを改善するため、Kotlin GradleプラグインがGradleコンフィギュレーションキャッシュに対応した。これは、コンフィギュレーションフェーズの結果をキャッシュして、以降のビルドで再利用することでビルド時間を改善する、現在開発中のGradle機能である。以下の例を考えてみよう。

    
$ gradle --configuration-cache help
Calculating task graph as no configuration cache is available for tasks: help
...
BUILD SUCCESSFUL in 4s
1 actionable task: 1 executed
Configuration cache entry stored.
    

同じコマンドをもう一度実行すると、次のようになる。

    
$ gradle --configuration-cache help
Reusing configuration cache.
...
BUILD SUCCESSFUL in 500ms
1 actionable task: 1 executed
Configuration cache entry reused.
    

ビルド時間の違いに注目してほしい。このプラグインはGradle 5.4以降で動作する。、コンフィギュレーションキャッシュの使用方法に関する詳細は、Gradleの資料に説明されている。

昨年秋にJetBrainsは、Kotlinのアップデートバージョンを6か月毎に提供するという、新たなリリースケイデンスの採用を発表した。

最新リリースに関する詳細は、Kotlin資料の"what's new"セクションで確認できる。

この記事に星をつける

おすすめ度
スタイル

BT