Skip to content

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 では、IntLong のように互換性のない数値型に対して、ビルダー推論ラムダ関数のスコープ内で == 演算子を使用することが禁止されます。これは、他のコンテキストで現在行われているのと同じです。

非推奨サイクル:

  • 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 を返すことを禁止します。以前は、nullwhen 演算子のブランチの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.EnumgetDeclaringClass() メソッドから生成される Enum 値に対して、declaringClass シンセティックプロパティの使用を許可していました。このメソッドは Kotlin の Enum 型では利用できないにもかかわらずです。Kotlin 1.9 ではこのプロパティの使用が禁止され、代わりに拡張プロパティ declaringJavaClass への移行が提案されます。

非推奨サイクル:

  • 1.7.0: declaringClass プロパティの使用に対して警告を報告 (またはプログレッシブモードではエラーを報告) し、declaringJavaClass 拡張への移行を提案
  • 1.9.0: 警告をエラーに昇格。-XXLanguage:-ProhibitEnumDeclaringClass を使用して一時的に 1.9 より前の挙動に戻すことができます。
  • =1.10: declaringClass シンセティックプロパティを削除

コンパイラオプション -Xjvm-defaultenable および compatibility モードを非推奨に

問題: KT-46329

コンポーネント: Kotlin/JVM

非互換変更タイプ: ソース

概要: Kotlin 1.6.20 では、コンパイラオプション -Xjvm-defaultenable および compatibility モードの使用について警告が報告されます。

非推奨サイクル:

  • 1.6.20: コンパイラオプション -Xjvm-defaultenable および compatibility モードに対して警告を導入
  • = 1.9: この警告をエラーに昇格

標準ライブラリ

Range/ProgressionCollection を実装し始める際の潜在的なオーバーロード解決の変更について警告

問題: 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: プロパティを削除

コンパイラオプションの変更

問題: KT-27301, KT-48532

コンポーネント: 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: プロパティを削除