Swift Digest
Blog | Swift.org Blog

Swift 4.2 のリリースプロセス

Swift 4.2 Release Process

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

この記事の要点

リリース計画の概要

Swift 4.2 の位置づけ

Swift 4.2 は、Swift 5 で ABI 安定性を達成するための通過点となるリリースです。Swift ABI の安定化に向けた取り組みの一環として、多数の内部的な ABI 変更が含まれます。これらの変更の多くは性能に関わるもので、最終的な ABI に固定される前にユーザーがその影響を評価できるよう、段階的に導入してフィードバックを得る期間を確保することに価値があるとされました。

Swift 4.2 には、これに加えて多数のバグ修正が含まれ、コンパイル時間の性能に的を絞った改善も目標とされました。

バイナリ互換性とソース互換性

Swift 4.2 はこれまでの Swift リリースとはバイナリ互換ではありません。

一方でソース互換性は高く保たれます。Swift 4.1 と同様、Swift 4.0 コンパイラ(Swift 3 互換モードを使うものを含む)でビルドできたソースの大半は、Swift 4.2 コンパイラでもビルドできるはずです。ただし、絶対的な保証ができない例外もあります。コンパイラの不正な挙動に対する修正や、長く待たれていたジェネリクス機能の導入によって対処されるようになったジェネリクスのコーナーケースなどが該当します。とはいえ、大半のプロジェクトはソースを変更せずにそのままビルドできることが見込まれていました。

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

Swift 4.2 リリースブランチのダウンロード可能なスナップショットは、継続的インテグレーション(CI)テストの一部として定期的に公開されます。Swift 4.2 のリリース後は、スナップショットに加えて公式の最終ビルドも公開されます。

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

swift-4.2-branch には Swift 4.2 でリリースされる変更が含まれ、次のように運用されます。

この計画には 4 つの注目すべき例外があります。swift-package-manager・swift-llbuild・swift-corelibs-foundation・swift-corelibs-libdispatch は master から swift-4.2-branch へ毎日マージされ、これらの変更の最終締め切りは 4 月 20 日より後になるとされました。一部のプロジェクトの締め切りは次のとおりです。

プロジェクト 締め切り
swift 2018 年 4 月 20 日
swift-package-manager 2018 年 6 月 28 日
swift-llbuild 2018 年 7 月 5 日

Swift 4.2 のブランチ運用は複数のリポジトリにまたがり、swift・swift-clang・swift-cmark・swift-compiler-rt・swift-corelibs-foundation・swift-corelibs-libdispatch・swift-corelibs-xctest・swift-integration-tests・swift-llbuild・swift-lldb・swift-llvm・swift-package-manager・swift-xcode-playground-support が swift-4.2-branch を持ちます。

リリースマネージャ

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

なお、当時案内されていた開発フォーラム(development forum)は現在の Swift Forums に置き換えられています。リリース管理プロセスについての質問は、フォーラムへの投稿や Ted Kremenek への連絡が案内されました。

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

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

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

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

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

関連リンク