Swift 1.0釋出:一門語言的演進歷程

infoq發表於2014-09-11

  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執行時版本,所以未來可以繼續很好地執行”。

  英文原文:Swift Turns 1.0: The Evolution of a Language

相關文章