Swift 4.2 日本語化計画 : Swift 4.2


ABI のダッシュボード


最終更新日:2018 年 9 月 24 日


Swift の現在の最優先事項の 1 つは、将来の Swift バージョン間との互換性です。これの主要な部分の 1 つは、ABI の安定性であり、これにより、異なるバージョンの Swift でコンパイルされたアプリケーションとライブラリ間のバイナリ互換が可能になります。Swift ABI マニフェスト は、ABI を安定させると宣言する前に完了しなければならないエンジニアリングと設計タスクについて説明しています。これらのタスクには、予想される変更、変更に発生する可能性のある、または影響を受けない可能性のある調査、およびドキュメントのタスクが含まれます。以下のダッシュボードは、これらのタスク*の進行状況を追跡します。


データレイアウト


タスクバグ追跡状況
部分的に不透明な集合体のレイアウトを最適化SR-3722変更の必要なし (1)
利用可能情報を含む固定レイアウトア属性をサポートSR-3911変更の必要なし (2)
構造体のレイアウトアルゴリズムを変更SR-7809進行中
タプルのレイアウトアルゴリズムを変更SR-3726変更の必要なし
ペイロードされた列挙型 (enum) のレイアウトアルゴリズムを変更SR-3727完了(まだリリースされず)
参照カウント用のネイティブなオブジェクトヘッダー内にワードサイズのフィールドを使用SR-4353Swift 4.1 で完了
ARC 最適化用の参照でスペアビットの使用を探索SR-3728変更の必要なし (3)
実在するコンテナのバッファサイズの再評価SR-3340変更の必要なし (4)
参照カウントした copy-on-write の実在バッファーの使用SR-4330Swift 4.0 で完了
実在のパラメータからプロトコルに制約された汎用パラメータへの変換を評価SR-4331変更の必要なし (5)
レイアウトアルゴリズムの技術仕様を作成SR-3730


(1) この最適化は、非弾力の汎用構造体にのみ有効であり、後でレイアウトバージョン管理方式で実装することができます。


(2) これは、不透明な型が固定レイアウトを持つように変更されたときの将来のリリースまでは不要です。

(3) この提案の複雑さとコードサイズのオーバーヘッドは、特に関数シグネチャの最適化がモジュール内の呼び出しに同じ利点を提供するため、潜在的なパフォーマンスの向上を上回るように決定されました。


4) インラインバッファを 2 ワードに縮小するかどうかについて同意がなかったので、現状を 3 ワードバッファで維持することに決めました。


(5) これは大きな変化であり、Swift 5 の範囲外です。



メタデータ型


タスクバグ追跡状況
メタデータ型の進化を計画 (将来の機能のための領域を切り出し、重要な領域を凍結することを含む)SR-3923Swift 4.2 で完了
メタデータ表現の履歴アーティファクトを一掃SR-3924Swift 4.2 で完了
将来の特徴 (反映など) のためにメタデータにより多くのセマンティック情報を増やすSR-3925変更の必要なし (6)
すべての言語構成のメタデータレイアウトの固定部分の技術仕様SR-3731
名前付き値型のメタデータに格納されている名前の切り分けを決定SR-3926Swift 4.2 で完了
目撃テーブルを介して enum 分別機と対話する効率を確認SR-4332Swift 4.1 で完了
値目撃テーブルのレイアウトをロックSR-3927Swift 4.1 で完了
ライブラリの発展に対してどのクラスのメタデータが不透明であるかを立証SR-4343完了(まだリリースされず)
テーブルのレイアウトをロックするか、または思考を使用するかSR-3928完了(まだリリースされず)
プロトコル目撃テーブルのレイアウトをロックSR-3732Swift 4.2 で完了
プロトコル記述子を含む実在型のメタデータのレイアウトを決定SR-4341Swift 4.1 で完了
関数パラメータの既存のタプル設計を更新することを検討SR-4333Swift 4.2 で完了


(6) 完全反射のサポートは、ABI の安定性に先立つ目標ではありません。後でもっとセマンティックな情報を追加できます (SR-3923)。


切り分け


タスクバグ追跡状況
順序に依存しない切り分け用の汎用およびプロトコル要件の標準化を定義SR-3733Swift 4.1 で完了
関数パラメータの切り分けの多様性を確認SR-3734Swift 4.0 で完了
構造体と列挙型を切り分けシンボルで区別しないように考慮SR-3930変更の必要なし (7)
不必要な内部目撃テーブルシンボルを削除SR-3931変更の必要なし
名前の重複を減らすための単語置換のオーバーホールSR-4344Swift 4.0 で完了
返らない関数用の既知のオーバーロードセットに基づいて切り分けを調査SR-3933変更の必要なし (8)
共通の接頭部を最大にするための型/準拠 情報の再編集SR-3932Swift 4.0 で完了


(7) これは実装が難しく、よりコンパクトな切り分けを生成しません。


(8) これは破壊的な変化であり、Swift 4.0 での切り分けの変更後、シンボル名は十分に短く、これを追求する予定はありません。


呼び出し規約


タスクバグ追跡状況
新しい Swift 呼び出し規約を採用SR-4346Swift 4.0 で完了
関数シグネチャ低下スキームを文書化SR-4349
戻り値を保持するレジスタの数を決定SR-3946Swift 4.0 で完了
部分的に不透明なレイアウトで値を分割するかどうかを調査SR-3947変更の必要なし (9)


(9) これは非常に複雑ですが、パフォーマンスはほんのわずかに向上するに過ぎません。私たちは非公開の関数のために後でそれを行うことを検討します。


実行時


タスクバグ追跡状況
望ましさと動作のためのすべての実行時関数の監査SR-3735Swift 4.1 で完了


標準ライブラリ


タスクバグ追跡状況
String を再設計SR-4354Swift 4.2 で完了
プロトコル指向の整数SR-3196Swift 4.0 で完了
シーケンスとコレクションに適切な制約を強制SR-3453Swift 4.1 で完了
条件準拠を使用してさまざまなコレクションラッパーを折りたたむSR-3458Swift 4.1 で完了


所有権


タスクバグ追跡状況
デフォルトでパラメータを "guaranteed" に渡すための規約の変更SR-7100Swift 4.2 で完了
コルーチンを実装して、堅牢な inout 変更に使用できるようにするSR-7134完了(まだリリースされず)
一般化したアクセサを実装し、標準ライブラリに採用SR-7135
リリースビルドでの排他的メモリアクセスの実施のサポートSR-7139
ジェネレータを実装し、それらを標準ライブラリで採用するSR-7140変更の必要なし (10)
移動専用型の概念の実証を実装して、標準ライブラリが移動専用データをサポートできることを確認SR-7141変更の必要なし (10)


(10) ジェネレータと移動専用型は Swift 5 の対象外です。これらの機能は後で ABI 互換の方法で追加できますが、ライブラリのサポートにより複雑さが増す可能性があります。


*注:進行状況が増えるにつれて、タスクが追加される可能性があります。






目次
Xcode の新機能

SwiftLogo
  • Swift 4.2 全メニュー

  • Swift プログラム言語

  • Swift について
  • Swift 4.2 への移行

  • ブログ

  • Swift のダウンロード

  • Swift 入門

  • 文書化

  • ソースコード

  • コミュニティガイドライン

  • 投稿

  • Swift の継続的統合

  • Swift ソースの互換性

  • フォーカスエリア

  • ABI の安定性
  • データレイアウト
    メタデータ型
    切り分け
    呼び出し規約
    実行時
    標準ライブラリ
    所有権

  • サーバーワークグループ

  • コンパイラと標準ライブラリ

  • プロジェクト

  • パッケージマネージャ

  • Swift コアライブラリ

  • REPL とデバッガ、プレイグラウンド













  • トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)