當前位置: 華文頭條 > 推薦

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歷史上最大的破壞回溯相容性版本 - 極道