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 包的行為。對 happens-before 關係的形式化定義已修訂,以與 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 程式在記憶體分配量有限的容器中儘可能高效地執行特別有幫助。

新的構建約束 unix 在目標作業系統 (GOOS) 是任何類 Unix 系統時得到滿足。如今,類 Unix 指的是 Go 的所有目標作業系統,除了 jsplan9windowszos

最後,Go 1.19 包括各種效能和實現改進,包括動態調整初始 goroutine 棧大小以減少棧複製、在大多數 Unix 系統上自動使用額外的檔案描述符、x86-64 和 ARM64 上的大型 switch 語句的跳轉表、對 ARM64 上的偵錯程式注入函式呼叫的支援、RISC-V 上的暫存器 ABI 支援,以及對執行在 Loongson 64 位架構 LoongArch (GOARCH=loong64) 上的 Linux 的實驗性支援。

感謝所有透過編寫程式碼、提交 bug、分享反饋以及測試 beta 版和釋出候選版為本次釋出做出貢獻的人。您的努力有助於確保 Go 1.19 儘可能穩定。一如既往,如果您發現任何問題,請提交 issue

盡情享用 Go 1.19!

下一篇文章:Go 的漏洞管理
上一篇文章:分享您對 Go 開發的反饋
部落格索引