Swift 1.0釋出:一門語言的演進歷程
Apple宣佈,適用於iOS的Swift 1.0已經達到GM狀態,開發者現在就可以開始提交使用Swift編寫的應用了。Apple提到,該語言將繼續“引入新特性、改進效能並精練語法”,就像該語言自6月份的WWDC 2014釋出以來所經歷的變化那樣。
在適用於iOS的版本達到GM狀態之前,Swift已經經歷了數個Beta版本,除了修復一些不可避免的Bug,還逐步精練了該語言的語法和語義,同時提高了效能。
Swift的語法和語義
每次釋出Beta版本時,Apple都會更新官方的《Swift Language Reference》,以便與語言的新特性保持同步。另一方面,Xcode的釋出說明中詳細列出了Swift在相鄰Beta版本之間發生的變化,不過其中夾雜著Xcode的所有修改。
這時候Karol S. Mazur建立的GitHub倉庫SwiftInFlux就派上用場了,它支援以結構化方式一覽Swift的所有修改。而且這個倉庫特別有意義的地方在於,對於Swift的某些修改,它們意味著什麼,為什麼要加進來,我們可以看到Swift的建立者Chris Lattner的意見。
除了以簡潔的方式列出Xcode的每個Beta版本對Swift所做的修改,該倉庫還收集了一些修改請求,它們或者是在Apple開發者論壇討論過的,或者是通過Radar報告給Apple的。在1.0之後版本的進一步開發中,Swift可能會引入一些重要特性,如抽象方法、訪問控制、C++支援和返回nil的初始化器等,不過Apple方面對此沒有任何承諾。
Swift的效能
在Swift最初對外宣佈時,Apple鼓吹速度是該語言最值得注意的特性之一,相對於Objective-C有40%的效能增加。不過幾個開發者進行的一些最初測試顯示,結果並非如此,除非使用-Ofast編譯器優化選項(不過該選項會去掉所有的執行時安全檢查),否則有些情況下的效能還不如Python。這一發現引發了線上討論,有些開發者暗示Swift還處於發展之中,並評論說,Beta版本存在效能問題並不是稀罕事。
確實,所有的效能問題早在上個月初發布的Xcode 6 beta 5中都已經修復了。根據開發者Jesse Squires的報告,在Xcode 6 beta 5中,仍然使用測試最初發布版本時所用的測試演算法,Swift的效能首次在所有演算法中都超過了Objective-C。開啟新的-Ounchecked優化選項,甚至會得到更好的結果,該選項替代了-Ofast,這樣其真正行為看上去就更為明顯了。
Mike Ash撰文詳盡地分析了Swift勝過Objective-C的原因,他考慮到的因素有:得益於靜態分派的更快的方法分派,由語言支援的更多行內函數呼叫的機會,因為不必在所有方法呼叫上處理_cmd隱式引數而帶來的更高效的暫存器使用效率,指標別名分析可以優化多個指標指向同一記憶體區域的情況。
適用於OS X的Swift
適用於OS X的Swift尚未達到GM狀態,不過這是因為它要依賴Yosemite SDK。Apple介紹說,當Yosemite達到GM狀態時,適用於Mac的Swift也將達到GM狀態。在此期間,開發者可以下載Xcode 6.1的Beta版本,使用Swift構建Mac應用。Apple在宣佈Swift時提到,到Yosemite達到GM狀態時,Xcode 6.1還將對Swift做些改進。可以預見會存在不相容問題,不過不管語言定義方面有何修改,“因為今天的應用中嵌入了一個Swift GM執行時版本,所以未來可以繼續很好地執行”。
相關文章
- MOSN 1.0 釋出,開啟新架構演進架構
- 【重磅】VS Code 的 Java 語言支援 1.0 版本正式釋出Java
- Javascript模組化的演進歷程JavaScript
- CnosDB有主複製演進歷程
- 滴滴 Redis 異地多活的演進歷程Redis
- B站Android程式碼庫的演進歷程Android
- 阿里雲的“全站加速”技術演進歷程阿里
- MIT正式釋出程式語言Julia 1.0:Python、R、C++三合一MITPythonC++
- 荔枝架構實踐與演進歷程架構
- 一文讀懂資料平臺建設的演進歷程
- 這是一個程式語言的釋出貼
- ios應用開發+swift語言入門iOSSwift
- 應用閘道器的演進歷程和分類
- 阿里巴巴在 Envoy Gateway 的演進歷程淺析阿里Gateway
- python是一門解釋性語言嗎?Python
- Maven中央倉庫釋出歷程Maven
- AsteroidOS 1.0 釋出AST
- Angular Universal 的演進歷史Angular
- Swift 5進入釋出倒數計時Swift
- 全新程式語言V釋出
- VS Code Java 更新 – 全新Gradle for Java外掛,更方便的程式碼操作, 1.0 語言支援釋出JavaGradle
- 《C 語言入門教程》釋出了
- UMind1.0釋出
- ? Hyperf v1.0 釋出,全新企業級的 PHP 協程框架PHP框架
- 支援泛型的Go語言1.18釋出泛型Go
- Python是一門傑出的語言,值得你去學習Python
- cnodejs-swift 釋出NodeJSSwift
- 解釋一下一門語言該有的東東(Javascript)JavaScript
- 正式釋出Android Things 1.0Android
- 第二章 Swift語言Swift
- C# 語言歷史版本特性(C# 1.0到C# 8.0彙總)C#
- C#語言歷史版本特性(C# 1.0到C# 8.0彙總)C#
- Julia1.0程式語言淺析
- 多端統一開發框架 Taro 1.0 正式釋出框架
- Groovy 是一門 DSL 語言
- 從Kubernetes 1.14 釋出,看技術社群演進方向
- 入門輸出Hello World!——C語言C語言
- Oracle釋出多語種虛擬機器平臺GraalVM 1.0Oracle虛擬機LVM
- 迎元旦,慶surging 1.0釋出