この記事の要点
- Swift 5.2 の目標・リリースプロセス・想定スケジュールを示した記事です。
- Swift 5.2 は、品質とパフォーマンスの大幅な向上を目的としたリリースと位置づけられています。
swift-5.2-branchは 2019 年 12 月 9 日に作成され、これ以降の変更はリリース基準を満たす場合のみプルリクエストを通じて取り込まれます。- indexstore-db・sourcekit-lsp・swift-llbuild・swift-package-manager は例外として、ブランチ作成後も
masterから毎日マージされ、締め切りは 2020 年 1 月 7 日まで延長されます。
リリース計画の概要
Swift 5.2 の位置づけ
Swift 5.2 は、品質とパフォーマンスの大幅な向上を盛り込むことを意図したリリースです。5.0 での ABI 安定化や 5.1 での module stability のような大きな言語基盤の変更を主目的とするのではなく、既存の機能の完成度と速度の改善に焦点が置かれています。
スナップショットによる提供
Swift 5.2 リリースブランチのダウンロード可能なスナップショットは、継続的インテグレーション(CI)テストの一部として定期的に公開されます。Swift 5.2 のリリース後は、スナップショットに加えて公式の最終ビルドも公開されます。
スケジュールとブランチ運用
2019 年 12 月 9 日に swift-5.2-branch が作成され、このブランチが Swift 5.2 でリリースされる変更を含みます。ブランチ作成後は、リリース基準を満たす変更のみがプルリクエストを通じてブランチに取り込まれます。
この計画には注目すべき例外があります。次のプロジェクトは master から swift-5.2-branch へ毎日マージされ、最終締め切りはブランチ作成日より後に延長されます。
| プロジェクト | 締め切り |
|---|---|
| indexstore-db | 2020 年 1 月 7 日 |
| sourcekit-lsp | 2020 年 1 月 7 日 |
| swift-llbuild | 2020 年 1 月 7 日 |
| swift-package-manager | 2020 年 1 月 7 日 |
Swift 5.2 のブランチ運用は複数のリポジトリにまたがり、indexstore-db・sourcekit-lsp・swift・swift-clang・swift-clang-tools-extra・swift-cmark・swift-compiler-rt・swift-corelibs-foundation・swift-corelibs-libdispatch・swift-corelibs-xctest・swift-integration-tests・swift-libcxx・swift-llbuild・swift-lldb・swift-llvm・swift-package-manager・swift-stress-tester・swift-syntax・swift-xcode-playground-support が swift-5.2-branch を持ちます。
リリースマネージャ
リリース全体は次の担当者が統括し、リリースが収束するにつれて変更管理が厳格化される時点を告知します。
- Ted Kremenek: Swift 5.2 全体のリリースマネージャ
- Doug Gregor: Swift コンパイラのリリースマネージャ
- Duncan Exon Smith: swift-llvm・swift-clang・swift-compiler-rt・swift-clang-tools-extra・swift-libcxx のリリースマネージャ
- Fred Riss: swift-lldb のリリースマネージャ
- Ben Cohen: Swift 標準ライブラリのリリースマネージャ
- Tony Parker: swift-corelibs-foundation のリリースマネージャ
- Pierre Habouzit: swift-corelibs-libdispatch のリリースマネージャ
- Brian Croom: swift-corelibs-xctest のリリースマネージャ
- Rick Ballard: swift-package-manager のリリースマネージャ
- Daniel Dunbar: swift-llbuild のリリースマネージャ
- Argyrios Kyrtzidis: sourcekit-lsp・indexstore-db・swift-syntax・swift-stress-tester のリリースマネージャ
リリース管理プロセスについての質問は、Swift Forums への投稿や Ted Kremenek への連絡が案内されました。
参加・確認すべきポイント
Swift 5.2 に変更を取り込む流れ
- すべての言語・API の変更は Swift Evolution プロセスを経ます。Swift 5.2 への反映を狙う Proposal は、ブランチ作成日までに完了することを目指すのが望ましいとされました。例外は個別に判断され、特にリリースの中核目標と結びつく場合に考慮されます。
- それ以外の変更(バグ修正、診断の改善、SourceKit のインターフェイス改善など)は、リスクと影響に基づいて受け入れられます。
- リリースの品質確認に役立つ場合は、リスクの低いテストの微調整もリリースブランチに遅い段階で受け入れられます。
- リリースが収束するにつれて、取り込み基準は徐々に厳しくなります。
プルリクエストに添える情報
ブランチ作成後にリリースブランチへの取り込みを提案するプルリクエストには、次の情報を含めます。
- Explanation(説明): 修正する問題や行う拡張の説明。簡潔でよいが明確であること。
- Scope(影響範囲): 変更の影響・重要度の評価。たとえばソース互換性を壊す言語変更かどうかなど。
- SR Issue: 対応する bugs.swift.org の SR 番号(該当する場合)。
- Risk(リスク): その変更を取り込むことでリリースに生じる具体的なリスク。
- Testing(テスト): 影響を検証するために実施済み、または必要なテスト。
- Reviewer(レビュアー): 影響を受けるコンポーネントのコードオーナーによるレビュー。技術レビューはコードオーナーが委任することも、必要に応じて依頼することもできます。
master から自動的にマージされる変更を除き、swift-5.2-branch に入るすべての変更は、対応するリリースマネージャが受け入れるプルリクエストを経る必要があります。