Go 部落格

Go 1.21 Release Candidate

Eli Bendersky,代表 Go 團隊
2023 年 6 月 21 日

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工具現已支援向後向前的語言相容性。

語言變更

標準庫新增

  • 新的用於結構化日誌記錄的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 開發者調查結果
部落格索引