Go 部落格
Go 1.21 Release Candidate
Go 1.21 的第一個 Release Candidate (RC) 版本現已在下載頁面提供!Go 1.21 包含了大量新功能和改進。提前獲取 RC (release candidate) 版本,可以讓您儘早體驗新功能,在您的工作負載上進行測試,並在最終釋出(計劃於八月)之前報告任何問題。以下是 Go 1.21 中的一些重要更改和功能;完整列表請參閱完整發行說明。
(請注意,Go 1.21 的第一個 RC 版本被命名為go1.21rc2,因為在標記go1.21rc1之後發現並修復了一個 bug)
工具改進
- 我們曾在1.20 版本預覽中宣佈的 Profile Guided Optimization (PGO) 功能現已普遍可用!如果主包目錄中存在名為
default.pgo的檔案,go命令將使用它來啟用 PGO 構建。有關更多詳細資訊,請參閱PGO 文件。我們已經測量了 PGO 對一系列 Go 程式的影響,並看到了 2-7% 的效能提升。 go工具現已支援向後和向前的語言相容性。
語言變更
- 新的內建函式:min、max和clear。
- 泛型函式型別推斷得到多項改進。關於型別推斷的規範說明已得到擴充套件和澄清。
- 在未來的 Go 版本中,我們計劃解決 Go 程式設計中最常見的陷阱之一:迴圈變數捕獲。Go 1.21 提供了此功能的一個預覽版,您可以透過環境變數在程式碼中啟用它。有關更多詳細資訊,請參閱此 LoopvarExperiment wiki 頁面。
標準庫新增
- 新的用於結構化日誌記錄的log/slog包。
- 新的slices包,用於對任何元素型別的 slice 進行常見操作。其中包括比sort包更通用、更符合人體工程學的排序函式。
- 新的maps包,用於對任何鍵或元素型別的 map 進行常見操作。
- 新的cmp包,提供了比較有序值的新實用工具。
效能改進
除了啟用 PGO 帶來的效能提升之外,
- Go 編譯器本身已使用 PGO 編譯,併為 1.21 版本啟用了 PGO,因此,根據主機架構的不同,它能將 Go 程式構建速度提高 2-4%。
- 由於對垃圾回收器的調優,某些應用程式的尾部延遲可能會降低高達 40%。
- 使用runtime/trace收集跟蹤資訊,在 amd64 和 arm64 架構上,CPU 開銷已大大減小。
新增 WASI 埠
Go 1.21 為WebAssembly System Interface (WASI)增加了實驗性埠,支援 Preview 1 (GOOS=wasip1, GOARCH=wasm)。
為了方便編寫更通用的 WebAssembly (WASM) 程式碼,編譯器還支援一個用於從 WASM 主機匯入函式的新指令:go:wasmimport。
請下載 Go 1.21 RC並進行試用!如果您發現任何問題,請提交 issue。
下一篇文章:Govulncheck v1.0.0 釋出!
上一篇文章:2023 年第一季度 Go 開發者調查結果
部落格索引