Swift Digest
Blog | Swift.org Blog

Swift 3.1 のリリースプロセス

Swift 3.1 Release Process

このダイジェストはClaude Opus 4.7 / 4.8によって生成されたものです(License)。原文はこちら

この記事の要点

リリース計画の概要

Swift 3.1 の位置づけ

Swift 3.1 は Swift 3.0 とソース互換であることを強い目標とするマイナーリリースです。Swift 3.0 コンパイラでビルドできたソースの大半が Swift 3.1 コンパイラでもビルドできることを重視します。例外は、本来受け入れるべきでなかったコードを拒否するようになるコンパイラのバグ修正に限られ、実際にそうしたケースは比較的まれとされました。

中身としては、中核言語へのわずかな追加的拡張に加え、Swift Package Manager、Linux 上の Swift、コンパイラと標準ライブラリ全般の品質改善が含まれます。

Swift 3.0 から Swift 3.1 で予期せずビルドできなくなるコードに遭遇した場合は、bugs.swift.org にバグ報告することが推奨されました。

スナップショットによる提供

これまでのリリースには「Preview 1」「Preview 2」といった、収束していくリリースの安定版スナップショットを表す「Developer Preview」がありました。しかし Developer Preview は間隔が不規則で、収束していくリリースで新機能を試したりバグ修正を確認したりするには粒度が粗いこともありました。

Swift 3.1 では、これに代わってリリースブランチの日次スナップショットを提供します。

スケジュールとブランチ運用

2017 年初頭には焦点を Swift 4 の開発へ移す方針のため、Swift 3.1 はスコープを限定します。master での開発が Swift 3.1 に入るのは 1 月 16 日までで、それ以降は「bake(熟成)」期間として、厳選された重要な修正のみが swift-3.1-branch に入り、master は Swift 4 の開発へ移ります。

運用上は、1 月 16 日までおおよそ 2 週間ごとに masterswift-3.1-branch に定期マージされます。2 週間の間隔は、活発に開発される master と、整理されたリリースブランチとの間のバッファになります。マージとマージの間には、プルリクエストによる cherry-pick で swift-3.1-branch に変更を取り込むこともできます。この計画の例外は swift-package-manager で、こちらは master から swift-3.1-branch へ毎日マージされます。

Swift 3.1 のブランチ運用は複数のリポジトリにまたがり、swift・swift-lldb・swift-cmark・swift-llbuild・swift-package-manager・swift-corelibs-libdispatch・swift-corelibs-foundation・swift-corelibs-xctest・swift-llvm・swift-clang が swift-3.1-branch を持ちます。なお swift-llvm・swift-clang は既に master から swift-3.1-branch を分岐済みで、再分岐はしません。

リリースマネージャ

リリース全体は次の担当者が統括し、リリースが収束するにつれて変更管理が厳格化される時点を告知します。

なお、当時案内されていた Swift メーリングリストは現在は閉鎖・アーカイブされ、Swift Forums に置き換えられています。

参加・確認すべきポイント

Swift 3.1 に変更を取り込む流れ

プルリクエストに添える情報

リリースブランチへの取り込みを提案するプルリクエストには、次の情報を含めます。

影響を受けるコンポーネントのコードオーナーがレビューを行います。技術レビューはコードオーナーが委任することも、必要に応じて依頼することもできます。master から自動的にマージされる変更を除き、swift-3.1-branch に入るすべての変更は、対応するリリースマネージャが受け入れるプルリクエストを経る必要があります。

関連リンク