Go 1.22:Golang歷史上最大的破壞回溯相容性版本
2024-02-15推薦
Go歷史上最大的破壞回溯相容性的版本。 釋出說明甚至沒有提到 Go 1.22 會破壞回溯相容性這一事實。
網友觀點:
部份破壞,這取決於為每個參照
模組
設定的 go.mod 版本。這樣做比較溫和,但如果任何模組提高了版本,可能會產生負面影響。
要使這一更改具有破壞性,需要將 go.mod 更新到 1.22 版,因此您顯然選擇了接受這一更改。你也可以說,在大多數情況下,新行為都是我們所希望的,它所修復的問題可能比它帶來的問題更多。 這是一個很好的改動。
1.22版本釋出
最新的 Go 版本 1.22 在Go 1.21釋出六個月後釋出。它的大部份變化在於工具鏈、執行時和庫的實作。與往常一樣,該版本保持了 Go 1的相容性承諾?我們期望幾乎所有 Go 程式都能像以前一樣繼續編譯和執行。
語言的變化
Go 1.22 對「for」迴圈進行了兩處更改。
Go 1.22 包括我們正在考慮為 Go 的未來版本進行的語言更改的預覽:範圍函數叠代器。構建GOEXPERIMENT=rangefunc可以啟用此功能。
工具的變化
執行命令
跟蹤
vet工具
執行變化:
執行時使基於類別的垃圾收集元
數據
更接近每個堆物件,從而將 Go 程式的 CPU
效能
(延遲或吞吐量)提高了 1-3%。
編譯器:
配置檔引導最佳化 (PGO)構建現在可以比以前實作更高比例的呼叫去虛擬化。
編譯器現在交錯去虛擬化和行內,因此介面方法呼叫得到了更好的最佳化。
Go 1.22 還包括編譯器行內階段的增強實作的預覽,該階段使用啟發式方法來提高被認為「重要」的呼叫站點(例如,迴圈中)的行內性,並阻止被認為「不重要」的呼叫站點(例如,在迴圈中)的行內。恐慌路徑)。
連結器:
linker的 -s 和-w標誌現在在所有平台上的行為更加一致。
-w標誌抑制 DWARF 偵錯資訊生成。
-s標誌抑制符號表生成。
引導程式
正如Go 1.20 發行說明中提到的,Go 1.22 現在需要 Go 1.20 或更高版本的最終版本進行引導。我們預計 Go 1.24 將需要 Go 1.22 或更高版本的最終版本進行引導。
核心庫
新的 math/rand/v2 包
新的go/version包
增強的路由
模式
:使用的模式net/http.ServeMux已得到增強,可以接受方法和通配符。
Go 1.22:Golang歷史上最大的破壞回溯相容性版本 - 極道