Swift 5.0 日本語化計画 : Swift 5.0
Swift 4.2 がリリースされた!
2018年9月17日 Ted Kremenek
Swift 4.2 が正式にリリースされました! Swift 4.2 は Swift 4 の強みを基盤にビルドされており、コンパイル時間の短縮、デバッグ経験の改善、標準ライブラリの更新、バイナリ互換への収束を実現します。
WWDC 2018: What’s New in Swift (Swift の新機能) のプレゼンテーションを見て、Ole Begemann によってまとめられたこの プレイグラウンド の新機能のいくつかを試して、その概要を簡単に見ることができます。
言語の更新
Swift 4.2 は言語の主要なリリースであり、Swift 改革プロセスを経た、以下の言語の変更と更新が含まれています。
汎用の改善
条件準拠サポートが完了して、Swift 4.2 は、言語での汎用のビジョンの実装において大きな進歩を遂げています。汎用のサポートを向上させることで、コードに必要な定型文の量を劇的に削減し、コードをさらに再利用できるようになります。条件準拠の詳細については、以下を参照してください。
詳細については、WWDC 2018 のプレゼンテーション : Swift の汎用 をご覧ください。
標準ライブラリの更新
Swift 4.2 の標準ライブラリには、Hashable プロトコルへの改良や、ランダム化関数とプロトコルの統一された新しいセットなど、いくつもの新しい機能が含まれています。
もっと見る:
- SE-0197 標準ライブラリの同じ場所に、removeAll(where:) を追加しました
- SE-0199 Bool への toggle の追加
- SE-0202 Random の統一
- SE-0204 last(where:) 及び lastIndex(where:)メソッドを追加しました。
- SE-0206 Hashable の強化
- SE-0207 Sequence に allSatisfy アルゴリズムを追加
バイナリ互換性
Swift 4.2 は、言語を安定した ABI に近づけ、Swift の将来のリリースでバイナリ互換性を可能にします。この取り組みの現在の進捗状況については、ABI ダッシュボード をご覧ください。
言語とコンパイラの追加の更新
Swift 4.2 には、以下を含む、開発者の経験に顕著な影響を与えるいくつもの改善点が含まれています。
- バッチモードのコンパイルをサポートし、ビルド時間を短縮
- コードサイズを縮小し、実行時のパフォーマンスを向上させるための保持/解放サイクルの呼び出し規約の変更
- Lazier SIL を -Onone で脱シリアライズ化
- 再帰的メタデータのサポート
- よりコンパクトな反映メタデータ
- デフォルトの引数は呼び出しサイトでインライン展開される
- init declname (init の宣言名)、ブロックあたりの複数の case ラベルの切り替え、汎用イニシャライザの継承などを含む、長年にわたるバグのいくつかの修正
Swift 4.2 では、Swift 改革プロセスから以下の言語の提案も実装されています。
- SE-0054 ImplicitlyUnwrappedOptional (暗黙的に開封される Optional) 型を廃止しました。 ここ での再実装についての詳しい情報を読んでください。
- SE-0079 optional の結合を使用して、weak から strong 参照への self のアップグレードを許可する
- SE-0193 クロスモジュールのインライン化と専門化
- SE-0194 列挙型ケースの派生コレクション
- SE-0195 ユーザー定義の「動的メンバー検索」型の導入
- SE-0196 コンパイラ診断指令
- SE-0205 不変の値の withUnsafePointer(to:_:) および withUnsafeBytes(of:_:)
- SE-0210 MemoryLayout に offset(of:) メソッドを追加しました。
- SE-0212 コンパイラ・バージョン指示
パッケージマネージャの更新
Swift 4.2 では、Swift パッケージマネージャの新機能が導入されました。
- バッチモードのサポート。 Swift のターゲットは、今や Swift コンパイラのバッチモードを使用してコンパイルされます。
- 自動で Xcode プロジェクトの生成。 generate-xcodeproj には新しい -watch オプションがあり、ファイルシステムを監視 (watch) し、必要に応じて Xcode プロジェクトを自動的に再生成します。これは、ウォッチマンツールを使用して必要なファイルを監視 (watch) します。
- 改善されたスキーム生成ロジック。 スキーム生成ロジックが改善され、以下のようなスキームが生成されます。
- ルートパッケージのすべての正規およびテストターゲットを含む 1 つのスキーム。
- その依存関係が実行可能なターゲットの依存関係と交差するテストターゲットを含む実行可能なターゲットごとに 1 つのスキーム。
また、Swift 4.2 では、Swift 改革プロセスの以下のパッケージマネージャの提案も実装されています。
- SE-0201 パッケージマネージャのローカル依存関係。 SwiftPM は、今やgit URL の代わりにディスク上のそのパスを使ってパッケージに対する依存関係を宣言できるようになりました。これには、パッケージのツールバージョンを 4.2 に更新する必要があります。
- SE-0208 パッケージマネージャシステムライブラリターゲット。 ツールバージョン 4.2 の PackageDescription API は、新しいタイプのターゲット "システムライブラリターゲット"をサポートしています。これは、現在のシステムモジュールパッケージ機能をパッケージからターゲットレベルに移動します。
- SE-0209 パッケージマネージャ Swift 言語バージョン API 更新。 ツールバージョン 4.2 の PackageDescription マニフェスト API の swiftLanguageVersions プロパティが Integer (整数) の配列から SwiftVersion 列挙型の配列に変更されました。
Swift 4.2 への移行
Swift 4.2 は Swift 4、Swift 4.1、Swift 3 とソース互換です。Swift 4.2 は Swift 3 とのソース互換性を提供する最後のリリースになります。
Swift の以前のリリースから Swift 4.2 への移行を支援するために、Apple の Xcode 10 には、必要なソースの変更の多くを自動的に処理できるコード移行ツールが含まれています。また、多くの変更点、特に機械的でなく直接的な精査が必要なものについては、移行ガイド もご利用いただけます。
ドキュメント
Swift 4.2 用の プログラミング言語 Swift の最新版が Swift.org で利用可能になりました。また、Apple Books ストア でも無料で利用できます。
プラットフォーム
Linux
Ubuntu 18.04、Ubuntu 16.04、および Ubuntu 14.04 の公式バイナリを ダウンロード できます。
アップル(Xcode)
Apple のプラットフォーム上での開発なら、Swift 4.2 は Xcode 10 の一部として出荷されます。
Swift.org からツールチェーンを ダウンロードする こともできます。
ソース
Swift 4.2 での開発は、GitHub の以下のリポジトリの swift-4.2-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-integration-tests
タグ swift-4.2-RELEASE は、Swift 4.2 の最終バージョンを構成するリポジトリの特定のリビジョンを指定します。
swift-4.2-branch は開いたままですが、同じリリース管理プロセスの下で、潜在的な将来のバグ修正「ドット」リリースの変更を蓄積します。
<-Swift フォーラムに関連するプロジェクトを紹介 Swift 5.0 のリリースプロセス->