Swift 5確立了目標,定義了新的演進過程
Swift 5預計將于 2018 年發布,Swift 5 將會帶來更好的 ABI 穩定性,并將進一步關注 API 彈性(resilience)和內存所有權(memory ownership)。新的演進過程將有助于確保 Swift 5 將開發重點放在其既定目標上。
ABI 穩定性在早先的 Swift 發布版本中被推遲之后,目前已經成為 Swift 5 中一個必要的功能。Apple 工程師、Swift 維護者 Teb Kremenek 這樣寫道:“對于第三方框架開發人員來說,ABI 穩定性是至關重要的,并且為了擴大Swift 在 Apple 公司內部的使用范圍,ABI 穩定性的實現不能再被推遲了,并且它將會成為 Swift 5 的重中之重。”然而,Swift 5 對 ABI 穩定性的官方定義不包括模塊穩定性,模塊穩定性被認為是一個難以達成的目標,可能不會出現在下個版本的 Swift 語言中。模塊穩定性涉及到模塊文件的格式,它定義了編譯器是如何表示框架中的公共接口的。因此,只有當開發代碼依賴于一個二進制模塊并且其不可用性不會影響到運行時加載共享庫的時候,模塊穩定性才是必需的。為了讓 ABI 穩定性可控,必須要確定出一些底層實現的細節,其中包括標準庫中所使用的通用特性,如條件性符合(conditional conformances)以及協議遞歸約束(recursive protocol requirements);API 彈性,確保庫 API 能夠在保持其 ABI 穩定性的同時進行演進;另外還有內存所有權(memory ownership)。
Swift 5 另外一個主要目標是源穩定性(source stability),這使得 Swift 5 編譯器能夠接受使用之前版本的 Swift 編寫的代碼。為此,只有當滿足以下三種情況時,才會接受源代碼的更改:當實際語法很明顯會引發問題時;當新語法明顯更好時;當存在現有代碼自動遷移路徑時。源穩定性將會支持 Swift 4 的代碼,也有可能支持 Swift 3 的代碼。
對于字符串人機工程學(string ergonomics)領域的額外改進也被列入計劃,它可以使字符串更易于使用,除此之外,還有對標準庫的改進,它為新的并發模型奠定了基礎。
最后但同樣重要的是,Swift 5 的演進過程已經被重新定義,避免過多的演進提案對 ABI 穩定性的專注度造成影響。特別是從 2018 年 3 月 1 日起,每個新提案都需要一個可行的實現,其中包括測試用例。缺少可行實現的提案也可以被提交,但是不會被審查通過。
來自: InfoQ