Swift 4.2の公式提供開始に続いて、Swiftチームは現在、リリースの最終段階が始まったSwift 5に注力している。2019年初頭のリリースが予定されるSwift 5は、ソース互換性を確保しながら、ABIの安定性の実現を目標とする。
ABIの安定性とは、Swiftバージョン間の“バイナリ互換性”と理解すればよいだろう。ABIが安定することにより、ABIに準拠したコードを生成することにより、コンパイルに使用されたコンパイラのバージョンに関わらず、間もなく登場するSwift フレームワークをひとつのプログラムにリンクすることが可能になる。これは、サードパーティのフレームワーク開発者のためだけでなく、Apple内でのSwiftの採用を促進する上でも極めて重要だ。ABIの安定性は、当初Swift 3で計画されていたが、開発中の新たな言語機能が膨大であったことが原因で遅れていた。
このように、ABIの安定性には、Appleがモジュール安定性と呼んでいる、ライブラリの将来のコンパイラバージョンでの前方互換性を保証するためのインターフェースは含まれていない。言い換えれば、ABIの安定性がプログラム実行時のフレームワークのリンク可能性には影響するものであるのに対して、モジュール安定性は、コンパイラの以前のバージョン(例えばSwift 5)で構築されたライブラリの、より新しいコンパイラ(例えばSwift 6)を使用したプログラム開発における使用可能性に関わるものだ。モジュール安定性は、複数のユーザを抱えた開発者の負担を削減する意味で望ましいものであることは確かだが、必須ではない。Swift 5でモジュール安定性が実現するかどうかは、現時点では明確ではない。
Swift 5には新しい言語機能も多数含まれている。いくつかはすでに実装が完了しており、リリースされることは間違いない。注目すべき機能としては、
- アイデンティティ・キーパス –
self
仮想プロパティを使うことで、キーパスが適用される値全体の参照が可能になる。 count(where:)
– ブール式を満足するSequence
内の要素数をカウントする機能が追加される。- 生文字列デリミタ – 一般的な引用符(
")
を使用せず、"""
で区切られた文字列内には、通常ならばエスケープが必要な文字を含めることができる。
その他、開発中の機能としては、try?
の使用によるオプショナルのネストの回避、SIMDベクタ
、ユーザ定義の動的“callable”タイプ
などがある。
新しい言語機能は、いずれもソース互換性を損なうことはない。すなわち、Swift 4.2コンパイラでソース互換性のあるソースの大部分は、Swift 5.0コンパイラでもコンパイルが可能なはずだ。ただし、4.2より前のSwiftバージョンはソース互換でないため、少なくともSwift 4.2までアップグレードする必要がある。開発チームは5.0に向けて、定期的に中間リリースをダウンロード可能なスナップショットとしてポストする予定である。
この記事を評価
- 編集者評
- 編集長アクション