原文在[這裡](https://go.dev/blog/go1.21)。 > 由Eli Bendersky, on behalf of the Go team 發佈於 8 August 2023 Go團隊今天非常高興地發佈了Go 1.21版本,你可以通過訪問[下載頁面](https://go.dev ...
原文在這裡。
由Eli Bendersky, on behalf of the Go team 發佈於 8 August 2023
Go團隊今天非常高興地發佈了Go 1.21版本,你可以通過訪問下載頁面來獲取。
Go 1.21充滿了新功能和改進。以下是一些值得註意的變化;完整的列表,請參閱發佈說明。
工具改進
- 我們在1.20版本預覽的基於配置文件的優化(PGO)特性現在已經可以廣泛使用了!如果在主包的目錄中存在名為default.pgo的文件,go命令將使用它來啟用PGO構建。更多詳情請查看PGO文檔。我們已經在一系列Go程式上測量了PGO的影響,看到了2-7%的性能提升。
- go工具現在支持向後和向前的語言相容性。
語言變化
- 新的內置函數:min,max和clear。
- 對泛型函數的類型推斷進行了多項改進。規範中對類型推斷的描述已經被擴展和明確化。
- 在Go的未來版本中,我們計劃解決Go編程中最常見的問題之一:迴圈變數捕獲。Go 1.21帶來了這個特性的預覽,你可以在你的代碼中使用環境變數來啟用它。更多詳情請查看LoopvarExperiment wiki頁面。
標準庫添加
- 新的log/slog包,用於結構化日誌。
- 新的slices包,用於對任何元素類型的切片進行常見操作。這包括比sort包更快、更符合人體工程學的排序函數。
- 新的maps包,用於對任何鍵或元素類型的映射進行常見操作。
- 新的cmp包,帶有新的有序值比較工具。
性能改進
除了啟用PGO時的性能改進外,
- Go編譯器本身已經在1.21版本中啟用了PGO,因此它構建Go程式的速度提高了2-4%,具體取決於主機架構。
- 由於對垃圾收集器的調優,一些應用可能會看到尾部延遲降低了高達40%。
- 使用runtime/trace收集跟蹤現在在amd64和arm64上的CPU成本大大降低。
新的WASI埠:
- Go 1.21添加了一個實驗性的WebAssembly系統介面(WASI)的埠,預覽1(
GOOS=wasip1,GOARCH=wasm
)。 - 為了便於編寫更通用的WebAssembly(Wasm)代碼,編譯器還支持了一個新的用於從Wasm主機導入函數的指令:
go:wasmimport
。
感謝所有通過編寫代碼、提交錯誤、分享反饋和測試發佈候選版本的人對這個版本的貢獻。你們的努力幫助確保Go 1.21儘可能穩定。如果你發現任何問題,請提交一個問題。
享受Go 1.21吧!
![孟斯特](https://img2023.cnblogs.com/blog/1007709/202308/1007709-20230810162948167-1526955652.jpg)
聲明:本作品採用署名-非商業性使用-相同方式共用 4.0 國際 (CC BY-NC-SA 4.0)進行許可,使用時請註明出處。
author: mengbin
blog: mengbin
github: mengbin92
cnblogs: 戀水無意