原文在這裡。 由 Russ Cox, for the Go team 發佈於2023年11月10日 今天,我們慶祝Go開源發佈的第十四個生日!Go在過去一年裡取得了巨大的進展,發佈了兩個功能豐富的版本,並實現了其他重要的里程碑。 我們發佈了Go 1.20 in February和Go 1.21 in ...
原文在這裡。
由 Russ Cox, for the Go team 發佈於2023年11月10日
今天,我們慶祝Go開源發佈的第十四個生日!Go在過去一年裡取得了巨大的進展,發佈了兩個功能豐富的版本,並實現了其他重要的里程碑。
我們發佈了Go 1.20 in February和Go 1.21 in August,主要側重於實現改進而非引入新的語言變化。
Go 1.20中預覽的Profile-guided optimization(PGO)在Go 1.21中正式發佈,允許Go編譯器讀取程式的性能分析數據,然後花更多時間優化程式中運行頻率最高的部分。在Go 1.21中,啟用PGO通常可以提升2%到7%的CPU利用率。有關概述,請參閱“Go 1.21中的Profile-guided optimization”,有關完整文檔,請參閱“Profile-guided optimization用戶指南”。
自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)預覽1上運行。WASI預覽1是WebAssembly的一個新“操作系統”介面,受到大多數伺服器端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工具鏈”,其中包括在無需使用任何Linux工具情況下,在Mac上複製Ubuntu Linux Go工具鏈的演示。
今年真的是碩果纍纍!!!
在接下來的第15年,我們將繼續努力使Go成為規模化軟體工程的最佳環境。我們特別興奮的一項變化是重新定義for迴圈的:=
語義,以消除意外別名錯誤的可能性。有關詳細信息,請參閱“在Go 1.22中修複for迴圈”文章,其中包括在Go 1.21中預覽此更改的說明。
致謝
Go項目一直不僅僅是我們在Google Go團隊的工作。感謝所有的貢獻者和Go社區的每一位成員,使Go成為今天的樣子。我們祝願大家在未來的一年裡一切順利。
聲明:本作品採用署名-非商業性使用-相同方式共用 4.0 國際 (CC BY-NC-SA 4.0)進行許可,使用時請註明出處。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 戀水無意