この記事の要点
- Swift 3.0 のリリースの目標・リリースプロセス・想定スケジュールを示した記事です。Swift 3.0 は 2016 年後半のリリースが見込まれていました。
- Swift 3.0 はメジャーリリースで、Swift 2.2 とはソース互換ではありません。言語と Swift 標準ライブラリに対する根本的な変更を含みます。
- Swift 3.0 は Swift Package Manager を初めて含むリリースであり、Linux では初めて Swift Core Libraries を含むリリースでもあります。Swift Package Manager は Darwin と Linux の両方で利用できます。
- リリースに向けては「Developer Preview(seed / beta)」が段階的に提供され、
masterの最新スナップショットよりも安定したビルドを試せるようにします。 - すべての言語・API の変更は Swift Evolution プロセスを経ます。直接のコミット権がないコントリビューターも、プルリクエストで変更を提案できます。
リリース計画の概要
Swift 3.0 の位置づけ
Swift 3.0 はメジャーリリースで、Swift 2.2 とはソース互換ではありません。言語と標準ライブラリに対する根本的な変更を含み、Swift 3 向けに実装された変更の一覧は Swift Evolution サイトで確認できます。
このリリースには次の節目が含まれます。
- Swift Package Manager を初めて含むリリースです。まだ開発初期段階ですが、クロスプラットフォームな Swift パッケージの開発と配布をサポートし、Darwin と Linux の両方で利用できます。
- Linux 向けには、Swift 3 が Swift Core Libraries を初めて含むリリースになります。
Swift 3.0 は 2016 年後半のリリースが見込まれていました。Swift.org でのリリースに加えて、将来のバージョンの Xcode にも同梱される予定とされました。
Developer Preview
Swift 3.0 では、安定化された Swift 3 のビルドを提供する Developer Preview(「seed」や「beta」とも呼ばれます)が段階的に公開されます。
- ねらいは、
masterの最新スナップショットを取得するのではなく、より安定して品質保証されたバイナリをユーザーがダウンロードして試し、バグ報告できるようにすることです。 - Developer Preview の間隔は不規則になる見込みですが、おおよそ 4〜6 週間ごととされました。間隔は
masterに入る変更量や、preview ブランチの安定化に必要な時間に左右されます。 - Swift 3.0 は、最後の Developer Preview ブランチをもって「GM」(Golden Master)と宣言されます。
- Developer Preview に入れる内容は、各リポジトリのリリースマネージャが管理します。
スケジュールとブランチ運用
- master: Swift 3.0 の開発は
masterで行われます。最後の Developer Preview ブランチが作成されるまで、masterに入る変更はすべて最終的な Swift 3.0 リリースに含まれます。その後、masterは将来の Swift リリースの開発を追うようになります。 - swift-3.0-preview-<X>-branch: Developer Preview 用のブランチは
masterから作成されます。これらのブランチへの変更は、継続的インテグレーション(CI)でのテストを起動するプルリクエストを通じて提出する必要があり、リリースマネージャがマージを承認します。 - swift-3.0-branch:
masterから作られる最後の Developer Preview ブランチはswift-3.0-branchと呼ばれ、これが最終的なリリースブランチになります。 - 最初の Developer Preview ブランチ
swift-3.0-preview-1-branchは 5 月 12 日にmasterから作成され、その 4〜6 週間後にリリースされる予定とされました。 - 最後の Developer Preview ブランチ(
swift-3.0-branch)を作成する日付は当時未定で、決定次第告知されるとされました。
Swift 3.0 のブランチ運用は複数のリポジトリにまたがります。Developer Preview ブランチを持つのは swift・swift-lldb・swift-cmark・swift-llbuild・swift-package-manager・swift-corelibs-libdispatch・swift-corelibs-foundation・swift-corelibs-xctest です。swift-llvm・swift-clang は既にほぼ収束しているため、Developer Preview ブランチを持たず swift-3.0-branch のみを持ちます。
リリースマネージャ
リリース全体は次の担当者が統括し、リリースが収束するにつれて変更管理が厳格化される時点を告知します。
- Ted Kremenek: Swift 3.0 全体のリリースマネージャ
- Frédéric Riss: swift-llvm・swift-clang のリリースマネージャ
- Kate Stone: swift-lldb のリリースマネージャ
- Tony Parker: swift-corelibs-foundation のリリースマネージャ
- Daniel Steffen: swift-corelibs-libdispatch のリリースマネージャ
- Mike Ferris: swift-corelibs-xctest のリリースマネージャ
- Rick Ballard: swift-package-manager のリリースマネージャ
なお、当時案内されていた Swift メーリングリストは現在は閉鎖・アーカイブされ、Swift Forums に置き換えられています。
参加・確認すべきポイント
Swift 3.0 に変更を取り込む流れ
- Swift 3.0 が収束するにつれて、リリースの中核的な目標に沿う変更だけが検討されるようになります。
- 言語のソース互換性を壊す変更は、ケースバイケースで検討されます。
- すべての言語・API の変更は Swift Evolution プロセスを経ます。
- 変更を受け入れる基準(リリースマネージャが設定)は、リリースが収束するにつれて徐々に厳しくなります。同じ方針は、実質的に小さなリリースである Developer Preview ブランチにも適用されます。
プルリクエストに添える情報
Developer Preview ブランチへの取り込みを提案するプルリクエストには、次の情報を含めます。
- Explanation(説明): 修正する問題や行う拡張の説明。簡潔でよいが明確であること。
- Scope(影響範囲): 変更の影響・重要度の評価。たとえばソース互換性を壊す言語変更かどうかなど。
- SR Issue: 対応する bugs.swift.org の SR 番号(該当する場合)。
- Risk(リスク): その変更を取り込むことでリリースに生じる具体的なリスク。
- Testing(テスト): 影響を検証するために実施済み、または必要なテスト。
影響を受けるコンポーネントのコードオーナーがレビューを行います。技術レビューはコードオーナーが委任することも、必要に応じて依頼することもできます。Developer Preview ブランチに入るすべての変更は、対応するリリースマネージャが受け入れるプルリクエストを経る必要があります。