Swift 5.0 日本語化計画 : Swift 5.0
Swift 4.2 リリースの過程
2018年2月28日 Ted Kremenek
この記事では、Swift 4.2 の目標、リリースの過程、および推定スケジュールについて説明します。
動機と目標
Swift 4.2 は、Swift 5 で ABI の安定性を達成するための中間地点です。
Swift 4.2 には、Swift ABI を安定させる ための努力の一環として、多くの隠れた ABI の変更が含まれます。最終的な ABI にかみ合う前に、これらの変更を評価する際のユーザーのフィードバックに十分な時間を提供するために、パフォーマンスの関連性が高い ABI の変更を徐々に展開することは重要です。
Swift 4.2 には、多数のバグ修正が含まれているほか、コンパイル時間のパフォーマンスに焦点を当てた改良がいくつかあります。
バイナリ互換性
Swift 4.2 は、以前の Swift のリリースとバイナリ互換性がありません。
ソース互換性
Swift 4.1 と同様に、Swift 4.0 コンパイラ (Swift 3 互換モードを使用するものを含む) でビルドされたソースのほとんど大部分は、Swift 4.2 コンパイラでコンパイルする必要があります。
これが絶対的な保証にできないいくつかの例外的な場合があります。これには、コンパイラの誤った動作やコーナーケースの修正が含まれており、この汎用の使用は、長年予想されていた汎用の機能が導入されました。しかし、ほとんどのプロジェクトはソースの変更なしでビルドを続けることが期待できます。
Swift 4.2 のスナップショット
Swift 4.2リリース 分岐のダウンロード可能なスナップショットは、継続的な統合 テストの一環として定期的に投稿されます。
Swift 4.2 がいったんリリースされると、スナップショットに加えて正式な最終ビルドも掲載されます。
Swift 4.2 に変更を加える
swift-4.2-branch には、Swift 4.2 でリリースされる変更が含まれています。分岐は以下のように管理されます:
- 差し迫ったこと:swift-4.2-branch は master から最初にカットされます。
- およそ2週間ごとに、master は最終分岐の日付まで swift-4.2-branch に統合されます。
- 2018年4月20日 (最終分岐):swift-4.2-branch は、前回の master からの変更を統合されました。最終分岐日の後、選択された、致命的な修正のみが (プルリクエストを介して) リリースに入る「ベーク (発酵)」期間があります。
この計画の 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年6月5日 |
Swift 4.2 への変化の哲学
- Swift 4.2 のすべての言語と API の変更は、Swift 改革 の過程を経て、そこに文書化されているリリースの変更の範囲があるかを判断します。
- 他の変更 (すなわち、バグ修正、診断の改善、SourceKit インターフェイスの改善など) は、リスクと影響に基づいて受け入れられます。
- 低リスクのテスト調整は、リリースの資格認定に役立つ場合は、リリース分岐の後半にも受け入れられます。
- リリースが収束するにつれて、受け入れられる変更の基準はますます厳しくなります。
影響を受けたリポジトリ
以下のリポジトリには、Swift 4.2 リリースの一環としてソースを追跡するための Swift-4.2-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-package-manager
- swift-xcode-playground-support
リリースマネージャ
リリース全体の管理は、リリースが収束するにつれて、Swift 4 リリースの変更の制御がより厳しくなると発表する中、以下の個人によって監督されます。
- Ted Kremenek が Swift 4.2 全体のリリースマネージャです。
- Duncan Exon Smith は、swift-llvm、swift-clang、swift-compiler-rt のリリースマネージャです。
- Ben Cohen は、Swift 標準ライブラリのリリースマネージャーです。
- Tony Parker は、swift-corelibs-foundation のリリースマネージャです。
- Daniel Steffen は swift-corelibs-libdispatch のリリースマネージャです。
- Brian Croom は swift-corelibs-xctest のリリースマネージャです。
- Rick Ballard は、swift-package-manager のリリースマネージャです。
- Daniel Dunbar は swift-llbuild のリリースマネージャです。
リリース管理プロセスに関するご質問は、開発フォーラム にご気楽に投稿していただくか、Ted Kremenek に直接ご連絡ください。
リリース分岐のプルリクエスト
プルリクエストをリリース分岐に含めることを検討するには、以下の情報を含めなければなりません。
- 説明:修正されつつある問題の説明または強化が行われている事。これは簡潔にできますが、明確でなければなりません。
- 範囲:変更の影響/重要性の評価。たとえば、ソースを変更する言語の変更などです。
- SR 問題:変更が bugs.swift.org の問題点/強化点を修正/実装した場合の SR。
- 危険:この変更を行うためのリリースへの (具体的な) 危険は何か?
- テスト:この変更の影響をさらに検証するために、どのような具体的なテストが実施されたか、または実行される必要があるか?
- レビュー担当者:影響を受けたコンポーネントの 1 人以上の コードオーナー が変更内容を確認 (review) する必要があります。テクニカルレビューは、コードオーナーによって委任されるか、適切であるか有用であるとみなされれば要求されることがあります。
swift-4.2-branch に入るすべての変更 (master から自動的に統合される外部の変更) は、対応するリリースマネージャーが受け入れるプルリクエストを経由しなければなりません。
<-Swift 4.1 のコードサイズ最適化モード Swift 4.1 がリリースされた!->