Go 部落格

Go 的 13 年

Go 團隊,Russ Cox
2022 年 11 月 10 日

今天,我們慶祝 Go 開源版本發行的 13 週年。 Go 的吉祥物 已步入青春期!

這對 Go 來說是多事的一年。最重要的一件事是 Go 1.18 在 3 月發布,此版本帶來許多改進,但最重要的是 Go 工作區、模糊測試和泛型。

工作區可以讓你輕鬆地同時處理多個模組,這有助於你維護一組相關模組,模組之間有模組依賴。瞭解工作區的資訊,請參閱 Beth Brown 的部落格文章「熟悉工作區」和 工作區參考

模糊測試是 go test 的新功能,有助於找出程式碼無法妥善處理的輸入:你可以定義一個模糊測試,任何輸入都應該通過,模糊測試會在程式碼覆蓋率的指引下嘗試不同的隨機輸入,試著讓模糊測試失敗。模糊測試特別適用於開發必須對任意(即使是攻擊者控制的)輸入具有強健性的程式碼。如需深入瞭解模糊測試,請參閱教學課程「開始使用模糊測試」和模糊測試參考,並關注 Katie Hockman 即將上線的 GopherCon 2022 演講「模糊測試變得輕鬆」。

泛型可能是 Go 最受期待的功能,它為 Go 新增了參數多型,讓你可以撰寫可搭配各種不同類型運作的程式碼,而且仍能在編譯時進行靜態檢查。如需深入瞭解泛型,請參閱教學課程「開始使用泛型」。如需了解更多詳細資料,請參閱部落格文章「泛型簡介」和「何時使用泛型」,或 Robert Griesemer 和 Ian Lance Taylor 在 Google 開放原始碼實況 2021 上的 Go Day 演講「在 Go 中使用泛型」和 GopherCon 2021 演講「泛型!」。

相較於 Go 1.18,八月推出的 Go 1.19 版本相對平穩:它專注於提煉和改善 Go 1.18 推出的功能,以及內部穩定性改善和最佳化。Go 1.19 中一個可見的變更,是加入了對Go 文件註解中的連結、清單和標題 的支援。另一個變更是新增一個垃圾回收器的軟性記憶體限制,這在容器工作負載中特別有用。如需瞭解最新垃圾回收器改善,請參閱 Michael Knyszek 的部落格文章「Go 執行時間:4 年後」、他的演講「尊重 Go 中的記憶體限制」和新的「Go 垃圾回收器指南」。

我們持續讓 Go 開發能夠順利擴展至更大型的程式碼庫,特別是我們針對 VS Code Go 與 Gopls 語言伺服器所做的工作。今年,Gopls 版本的重點是提升穩定性與效能,同時提供對於泛型的支援,以及新的分析與程式碼鏡像。如果你還沒有使用 VS Code Go 或 Gopls,不妨試試看。請參閱 Suzy Mueller 的演講「使用 Go 編輯器建構更棒的專案」,以取得概觀。另外,在 VS Code 中除錯 Go在 Delve 本機調適器通訊協定的支援下,穩定性與效能都提升了。試試 Suzy 的「除錯尋寶」!

開發規模的另一個面向在於專案中的相依性數量。在 Go 屆滿12週年的一個月後左右,Log4Shell 漏洞為針對供應鏈安全性發出警示的產業敲響了警鐘。Go 的模組系統專門針對此目的而設計,協助你了解並追蹤相依性、找出你正在使用的是哪些特定的相依性,以及判斷其中是否有任何已知的漏洞。Filippo Valsorda 的部落格文章「Go 如何減輕供應鏈攻擊」概述了我們的做法。在 9 月,我們在 Julie Qiu 的部落格文章「Go 的漏洞管理」中預覽了 Go 的漏洞管理方法。這項工作的核心是一個新的、精心策劃的漏洞資料庫和新的govulncheck 指令,它使用進階靜態分析消除僅使用模組需求所產生的絕大多數假陽性結果。

瞭解 Go 使用者的部分工作是我們每年的年度 Go 調查。今年,我們的使用者體驗研究人員也新增了一個輕量級的中期 Go 調查。我們的目標是收集足夠的回覆以達到統計顯著性,同時不會對整個 Go 社群造成負擔。有關結果,請參閱 Alice Merrick 的部落格文章「2021 年 Go 開發人員調查結果」和 Todd Kulesza 的文章「2022 年第2季 Go 開發人員調查結果」。

隨著世界開始恢復旅遊,我們也十分樂意在 2022 年的 Go 活動親自會見各位,特別是 7 月在柏林舉辦的歐洲 GopherCon 和 10 月在芝加哥舉辦的 GopherCon。上週,我們舉辦了年度虛擬活動,在 Google Open Source Live 上舉行 Go 日。以下是我們在這些活動中所做的一些演講

今年的另一個里程碑是「Go 程式語言和環境」的發表,這篇文章是由 Russ Cox、Robert Griesemer、Rob Pike、Ian Lance Taylor 和 Ken Thompson 在美國電腦學會通訊中發表的。由 Go 的最初設計者和實作者撰寫的文章,說明我們相信讓 Go 如此受歡迎且有效率的原因。簡而言之,Go 團隊專注於提供能針對整個軟體開發流程的完整開發環境,並同時著重於大型軟體工程專案和大型部署的擴充性。

在 Go 的第 14 個年頭,我們將持續努力,讓 Go 成為最適合用於大規模軟體工程的環境。我們特別計畫專注於供應鏈安全性、相容性改良和結構化紀錄,這些都已連結在此篇文章中。另外,還有許多其他改良,例如檔案導向最佳化。

謝謝!

Go 一直遠遠超出 Google Go 團隊的範疇。感謝各位,也就是我們的協力開發人員和整個 Go 社群的幫助,讓 Go 成為今日成功且廣泛使用的程式環境。我們祝各位來年一切都好。

下一篇文章:分享您開發 Go 的意見回饋
上一篇文章:Go 執行階段:4 年後的現況
部落格索引