Swift 5.0 日本語化計画 : Swift 5.0
Swift 5.0 のリリースプロセス
2018年9月25日 Ted Kremenek
この記事では、Swift 5.0 の目標、リリースプロセス、および予定スケジュールについて説明します。
動機と目標
Swift 5.0 の主な目標は、言語が ABI の安定性を達成する ことです。これにより、実行可能ファイルとライブラリによってリンク可能な OS ベンダーが、安定した Swift 実行時環境を展開できるようになります。
ABI の安定性に関連して、モジュールの安定性 も主要な焦点になります。これは、準備ができているかどうかに応じて、Swift 5.0 リリースまたはそれ以降の 5.x リリースになります。
モジュールの安定性 のリンク先は今のところ翻訳の予定はありません。
バイナリの互換性
Swift 5.0 は以前の Swift リリースとバイナリ互換性がありません。バイナリ互換性により、異なる Swift コンパイラによってコンパイルされた Swift コードをリンクし、実行時レベルで相互運用することができます。
しかし、将来の Swift リリースは Swift 5 とバイナリ互換性がるようになりります。
ソースの互換性
Swift 4.2 と同様に、Swift 4.2 コンパイラでビルドされたソースの大部分は、Swift 5.0 コンパイラでコンパイルする必要があります。
ただし、Swift 3 互換モードは Swift 5 コンパイラではサポートされません。Swift 4.2 は Swift 3 モードをサポートする Swift の最後のリリースです。将来の (そして永続的な) ソースとバイナリの安定性の基礎となる Swift 3 に続くリリースでは、言語の表面とその実装の内部の両方に重要な変更があります。
Swift 5.0 のスナップショット
Swift 5.0 リリース分岐のダウンロード可能なスナップショットは、継続的な統合 テストの一環として定期的に投稿されます。
Swift 5.0 がリリースされれば、スナップショットに加えて正式な最終ビルドも掲載されます。
Swift 5.0 への変更
swift-5.0-branch には、Swift 5.0 でリリースされる変更が含まれます。分岐は以下のように管理されます:
- swift-5.0-branch には、既に master から最初に切り捨てられています。
- 定期的に、master 開発分岐は最終分岐日まで swift-5.0-branch に統合されます。
- 2018年11月16日(最終分岐):swift-5.0-branch は、前回の master からの変更を統合されます。最終的な分岐日の後、選択されたクリティカルな修正のみが(プルリクエストを介して)リリースに入る "ベーク" 期間があります。
この計画の5つの注目すべき例外は、swift-package-manager、swift-llbuild、swift-corelibs-foundation、swift-corelibs-xctest、及び swift-corelibs-libdispatch であり、master から swift-5.0-branch へと毎日統合し、変更の締め切り日は 11月16日 を超えて延長され、後で発表される予定です。
Swift 5.0 への変更哲学
- Swift 5.0 のすべての言語と API の変更は、Swift Evolution のプロセスを経て、そこに文書化されているリリースの変更の範囲に含まれる基準を満たします。
- 他の変更 (すなわち、バグ修正、診断の改善、SourceKit インターフェイスの改善など) は、それらのリスクと影響に基づいて受け入れられます。
- 低リスクのテスト微調整は、リリースの資格認定に役立つ場合は、リリース分岐の後半にも受け入れられます。
- リリースが収束するにつれて、受け入れられた変更の基準はますます厳しくなります。
影響を受けたリポジトリ
以下のリポジトリでは、Swift 5.0 リリースの一部としてソースを追跡するために、swift-5.0-branch の分岐を使用します。
- 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 リリースの変更がより厳密に制御されるようになると、アナウンスする個人によって監督されます。
- Ted Kremenek は、Swift 5.0 のリリース全体のマネージャです。
- Duncan Exon Smith は、swift-llvm、swift-clang、swift-compiler-rt のリリースマネージャです。
- Fred Riss は swift-lldb のリリースマネージャです。
- Ben Cohen は、Swift 標準ライブラリのリリースマネージャーです。
- Tony Parker は、swift-corelibs-foundation のリリースマネージャです。
- Pierre Habouzit は、swift-corelibs-libdispatch のリリースマネージャです。
- Brian Croom は swift-corelibs-xctest のリリースマネージャです。
- Rick Ballard は、swift-package-manager のリリースマネージャです。
- Daniel Dunbar は swift-llbuild のリリースマネージャです。
リリース管理プロセスに関するご質問は、開発フォーラム に気軽に投稿していただくか、Ted Kremenek に直接ご連絡ください。
リリース分岐に関するプルリクエスト
プルリクエストを、master からの最終再分岐後にリリース分岐に含めることを検討するには、以下の情報を含めなければなりません。
- 説明:修正されている問題の説明または強化が行われている事。これは簡潔にできますが、明確でなければなりません。
- Scope(範囲):変更の影響/重要性の評価。たとえば、ソースを変更する言語の変更などです。
- SR 問題:変更が bugs.swift.org の問題点/修正を修正/実装した場合の SR。
- リスク:この変更を行うためのリリースの(特定の)リスクは何か?
- テスト:この変更の影響をさらに検証するために、どのような特定のテストが実施されたか、または実行される必要があるか?
- レビュー責任者:影響を受けたコンポーネントの 1 人以上の コードオーナー が変更内容を確認する必要があります。テクニカルレビューは、コードオーナーによって委任されるか、適切であれば有用であれば要求されることがあります。
swift-5.0-branch に入るすべての変更(master から自動的に統合される変更)は、対応するリリースマネージャーが受け入れるプルリクエストを経由しなければなりません。
<-Swift 4.2 がリリースされた! ミラーの仕組み->