Go 部落格

已釋出 Go 1.19!

Go 團隊
2022 年 8 月 2 日

今天,Go 團隊很高興發布 Go 1.19,您可前往 下載頁面 取得。

Go 1.19 改進了我們於今年稍早發布的龐大 Go 1.18 版本。我們將 Go 1.19 的泛型程式開發重點放在處理社群回報給我們的細微問題與臨界狀況,以及重要的效能改善(部分泛型程式提升了 20%)。

文件註解現在支援 連結、清單和更清晰的標題語法。此變更可協助使用者撰寫更清晰且更易於瀏覽的文件註解,特別是在 API 很龐大的套件。做為此變更的一部分,gofmt 現在會重新格式化文件註解,套用這些功能的標準格式。詳情請參閱「Go 文件註解」。

Go 的記憶體模型 現已明確定義 sync/atomic 套件 的行為。發生前關係的正式定義已修訂,以配合 C、C++、Java、JavaScript、Rust 和 Swift 使用的記憶體模型。現有程式不會受到影響。隨著記憶體模型的更新,在 sync/atomic 套件中新增一些類型,例如 atomic.Int64atomic.Pointer[T],讓使用原子值時更輕鬆。

出於 安全原因,os/exec 套件不再在 PATH 查詢中採用相對路徑。有關詳細資訊,請參閱 套件文件。僅使用 Go 1.19 或更新版本建置程式時,原先使用 golang.org/x/sys/execabs 的狀況可以移回 os/exec 中。

垃圾收集程式已新增對軟記憶體限制的支持,詳見 新的垃圾收集指南 中的說明。該限制在將 Go 程式最佳化以在記憶體專用配額的容器中以盡可能有效率的方式執行方面,特別有用。

當目標作業系統 (GOOS) 是任何類 Unix 系統時,新的建置約束 unix 會滿足。到目前為止,類 Unix 表示 Go 的所有目標作業系統,但 jsplan9windowszos 除外。

最後,Go 1.19 包含了各種效能和實作改善,包括調整初始 goroutine 堆疊的動態大小以減少堆疊複製,在多數 Unix 系統上自動使用其他檔案描述符,為 x86-64 和 ARM64 上的大型 switch 陳述式使用跳躍表,支援在 ARM64 上插入偵錯功能的呼叫,在 RISC-V 上支援註冊 ABI,以及實驗性質地支援在搭載 Loongson 64 位元架構 (LoongArch) 且執行 Linux 的系統上使用 (GOARCH=loong64)。

感謝所有透過撰寫程式碼、呈報錯誤、分享回饋和測試測試版和發行候選版,為這次版本做出貢獻的人員。各位的努力幫助確保了 Go 1.19 盡可能穩定。和以往一樣,如果您發現任何問題,請 呈報問題

享受 Go 1.19!

下一篇文章: Go 的漏洞管理
上一篇文章: 分享您對使用 Go 開發的回饋
網誌索引