最近發(fā)布在swift-evolution郵件雜志上的《Swift ABI穩(wěn)定性宣言》旨在匯編所有需要解決的問題,然后宣布Swift ABI具有穩(wěn)定性。
《Swift ABI穩(wěn)定性宣言》的作者——蘋果公司工程師Michael Ilseman寫道,ABI穩(wěn)定性的目標(biāo)包含以下兩個主要部分:
定義一個模塊文件,這個模塊文件包含了Swift編譯器關(guān)于把公共框架的API與在運行時加載的可執(zhí)行代碼捆綁在一起的描述的標(biāo)準(zhǔn)化表示。 定義一系列影響低級別細節(jié)的約定,例如如何調(diào)用函數(shù),如何在內(nèi)存中表示數(shù)據(jù)和元數(shù)據(jù)等。Ilseman特別指出需要致力于以下六個方面:
數(shù)據(jù)布局,主要是定義如何在內(nèi)存中布置struct和class實例。 類型元數(shù)據(jù),要求有特定的內(nèi)存布局或API查詢。 name mangling,主要是定義編譯器如何分別標(biāo)識外部符號,例如類型和函數(shù)。 函數(shù)調(diào)用約定,主要是定義如何將參數(shù)傳入/傳出函數(shù),以及該保留哪些寄存器等。 Swift runtime,主要是提供動態(tài)轉(zhuǎn)換、引用計數(shù)、反射等的基本機制,屬于ABI的一部分。 標(biāo)準(zhǔn)庫,它的API是ABI的一部分,應(yīng)用程序和庫都會調(diào)用它。ABI穩(wěn)定性是Swift 4計劃的優(yōu)先級最高的功能之一,對第三方框架開發(fā)人員至關(guān)重要。正如InfoQ報道所指出,Swift 3因為無法定義鎖定ABI之前需要定義的一些方面,所以沒有實現(xiàn)ABI的穩(wěn)定性。在最近的Accidental TechS播客采訪中,前蘋果工程師兼Swift創(chuàng)始人Chris Lattner表示,ABI穩(wěn)定性對于應(yīng)用程序開發(fā)人員來說并不重要,但“對蘋果公司來說非常重要”,并且它是公司內(nèi)部采用Swift的關(guān)鍵因素:
要真正地在蘋果公司全面采用Swift,Swift團隊必須實現(xiàn)一些特定目標(biāo)。ABI穩(wěn)定性是阻止框架開發(fā)人員采用Swift的首要因素。這是一件非常重要的事情,也是ABI穩(wěn)定性總是排在很高優(yōu)先等級的原因之一。
實際上,目前仍然不完全清楚Swift 4 ABI是否能被宣稱為具有穩(wěn)定性。Lattner說,這可能受兩個因素的影響,它們是ABI穩(wěn)定性包含的工作量以及它可能不是Swift社區(qū)最重要的事情。
如果他們什么時候決定專注于Swift 4中其他比ABI穩(wěn)定性更重要的方面,我也不會感到驚訝。
Lattner指出了一些Swift社區(qū)中排在更高優(yōu)先級別的問題:比如使編譯器更具可靠性,更準(zhǔn)確的錯誤提示,加快編譯速度,以及使Swift更適用于大型項目。
查看英文原文:The Road to Swift 4 ABI Stability