Swift 5.7 が利用可能になりました。このリリースには、言語および標準ライブラリへの主要な追加、開発者エクスペリエンスを向上させるためのコンパイラの機能強化、Swift エコシステムのツール (SourceKit-LSP および Swift Package Manager を含む) の改善、Windows サポートの改善が含まれています。 、 もっと。
言語と標準ライブラリ
Swift 5.7 言語と標準ライブラリには、いくつかの改善点があります。
if let
ステートメントおよび複数ステートメントのクロージャー型注釈を含む、一般的なボイラープレート コードの新しい短縮構文- 汎用プログラミングをよりシームレスにするために長年の言語制約を解き放つ
- 新しい注釈とオプトイン診断による強化されたデータ競合セキュリティ
- 分散環境でのアクターの分離
- 既存の一連のポインター API の使いやすさの向上
- まったく新しい言語サポートと文字列処理 API
開発者の経験
新しい汎用実装
ジェネリックを処理するための上記の言語の改善に加えて、型チェッカーのジェネリック実装がゼロから書き直され、正確性とパフォーマンスの両方が改善されました。
SubSequence
新しい実装では、コレクションに関連付けられた型の均一性要件や、要件CaseIterable
を定義するプロトコルを使用するコードなど、複雑な均一性要件の処理に主に関連する長年のバグが多数修正されていSelf.Element == Self
ます。
新しい汎用実装により、パフォーマンスも向上します。型チェック時間は、Swift 5.6 では特定のプロトコルと関連する型の構成の下で指数関数的でしたが、Swift 5.7 では線形になりました。
自動参照カウントの改善
Swift 5.7 では、最適化を可能にしながら変数の有効期間を短縮する新しいルールを指定することにより、ARC の動作がより予測可能で、ユーザーフレンドリーで、強制可能になります。これらの規則を適用するために、コンパイラは新しい内部表現を採用して、各変数の字句範囲を追跡します。これには、既存の最適化の更新といくつかの新しい最適化の実装が含まれます。拡張された変数の有効期間に依存する最も一般的なプログラミング パターンは、プログラマが明示的に使用しなくても安全になりましたwithExtendedLifetime()
。これにより、最適化されたビルドでのみ実行される、診断が難しい有効期間のバグから保護されます。また、既存のリソースを壊すことなく、より強力な最適化を導入することもできます。
コード補完
関数呼び出しパラメーター、変数、およびグローバル関数のコード補完は、Swift の型チェッカーに緊密に統合されました。これにより、コード補完は、あいまいまたはバグのあるコードでより正確な結果を提供できます。
コード補完は、次の例+
で行うと、int と string が周囲のコンテキストと一致することを報告するようになり、エディターはこれらの結果をより高くarray
ランク付けできます。
func makeIntOrString() -> Int {}
func makeIntOrString() -> String {}
let array = [4, 2]
let int = 42
let string = "Hello World!"
makeIntOrString() +
コード補完は、secondInt パラメーター ラベルの入力のみを求めるようになり、次の例で不足しているパラメーターを補完した場合は secondString が省略されます。
func add(_ firstInt: Int, secondInt: Int) {}
func add(_ firstString: String, secondString: String) {}
add(1, )
詳細は公式ブログをご覧ください。