Go 博客

十二年 Go

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

今天我们庆祝 Go 开源发布十二周年。过去的一年充满事件,我们对明年充满期待。

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

二月,Go 1.16 版本增加了macOS ARM64 支持,增加了文件系统接口嵌入文件,并默认启用模块,同时还有惯常的各种改进和优化。

八月,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 模糊测试(fuzzing)beta 版本,并正式提议向 Go 中添加泛型,这两者预计都将在 Go 1.18 中推出。

继续适应“虚拟优先”,Go 团队在 Google Open Source Live 主办了我们第二届年度 Go 日。您可以在 YouTube 上观看讲座。

展望未来

我们对 Go 的第 13 年充满期待。下个月,我们将在GopherCon 2021上有两场讲座,以及来自 Go 社区的许多才华横溢的讲者。免费注册并标记您的日历!

二月,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 上的新搜索体验
博客索引