この記事の要点
- Swift 2.2 は、Swift がオープンソースとして公開されてから最初の公式リリースであり、その目標・リリースプロセス・想定スケジュールを示した記事です。
- Swift 2.2 は Swift 2.1 との互換性を概ね保つリリースで、バグ修正・診断(diagnostic)の改善・生成コードの高速化といった多数の中核的な改善を中心とし、言語自体の目立つ変更は多くありません。Swift 2 と、より破壊的な変更を含む Swift 3 との中間点として位置づけられました。
- リリースは
swift-2.2-branchというブランチで管理され、masterブランチは 2016 年 1 月 13 日のブランチ作成以降、主に Swift 3 の開発を追うようになります。 - 直接のコミット権を持たないコントリビューターも、プルリクエストで Swift 2.2 への変更を提案できます。提案には説明・影響範囲・リスク・テストなどの情報を添える必要があります。
リリース計画の概要
Swift 2.2 の位置づけ
Swift 2.2 はオープンソース化後の最初の公式リリースで、Swift 2.1 とほぼソース互換です。中身は、バグ修正、診断の改善、生成コードの高速化といった中核的な改善が中心で、言語そのものに大きく見える変更は多くありません。より破壊的な言語・標準ライブラリの変更は Swift 3 に回され、Swift 2.2 はその中間地点に当たります。
このリリースには Linux 版の Swift も含まれますが、まだ比較的新しく既知の制約があります。Swift 2.2 には Core Libraries は含まれず、LLDB と REPL は含まれます。Swift Package Manager も開発初期段階のため、このリリースには含まれません。Swift.org でのリリースに加えて、Swift 2.2 は将来のバージョンの Xcode にも同梱される予定とされました。
スケジュールとブランチ運用
リリースは複数のリポジトリにまたがる swift-2.2-branch で管理されます(swift・swift-llvm・swift-clang・swift-lldb・swift-cmark)。
- 2016 年 1 月 13 日に swift・swift-lldb・swift-cmark が
masterからswift-2.2-branchを分岐します。これ以降、masterは主に Swift 3 の開発を追います。 - swift-llvm・swift-clang の
swift-2.2-branchは、基盤となる LLVM プラットフォームを安定させる時間を長く取るため、それより早く(おおよそ LLVM revision 252576 から)作成済みで、masterから再マージはしません。 - 最終的なリリース日は未定(TBD)で、収束期間を経て 2016 年 3〜5 月ごろのリリースが見込まれていました。
- Swift 2.2 リリースブランチのバイナリビルドは、
master開発ブランチのスナップショットと並行して提供されます。 - Swift 3 も Swift 2.2 と同様のブランチ運用に従い、時期は後日告知されるとされました。
リリースマネージャ
リリース全体は次の担当者が統括し、リリースが収束するにつれて変更管理が厳格化される時点を告知します。
- Ted Kremenek: Swift 2.2 全体のリリースマネージャ
- Bob Wilson: LLVM・Clang コンポーネントのリリースマネージャ
- Kate Stone: LLDB コンポーネントのリリースマネージャ
なお、当時案内されていた Swift メーリングリストは現在は閉鎖・アーカイブされ、Swift Forums に置き換えられています。
参加・確認すべきポイント
Swift 2.2 に変更を取り込む流れ
- 1 月 13 日より前に
masterに入った変更は、定義上すべて Swift 2.2 に含まれます。 - ブランチ作成後に Swift 2.2 へ検討される言語・API の変更は、Swift 2.1 とのソース互換性を高めるものか、Swift 3 でビルドエラーになるコードのための移行警告に限られます。新機能や拡張は、よほど正当な理由がない限り受け入れられません。
- 変更を受け入れる基準(リリースマネージャが設定)は、リリースが収束するにつれて徐々に厳しくなります。
- 直接のコミット権がないコントリビューターは、プルリクエストで
swift-2.2-branchへの変更を提案できます。基本的にはmasterに入っている変更を取り込むために使い、原則としてバグ修正はまずmasterに入れてからswift-2.2-branchへ取り込みます。 - コミット権を持つコアコントリビューターは、ブランチが厳格な変更管理下に入るまでは、コードオーナーやリリースマネージャの指示のもとで
swift-2.2-branchへ直接 cherry-pick できます。厳格な管理に入った後は、すべての変更がプルリクエストによる指名プロセスを経る必要があります。
プルリクエストに添える情報
swift-2.2-branch への取り込みを提案するプルリクエストには、次の情報を含めます。
- Explanation(説明): 修正する問題や行う拡張の説明。簡潔でよいが明確であること。
- Scope(影響範囲): 変更の影響・重要度の評価。たとえばソース互換性を壊す言語変更かどうかなど。
- SR Issue: 対応する bugs.swift.org の SR 番号(該当する場合)。
- Risk(リスク): その変更を取り込むことでリリースに生じる具体的なリスク。
- Testing(テスト): 影響を検証するために実施済み、または必要なテスト。
影響を受けるコンポーネントのコードオーナーがレビューを行います。swift-2.2-branch が厳格な変更管理に入る前は、技術レビューを経たプルリクエストをコードオーナーが直接受け入れられますが、厳格な管理下に入った後はリリースマネージャだけが受け入れを判断します。