Swift 4 ABI穩定性的征途

2021-12-29 20:02:54 字數 1248 閱讀 7909

swift 4 abi穩定性的征途,英文原文:the road to swift 4 abi stability

最近發布在 swift-evolution 郵件雜誌上的《swift abi 穩定性宣言》旨在彙編所有需要解決的問題,然後宣布 swift abi 具有穩定性。

《swift abi 穩定性宣言》的作者——蘋果公司工程師 michael ilseman 寫道,abi 穩定性的目標包含以下兩個主要部分:

定義乙個模組檔案,這個模組檔案包含了 swift 編譯器關於把公共框架的 api 與在執行時載入的可執行****在一起的描述的標準化表示。 定義一系列影響低級別細節的約定,例如如何呼叫函式,如何在記憶體中表示資料和元資料等。

ilseman 特別指出需要致力於以下六個方面:

資料布局,主要是定義如何在記憶體中布置 struct 和 class 例項。 型別元資料,要求有特定的記憶體布局或 api 查詢。 name mangling,主要是定義編譯器如何分別標識外部符號,例如型別和函式。 函式呼叫約定,主要是定義如何將引數傳入/傳出函式,以及該保留哪些暫存器等。 swift runtime,主要是提供動態轉換、引用計數、反射等的基本機制,屬於 abi 的一部分。 標準庫,它的 api 是 abi 的一部分,應用程式和庫都會呼叫它。

abi 穩定性是 swift 4計畫的優先順序最高的功能之一,對第三方框架開發人員至關重要。正如 infoq 報道所指出,swift 3 因為無法定義鎖定 abi 之前需要定義的一些方面,所以沒有實現 abi 的穩定性。在最近的 accidental techs 播客採訪中,前蘋果工程師兼 swift 創始人 chris lattner 表示,abi 穩定性對於應用程式開發人員來說並不重要,但「對蘋果公司來說非常重要」,並且它是公司內部採用 swift 的關鍵因素:

要真正地在蘋果公司全面採用 swift,swift 團隊必須實現一些特定目標。abi 穩定性是阻止框架開發人員採用 swift 的首要因素。這是一件非常重要的事情,也是 abi 穩定性總是排在很高優先等級的原因之一。

實際上,目前仍然不完全清楚swift 4 abi 是否能被宣稱為具有穩定性。lattner 說,這可能受兩個因素的影響,它們是 abi 穩定性包含的工作量以及它可能不是 swift 社群最重要的事情。

如果他們什麼時候決定專注於 swift 4 中其他比 abi 穩定性更重要的方面,我也不會感到驚訝。

lattner 指出了一些 swift 社群中排在更高優先順序別的問題:比如使編譯器更具可靠性,更準確的錯誤提示,加快編譯速度,以及使 swift 更適用於大型專案。

Swift 4進入最後階段,ABI穩定性被推遲

swift 4做了許多重大改變,因此swift 4與swift 3並沒有十分良好的 相容性。然而,swift語言一經推出,它的編譯器就支援相容性模式,使用 swift version 3編譯選項就能編譯大多數swift 3的原始碼,在swift 4中還修復了錯誤 也能在舊編譯器中編譯通過的漏洞。sw...

mysql穩定性 MySQL的穩定性

isam表處理器 穩定 它管理所有在mysql 3.22和早期版本中的資料的儲存和檢索。在所有mysql版本中,中已經沒有乙個單獨 報告的 錯誤。得到乙個損壞的資料庫表的唯一已知方法是在乙個更新中途殺死伺服器,即使這樣也不大可能破壞任何資料而不能挽救,因為所有資料在每個查詢之間被倒入 flush 到...

演算法的穩定性

在資料結構中,我們研究了演算法的穩定性。其中,快速排序,堆排序以及直接選擇排序都是不穩定的排序。那麼為什麼這些是不穩定的排序,判定標準又是什麼。需要仔細了解一下。什麼是穩定性?所謂穩定性,就是假定在待排序記錄序列中,存在多個具有相同關鍵字的記錄,如果經過排序以後,這些記錄的相對次序保持不變,即原序列...