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 釋出,開啟新架構演進架構
- Javascript模組化的演進歷程JavaScript
- 【重磅】VS Code 的 Java 語言支援 1.0 版本正式釋出Java
- 函數語言程式設計語言 Elixir 1.0 正式版釋出函數程式設計
- Go 語言的演化歷程Go
- Go語言的演化歷程Go
- Swift語言快速入門Swift
- Swift 1.0 GM釋出:App Store歡迎Swift應用SwiftAPP
- Xcode 6 beta 釋出,支援Swift程式語言XCodeSwift
- JavaScript模組化開發的演進歷程JavaScript
- 滴滴 Redis 異地多活的演進歷程Redis
- Swift 程式語言入門教程Swift
- 依賴型別語言Idris釋出1.0版本型別
- 荔枝架構實踐與演進歷程架構
- B站Android程式碼庫的演進歷程Android
- 阿里雲的“全站加速”技術演進歷程阿里
- 一文讀懂資料平臺建設的演進歷程
- 蘋果新的程式語言 Swift 語言進階(十二)--選項鍊蘋果Swift
- 程式設計師下一門要學的程式語言Swift程式設計師Swift
- MIT正式釋出程式語言Julia 1.0:Python、R、C++三合一MITPythonC++
- Swift教程Swift語言快速入門(內部資料)Swift
- Apple Swift程式語言入門教程APPSwift
- 這是一個程式語言的釋出貼
- 選擇一門程式語言,任何一門語言
- 蘋果釋出 Swift 程式語言,支援程式碼效果實時預覽蘋果Swift
- Maven中央倉庫釋出歷程Maven
- 阿里巴巴在 Envoy Gateway 的演進歷程淺析阿里Gateway
- Angular Universal 的演進歷史Angular
- python是一門解釋性語言嗎?Python
- 釋出 umi 1.0 ???
- 還在愁找不到合適的入門教材嗎?《深入淺出 Swift語言》Swift
- Gitea 1.0 釋出了,Go語言開發的自助 Git 服務GitGo
- Gitea 1.0 釋出了,Go 語言開發的自助 Git 服務GitGo
- TIOBE 2014年7月程式語言排行榜:僅釋出1月 Swift進Top 20!Swift
- 資訊圖:程式語言的進化過程
- 使用Swift語言的寫的一些appSwiftAPP
- 蘋果Swift程式語言入門教程【中文版】蘋果Swift
- 全新程式語言V釋出