Go 博客

Go 语言十二周年

Russ Cox,代表 Go 团队
2021 年 11 月 10 日

今天我们庆祝 Go 开源版本发布十二周年。我们度过了非凡的一年,也期待着明年取得更多成就。

本博客中最为显眼的变化是我们 在 go.dev 上的新家,这是将所有 Go 网站整合到一个单一、连贯的网站的一部分。整合的另一部分是 用 pkg.go.dev 替换 godoc.org

2 月,Go 1.16 版本添加了 macOS ARM64 支持,添加了 文件系统接口嵌入文件,以及 默认启用模块,还有通常的各种改进和优化。

8 月,Go 1.17 版本添加了 Windows ARM64 支持,简化了 TLS 密码套件决策并提高了安全性,引入了 修剪过的模块图 以使模块在大型项目中更有效,并添加了 新的、更易读的构建约束语法。在幕后,Go 1.17 还为 x86-64 上的 Go 函数切换到基于寄存器的调用约定,在 CPU 密集型应用程序中提高了 5-15% 的性能。

在这一年中,我们发布了 许多新的教程,一份 Go 中数据库指南,一份 模块开发指南,以及一份 Go 模块参考。其中一个亮点是新的教程“使用 Go 和 Gin 开发 RESTful API”,它也以 使用 Google Cloud Shell 的交互式形式 提供。

我们一直在 IDE 方面努力,在 VS Code Go 中默认启用 gopls,并对 gopls 和 VS Code Go 都进行了无数改进,包括由 Delve 提供支持的 强大的调试体验

我们还推出了 Go 模糊测试 Beta 版正式提议将泛型添加到 Go 中,这两项功能预计将在 Go 1.18 中发布。

为了继续适应“虚拟优先”模式,Go 团队在 Google 开源直播中举办了第二届年度 Go 日。您可以在 YouTube 上观看演讲

展望未来

我们对 Go 在第 13 年将取得的成就感到无比激动。下个月,我们将将在 GopherCon 2021 上做两场演讲,以及 来自 Go 社区的众多才华横溢的演讲者。免费注册并标记您的日历!

2 月,Go 1.18 版本将把新的基于寄存器的调用约定扩展到非 x86 架构,从而带来显著的性能提升。它将包括新的 Go 模糊测试支持。它将是第一个支持泛型的版本。

泛型将是我们在 2022 年的重点之一。Go 1.18 中的初始版本仅仅是一个开始。我们需要花时间使用泛型,了解哪些有效,哪些无效,以便我们可以编写最佳实践并确定哪些应该添加到标准库和其他库中。我们预计 Go 1.19(预计在 2022 年 8 月发布)和之后的版本将进一步完善泛型设计和实现,并将它们进一步整合到 Go 的整体体验中。

2022 年的另一个重点是供应链安全。多年来,我们一直在讨论 依赖项问题。Go 模块的设计提供了 可重现、可验证、已验证的构建,但还有更多工作要做。从 Go 1.18 开始,go 命令将在二进制文件中嵌入更多关于其构建配置的信息,既是为了让可重现性更容易,也是为了帮助需要 为 Go 二进制文件生成 SBOM 的项目。我们还开始着手 Go 漏洞数据库 和一个相关工具,用于报告程序依赖项中的漏洞。我们在这项工作中的目标之一是显著提高此类工具的信噪比:如果程序不使用该漏洞函数,我们不想报告它。在 2022 年,我们计划将它作为一个独立的工具提供,但也将其添加到现有工具中,包括 gopls 和 VS Code Go,以及 pkg.go.dev。还有更多工作要做,以改进 Go 供应链安全姿态的其他方面。敬请关注详细信息。

总的来说,我们预计 2022 年对 Go 来说将是意义非凡的一年,我们将继续提供您所期望的及时发布和改进。

感谢您!

Go 远远不止 Google Go 团队的我们。感谢您帮助 Go 取得成功,并与我们一起踏上这段冒险旅程。我们希望您一切安好,并祝您一切顺利。

下一篇文章:Go 1.18 Beta 1 已发布,包含泛型
上一篇文章:pkg.go.dev 上的新搜索体验
博客索引