Kotlin 1.8 互換性ガイド
言語をモダンに保つ および 快適なアップデート は、Kotlin 言語設計における基本的な原則の1つです。前者は、言語の進化を妨げる構文は削除されるべきであると述べており、後者は、コードの移行を可能な限りスムーズにするために、この削除が事前に十分に周知されるべきであると述べています。
言語の変更点のほとんどは、アップデートの変更ログやコンパイラ警告など、他のチャネルを通じてすでに発表されていますが、このドキュメントではそれらすべてをまとめ、Kotlin 1.7 から Kotlin 1.8 への移行のための完全なリファレンスを提供します。
基本的な用語
このドキュメントでは、いくつかの種類の互換性について説明します。
- ソース互換性: ソース非互換の変更とは、これまで問題なく (エラーや警告なしに) コンパイルできていたコードが、コンパイルできなくなるような変更を指します。
- バイナリ互換性: 2つのバイナリアーティファクトは、それらを相互に入れ替えてもロードまたはリンクエラーが発生しない場合に、バイナリ互換であると言われます。
- 動作互換性: 動作非互換の変更とは、同じプログラムが変更適用前後で異なる動作を示す場合に、その変更を指します。
これらの定義は純粋な Kotlin のみに与えられるものであることに注意してください。他の言語の観点 (例えば Java) から見た Kotlin コードの互換性については、このドキュメントの範囲外です。
言語
抽象スーパークラスメンバーへのスーパークラス呼び出しの委譲を禁止
問題: KT-45508, KT-49017, KT-38078
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin は、明示的または暗黙的なスーパークラス呼び出しがスーパークラスの_抽象_メンバーに委譲される場合にコンパイルエラーを報告します。これは、スーパーインターフェースにデフォルトの実装がある場合でも同様です。
非推奨サイクル:
- 1.5.20: 抽象メンバーをすべてオーバーライドしない非抽象クラスが使用された場合に警告を報告
- 1.7.0: スーパークラス呼び出しが実際にスーパークラスから抽象メンバーにアクセスする場合に警告を報告
- 1.7.0:
-Xjvm-default=all
または-Xjvm-default=all-compatibility
互換モードが有効な場合、影響を受けるすべての場合にエラーを報告。プログレッシブモードではエラーを報告- 1.8.0: スーパークラスの抽象メソッドをオーバーライドしていない具象クラスを宣言する場合、および
Any
メソッドのスーパークラス呼び出しがスーパークラスで抽象としてオーバーライドされている場合にエラーを報告- 1.9.0: 明示的なスーパークラス呼び出しがスーパークラスの抽象メソッドに対して行われる場合を含む、影響を受けるすべての場合にエラーを報告
when
式における紛らわしい文法を非推奨に
問題: KT-48385
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.6 では、
when
条件式におけるいくつかの紛らわしい文法構造が非推奨になりました。非推奨サイクル:
- 1.6.20: 影響を受ける式に対して非推奨警告を導入
- 1.8.0: この警告をエラーに昇格。
-XXLanguage:-ProhibitConfusingSyntaxInWhenBranches
を使用して一時的に 1.8 より前の挙動に戻すことができます。= 1.9: いくつかの非推奨の構造を新しい言語機能のために再利用
異なる数値型間の暗黙的な型強制を禁止
問題: KT-48645
コンポーネント: Kotlin/JVM
非互換変更タイプ: 動作
概要: Kotlin は、数値のダウンキャストのみが意味的に必要な場合、数値をプリミティブ数値型に自動的に変換することを避けます。
非推奨サイクル:
- < 1.5.30: 影響を受けるすべての場合で古い挙動
- 1.5.30: 生成されたプロパティデリゲートアクセサにおけるダウンキャストの挙動を修正。
-Xuse-old-backend
を使用して一時的に 1.5.30 より前の修正前の挙動に戻すことができます。= 1.9: 他の影響を受ける場合でのダウンキャストの挙動を修正
sealed
クラスのプライベートコンストラクタを本当にプライベートに
問題: KT-44866
コンポーネント: コア言語
非互換変更タイプ: ソース
概要:
sealed
クラスの継承者がプロジェクト構造のどこに宣言されるかという制限が緩和された後、sealed
クラスのコンストラクタのデフォルトの可視性はprotected
になりました。しかし、1.8 までは、Kotlin はsealed
クラスの明示的に宣言されたプライベートコンストラクタをそれらのクラスのスコープ外から呼び出すことを依然として許可していました。非推奨サイクル:
- 1.6.20:
sealed
クラスのプライベートコンストラクタがそのクラスの外部から呼び出された場合に警告を報告 (またはプログレッシブモードではエラーを報告)- 1.8.0: プライベートコンストラクタにデフォルトの可視性ルールを適用 (プライベートコンストラクタへの呼び出しは、その呼び出しが対応するクラス内にある場合にのみ解決可能)。
-XXLanguage:-UseConsistentRulesForPrivateConstructorsOfSealedClasses
コンパイラ引数を指定することで、一時的に古い挙動に戻すことができます。
ビルダー推論コンテキストにおいて、互換性のない数値型に対して ==
演算子を使用することを禁止
問題: KT-45508
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.8 では、
Int
とLong
のように互換性のない数値型に対して、ビルダー推論ラムダ関数のスコープ内で==
演算子を使用することが禁止されます。これは、他のコンテキストで現在行われているのと同じです。非推奨サイクル:
- 1.6.20: 互換性のない数値型に対して
==
演算子が使用された場合に警告を報告 (またはプログレッシブモードではエラーを報告)- 1.8.0: 警告をエラーに昇格。
-XXLanguage:-ProperEqualityChecksInBuilderInferenceCalls
を使用して一時的に 1.8 より前の挙動に戻すことができます。
Elvis 演算子の右辺における else
を持たない if
および網羅的でない when
を禁止
問題: KT-44705
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.8 では、Elvis 演算子 (
?:
) の右辺で、網羅的でないwhen
式やelse
ブランチを持たないif
式を使用することが禁止されます。以前は、Elvis 演算子の結果が式として使用されない場合に許可されていました。非推奨サイクル:
- 1.6.20: そのような網羅的でない
if
およびwhen
式に対して警告を報告 (またはプログレッシブモードではエラーを報告)- 1.8.0: この警告をエラーに昇格。
-XXLanguage:-ProhibitNonExhaustiveIfInRhsOfElvis
を使用して一時的に 1.8 より前の挙動に戻すことができます。
ジェネリック型エイリアスの使用における上限違反を禁止 (エイリアス型の複数の型引数で使用される型パラメータ)
問題: KT-29168
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.8 では、
typealias Alias<T> = Base<T, T>
のように、エイリアス型(alias type)の複数の型引数で1つの型エイリアス型パラメータが使用されている場合に、対応するエイリアス型(alias type)の型パラメータの上限制限に違反する型引数を持つ型エイリアスの使用が禁止されます。非推奨サイクル:
- 1.7.0: 型エイリアスの使用において、型引数が対応するエイリアス型(alias type)の型パラメータの上限制約に違反している場合に警告を報告 (またはプログレッシブモードではエラーを報告)
- 1.8.0: この警告をエラーに昇格。
-XXLanguage:-ReportMissingUpperBoundsViolatedErrorOnAbbreviationAtSupertypes
を使用して一時的に 1.8 より前の挙動に戻すことができます。
ジェネリック型エイリアスの使用における上限違反を禁止 (エイリアス型の型引数のジェネリック型引数として使用される型パラメータ)
問題: KT-54066
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin は、
typealias Alias<T> = Base<List<T>>
のように、型エイリアスの型パラメータがエイリアス型(alias type)の型引数のジェネリック型引数として使用されている場合に、対応するエイリアス型(alias type)の型パラメータの上限制限に違反する型引数を持つ型エイリアスの使用を禁止します。非推奨サイクル:
- 1.8.0: ジェネリック型エイリアスの使用において、型引数が対応するエイリアス型(alias type)の型パラメータの上限制約に違反している場合に警告を報告
=1.10: 警告をエラーに昇格
委譲内での拡張プロパティに宣言された型パラメータの使用を禁止
問題: KT-24643
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.8 では、ジェネリック型に対する拡張プロパティを、レシーバの型パラメータを安全でない方法で使用するジェネリック型に委譲することが禁止されます。
非推奨サイクル:
- 1.6.0: 拡張プロパティを、委譲されるプロパティの型引数から推論された型パラメータを特定の方法で使用する型に委譲した場合に警告を報告 (またはプログレッシブモードではエラーを報告)
- 1.8.0: 警告をエラーに昇格。
-XXLanguage:-ForbidUsingExtensionPropertyTypeParameterInDelegate
を使用して一時的に 1.8 より前の挙動に戻すことができます。
サスペンド関数での @Synchronized
アノテーションを禁止
問題: KT-48516
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.8 では、サスペンド関数に
@Synchronized
アノテーションを配置することが禁止されます。これは、synchronized
ブロック内でサスペンド呼び出しが発生することを許可すべきではないためです。非推奨サイクル:
- 1.6.0:
@Synchronized
アノテーションが付けられたサスペンド関数に対して警告を報告。プログレッシブモードではエラーとして報告されます。- 1.8.0: 警告をエラーに昇格。
-XXLanguage:-SynchronizedSuspendError
を使用して一時的に 1.8 より前の挙動に戻すことができます。
非可変長引数パラメータへの引数渡しにスプレッド演算子を使用することを禁止
問題: KT-48162
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin は、特定の条件下で、スプレッド演算子 (
*
) を使用して非可変長配列パラメータに配列を渡すことを許可していました。Kotlin 1.8 からは、これが禁止されます。非推奨サイクル:
- 1.6.0: 非可変長配列パラメータが期待される場所でスプレッド演算子を使用した場合に警告を報告 (またはプログレッシブモードではエラーを報告)
- 1.8.0: 警告をエラーに昇格。
-XXLanguage:-ReportNonVarargSpreadOnGenericCalls
を使用して一時的に 1.8 より前の挙動に戻すことができます。
ラムダの戻り値型によってオーバーロードされた関数に渡されるラムダにおける null 安全性違反を禁止
問題: KT-49658
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.8 では、ラムダの戻り値型によってオーバーロードされた関数に渡されるラムダが、オーバーロードが null 許容な戻り値型を許可しない場合に
null
を返すことを禁止します。以前は、null
がwhen
演算子のブランチの1つから返される場合に許可されていました。非推奨サイクル:
- 1.6.20: 型不一致警告を報告 (またはプログレッシブモードではエラーを報告)
- 1.8.0: 警告をエラーに昇格。
-XXLanguage:-DontLoseDiagnosticsDuringOverloadResolutionByReturnType
を使用して一時的に 1.8 より前の挙動に戻すことができます。
public
なシグネチャでローカル型を近似する際に null 可能性を保持
問題: KT-53982
コンポーネント: コア言語
非互換変更タイプ: ソース, バイナリ
概要: 明示的に戻り値型が指定されていない式ボディ関数からローカル型または匿名型が返される場合、Kotlin コンパイラは、その型の既知のスーパータイプを使用して戻り値型を推論 (または近似) します。この際、コンパイラは、実際には
null
値が返される可能性があるにもかかわらず、null非許容型を推論してしまうことがあります。非推奨サイクル:
- 1.8.0: フレキシブル型をフレキシブルなスーパータイプで近似
- 1.8.0: 宣言が、null許容であるべき型がnull非許容型と推論された場合に警告を報告し、ユーザーに明示的に型を指定するよう促す
- 1.9.0: null許容型をnull許容なスーパータイプで近似。
-XXLanguage:-KeepNullabilityWhenApproximatingLocalType
を使用して一時的に 1.9 より前の挙動に戻すことができます。
オーバーライドを通じて非推奨を伝播しない
問題: KT-47902
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.9 からは、スーパークラスの非推奨メンバーからサブクラスのオーバーライドメンバーへの非推奨の伝播は行われなくなります。これにより、サブクラスでは非推奨にせずにスーパークラスのメンバーを非推奨にするための明示的なメカニズムが提供されます。
非推奨サイクル:
- 1.6.20: 将来の挙動変更のメッセージと、この警告を抑制するか、非推奨メンバーのオーバーライドに明示的に
@Deprecated
アノテーションを記述するよう促す警告を報告- 1.9.0: オーバーライドされたメンバーへの非推奨ステータスの伝播を停止。この変更はプログレッシブモードでも即座に有効になります。
ビルダー推論コンテキストにおける、型変数を上限に暗黙的に推論することを禁止
問題: KT-47986
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.9 では、ビルダー推論ラムダ関数のスコープ内で使用箇所での型情報がない場合に、型変数を対応する型パラメータの上限に推論することが禁止されます。これは、他のコンテキストで現在行われているのと同じです。
非推奨サイクル:
- 1.7.20: 使用箇所での型情報がない場合に、型パラメータが宣言された上限に推論された場合に警告を報告 (またはプログレッシブモードではエラーを報告)
- 1.9.0: 警告をエラーに昇格。
-XXLanguage:-ForbidInferringPostponedTypeVariableIntoDeclaredUpperBound
を使用して一時的に 1.9 より前の挙動に戻すことができます。
アノテーションクラス内でのコレクションリテラルの使用を、パラメータ宣言以外の場所で禁止
問題: KT-39041
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin は、アノテーションクラスのパラメータに配列を渡すため、またはこれらのパラメータのデフォルト値を指定するために、コレクションリテラルを制限された方法で使用することを許可しています。しかし、それに加えて、Kotlin はアノテーションクラス内の他の場所 (例えば、そのネストされたオブジェクト内) でコレクションリテラルを使用することを許可していました。Kotlin 1.9 では、アノテーションクラス内でのコレクションリテラルの使用が、そのパラメータのデフォルト値以外の場所で禁止されます。
非推奨サイクル:
- 1.7.0: アノテーションクラスのネストされたオブジェクト内の配列リテラルに対して警告を報告 (またはプログレッシブモードではエラーを報告)
- 1.9.0: 警告をエラーに昇格
デフォルト値式におけるデフォルト値を持つパラメータの前方参照を禁止
問題: KT-25694
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.9 では、デフォルト値式において、デフォルト値を持つパラメータの前方参照が禁止されます。これにより、パラメータがデフォルト値式でアクセスされるまでに、関数に渡されるか、または自身のデフォルト値式によって初期化されるかのいずれかの値がすでに存在するようになります。
非推奨サイクル:
- 1.7.0: デフォルト値を持つパラメータが、それより前に来る別のパラメータのデフォルト値で参照された場合に警告を報告 (またはプログレッシブモードではエラーを報告)
- 1.9.0: 警告をエラーに昇格。
-XXLanguage:-ProhibitIllegalValueParameterUsageInDefaultArguments
を使用して一時的に 1.9 より前の挙動に戻すことができます。
インライン関数型パラメータに対する拡張呼び出しを禁止
問題: KT-52502
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin は、インライン関数型パラメータを別のインライン関数にレシーバとして渡すことを許可していましたが、そのようなコードをコンパイルする際には常にコンパイラ例外が発生していました。Kotlin 1.9 ではこれが禁止され、コンパイラのクラッシュではなくエラーが報告されるようになります。
非推奨サイクル:
- 1.7.20: インライン関数型パラメータに対するインライン拡張呼び出しに対して警告を報告 (またはプログレッシブモードではエラーを報告)
- 1.9.0: 警告をエラーに昇格
匿名関数引数を持つ suspend
という名前の infix 関数への呼び出しを禁止
問題: KT-49264
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.9 からは、単一の関数型引数を匿名関数リテラルとして持つ
suspend
という名前の infix 関数を呼び出すことはできなくなります。非推奨サイクル:
- 1.7.20: 匿名関数リテラルを持つ
suspend
infix 呼び出しに対して警告を報告- 1.9.0: 警告をエラーに昇格。
-XXLanguage:-ModifierNonBuiltinSuspendFunError
を使用して一時的に 1.9 より前の挙動に戻すことができます。=1.10:
suspend fun
トークンシーケンスがパーサーによって解釈される方法を変更
inner
クラスでキャプチャされた型パラメータを、そのバリアンスに反して使用することを禁止
問題: KT-50947
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.9 では、
in
またはout
のバリアンスを持つ外側クラスの型パラメータを、そのクラスのinner
クラス内で、その型パラメータの宣言されたバリアンスに違反する位置で使用することが禁止されます。非推奨サイクル:
- 1.7.0: 外側クラスの型パラメータの使用位置がそのパラメータのバリアンスルールに違反している場合に警告を報告 (またはプログレッシブモードではエラーを報告)
- 1.9.0: 警告をエラーに昇格。
-XXLanguage:-ReportTypeVarianceConflictOnQualifierArguments
を使用して一時的に 1.9 より前の挙動に戻すことができます。
複合代入演算子での明示的な戻り値型を持たない関数の再帰呼び出しを禁止
問題: KT-48546
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.9 では、明示的に戻り値型が指定されていない関数が、その関数のボディ内の複合代入演算子の引数内で再帰的に呼び出されることが禁止されます。これは、その関数のボディ内の他の式で現在行われているのと同じです。
非推奨サイクル:
- 1.7.0: 明示的に戻り値型が指定されていない関数が、その関数のボディ内の複合代入演算子の引数内で再帰的に呼び出された場合に警告を報告 (またはプログレッシブモードではエラーを報告)
- 1.9.0: 警告をエラーに昇格
@NotNull T
が期待され、null 許容境界を持つ Kotlin ジェネリックパラメータが与えられた場合の不健全な呼び出しを禁止
問題: KT-36770
コンポーネント: Kotlin/JVM
非互換変更タイプ: ソース
概要: Kotlin 1.9 では、
@NotNull
アノテーションが付けられた Java メソッドのパラメータに、null許容の可能性のあるジェネリック型の値が渡されるメソッド呼び出しが禁止されます。非推奨サイクル:
- 1.5.20: null非許容型が期待される場所に制約のないジェネリック型パラメータが渡された場合に警告を報告
- 1.9.0: 上記の警告の代わりに型不一致エラーを報告。
-XXLanguage:-ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
を使用して一時的に 1.8 より前の挙動に戻すことができます。
enum
のエントリ初期化子からの enum
クラスのコンパニオンのメンバーへのアクセスを禁止
問題: KT-49110
コンポーネント: コア言語
非互換変更タイプ: ソース
概要: Kotlin 1.9 では、
enum
エントリ初期化子からのenum
のコンパニオンオブジェクトへのあらゆる種類のアクセスが禁止されます。非推奨サイクル:
- 1.6.20: そのようなコンパニオンメンバーへのアクセスに対して警告を報告 (またはプログレッシブモードではエラーを報告)
- 1.9.0: 警告をエラーに昇格。
-XXLanguage:-ProhibitAccessToEnumCompanionMembersInEnumConstructorCall
を使用して一時的に 1.8 より前の挙動に戻すことができます。
Enum.declaringClass
シンセティックプロパティを非推奨にし、削除
問題: KT-49653
コンポーネント: Kotlin/JVM
非互換変更タイプ: ソース
概要: Kotlin は、基盤となる Java クラス
java.lang.Enum
のgetDeclaringClass()
メソッドから生成されるEnum
値に対して、declaringClass
シンセティックプロパティの使用を許可していました。このメソッドは Kotlin のEnum
型では利用できないにもかかわらずです。Kotlin 1.9 ではこのプロパティの使用が禁止され、代わりに拡張プロパティdeclaringJavaClass
への移行が提案されます。非推奨サイクル:
- 1.7.0:
declaringClass
プロパティの使用に対して警告を報告 (またはプログレッシブモードではエラーを報告) し、declaringJavaClass
拡張への移行を提案- 1.9.0: 警告をエラーに昇格。
-XXLanguage:-ProhibitEnumDeclaringClass
を使用して一時的に 1.9 より前の挙動に戻すことができます。=1.10:
declaringClass
シンセティックプロパティを削除
コンパイラオプション -Xjvm-default
の enable
および compatibility
モードを非推奨に
問題: KT-46329
コンポーネント: Kotlin/JVM
非互換変更タイプ: ソース
概要: Kotlin 1.6.20 では、コンパイラオプション
-Xjvm-default
のenable
およびcompatibility
モードの使用について警告が報告されます。非推奨サイクル:
- 1.6.20: コンパイラオプション
-Xjvm-default
のenable
およびcompatibility
モードに対して警告を導入= 1.9: この警告をエラーに昇格
標準ライブラリ
Range
/Progression
が Collection
を実装し始める際の潜在的なオーバーロード解決の変更について警告
問題: KT-49276
コンポーネント: コア言語 / kotlin-stdlib
非互換変更タイプ: ソース
概要: Kotlin 1.9 では、標準のプログレッションおよびそこから継承される具体的なレンジで
Collection
インターフェースを実装することが計画されています。これにより、あるメソッドに2つのオーバーロード (1つは要素を受け入れ、もう1つはコレクションを受け入れる) がある場合、オーバーロード解決で異なるオーバーロードが選択される可能性があります。Kotlin は、レンジまたはプログレッション引数でそのようなオーバーロードされたメソッドが呼び出された場合に警告またはエラーを報告することで、この状況を可視化します。非推奨サイクル:
- 1.6.20: 標準のプログレッションまたはそのレンジの継承者を引数としてオーバーロードされたメソッドが呼び出された場合に警告を報告。このプログレッション/レンジによる
Collection
インターフェースの実装が、将来的にこの呼び出しで別のオーバーロードが選択されることにつながる場合。- 1.8.0: この警告をエラーに昇格
- 1.9.0: エラーの報告を停止し、プログレッションで
Collection
インターフェースを実装することで、影響を受けるケースでオーバーロード解決の結果を変更
kotlin.dom
および kotlin.browser
パッケージの宣言を kotlinx.*
に移行
問題: KT-39330
コンポーネント: kotlin-stdlib (JS)
非互換変更タイプ: ソース
概要:
kotlin.dom
およびkotlin.browser
パッケージからの宣言は、stdlib からそれらを抽出するための準備として、対応するkotlinx.*
パッケージに移動されました。非推奨サイクル:
- 1.4.0:
kotlinx.dom
およびkotlinx.browser
パッケージに代替 API を導入- 1.4.0:
kotlin.dom
およびkotlin.browser
パッケージの API を非推奨化し、上記の新しい API を代替として提案- 1.6.0: 非推奨レベルをエラーに昇格
- 1.8.20: JS-IR ターゲット向けに stdlib から非推奨の関数を削除
= 1.9:
kotlinx.*
パッケージの API を別のライブラリに移動
一部の JS 専用 API を非推奨に
問題: KT-48587
コンポーネント: kotlin-stdlib (JS)
非互換変更タイプ: ソース
概要: stdlib の多くの JS 専用関数が削除のために非推奨になりました。これには、
String.concat(String)
,String.match(regex: String)
,String.matches(regex: String)
、および比較関数を取る配列のsort
関数 (例:Array<out T>.sort(comparison: (a: T, b: T) -> Int)
) が含まれます。非推奨サイクル:
- 1.6.0: 影響を受ける関数を警告とともに非推奨化
- 1.9.0: 非推奨レベルをエラーに昇格
=1.10.0: 公開 API から非推奨の関数を削除
ツール
KotlinCompile
タスクの classpath
プロパティの非推奨レベルを昇格
問題: KT-51679
コンポーネント: Gradle
非互換変更タイプ: ソース
概要:
KotlinCompile
タスクのclasspath
プロパティは非推奨になりました。非推奨サイクル:
- 1.7.0:
classpath
プロパティが非推奨化- 1.8.0: 非推奨レベルをエラーに昇格
=1.9.0: 公開 API から非推奨の関数を削除
kapt.use.worker.api
Gradle プロパティを削除
問題: KT-48827
コンポーネント: Gradle
非互換変更タイプ: 動作
概要: Gradle Workers API を介して kapt を実行することを許可していた
kapt.use.worker.api
プロパティ (デフォルト: true) を削除します。非推奨サイクル:
- 1.6.20: 非推奨レベルを警告に昇格
- 1.8.0: このプロパティを削除
kotlin.compiler.execution.strategy
システムプロパティを削除
問題: KT-51831
コンポーネント: Gradle
非互換変更タイプ: 動作
概要: コンパイラの実行戦略を選択するために使用されていた
kotlin.compiler.execution.strategy
システムプロパティを削除します。代わりに Gradle プロパティkotlin.compiler.execution.strategy
またはコンパイルタスクプロパティcompilerExecutionStrategy
を使用してください。非推奨サイクル:
- 1.7.0: 非推奨レベルを警告に昇格
- 1.8.0: プロパティを削除
コンパイラオプションの変更
コンポーネント: Gradle
非互換変更タイプ: ソース, バイナリ
概要: この変更は Gradle プラグインの作成者に影響を与える可能性があります。
kotlin-gradle-plugin
には、一部の内部型に追加のジェネリックパラメータがあります (ジェネリック型または*
を追加する必要があります)。KotlinNativeLink
タスクはAbstractKotlinNativeCompile
タスクを継承しなくなりました。KotlinJsCompilerOptions.outputFile
および関連するKotlinJsOptions.outputFile
オプションは非推奨になりました。代わりにKotlin2JsCompile.outputFileProperty
タスク入力を使用してください。kotlinOptions
タスク入力およびkotlinOptions{...}
タスク DSL はサポートモードであり、今後のリリースで非推奨になる予定です。compilerOptions
およびkotlinOptions
はタスク実行フェーズで変更できません (Kotlin 1.8 の新機能 の例外を1つ参照)。freeCompilerArgs
は不変のList<String>
を返します –kotlinOptions.freeCompilerArgs.remove("something")
は失敗します。古い JVM バックエンドを使用することを許可していたuseOldBackend
プロパティは削除されました。非推奨サイクル:
- 1.8.0:
KotlinNativeLink
タスクはAbstractKotlinNativeCompile
を継承しません。KotlinJsCompilerOptions.outputFile
および関連するKotlinJsOptions.outputFile
オプションは非推奨になりました。古い JVM バックエンドを使用することを許可していたuseOldBackend
プロパティは削除されました。
kotlin.internal.single.build.metrics.file
プロパティを非推奨に
問題: KT-53357
コンポーネント: Gradle
非互換変更タイプ: ソース
概要: ビルドレポート用の単一ファイルを定義するために使用されていた
kotlin.internal.single.build.metrics.file
プロパティを非推奨にします。代わりにkotlin.build.report.output=single_file
とともにkotlin.build.report.single_file
プロパティを使用してください。非推奨サイクル:
- 1.8.0: 非推奨レベルを警告に昇格
= 1.9: プロパティを削除