Go 部落格

Go 1.21 發行候選版

Eli Bendersky,代表 Go 團隊
2023 年 6 月 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、maxclear
  • 多項泛型函式的型別推論改善。已擴充並釐清規格中型別推論的說明。
  • 在未來版本的 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=wasip1GOARCH=wasm)。

為了便於撰寫更通用的 WebAssembly (WASM) 程式碼,編譯器也支援新的指令來從 WASM 主機匯入函式:go:wasmimport

下載 Go 1.21 RC並試試看!如果您發現任何問題,請提交問題

下一篇文章:Govulncheck v1.0.0 發布!
上一篇文章:Go 開發人員調查 2023 Q1 結果
網誌索引