Swift Digest
Blog | Swift.org Blog

Swift 5.1 のリリースプロセス

Swift 5.1 Release Process

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

この記事の要点

リリース計画の概要

Swift 5.1 の位置づけ

Swift 5.1 の主たる目標は、言語が module stability を達成することです。module stability は、異なるコンパイラでビルドされたモジュールを安定して利用できるようにするための取り組みで、Swift 5.0 で達成された ABI 安定化に続く重要なステップとなります。

バイナリ互換性

Apple プラットフォームでは、ABI が既に安定化されているため、Swift 5.1 は Swift 5.0 とバイナリ互換であり、今後の Swift リリースともバイナリ互換になります。バイナリ互換性とは、異なる Swift コンパイラでコンパイルされた Swift コードが互いにリンクし、ランタイムレベルで相互運用できることを指します。

一方、Linux などの非 Apple プラットフォームでは、より入念な検証(vetting)を可能にするため、ABI はまだ完全には安定していません。特に、Linux ベースの新しいプラットフォームでこうした検証が必要とされています。

ソース互換性

Swift 5.0 と同様、Swift 5.0 コンパイラでビルドできたソースの大半は、Swift 5.1 コンパイラでもコンパイルできるはずです。ただし、Swift 5.1 のバグ修正によって、これまで検出されていなかったコードのエラーが検出されるようになる可能性はあります。

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

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

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

Swift 5.0 は、ABI への永続的な影響をすべて評価しながら進める必要があり、収束に至るまで通常以上の集中と注意を要しました。その結果、Swift 5.1 は従来のリリースより大幅に短い開発期間が設定されています。これは、成熟して安定した 5.1 リリースを確実に届けるためで、破壊的な変更の締め切りもより厳格に定められています。

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

この計画には注目すべき例外があります。indexstore-db・sourcekit-lsp・swift-corelibs-foundation・swift-corelibs-libdispatch・swift-corelibs-xctest・swift-llbuild・swift-package-manager・swift-stress-tester は master から swift-5.1-branch へ毎日マージされ、これらの最終締め切りは 3 月 18 日より後になります。一部のプロジェクトの締め切りは次のとおりです。

プロジェクト 締め切り
swift 2019 年 3 月 18 日
swift-llbuild 2019 年 4 月 10 日
swift-package-manager 2019 年 4 月 10 日

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

リリースマネージャ

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

リリース管理プロセスについての質問は、Swift Forums への投稿や Ted Kremenek への連絡が案内されました。

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

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

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

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

master から自動的にマージされる変更を除き、swift-5.1-branch に入るすべての変更は、対応するリリースマネージャが受け入れるプルリクエストを経る必要があります。

関連リンク