Go 部落格
Go 語言十四週年

今天我們慶祝 Go 開源版本釋出十四週年!Go 度過了出色的一年,釋出了兩個功能豐富的版本,並取得了其他重要里程碑。
我們在 2 月釋出了 Go 1.20,在 8 月釋出了 Go 1.21,更多地側重於實現改進,而不是新的語言更改。
配置檔案引導最佳化 (PGO) 在 Go 1.20 中預覽,並在 Go 1.21 中正式釋出,它允許 Go 編譯器讀取程式的配置檔案,然後花費更多時間最佳化程式中執行最頻繁的部分。在 Go 1.21 中,透過啟用 PGO,工作負載的 CPU 使用率通常可以提高 2% 到 7%。請參閱“Go 1.21 中的配置檔案引導最佳化”獲取概覽,並參閱 配置檔案引導最佳化使用者指南獲取完整文件。
自 Go 1.2 起,Go 就提供了在 go test
期間收集覆蓋率配置檔案的支援。Go 1.20 新增了對在 go build
構建的二進位制檔案中收集覆蓋率配置檔案的支援,允許您在更大的整合測試期間收集覆蓋率。請參閱“Go 整合測試的程式碼覆蓋率”瞭解詳情。
自“Go 1 和 Go 程式的未來”以來,相容性一直是 Go 的重要組成部分。Go 1.21 透過擴充套件在需要進行更改(例如重要的錯誤修復)時使用 GODEBUG 的約定,進一步改進了相容性,這些更改必須允許,但可能仍然會破壞現有程式。請參閱部落格文章“向後相容性、Go 1.21 和 Go 2”獲取概覽,並參閱文件“Go、向後相容性和 GODEBUG”瞭解詳情。
Go 1.21 還附帶了內建工具鏈管理支援,允許您像更改其他依賴項的版本一樣輕鬆地更改特定模組中使用的 Go 工具鏈版本。請參閱部落格文章“Go 1.21 中的向前相容性和工具鏈管理”獲取概覽,並參閱文件“Go 工具鏈”瞭解詳情。
另一個重要的工具成就時將磁碟索引整合到 gopls(Go LSP 伺服器)中。這使得 gopls 在典型使用場景下的啟動延遲和記憶體使用量減少了 3-5 倍。“為不斷發展的 Go 生態系統擴充套件 gopls”解釋了技術細節。您可以透過執行以下命令來確保您正在執行最新的 gopls:
go install golang.org/x/tools/gopls@latest
Go 1.21 引入了新的 cmp、maps 和 slices 包——這是 Go 的首批泛型標準庫——並擴充套件了可比較型別的集合。有關詳情,請參閱部落格文章“您的所有可比較型別”。
總的來說,我們繼續改進泛型,並撰寫講座和部落格文章解釋重要細節。今年有兩篇值得關注的文章是“解構型別引數”和“你一直想知道的關於型別推斷的一切——以及更多”。
Go 1.21 中另一個重要的新包是 log/slog,它為標準庫添加了用於結構化日誌記錄的官方 API。請參閱“使用 slog 進行結構化日誌記錄”獲取概覽。
對於 WebAssembly (Wasm) 埠,Go 1.21 附帶了在 WebAssembly System Interface (WASI) preview 1 上執行的支援。WASI preview 1 是用於 Wasm 的新“作業系統”介面,大多數伺服器端 Wasm 環境都支援它。請參閱“Go 中的 WASI 支援”獲取詳細步驟。
在安全方面,我們持續努力確保 Go 在幫助開發者瞭解其依賴項和漏洞方面處於領先地位,Govulncheck 1.0 於 7 月釋出。如果您使用 VS Code,可以使用 Go 擴充套件直接在編輯器中執行 govulncheck:請參閱此教程以開始使用。如果您使用 GitHub,可以使用 GitHub Action for govulncheck 作為 CI/CD 的一部分執行 govulncheck。有關檢查依賴項是否存在漏洞問題的更多資訊,請參閱今年 Google I/O 上的講座“使用 Go 和 Google 構建更安全的應用程式”)。
另一個重要的安全里程碑是 Go 1.21 的高度可重現工具鏈構建。請參閱“完美可重現、已驗證的 Go 工具鏈”瞭解詳情,包括演示如何在 Mac 上重現 Ubuntu Linux Go 工具鏈,而無需使用任何 Linux 工具。
這是忙碌的一年!
在 Go 的第 15 個年頭,我們將繼續努力使 Go 成為大規模軟體工程的最佳環境。我們特別興奮的一項更改是重新定義 for 迴圈的 :=
語義,以消除意外別名錯誤的潛在問題。請參閱“Go 1.22 中修復 For 迴圈”瞭解詳情,包括如何在 Go 1.21 中預覽此更改的說明。
謝謝!
Go 專案遠不止我們 Google 的 Go 團隊。感謝所有貢獻者和 Go 社群的每一位成員,正是你們成就了今天的 Go。祝大家在新的一年一切順利。
下一篇文章:2023 年下半年 Go 開發者調查結果
上一篇文章:你一直想知道的關於型別推斷的一切——以及更多
部落格索引