Go 1.24發布帶來效能改進和更好的WebAssembly支持
Go 1.24 由Google 工程師於本週發布,是這一流行程式語言向前邁出的最新一步。 Go 1.24 提供了各種效能改進、對Go 程式語言通用型別類型別名的全面支援、各種Go 工具改進、促進FIPS 140-3 合規性的標準函式庫新增、標準函式庫中的”os.Root”類型,以及改進的WebAssembly 支援。

說到Go 1.24 的效能工作,在各種代表性基準測試中,運行時CPU 開銷平均降低了2%~3%。 Go 1.24 對WebAssembly 的改進包括新的”go:was”和”go:was”。
Go 1.24 与 Go 1.23 相比有许多改进。 以下是一些显著的变更;如需完整列表,请参阅 发行说明。
語言變更
Go 1.24 現在完全支援通用型別別名:型別別名可以像已定義的型別一樣被參數化。 詳情請參閱語言規範。
性能改進
運行時的多項效能改進使CPU 開銷在一系列代表性基準測試中平均降低了2-3%。 這些改進包括基於Swiss Tables的新內建map
實作、更有效率的小物件記憶體分配以及新的運行時內部互斥實作。
工具改進
go
命令現在提供了一種追蹤模組工具依賴性的機制。 使用go get -tool
將tool
指令新增至目前模組。 使用go tool [tool name]
運行使用tool
指令聲明的工具。 在發行說明中閱讀更多關於go 指令的內容。test
子命令go vet
中的新test
分析器可報告測試包中測試、模糊器、基準和範例聲明中的常見錯誤。 在發行說明中閱讀更多關於vet的內容。
標準庫新增內容
- 標準庫現在包括一套新的機制,以促進FIPS 140-3 合規性。 應用程式無需修改原始程式碼即可使用已獲批准演算法的新機制。 有關FIPS 140-3 合規性的更多信息,請參閱發布說明。 除FIPS 140 外,x/crypto模組中的多個軟體包現在也可在標準庫中使用。
- 基準現在可以使用更快、更不易出錯的
testing.B.Loop
方法來執行基準迭代,如for b.Loop() { ... }
來代替涉及b.N
的典型循環結構,如for range b.N
。 有關新基準函數的更多信息,請參閱發行說明。 - 新的
os.Root
類型提供了在特定目錄下執行檔案系統隔離操作的能力。 請閱讀發行說明中有關檔案系統存取的更多資訊。 - 運行時提供了一種新的終結機制,
runtime.AddCleanup
比runtime.SetFinalizer
更靈活、更有效率、更不易出錯。 有關清理的更多信息,請參閱發行說明。
改進對WebAssembly 的支持
Go 1.24 新增了go:wasmexport
指令,用於Go 程式向WebAssembly 主機匯出函數,並支援將Go 程式作為WASI reactor/library建置。 請閱讀WebAssembly發行說明中的更多資訊。
有關本週發布的Go 1.24 的下載和更多信息,請訪問Go.dev .