自 2009 年 11 月正式對外發布後,至今 Go 開源已走過整整 12 個年頭。剛剛,Go 開發團隊技術 leader Russ Cox 就專門撰文慶祝 “Go 開源 12 週年”。
在這篇部落格文章中,Russ Cox 對 Go 開源今年以來的變化及所取得進展做了回顧,並對下一階段的發展進行了展望。
Russ Cox 提到了將 godoc.org 替換成 pkg.go.dev,以及新域名 go.dev 的啟用,可將所有官方 Go 站點整合至統一域名下。
今年 2 月,Go 1.16 版本新增了對 macOS ARM64 的支援,以及檔案系統介面和嵌入檔案、預設啟用 modules 等多項改進優化。
今年 8 月,Go 1.17 版本新增了對 Windows ARM64 的支援,大大提升了 TLS 密碼套件決策的易用性和安全性;修剪模組圖 (pruned module graphs)及全新易讀的構建約束語法的引入,讓 Go Modules 在大型專案中更高效。Go 1.17 版本還在底層上將 x86-64 的 Go 函式切換至基於暫存器的呼叫約定, 讓 CPU 密集型應用程式的效能提高了 5-15%。
此外,IDE 方面也支援在 VS Code Go 中預設啟用 gopls, 同時還為 gopls 和 VS Code Go 提供多項改進,包括由 Delve 提供支援的強大除錯體驗。
除了新增模糊測試支援的新提案,今年還正式提議向 Go 新增泛型,並明確將在 Go 1.18 中提供。
據瞭解,10 月初,“Go 語言之父” Rob Pike 曾在 Github 上撰文稱“不建議在 Go 1.18 的標準庫中使用泛型”的issue。而到了 10 月 28 日,Russ Cox 又發文終於明確了“ Go 1.18 版本中將支援泛型”的資訊。
對此,Russ Cox 在此次博文中表示,完善泛型將是 Go 團隊明年的重點工作之一(另一項重點工作和供應鏈安全相關)。Go 1.18 中的初始版本只是一個開始,預計 Go 1.19(或將於 2022 年 8 月釋出)及更高版本將進一步完善泛型的設計和實現,並將其進一步整合到整體 Go 體驗中。
目前,Go 團隊已經著手研究 Go 漏洞資料庫以及用於報告程式依賴項中漏洞的相關工具,以提高此類工具的訊雜比(如果程式不使用易受攻擊的功能,則不會進行報告),預計明年會被作為獨立工具提供,且將其新增到現有工具中。同時,在改進 Go 供應鏈安全態勢方面,未來也還有更多工作需要開展。
關於 Go 語言
Go 語言最初由 Rob Pike 等谷歌工程師在 2007 年 9 月啟動設計工作,在2009 年 11 月正式對外發布。
Go 語言完美融合了動態語言易於編寫的特性和靜態語言的高效性,具備良好的易用性和極佳的執行效率。
Go 語言最初定位於 Web 伺服器、儲存系統和資料庫的程式設計,同時在語言中包含併發構造體,以幫助開發者建立並行任務。Go 開發團隊曾表示,編譯完成的 Go 程式執行速度接近 C 語言實現的程式。