2016年後半リリース予定のSwift 3が近づくなか、AppleのDeveloper Tools部門でシニアディレクターを務めるChris Lattner氏が、Swift 3開発のふりかえりとSwift 4に向けた期待に関して、Swift-evolutionメーリングリストに長文メッセージを投げた。
Swift 3のふりかえりでは、主にオープンソース開発の利点と欠点について述べられている。彼は具体的にこう言っている。「オープンデザイン」は「クローズドデザイン」と比べて、時間がかかり予測しにくいが、最終成果は「ずっと良い」ものになる。コミュニティは限られたトピックにフォーカスすることが重要で、コアチームは事前にキーとなる議論をしておくことが重要だ。さらに彼はこう言っている。具体的な目標を持つことは、フォーカスを保ち、最終的にスコープ外となるサブプロジェクトを避けるのに役立つ。
それを踏まえて、Swift 4には大きな目標が2つあるとLattner氏は説明する。それは「3.0以降のソース安定化の約束を達成することと、標準ライブラリにABI安定化をもたらすこと」だ。そのため、2017年春までコアチームを多忙にするであろう第1フェーズの作業は、主として、既存のABIに影響を及ぼす、あるいは既存の標準ライブラリに大きな変更を引き起こす可能性のある機能になるだろう。コアチームがステージ1に順位付けた機能の一部を以下に示す。
-
ソース安定化のための機能。
-std=swift3
コンパイラフラグや、開発中だがまだ安定していない大きな取り組みを条件付きで有効にする方法など。 -
レジリエンス。ABI安定化を壊すことなく、公開APIがずっと進化するための方法を提供する。
-
標準ライブラリに必要とされるジェネリクスの改善。条件付き準拠、再帰的プロトコル制約など。
-
文字列の再評価。Swiftの文字列プログラミングモデルを改善して、Perlに匹敵するものを目指す。
-
メモリオーナーシップモデル(オプトイン)。Cyclone/Rustのメモリオーナーシップモデルから着想を得たもので、予測可能・決定可能なパフォーマンスを提供することを目指す。詳細についてはこちらを参照。
第2フェーズでは、ステージ1がピークを迎えるため、どれくらい時間が残されているかで新機能のスコープと計画が決まるだろう。ステージ2で検討される可能性のある機能をいくつか挙げる。
-
リフレクション。データ・メソッドリフレクションのためのユーザ向けAPIを含む。
-
ファーストクラスの並行性。アクター、async/await、アトミック性、メモリモデルなどの関連トピックを含む。Lattner氏が言っているように、残念ながら、新しい並行性モデルはSwift 4のリリースに間に合わないだろう。
-
ジェネリクスのさらなる改善。ジェネリクス・マニフェストに書かれているように、ABI安定化には特に必要ではない。
-
.swiftmodule
の安定化。サードパーティのバイナリフレームワークを可能にするのを目指す。 -
新しいスクリプティング機能。正規表現、マルチライン文字列リテラルなど。
-
プロパティビヘイビア。
lazy
、オブザーバ、同期など、プロパティビヘイビアを言語コアの外で定義するため、フレキシブルなモデルを提供することを目指す。
Lattner氏は最後に、ステージ2で検討する可能性のある機能はもっとたくさんあると述べている。サブモジュール、数値型の暗黙の昇格、C++ APIのインポート、健全な(hygienic)マクロシステム、保証された末尾呼び出し、enumを列挙可能にする、型付きの ‘throws’、ユーザ定義アトリビュート、抽象メソッド/クラス、SIMDサポートの改善、データ平行性のサポート、高階型など。
コアチームは2017年秋のどこかでSwift 4が出せることを期待している。
Rate this Article
- Editor Review
- Chief Editor Action