バージョン互換性
旧バージョンの言語モードで利用可能な機能について学びましょう。
この書籍はSwift 6を説明しています。Swift 6はXcode 16に含まれるデフォルトのバージョンです。Swift 6コンパイラを使用して、Swift 6、Swift 5、Swift 4.2、およびSwift 4で書かれたコードをビルドできます。
Swift 6コンパイラを使用してSwift 5言語モードのコードをビルドする場合、Swift 6の新機能を利用できます。これらの機能はデフォルトで有効になるか、今後追加される機能フラグによって有効化されます。ただし、厳密な並行性チェックを有効にするには、Swift 6言語モードにアップグレードする必要があります。
また、Xcode 15.3を使用してSwift 4およびSwift 4.2のコードをビルドする場合でも、ほとんどのSwift 5の機能が利用可能です。ただし、次の変更はSwift 5言語モードを使用するコードのみで利用できます:
- 不透明型を返す関数はSwift 5.1ランタイムが必要です。
- try? 式は、すでにオプショナルを返す式に対して追加のオプショナルレベルを導入しません。
- 大きな整数リテラルの初期化式は、正しい整数型として推論されます。例えば、
UInt64(0xffff_ffff_ffff_ffff)
はオーバーフローせずに正しい値として評価されます。
並行性はSwift 5言語モードと、それに対応する並行性型を提供するSwift標準ライブラリのバージョンが必要です。Appleプラットフォームでは、少なくとも次のデプロイターゲットが必要です:
- iOS 13
- macOS 10.15
- tvOS 13
- watchOS 6
- visionOS 1
Swift 6で書かれたターゲットは、Swift 5、Swift 4.2、またはSwift 4で書かれたターゲットに依存できますし、その逆も可能です。つまり、複数のフレームワークに分かれた大規模なプロジェクトの場合、コードを新しい言語バージョンに1つのフレームワークごとに移行できます。