Go 部落格
Go 1.21 發行候選版
Go 1.21 第一個發行候選版本 (RC) 於今日在 下載頁面 上線!Go 1.21 擁有許多新功能與改進。取得 RC(發行候選版本)讓您可以提早體驗、在工作負載中嘗試看看,並在最終版本(預定 8 月發布)之前回報任何問題。以下是 Go 1.21 中一些顯著的變更與功能;完整清單,請參閱 完整版本資訊。
(請注意,Go 1.21 的第一個 RC 稱為 go1.21rc2
,因為在標記 go1.21rc1
後發現並修復了一個錯誤)
工具改善
- 我們 在 1.20 中宣佈預覽的輪廓引導最佳化 (PGO) 功能現在已正式公開!如果一個名為
default.pgo
的檔案存在於主套件目錄中,go
指令會使用它來啟用 PGO 建置。有關詳細資訊,請參閱 PGO 文件。我們已經針對廣泛的 Go 程式衡量 PGO 的影響,並看到效能改善了 2-7%。 go
工具 現在支援 後向 和 前向 語言相容性。
語言變更
- 新的內建函式:min、max 和 clear。
- 多項泛型函式的型別推論改善。已擴充並釐清規格中型別推論的說明。
- 在未來版本的 Go 中,我們計畫處理 Go 程式設計中最常見的陷阱之一:迴圈變數擷取。Go 1.21 隨附此功能的預覽,您可以使用環境變數在您的程式碼中啟用。請參閱LoopvarExperiment Wiki 頁面以取得更多詳細資訊。
標準函式庫新增功能
- 針對結構化記錄新增log/slog套件。
- 針對任何元素類型切片的常見操作新增slices套件。這包括比sort套件更快速且更符合人體工學的排序功能。
- 針對任何金鑰或元素類型地圖的常見操作新增maps套件。
- 新增cmp套件,其中包含比較已排序值的最新公用程式。
效能改善
除了啟用 PGO 時的效能改善之外
- Go 編譯器本身已使用啟用 PGO 的方式為 1.21 重新建置,因此根據主機架構,編譯 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 RC並試試看!如果您發現任何問題,請提交問題。
下一篇文章:Govulncheck v1.0.0 發布!
上一篇文章:Go 開發人員調查 2023 Q1 結果
網誌索引