Kotlin 2.3.x 互換性ガイド
『言語をモダンに保つ』および『快適なアップデート』は、Kotlin 言語設計における基本原則のひとつです。前者は言語の進化を妨げる構成要素は削除されるべきであることを示し、後者はその削除を事前に十分に周知し、コードの移行を可能な限りスムーズに行えるようにすべきであることを示しています。
ほとんどの言語変更については、アップデートの変更ログやコンパイラの警告などの他のチャネルを通じてすでに発表されていますが、このドキュメントではそれらをすべてまとめ、Kotlin 2.2 から Kotlin 2.3 への移行のための完全なリファレンスを提供します。このドキュメントには、ツール関連の変更に関する情報も含まれています。
基本用語
このドキュメントでは、いくつかの種類の互換性を紹介します:
- ソース (source): ソース互換性のない変更は、以前は正常に(エラーや警告なしで)コンパイルできていたコードがコンパイルできなくなる変更です。
- バイナリ (binary): 2 つのバイナリアーティファクトを相互に入れ替えても、ロードエラーやリンケージエラーが発生しない場合、それらはバイナリ互換であると言われます。
- 振る舞い (behavioral): 変更を適用する前後で同じプログラムが異なる動作を示す場合、その変更は振る舞いの互換性がないと言われます。
これらの定義は純粋な Kotlin に対してのみ与えられていることに注意してください。他の言語(Java など)の観点から見た Kotlin コードの互換性は、このドキュメントの範囲外です。
言語 (Language)
-language-version における 1.8 および 1.9 のサポートを終了
コンポーネント: コンパイラ
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3 以降、コンパイラは
-language-version=1.8をサポートしなくなります。また、JVM 以外のプラットフォームにおける-language-version=1.9のサポートも削除されます。非推奨化サイクル:
- 2.2.0:
-language-versionでバージョン 1.8 および 1.9 を使用した場合に警告を報告- 2.3.0: すべてのプラットフォームのバージョン 1.8、および JVM 以外のプラットフォームのバージョン 1.9 において、
-language-versionの警告をエラーに格上げ
typealias を使用した推論型に対する上限境界制約違反エラーを報告
Issue: KTLC-287
コンポーネント: コア言語
互換性のない変更の種類: ソース
短い要約: 以前は、推論された型に対する上限境界制約(upper-bound violation constraint)の違反について、コンパイラはエラーを報告していませんでした。Kotlin 2.3.0 ではこれが修正され、すべての型パラメータにわたって一貫してエラーが報告されるようになります。
非推奨化サイクル:
- 2.2.20: 暗黙の型引数による境界違反に対して非推奨警告を報告
- 2.3.0: 暗黙の型引数に対する
UPPER_BOUND_VIOLATEDの警告をエラーに格上げ
inline および crossinline ラムダへの @JvmSerializableLambda アノテーションを禁止
Issue: KTLC-9
コンポーネント: コア言語
互換性のない変更の種類: ソース
短い要約:
@JvmSerializableLambdaアノテーションをinlineまたはcrossinlineラムダに適用できなくなりました。これらのラムダはシリアライズ可能ではないため、@JvmSerializableLambdaを適用しても効果がありませんでした。非推奨化サイクル:
- 2.1.20:
@JvmSerializableLambdaがinlineまたはcrossinlineラムダに適用された場合に警告を報告- 2.3.0: 警告をエラーに格上げ。この変更は progressive モードで有効化可能
ジェネリックシグネチャが一致しない場合の Java クラスへの Kotlin インターフェース委譲を禁止
Issue: KTLC-267
コンポーネント: コア言語
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 では、非ジェネリックなオーバーライドを伴うジェネリックインターフェースメソッドを実装する Java クラスへの委譲(delegation)が禁止されます。以前はこれを許可していたため、実行時に型の不一致や
ClassCastExceptionが報告されていました。この変更により、エラーが実行時からコンパイル時に移ります。非推奨化サイクル:
- 2.1.20: 警告を報告
- 2.3.0: 警告をエラーに格上げ
明示的な戻り値の型がない式形式の関数(expression-bodied functions)での return の使用を非推奨化
Issue: KTLC-288
コンポーネント: コア言語
互換性のない変更の種類: ソース
短い要約: 関数の戻り値の型が明示的に宣言されていない場合、式本体(expression body)内での
returnの使用が非推奨になります。非推奨化サイクル:
- 2.3.0: 警告を報告
- 2.4.0: 警告をエラーに格上げ
typealias を介して導入された nullable なスーパータイプからの継承を禁止
Issue: KTLC-279
コンポーネント: コア言語
互換性のない変更の種類: ソース
短い要約: nullable な typealias から継承しようとした際にエラーを報告するようになります。これは、直接的な nullable なスーパータイプをすでに処理している方法と一致します。
非推奨化サイクル:
- 2.2.0: 警告を報告
- 2.3.0: 警告をエラーに格上げ
トップレベルラムダとコール引数のジェネリックシグネチャ生成を統一
Issue: KTLC-277
コンポーネント: リフレクション
互換性のない変更の種類: 振る舞い
短い要約: Kotlin 2.3.0 では、トップレベルラムダに対しても、コール引数として渡されるラムダと同じ型チェックロジックを使用するようになり、両方のケースで一貫したジェネリックシグネチャの生成を保証します。
非推奨化サイクル:
- 2.3.0: 新しい振る舞いを導入。progressive モードでは適用不可
reified 型パラメータが共通部分型(intersection types)として推論されることを禁止
Issue: KTLC-13
コンポーネント: コア言語
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 では、reified 型パラメータが共通部分型(intersection type)に推論される状況が禁止されます。これは実行時に誤った動作を引き起こす可能性があるためです。
非推奨化サイクル:
- 2.1.0: reified 型パラメータが共通部分型として推論された場合に警告を報告
- 2.3.0: 警告をエラーに格上げ
型パラメータの境界を通じた公開性の低い型の公開を禁止
Issue: KTLC-275
コンポーポネント: コア言語
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 では、関数または宣言自体よりも制限の強い可視性(visibility)を持つ型を公開する型パラメータ境界の使用が禁止されます。これにより、関数のルールがすでにクラスに適用されているルールと一致します。
非推奨化サイクル:
- 2.1.0: 問題のある型パラメータ境界に対して警告を報告
- 2.3.0: 警告をエラーに格上げ
標準ライブラリ (Standard library)
Char から数値への変換を非推奨化し、明示的な digit および code API を導入
Issue: KTLC-321
コンポーネント: kotlin-stdlib
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 では、数値型に対する
Char.toX()およびX.toChar()変換が非推奨となり、文字のコード(code)や数字の値(digit value)にアクセスするための新しい明示的な API が導入されます。非推奨化サイクル:
- 1.4.30: 新しい関数を Experimental(実験的)として導入
- 1.5.0: 新しい関数を Stable(安定版)に昇格。古い関数に対して警告を報告し、代替案を提案
- 2.3.0: 警告をエラーに格上げ
Number.toChar() 関数を非推奨化
Issue: KT-56822
コンポーネント: kotlin-stdlib
互換性のない変更の種類: ソース
短い要約:
Number.toChar()関数が非推奨になりました。代わりにtoInt().toChar()またはCharコンストラクタを使用してください。非推奨化サイクル:
- 1.9.0:
Number.toChar()関数を使用した際に警告を報告- 2.3.0: 警告をエラーに格上げ
String.subSequence(start, end) 関数を非推奨化
Issue: KTLC-282
コンポーネント: kotlin-stdlib
互換性のない変更の種類: ソース
短い要約:
String.subSequence(start, end)関数が非推奨になりました。代わりにString.subSequence(startIndex, endIndex)関数を使用してください。非推奨化サイクル:
- 1.0:
String.subSequence(start, end)を使用した際に警告を報告- 2.3.0: 警告をエラーに格上げ
kotlin.io.createTempDirectory() および kotlin.io.createTempFile() 関数を非推奨化
Issue: KTLC-281
コンポーネント: kotlin-stdlib
互換性のない変更の種類: ソース
短い要約:
kotlin.io.createTempDirectory()およびkotlin.io.createTempFile()関数が非推奨になりました。 代わりにkotlin.io.path.createTempDirectory()およびkotlin.io.path.createTempFile()関数を使用してください。非推奨化サイクル:
- 1.4.20:
kotlin.io.createTempDirectory()およびkotlin.io.createTempFile()関数を使用した際に警告を報告- 2.3.0: 警告をエラーに格上げ
InputStream.readBytes(Int) 関数を非表示化
Issue: KTLC-280
コンポーネント: kotlin-stdlib
互換性のない変更の種類: ソース
短い要約: 長期間非推奨であった
InputStream.readBytes(estimatedSize: Int = DEFAULT_BUFFER_SIZE): ByteArray関数が非表示(hidden)になりました。非推奨化サイクル:
- 1.3.0: 警告を報告
- 1.5.0: 警告をエラーに格上げ
- 2.3.0: 関数を非表示化
Kotlin/Native のスタックトレース出力を他のプラットフォームと統一
Issue: KT-81431
コンポーネント: Kotlin/Native
互換性のない変更の種類: 振る舞い
短い要約: 例外のスタックトレースをフォーマットする際、同じ例外の原因(cause)がすでに印刷されている場合、追加の原因は印刷されなくなります。
非推奨化サイクル:
- 2.3.20: Kotlin/Native の例外スタックトレースのフォーマットを他の Kotlin プラットフォームと統一
Iterable<T>.intersect() および Iterable<T>.subtract() の動作を修正
Issue: KTLC-268
コンポーネント: kotlin-stdlib
互換性のない変更の種類: 振る舞い
短い要約:
Iterable<T>.intersect()およびIterable<T>.subtract()関数は、各レシーバー要素を結果セットに追加する前にメンバーシップ(所属)を確認するようになります。結果セットはAny::equalsを使用して要素を比較し、引数のコレクションが参照等価性(例:IdentityHashMap.keys)を使用している場合でも正しい結果を保証します。非推奨化サイクル:
- 2.3.0: 新しい振る舞いを有効化
ツール (Tools)
kotlin-dsl と kotlin("jvm") プラグインを併用した際の未サポート KGP バージョン警告
Issue: KT-79851
コンポーネント: Gradle
互換性のない変更の種類: 振る舞い
短い要約: Kotlin 2.3 では、Gradle プロジェクトで
kotlin-dslとkotlin("jvm")プラグインの両方を使用している場合、サポートされていない Kotlin Gradle プラグイン (KGP) バージョンに関する Gradle 警告が表示されることがあります。移行ステップ:
一般に、同じ Gradle プロジェクト内で
kotlin-dslとkotlin("jvm")プラグインの両方を使用することはお勧めしません。このセットアップはサポートされていません。コンベンションプラグイン、プリコンパイル済みスクリプトプラグイン、またはその他の公開されないビルドロジックについては、3 つのオプションがあります:
kotlin("jvm")プラグインを明示的に適用しない。代わりに、kotlin-dslプラグインが互換性のある KGP バージョンを自動的に提供するようにします。
kotlin("jvm")プラグインを明示的に適用したい場合は、embeddedKotlinVersion定数を使用して組み込みの Kotlin バージョンを指定します。組み込みの Kotlin および言語バージョンをアップグレードするには、Gradle バージョンをアップデートしてください。互換性のある Gradle バージョンは、Gradle の Compatibility Notes for Kotlin で確認できます。
kotlin-dslプラグインを使用しない。これは、特定の Gradle バージョンに依存しないバイナリプラグインにより適している場合があります。最後の手段として、言語バージョン 2.1 以上を使用するようにプロジェクトを構成できます。これにより
kotlin-dslプラグインの競合する動作が上書きされます。ただし、これを行うことは強くお勧めしません。移行中に困難が生じた場合は、Slack の #gradle チャネルでサポートを求めてください。
非推奨化サイクル:
- 2.3.0:
kotlin-dslプラグインがコンパイラの互換性のない言語または API バージョンで使用されていることを検出する診断(diagnostic)を導入
AGP バージョン 9.0.0 以降における kotlin-android プラグインの非推奨化
Issue: KT-81199
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 では、Android Gradle プラグイン (AGP) バージョン 9.0.0 以降を使用している場合、
org.jetbrains.kotlin.androidプラグインが非推奨になります。 AGP 9.0.0 以降、AGP は Kotlin の組み込みサポートを提供するため、kotlin-androidプラグインは不要になります。非推奨化サイクル:
- 2.3.0: AGP バージョン 9.0.0 以降を使用し、
android.builtInKotlinとandroid.newDsl=falseの両方の Gradle プロパティがfalseに設定されている場合に、kotlin-androidプラグインの使用に対して警告を報告
testApi コンフィギュレーションを非推奨化
Issue: KT-63285
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 では
testApiコンフィギュレーションが非推奨になります。このコンフィギュレーションはテストの依存関係とソースを他のモジュールに公開していましたが、Gradle はこの動作をサポートしていません。移行オプション:
testApi()のすべてのインスタンスをtestImplementation()に置き換え、他のバリアントについても同様に行います。例えば、kotlin.sourceSets.commonTest.dependencies.api()をkotlin.sourceSets.commonTest.dependencies.implementation()に置き換えます。Kotlin/JVM プロジェクトの場合は、代わりに Gradle の テストフィクスチャ (test fixtures) の使用を検討してください。 マルチプラットフォームプロジェクトでのテストフィクスチャのサポートを希望される場合は、YouTrack でユースケースを共有してください。
非推奨化サイクル:
- 2.3.0: 警告を報告
createTestExecutionSpec() 関数を非推奨化
Issue: KT-75449
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 では、
KotlinJsTestFrameworkインターフェースのcreateTestExecutionSpec()関数が使用されなくなったため、非推奨になりました。非推奨化サイクル:
- 2.2.20: 警告を報告
- 2.3.0: 警告をエラーに格上げ
closureTo()、createResultSet()、KotlinToolingVersionOrNull() 関数を削除
Issue: KT-64273
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 では、使用されなくなった
closureDSL のclosureTo()、createResultSet()関数を削除します。また、KotlinToolingVersionOrNull()関数も削除されます。代わりにKotlinToolingVersion()関数を使用してください。非推奨化サイクル:
- 1.7.20: エラーを報告
- 2.3.0: 関数を削除
ExtrasProperty API を非推奨化
Issue: KT-74915
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 2.0.0 から非推奨となっていた
ExtrasPropertyAPI が、Kotlin 2.3.0 で内部化(internal 化)されました。代替として Gradle のExtraPropertiesExtensionAPI を使用してください。非推奨化サイクル:
- 2.0.0: 警告を報告
- 2.1.0: 警告をエラーに格上げ
- 2.3.0: API を内部化
KotlinCompilation における HasKotlinDependencies を非推奨化
Issue: KT-67290
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 では、
KotlinCompilation内のHasKotlinDependenciesインターフェースを非推奨にします。依存関係関連の API は、代わりにKotlinSourceSetインターフェースを通じて提供されます。非推奨化サイクル:
- 2.3.0: 警告を報告
npm および Yarn パッケージマネージャの内部関数とプロパティを非推奨化
Issue: KT-81009
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: npm および Yarn パッケージマネージャに関連する以下の関数とプロパティが非推奨になりました:
CompositeDependency.dependencyName、CompositeDependency.dependencyVersion、CompositeDependency.includedBuildDir。KotlinNpmInstallTask.Companion.NAME。LockCopyTask.Companion.STORE_PACKAGE_LOCK_NAME、LockCopyTask.Companion.RESTORE_PACKAGE_LOCK_NAME、LockCopyTask.Companion.UPGRADE_PACKAGE_LOCK。- `Npm.npmExec()」。
NpmProject.require()、NpmProject.useTool()。PublicPackageJsonTask.jsIrCompilation。YarnBasics.yarnExec()。YarnPlugin.Companion.STORE_YARN_LOCK_NAME、YarnPlugin.Companion.RESTORE_YARN_LOCK_NAME、YarnPlugin.Companion.UPGRADE_YARN_LOCK。YarnSetupTask.Companion.NAME。非推奨化サイクル:
- 2.2.0 および 2.2.20: これらの関数またはプロパティを使用している場合に警告を報告
- 2.3.0: 警告をエラーに格上げ
PhantomJS のサポートを非推奨化
Issue: KT-76019
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: PhantomJS がメンテナンスされなくなったため、Kotlin 2.3.0 では
NpmVersionsAPI のkarmaPhantomjsLauncherプロパティを非推奨にします。非推奨化サイクル:
- 2.3.0: 警告を報告
テスト実行または JavaScript ランタイムをセットアップするクラスのサブクラス化を禁止
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 では、以下のクラスのサブクラス化を禁止します:
KotlinTestKotlinNativeTestKotlinJsTestKotlinJsIrTargetKotlinNodeJsIrKotlinD8IrKotlinKarmaKotlinMochaKotlinWebpackTypeScriptValidationTaskYarnRootExtensionこれらのクラスは、サブクラス化されることを意図していません。サブクラス化が必要なすべてのユースケースは、Kotlin Gradle プラグイン DSL が提供する構成ブロックによってカバーされるはずです。 もし既存の API がテスト実行や JavaScript ランタイムのセットアップにおいてニーズを満たさない場合は、YouTrack でフィードバックを共有してください。
非推奨化サイクル:
- 2.2.0: これらのクラスからサブクラスを作成するコードに対して警告を報告
- 2.3.0: 警告をエラーに格上げ
ExperimentalWasmDsl アノテーションクラスを非推奨化
Issue: KT-81005
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: 機能が
kotlin-plugin-annotationsモジュールに移動したため、ExperimentalWasmDslアノテーションクラスは非推奨になりました。非推奨化サイクル:
- 2.0.20: 警告を報告
- 2.3.0: 警告をエラーに格上げ
ExperimentalDceDsl アノテーションクラスを非推奨化
Issue: KT-81008
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約:
ExperimentalDceDslアノテーションクラスはもう使用されていないため、非推奨になりました。非推奨化サイクル:
- 2.2.0: 警告を報告
- 2.3.0: 警告をエラーに格上げ
JavaScript ユーティリティを非推奨化
Issue: KT-81010
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: 以下の関数とプロパティは内部でのみ使用されるため、非推奨になりました:
JsIrBinary.generateTsKotlinJsIrLink.modeNodeJsSetupTask.Companion.NAMEAppendable.appendConfigsFromDir()ByteArray.toHex()FileHasher.calculateDirHash()String.jsQuoted()非推奨化サイクル:
- 2.2.0:
KotlinJsIrLink.modeプロパティが使用された場合に警告を報告- 2.2.0:
NodeJsSetupTask.Companion.NAMEプロパティおよび関数が使用された場合に警告を報告- 2.2.20:
JsIrBinary.generateTsプロパティが使用された場合に警告を報告- 2.3.0: 警告をエラーに格上げ
移行された D8 および Binaryen プロパティを非推奨化
Issue: KT-81006
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: 以下のプロパティは、
org.jetbrains.kotlin.gradle.targets.jsパッケージからorg.jetbrains.kotlin.gradle.targets.wasmパッケージに移行されたため、非推奨になりました:
binaryen.BinaryenEnvSpecbinaryen.BinaryenExtensionbinaryen.BinaryenPluginbinaryen.BinaryenRootPluginBinaryenSetupTask.Companion.NAMEd8.D8EnvSpecd8.D8PluginD8SetupTask.Companion.NAME非推奨化サイクル:
- 2.2.0: 警告を報告
- 2.3.0: 警告をエラーに格上げ
NodeJsExec DSL の create() 関数を非推奨化
Issue: KT-81004
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約:
NodeJsExecDSL のコンパニオンオブジェクト内にあるcreate()関数が非推奨になりました。代わりにregister()関数を使用してください。非推奨化サイクル:
- 2.1.20: 警告を報告
- 2.3.0: 警告をエラーに格上げ
kotlinOptions DSL のプロパティを非推奨化
Issue: KT-76720
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約:
kotlinOptionsDSL および関連するKotlinCompile<KotlinOptions>タスクインターフェースを通じたコンパイラオプションの構成は、Kotlin 2.2.0 以降、新しいcompilerOptionsDSL を優先して非推奨になっています。Kotlin 2.3.0 では、kotlinOptionsインターフェースのすべてのプロパティに対する非推奨化サイクルを継続します。 移行するには、compilerOptionsDSL を使用してコンパイラオプションを構成してください。移行のガイダンスについては、kotlinOptions {}からcompilerOptions {}への移行を参照してください。非推奨化サイクル:
- 2.0.0:
kotlinOptionsDSL に対して警告を報告- 2.2.0: 警告をエラーに格上げし、
kotlinOptionsのすべてのプロパティを非推奨化- 2.3.0:
kotlinOptionsのすべてのプロパティに対する警告をエラーに格上げ
kotlinArtifacts API を非推奨化
Issue: KT-77066
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: 実験的な
kotlinArtifactsAPI は非推奨になりました。Kotlin Gradle プラグインで利用可能な現在の DSL を使用して、最終的なネイティブバイナリをビルドしてください。 もし移行に不十分な点がある場合は、この YouTrack issue にコメントを残してください。非推奨化サイクル:
- 2.2.0:
kotlinArtifactsAPI が使用された場合に警告を報告- 2.3.0: この警告をエラーに格上げ
kotlin.mpp.resourcesResolutionStrategy Gradle プロパティを削除
Issue: KT-74955
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: 以前、
kotlin.mpp.resourcesResolutionStrategyGradle プロパティは使用されていなかったため非推奨となっていました。Kotlin 2.3.0 では、この Gradle プロパティは完全に削除されます。非推奨化サイクル:
- 2.2.0: 構成時の診断(diagnostic)を報告
- 2.3.0: Gradle プロパティを削除
マルチプラットフォーム IDE インポートの古いモードを非推奨化
Issue: KT-61127
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 より前は、マルチプラットフォーム IDE インポートの複数のモードをサポートしていました。現在は古いモードが非推奨となり、1 つのモードのみが利用可能になります。以前は、古いモードは
kotlin.mpp.import.enableKgpDependencyResolution=falseGradle プロパティを使用して有効化されていました。このプロパティを使用すると、非推奨警告が表示されるようになります。非推奨化サイクル:
- 2.3.0:
kotlin.mpp.import.enableKgpDependencyResolution=falseGradle プロパティが使用された場合に警告を報告
精密なコンパイルバックアップを無効にするプロパティを削除
Issue: KT-81038
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 1.9.0 では、精密なコンパイルバックアップ(precise compilation backup)と呼ばれるインクリメンタルコンパイル用の実験的な最適化が導入されました。テストの成功後、この最適化は Kotlin 2.0.0 でデフォルトで有効になりました。Kotlin 2.3.0 では、この最適化をオプトアウトするための
kotlin.compiler.preciseCompilationResultsBackupおよびkotlin.compiler.keepIncrementalCompilationCachesInMemoryGradle プロパティを削除します。非推奨化サイクル:
- 2.1.20: 警告を報告
- 2.3.0: プロパティを削除
CInteropProcess における destinationDir を非推奨化
Issue: KT-74910
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約:
CInteropProcessタスクのdestinationDirプロパティが非推奨になりました。 代わりにCInteropProcess.destinationDirectory.set()関数を使用してください。非推奨化サイクル:
- 2.1.0:
destinationDirプロパティが使用された場合に警告を報告- 2.2.0: この警告をエラーに格上げ
- 2.3.0:
destinationDirプロパティを非表示化
CInteropProcess における konanVersion を非推奨化
Issue: KT-74911
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約:
CInteropProcessタスクのkonanVersionプロパティが非推奨になりました。 代わりにCInteropProcess.kotlinNativeVersionを使用してください。非推奨化サイクル:
- 2.1.0:
konanVersionプロパティが使用された場合に警告を報告- 2.2.0: この警告をエラーに格上げ
- 2.3.0:
konanVersionプロパティを非表示化
KotlinCompile.classpathSnapshotProperties プロパティを削除
Issue: KT-76177
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約:
kotlin.incremental.useClasspathSnapshotGradle プロパティは Kotlin 2.2.0 で削除されました。 Kotlin 2.3.0 では、以下のプロパティも削除されます:
KotlinCompile.classpathSnapshotProperties.useClasspathSnapshotKotlinCompile.classpathSnapshotProperties.classpath非推奨化サイクル:
- 2.0.20:
kotlin.incremental.useClasspathSnapshotプロパティを警告付きで非推奨化- 2.2.0:
kotlin.incremental.useClasspathSnapshotプロパティを削除- 2.3.0:
KotlinCompile.classpathSnapshotProperties.useClasspathSnapshotおよびKotlinCompile.classpathSnapshotProperties.classpathプロパティを削除
getPluginArtifactForNative() 関数を非推奨化
Issue: KT-78870
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 2.2.20 で、
getPluginArtifactForNative()関数が非推奨になりました。 代わりにgetPluginArtifact()関数を使用してください。非推奨化サイクル:
- 2.2.20: 警告を報告
- 2.3.0: 警告をエラーに格上げ
すべての生成されたソースを登録するアプローチの変更
Issue: KT-45161
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.0 では、
KotlinSourceSetインターフェースに、Gradle プロジェクトで 生成されたソースを登録 できる新しい Experimental(実験的) API が導入されました。以前は、kotlinプロパティを使用してすべての生成されたソースにアクセスできました。Kotlin 2.3.0 以降、プラグインやビルドロジックがすべての生成されたソースにアクセスする必要がある場合は、代わりにallKotlinSourcesプロパティを使用してください。移行のアドバイス:
- 生成されたソースを登録するには、
generatedKotlinプロパティを使用します。- 生成されていないソースを含むすべてのソースにアクセスするには、
allKotlinSourcesプロパティを使用します。
kotlin.publishJvmEnvironmentAttribute プロパティを非推奨化
Issue: KT-83678
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: Kotlin 2.3.20 では、
kotlin.publishJvmEnvironmentAttributeプロパティが非推奨になります。 このプロパティは、マルチプラットフォームライブラリに対するorg.gradle.jvm.environment属性の公開を無効にすることを可能にしていました。 Kotlin 2.0.20 以降、標準的な依存関係解決を保証するためにorg.gradle.jvm.environmentはデフォルトで公開されます。非推奨化サイクル:
- 2.3.20: 警告を報告
- 2.4.0: プロパティを削除
CleanableStore インターフェースおよび CleanDataTask クラスを非推奨化
Issue: KT-78104
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約:
CleanableStoreインターフェースおよびCleanDataTaskクラスは使用されなくなったため、非推奨になりました。非推奨化サイクル:
- 2.3.20: 警告を報告
kotlin.kmp.isolated-projects.support Gradle プロパティを非推奨化
Issue: KT-79257
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: マルチプラットフォームプロジェクトはデフォルトで isolated projects と互換性があり、他のオプションがないため、
kotlin.kmp.isolated-projects.supportGradle プロパティは非推奨になりました。非推奨化サイクル:
- 2.3.20: 警告を報告
kotlin.mpp.enableKotlinToolingMetadataArtifact Gradle プロパティを非推奨化
Issue: KT-79924
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約:
kotlin-tooling-metadata.jsonアーティファクトはマルチプラットフォームプロジェクトにおいて常に生成されるようになったため、kotlin.mpp.enableKotlinToolingMetadataArtifactGradle プロパティは非推奨になりました。非推奨化サイクル:
- 2.3.20: 警告を報告
- 2.4.0: サポートを削除
LanguageSettings.enableLanguageFeature DSL を非推奨化
Issue: KT-82323
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約:
LanguageSettings.enableLanguageFeatureDSL は、Kotlin コンパイラのテストのみを目的とした内部コンパイラ構成を公開していたため、非推奨になりました。非推奨化サイクル:
- 2.3.20: 警告を報告
「プロセス外 (out of process)」コンパイラ実行戦略を非推奨化
Issue: KT-83125
コンポーネント: Gradle
互換性のない変更の種類: ソース
短い要約: 「プロセス外 (out of process)」コンパイラ実行戦略は Build tools API でサポートされておらず、利用可能な中で最も遅い戦略です。Kotlin 2.3.20 では、この戦略を「daemon」および「プロセス内 (in process)」コンパイラ実行戦略を優先して非推奨にします。
非推奨化サイクル:
- 2.3.20: 警告を報告
ビルドツールの削除 (Build tool removal)
Ant のサポートを削除
Issue: KT-75875
コンポーネント: Ant
短い要約: Kotlin 2.3.0 では、ビルドツールとしての Ant のサポートを削除します。代わりに Gradle または Maven を使用してください。
非推奨化サイクル:
- 2.2.0: 警告を報告
- 2.3.0: サポートを削除
