Go 部落格
Go 1.21 已發行!
今天,Go 團隊很榮幸地宣布推出 Go 1.21,您可前往 下載頁面取得相關資訊。
Go 1.21 加入許多新功能和改善。以下是其中一些顯著變更;想要完整清單,請參閱 版本說明。
工具改善
- 我們在 1.20 中宣布預覽的 PGO(Profile Guided Optimization,設定描述檔案引導最佳化)功能現在已公開提供!如果在主要套件的目錄中有名為
default.pgo
的檔案,go
命令會使用該檔案啟用 PGO 建置。請參閱 PGO 文件,以取得更多詳細資訊。我們已針對廣泛的 Go 程式量測 PGO 的影響,並發現效能改善了 2-7%。 go
工具 現在支援 後向 和 前向 語言相容性。
語言變更
- 新內建函式:min、max 和 clear。
- 對泛函式的類型推論進行多項改善。規格中類型推論 的說明已擴充並釐清。
- 在未來的 Go 版本中,我們計畫要處理其中一個最常見的 Go 程式設計難題:迴圈變數擷取。Go 1.21 提供此功能的預覽,你可以使用環境變數在自己於程式碼中啟用。詳情請參閱 LoopvarExperiment Wiki 頁面。
Standard 函式庫新增功能
- 新的 log/slog 套件用於結構化記錄。
- 新的 slices 套件用於針對任何元素類型分割區段的常見操作。這包括比 sort 套件快且更符合人體工學的分類功能。
- 新的 maps 套件用於針對任何金鑰或元素類型的映射進行常見操作。
- 新的 cmp 套件,提供新的公用程式來比對已排序的值。
效能提升
除了啟用 PGO 時的效能提升之外
- Go 編譯器本身已針對 1.21 進行重建並啟用 PGO,因此建立 Go 程式時依主機架構而定,速度會快 2-4%。
- 由於調整垃圾收集器,某些應用程式的尾部延遲可能會減少多達 40%。
- 現在,使用 runtime/trace 收集追蹤在 amd64 和 arm64 上產生的 CPU 成本大幅降低。
新的 WASI 埠
Go 1.21 新增一個用於 WebAssembly 系統介面 (WASI) 第 1 個預覽版的實驗性埠 (GOOS=wasip1
、GOARCH=wasm
)。
為了方便撰寫更通用的 WebAssembly (Wasm) 程式碼,編譯器還支援匯入 Wasm 主機功能的新指令:go:wasmimport
。
感謝所有透過寫程式碼、提交錯誤、分享回饋和測試候選版本來貢獻此版本的每個人。你的努力有助於確保 Go 1.21 儘可能穩定。如果你發現任何問題,請務必一如往常地 提交問題。
盡情享受 Go 1.21!
下一篇文章: 向後相容性、Go 1.21 和 Go 2
上一篇文章: 專案範本實驗
Blog 目錄