Go 部落格

Go語言的十三年

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

今天我們慶祝Go開源釋出的十三週年。 Gopher已經是個青少年了!

對Go來說,這是充滿事件的一年。其中最重大的事件是 Go 1.18於三月釋出,它帶來了許多改進,但最值得注意的是Go工作區、模糊測試和泛型。

工作區可以輕鬆地同時處理多個模組,這在維護一組相互之間存在模組依賴關係的模組時非常有用。要了解工作區,請參閱Beth Brown的博文“熟悉工作區”和工作區參考

模糊測試是go test的一個新功能,可以幫助您找到程式碼處理不當的輸入:您定義一個模糊測試,它應該對任何輸入都透過,然後模糊測試會嘗試不同的隨機輸入,以程式碼覆蓋率為指導,試圖使模糊測試失敗。模糊測試在開發必須能夠抵禦任意(甚至攻擊者控制的)輸入的程式碼時特別有用。要了解更多關於模糊測試的資訊,請參閱教程“模糊測試入門”和模糊測試參考,並請留意Katie Hockman在GopherCon 2022的演講“Fuzz Testing Made Easy”,該演講很快就會線上釋出。

泛型,可能是Go最受歡迎的功能,為Go增加了引數多型性,允許編寫可處理各種不同型別的程式碼,同時仍在編譯時進行靜態檢查。要了解更多關於泛型的資訊,請參閱教程“泛型入門”。有關更多詳細資訊,請參閱博文“泛型簡介”和“何時使用泛型”,或2021年Google開源直播Go日演講“在Go中使用泛型”以及Robert Griesemer和Ian Lance Taylor在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的原生Debug Adapter Protocol支援變得更加可靠和強大。嘗試Suzy的“除錯尋寶遊戲”!

開發可擴充套件性的另一個方面是專案中的依賴項數量。在Go語言釋出12週年後的一個月左右,Log4shell漏洞成為行業對供應鏈安全重要性的警鐘。Go的模組系統就是為此目的而設計的,旨在幫助您瞭解和跟蹤您的依賴項,識別您正在使用的特定依賴項,並確定其中是否有已知的漏洞。Filippo Valsorda的博文“Go如何減輕供應鏈攻擊”概述了我們的方法。九月份,我們在Julie Qiu的博文“Go的漏洞管理”中預覽了Go在漏洞管理方面的做法。這項工作核心是一個新的、經過精心策劃的漏洞資料庫和一個新的govulncheck命令,它使用先進的靜態分析來消除單獨使用模組需求可能產生的絕大多數誤報。

我們理解Go使用者需求的一部分是我們每年年底的Go調查。今年,我們的使用者體驗研究人員還增加了一項輕量級的年中Go調查。我們的目標是收集到足夠多的、具有統計學意義的回覆,同時又不給Go社群整體帶來負擔。有關結果,請參閱Alice Merrick的博文“Go開發者調查2021年結果”和Todd Kulesza的博文“Go開發者調查2022年第二季度結果”。

隨著世界旅行的恢復,我們也樂於在2022年的Go大會上與許多人面對面交流,特別是在七月於柏林舉行的GopherCon Europe和十月於芝加哥舉行的GopherCon。上週,我們舉辦了年度虛擬活動——Google開源直播Go Day。以下是我們在此類活動中的一些演講

今年的另一個里程碑是《Communications of the ACM》雜誌發表了Russ Cox、Robert Griesemer、Rob Pike、Ian Lance Taylor和Ken Thompson合著的“Go程式語言和環境”。這篇文章由Go的最初設計者和實現者撰寫,解釋了我們認為Go如此受歡迎和高效的原因。簡而言之,Go的努力專注於提供一個面向整個軟體開發過程的完整開發環境,同時注重在大型軟體工程和大型部署方面的擴充套件性。

在Go語言的第14個年頭,我們將繼續努力使Go成為大規模軟體工程的最佳環境。我們計劃特別關注供應鏈安全、改進的相容性和結構化日誌記錄,這些都已在本帖中連結。還將有許多其他改進,包括配置檔案引導最佳化。

感謝!

Go一直遠不止Google的Go團隊所做的一切。感謝您——我們的貢獻者以及Go社群中的每一個人——幫助Go成為當今成功的程式設計環境。我們祝您在新的一年裡一切順利。

下一篇文章:分享您對Go開發的反饋
上一篇文章:Go執行時:4年後
部落格索引