Swift Digest
Blog | Swift.org Blog

Swift 5.0 のリリースプロセス

Swift 5.0 Release Process

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

この記事の要点

リリース計画の概要

Swift 5.0 の位置づけ

Swift 5.0 の主たる目標は、言語が ABI 安定化を達成することです。ABI(Application Binary Interface)が安定すると、OS ベンダーが安定した Swift ランタイムを OS に同梱でき、実行ファイルやライブラリがそのランタイムにリンクできるようになります。これは、アプリのバイナリに Swift ランタイムを同梱する必要をなくす上で重要な前提となります。

ABI 安定化に関連して、module stability も重点項目とされました。module stability は、異なるコンパイラでビルドされたモジュールを安定して利用できるようにするための取り組みで、Swift 5.0 リリース、あるいはその後の 5.x リリースのいずれかで、準備状況に応じて導入されるとされました。

バイナリ互換性

Swift 5.0 はこれまでの Swift リリースとはバイナリ互換ではありません。バイナリ互換性とは、異なる Swift コンパイラでコンパイルされた Swift コードが互いにリンクし、ランタイムレベルで相互運用できることを指します。

一方で重要なのは、これ以降の Swift リリースは Swift 5 とバイナリ互換になるという点です。つまり Swift 5.0 が、バイナリ互換性が保たれる起点となります。

ソース互換性

Swift 4.2 と同様、Swift 4.2 コンパイラでビルドできたソースの大半は、Swift 5.0 コンパイラでもコンパイルできるはずです。

ただし、Swift 3 互換モードは Swift 5 コンパイラではサポートされません。Swift 3 モードをサポートする最後のリリースは Swift 4.2 です。Swift 3 以降のリリースでは、言語の表層と実装の内部の両面で重要な変更が行われており、それらが将来にわたって持続するソース安定性・バイナリ安定性の基盤となります。

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

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

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

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

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

プロジェクト 締め切り
swift 2018 年 11 月 20 日
swift-package-manager 2019 年 2 月 11 日
swift-llbuild 2019 年 2 月 11 日

Swift 5.0 のブランチ運用は複数のリポジトリにまたがり、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-syntax・swift-package-manager・swift-xcode-playground-support が swift-5.0-branch を持ちます。

リリースマネージャ

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

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

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

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

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

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

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

関連リンク