Apple自家力推的程式語言Swift釋出了5.2版本,這個版本的更新重點,擺在改進開發者的體驗,包括改善編譯器診斷訊息以及程式碼完成功能,也增加了除錯器的可靠性,同時也改善了Swift套件管理器處理相依性的方法。

官方在這個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中的套件管理器,現在不會解析僅在測試目標中使用的套件相依項目,因而提高了執行效能,同時還減少相依項目衝突的可能性,而且套件管理器現在使用一種新的策略來解析套件相依性,明顯提升錯誤訊息的品質,以及複雜套件圖中的效能。


Advertisement

更多 iThome相關內容