swift3.0の変更

2232 ワード

Swiftはこの2年間、急速に発展し、オープンソース後、さらに井戸のようにiOS、macプラットフォームのほか、Linuxをサポートした.今年下半期には、Swift 3.0も発表される.https://github.com/apple/swift-evolution3.0の特性について詳しく説明しました
 
このバージョンの主な目標は言語のバイナリインタフェースと標準ライブラリの安定性を強化し、このプロセスの一部として、swift言語を改善して体験と実行(feel and implementation)の全体的な一致性を提供し、Swift 3.0は2対2を含む.X source-breakingの変更、より具体的には、このバージョンはいくつかの重要な分野に集中しています.
一、安定なABI(Stable ABI)
安定したABIを提供し、前方互換性を保証します.これは、実行時のデータ構造、名前矯正(name mangling)、呼び出し規則(calling conventions)などに関連します.
安定したABIも標準ライブラリに拡張され,そのデータ型とコアアルゴリズムである.成功したABIの安定性は、将来のswiftバージョンのアプリケーションとライブラリのコンパイルがswift 3にあることを意味する.ソース言語が変化しても、0バイナリレベルのアプリケーションとライブラリ.
 
二、極めて強い拡張適応能力、後続のバージョンのために基礎を築く(Resilience)
壊れやすいインタフェースとは、現代のプログラム言語の共通の問題であり、そのフルネームはFragile Binary Interfaceと呼ばれています.簡単に言えば、Swiftと現在の多くの主流開発言語のクラスの属性であり、下位層ではbook.nameなどのオフセットによってアクセスされており、プログラムでオブジェクトにアクセスする属性は非常に直感的です.しかし、彼はコンパイル後、実際にはこのような形式location(book) + offset(name)だった.アクセスnameプロパティは、bookオブジェクトが存在するメモリアドレスにオフセットを付けることで実現されます.
では、Swiftのクラスはコンパイル後、すべての属性のオフセット値を計算します.これにより、これらのオフセット量を実行時に計算する必要がないため、プログラムの実行時の実行速度が向上します.すべてのクラス間に関連がなければ問題はありませんが、実際にはクラスを使用すると継承関係があります.プライマリ・プロジェクトで外部のライブラリが参照されている場合、プライマリ・プログラムではこの外部ライブラリのクラスが継承されます.では、このライブラリに変更があれば、すべてのクラス継承ツリーのコードを再コンパイルする必要があります.そうしないと、メインプログラムのサブクラスでオフセット計算エラーが発生します.
簡単に言えば、Swift 3.0がFragile Binary Interfaceをうまく処理できれば、私たちの開発者にとって最も直感的な感じは、コンパイル速度が速くなることです.
 
三、移植性(Portability)
これは簡単です.Swiftを他のプラットフォームに移植し、Swiftが書いたコードをすべてのプラットフォームで正しく実行することができます.
 
四、型体系の再整理(Type system cleanup and documentation)
タイプ変換ルールを再設定し、コンパイラのタイプチェックの実施を目的として、より小さく、より簡単なタイプシステム、より厳格な定義、より信頼できるタイプチェックを目的としています.
 
五、汎用型(Complete generics)を全面的にサポートする
全面的な汎用化により、Swiftはより良い拡張適応能力、特に標準ライブラリを提供することができます.現在のSwiftバージョンでは、汎用的な特性の大部分をサポートしていますが、Swift 2.2のAPIドキュメントを見ると、実際には発見できます.しかし、まだ汎用的な特性を完全に実現していないため、今回のSwift 3.0は汎用的なすべての特性を全面的にサポートする予定です.
 
六、Focus and refine the language
言語そのものに焦点を当て、言語の悪いところを改善する.
 
七、API design guidelines
今回はSwift言語のAPIデザイン仕様も発表しました.この仕様の目的は、より統一されたAPIを設計することです.多くのコード仕様が提供されています.これは、オープンソースライブラリを構築しなくても、日常的なコードスタイルに役立ちます.また、Swift 3.0では、多くのAPIがこの仕様に従って再設計されます.このデザイン仕様を理解していただくことは、Swift言語の理解にも役立ちます~