Swift 5.2 發布改善開發人員體驗
Swift 5.2 發布了,此版本專注於改善開發人員體驗,語言方面,Swift 5.2 在Swift Evolution 流程中實現了以下語言建議,這些功能可能會對Swift 作為函數式編程語言的整體能力產生較大影響。主要改進內容包括:
- 改進的編譯器診斷(錯誤和警告)和代碼補全
- 提高調試的可靠性
- 改進了Swift Package Manager 中的依賴項處理
- LSP 和SwiftSyntax 的工具改進
- SE-0249 鍵路徑表達式作為函數
- SE-0253 用戶定義類型的可調用值
Swift語法本身也發生了一些改變。通過將協議替換為結構,SwiftSyntax 的API中的語法節點層次結構得到了優化。因此,樹訪問現在變得更快,尤其是在使用SyntaxRewriter重寫時。
Swift更新版大幅提高Swift編譯程序錯誤信息的質量和準確性。過去編譯程序會試圖透過分解表達式,在子表達式中搜尋錯誤,以猜測錯誤的正確位置,官方解釋,這個方法對於只利用子表達式,而無需父表達式信息,就能搜尋到的錯誤才有用,對於其他種類的程序開發錯誤是無效的。
而由於編譯程序在遭遇到錯誤的時候,會遺留一些小線索,這些線索可以讓編譯程序產生更準確的診斷信息,因此從Swift 5.2開始,編譯程序現在會正確的指出發生錯誤的程序代碼位置,並且提供可供修正的信息,而不會像是在Swift 5.1中,錯譯信息可能含有錯誤的行數等誤導信息,增加開發者除錯困難。
Swift 5.2的程序代碼完成功能也獲得改進,官方減少了不必要的類型檢查步驟,因而使程序代碼完成功能執行速度提升,在較大的檔案中,新版速度為Xcode 11.3.1版本的1.2到1.6倍,還能在不完整的字典字面常數(Dictionary literal)以及不完整的三元表示式,提供隱式成員的名字。而出現在結果中的類型也更容易閱讀,必要情況才會列出父類型。
在所有支持的平台,Swift除錯器LLDB的運作現在可靠許多。由於除錯信息的重建類型信息現在更具彈性,使得除錯器可以使用更多關於Swift類型的信息。值得注意的是,LLDB也可以從DWARF除錯信息中導入C和Objective-C類型,而不需要從原始碼編譯Clang模塊。默認情況下,當傳統Clang模塊導入失敗時,這個配置將會作為備用路徑。
Swift 5.2中的套件管理器,現在不會解析僅在測試目標中使用的套件相依項目,因而提高了執行效能,同時還減少相依項目衝突的可能性,而且套件管理器現在使用一種新的策略來解析套件相依性,明顯提升錯誤信息的質量,以及復雜套件圖中的效能。
具體的細節見更新說明: