Swift 5.0 日本語化計画 : Swift 5.0
Swift 4.1 がリリースされた!
2018年3月29日 Ted Kremenek
Swift 4.1 が公式にリリースされました!汎用のさらなるサポート、新しいビルドオプション、Swift パッケージマネージャと Foundation の小さな機能強化など、コアな言語の更新が含まれています。ABI の安定化にも大きな進展がありました。
Doug Gregor と Ben Cohen は最近、Swift Unwrappe (開封) のdポッドキャストの 2 つの部分のエピソードでこれらの機能の多くについて議論しました。ここでポッドキャストをチェックしてください: パート 1 と パート 2 。
この 2 つのリンクは、書かれたリンク先の内容は異なりますが、結果として表示される内容は同じようです。それが意図された物なのか、エラーなのかはわかりません。
コンパイラの更新
Swift 4.1 は言語のマイナーなリリースです。これは Swift 4.0 とソース互換です。以下の言語の変更と更新が含まれており、そのほとんどは Swift 改革プロセス を経ています。
言語の改善点
Swift 4.1 は、Swift の汎用の声明 の目標をさらに進化させ、より多くの汎用の機能を追加しました。このリリースでは、以下の汎用に関連した提案が実装されています。
- SE-0143 条件付き準拠
- SE-0157 関連型の再帰的制約をサポート
- SE-0185 Equatable と Hashable 準拠の合成
- SE-0187 Sequence.compactMap(_:) の導入
- SE-0188 標準ライブラリのインデックス型を Hashable にする
- SE-0191 Collection から IndexDistance を削除
Swift 4.1 での条件付き準拠の進捗状況の詳細については、この ブログ記事 を参照してください。
ビルドの改善点
このリリースでは、新しいコードサイズの最適化や、ターゲット環境とプラットフォームのサポートを指定するためのより簡単な方法など、ビルドを構成するさまざまな方法が提供されています。
コードサイズ最適化モード
コンパイラは、新しい最適化モードをサポートするようになりました。これにより、専用の最適化によってコードサイズが削減されます。
これについては、以前この ブログ記事 で詳しく説明しました。
ビルドインポートテスト
canImport() プラットフォーム条件の引数は、すべてのプラットフォーム上に存在しないかもしれないモジュールの名前です。この条件は、モジュールをインポートすることができるかどうかをテストしますが、実際にはインポートしません。モジュールが存在する場合、プラットフォーム条件は true を返します。それ以外の場合は false を返します。
詳細は、SE-0075 ビルド構成のインポートテストの追加 と、条件付きコンパイルブロックの ドキュメント をご覧下さい。
ターゲット環境条件
コードがシミュレータ用にコンパイルされた場合、 targetEnvironment(simulator) プラットフォーム条件は true を返します。それ以外の場合、 false を返します。
詳細は、SE-0190 ターゲット環境プラットフォームの条件 と条件付きコンパイルブロックの ドキュメント をご覧ください。
Foundation
JSONEncoder クラスと JSONDecoder クラスは、コード化と復号時にキーを変換するための新しい戦略をサポートするようになりました。
これについては、この フォーラムの記事 で詳しく説明しました。
追加の更新
これらは、今回のリリースで実装された追加の Swift 改革の提案です。
- SE-0184 Unsafe[Mutable][Raw][Buffer]Pointer:欠落しているメソッドを追加し、既存のラベルを調整して分かりやすくし、割り当て解除サイズを削除しました。
- SE-0186 プロトコルでの所有権キーワードのサポートを削除
- SE-0189 クロスモジュール構造体のイニシャライザを制限しました
- SE-0198 プレイグラウンド QuickLook API の改訂
ABI の安定性
Swift 4.1 には、Swift 5 で ABI を安定化させるための努力の一環として、いくつかの秘密の変更が含まれています。ここでは、このリリースで完了したタスクのリストを示します。
- 参照カウントのためにネイティブオブジェクトヘッダーにワードサイズのフィールドを使用 (SR-4353)
- 目撃テーブルを使用して列挙型識別子とのやりとりの効率を確認する(SR-4332)
- プロトコル記述子を含む実在の型のメタデータのレイアウトを決定する (SR-4341)
- 順序を知り得ないマングリング (ずた切り) の汎用要件とプロトコル要件の標準化を定義する (SR-3733)
- 妥当と動作のためのすべての実行時関数の監査 (SR-3735)
- Sequences 及び Collections に適切な制約を強制する (SR-3453)
- 条件準拠を使用してさまざまなコレクションラッパーを折りたたむ (SR-3458)
Swift の ABI 安定性の進捗状況の詳細については、ABI ダッシュボード を参照してください。
パッケージマネージャの機能強化
Swift 4.1 の Swift パッケージマネージャにはいくつかの機能強化があります:
Swift パッケージマネージャは、ssh や http などの異なる URL スキームを使用するパッケージグラフの依存関係を正しく解決するようになりました。依存関係を共有しているパッケージグラフのパフォーマンスが大幅に改善しました。
Swift 4.1 への移行
Swift 4.1 は Swift 4.0 とソース互換です。Swift の以前のリリースから Swift 4.1 への移行を支援するため、Apple の Xcode 9.3 には、必要なソースの変更の多くを自動的に処理できるコード移行ツールが含まれています。また、多くの変更点、特に機械的でなく直接的な精査が必要なものについては、移行ガイド もご利用いただけます。
ドキュメント
Swift 4.1 用の プログラム言語 Swift の最新バージョンは、Swift.org で利用可能になりました。Apple の iBooks ストアでも無料で入手できます。
プラットフォーム
Linux(Ubuntu 14.04、Ubuntu 16.04、および Ubuntu 16.10)
Ubuntu 14.04、Ubuntu 16.04、および Ubuntu 16.10 の公式バイナリを ダウンロードできます。
Apple (Xcode)
アップルのプラットフォーム上での開発のために、Swift 4.1 は Xcode 9.3 の一部として出荷されます。
ソース
Swift 4.1 での開発は、GitHub 上の以下のリポジトリの swift-4.1-branch で追跡されています。
- swift
- swift-llvm
- swift-clang
- swift-lldb
- swift-cmark
- swift-corelibs-foundation
- swift-corelibs-libdispatch
- swift-corelibs-xctest
- swift-llbuild
- swift-package-manager
- swift-xcode-playground-support
- swift-compiler-rt
swift-4.1-RELEASE のタグは、Swift 4.1 の最終バージョンを構成するリポジトリの特定のリビジョンを指定します。
swift-4.1-branch は開いたままですが、同じ リリース管理プロセス の下で、潜在的な将来のバグ修正 "dot" リリースの変更を蓄積します。
このリンクは、「Swift 3.0 リリースの過程」にリンクされているので、今のところ翻訳する予定はありません。
<-Swift 4.2 リリースのプロセス 暗黙開封された Optionals の再実装->