Go語言開源 12 年,明年重點完善泛型和供應鏈安全

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當地時間11月10日,Go 核心開發團隊技術leader Russ Cox "},{"type":"link","attrs":{"href":"https:\/\/go.dev\/blog\/12years","title":"","type":null},"content":[{"type":"text","text":"發文"}]},{"type":"text","text":"慶祝 Go 語言開源以來的 12 歲生日。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“博客上最明顯的變化是我們"},{"type":"link","attrs":{"href":"https:\/\/go.dev\/blog\/tidy-web","title":"","type":null},"content":[{"type":"text","text":"在 go.dev 上的新家"}]},{"type":"text","text":",所有的 Go 站點統一整合到一個單一、連貫的網址下。作爲整合的另一部分,我們用 "},{"type":"link","attrs":{"href":"https:\/\/pkg.go.dev","title":"","type":null},"content":[{"type":"text","text":"pkg.go.dev"}]},{"type":"text","text":" 替換掉了原先的 godoc.org。”Russ Cox表示,今年是個“多事之年”,並對今年的主要進展作了回顧。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"今年2月,Go 1.16 版本添加了對 macOS ARM64 的支持,以及文件系統接口和嵌入文件、默認啓用 modules 等多項改進和優化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"8 月,Go 1.17 版本添加了對 Windows ARM64 的支持,大大提升了 TLS 密碼套件決策的易用性和安全性;引入了修剪模塊圖 (pruned module graphs),使模塊在大型項目中更高效,也添加了及新的、更易讀的構建約束語法。Go 1.17 版本還在底層上將 x86-64 的 Go 函數切換至基於寄存器的調用約定, 讓 CPU 密集型應用程序的性能提高了 5-15%。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"IDE 方面,支持在 VS Code Go 中默認啓用 gopls, 同時爲 gopls 和 VS Code Go 提供了多項改進,包括由 Delve 提供支持的強大調試體驗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,除了添加模糊測試支持的新提案,今年還正式提議爲 Go 添加泛型,並明確這兩者都將在 Go 1.18 中提供。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據悉,Go 團隊本來預計在 Go 1.17 中添加泛型,但後來遺憾表示要推遲。Go Team 也曾在其官方博客表示,大家很期待泛型,因此他們一直在努力,爲可投入使用做各種細節的打磨,2021 年這塊會是重點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Russ Cox 亦表示,完善泛型將是他們 2022 年的重點工作之一。Go 1.18 中的初始版本只是一個開始,開發團隊需要花時間使用泛型,以便編寫最佳實踐,以及決定應該將什麼添加到標準庫和其他庫中。他們預計 Go 1.19(預計在 2022 年 8 月發佈)及更高版本將進一步完善泛型的設計和實現,並將它們進一步整合到整體 Go 體驗中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2022 年的另一個工作重點是供應鏈安全,涉及到被反覆提到的依賴性問題,Go 模塊的設計提供了可複製、可驗證的和經過驗證的構建,但還有更多工作要做。從 Go 1.18 開始,go命令將在二進制文件中嵌入更多有關其構建配置的信息,使可複製性更容易並幫助那些需要爲 Go 二進制文件生成 SBOM 的項目 。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Russ Cox 提到,他們還開始研究 Go 漏洞數據庫以及用於報告程序依賴項中漏洞的相關工具。目標之一是顯着提高此類工具的信噪比:如果程序不使用易受攻擊的功能,則不進行報告。在2022 年計劃將其作爲獨立工具提供,但也會將其添加到現有工具中,包括goplsVS Code Go 和pkg.go.dev。在改善 Go 供應鏈安全態勢的其他方面,還有更多工作要做。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Go 團隊還開始研究 Go 漏洞數據庫以及用於報告程序依賴項中漏洞的相關工具。他們在這項工作中的目標之一是顯着提高此類工具的信噪比:如果程序不使用易受攻擊的功能,則不會進行報告。在 2022 年期間,團隊計劃將其作爲獨立工具提供,同時將其添加到現有工具中。除此之外,在改進 Go 供應鏈安全態勢方面,還有更多工作需要開展。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"延展閱讀:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/5ddeyhhxkgsp79gcklec","title":"xxx","type":null},"content":[{"type":"text","text":"《12 年後,Go 終於默認支持泛型》"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/9SS2aGyI3951oBfb3OTP","title":"xxx","type":null},"content":[{"type":"text","text":"《爲什麼 Go 語言沒有泛型》"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章