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日起,每個新提案都需要一個可行的實現,其中包括測試用例。缺少可行實現的提案也可以被提交,但是不會被審查通過。
查看英文原文:Swift 5 Sets its Goals, Defines New Evolution Process