Go 博客
十二年 Go
今天我们庆祝 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 上观看讲座。
-
Ian Lance Taylor 的“在 Go 中使用泛型”,介绍了泛型以及如何有效使用它们。
-
Steve Francia 的“现代企业应用”,展示了 Go 在企业现代化中的作用。
-
Suzy Mueller 的“使用 Go 编辑器构建更好的项目”,演示了 VS Code Go 集成工具如何帮助您导航代码、调试测试等等。
-
American Express 的杰出工程师 Benjamin Cane 的“从概念验证到生产”,解释了 American Express 如何开始在其支付和奖励平台中使用 Go。
展望未来
我们对 Go 的第 13 年充满期待。下个月,我们将在GopherCon 2021上有两场讲座,以及来自 Go 社区的许多才华横溢的讲者。免费注册并标记您的日历!
-
“为何以及如何使用 Go 泛型”,由负责这项新功能设计和实现的 Robert Griesemer 和 Ian Lance Taylor 主讲。
12 月 8 日,上午 11:00(美国东部时间). -
“使用 Debug Adapter Protocol (DAP) 调试 Go 代码”,由 Suzy Mueller 主讲,展示如何使用 VS Code Go 的高级调试功能和 Delve。
12 月 9 日,下午 3:20(美国东部时间).
二月,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 上的新搜索体验
博客索引