Go 博客
Go语言的十三年

今天我们庆祝Go开源发布的十三周年。 Gopher已经是个青少年了!
对Go来说,这是充满事件的一年。其中最重大的事件是 Go 1.18于三月发布,它带来了许多改进,但最值得注意的是Go工作区、模糊测试和泛型。
工作区可以轻松地同时处理多个模块,这在维护一组相互之间存在模块依赖关系的模块时非常有用。要了解工作区,请参阅Beth Brown的博文“熟悉工作区”和工作区参考。
模糊测试是go
test
的一个新功能,可以帮助您找到代码处理不当的输入:您定义一个模糊测试,它应该对任何输入都通过,然后模糊测试会尝试不同的随机输入,以代码覆盖率为指导,试图使模糊测试失败。模糊测试在开发必须能够抵御任意(甚至攻击者控制的)输入的代码时特别有用。要了解更多关于模糊测试的信息,请参阅教程“模糊测试入门”和模糊测试参考,并请留意Katie Hockman在GopherCon 2022的演讲“Fuzz Testing Made Easy”,该演讲很快就会在线发布。
泛型,可能是Go最受欢迎的功能,为Go增加了参数多态性,允许编写可处理各种不同类型的代码,同时仍在编译时进行静态检查。要了解更多关于泛型的信息,请参阅教程“泛型入门”。有关更多详细信息,请参阅博文“泛型简介”和“何时使用泛型”,或2021年Google开源直播Go日演讲“在Go中使用泛型”以及Robert Griesemer和Ian Lance Taylor在GopherCon 2021的演讲“泛型!”。
与Go 1.18相比,Go 1.19于八月发布,相对比较平静:它侧重于完善和改进Go 1.18引入的功能,以及内部稳定性和优化。Go 1.19的一个可见的变化是增加了对Go文档注释中的链接、列表和标题的支持。另一个变化是为垃圾收集器添加了软内存限制,这在容器工作负载中特别有用。有关近期垃圾收集器改进的更多信息,请参阅Michael Knyszek的博文“Go运行时:4年后”,他的演讲“尊重Go中的内存限制”,以及新的“Go垃圾收集器指南”。
我们继续致力于让Go开发能够优雅地扩展到越来越大的代码库,特别是在我们对VS Code Go和Gopls语言服务器的工作中。今年,Gopls的发布侧重于提高稳定性和性能,同时支持泛型以及新的分析和代码提示。如果您还没有使用VS Code Go或Gopls,请尝试一下。请参阅Suzy Mueller的演讲“使用Go编辑器构建更好的项目”以获得概述。另外,在VS Code中调试Go通过Delve的原生Debug Adapter Protocol支持变得更加可靠和强大。尝试Suzy的“调试寻宝游戏”!
开发可扩展性的另一个方面是项目中的依赖项数量。在Go语言发布12周年后的一个月左右,Log4shell漏洞成为行业对供应链安全重要性的警钟。Go的模块系统就是为此目的而设计的,旨在帮助您了解和跟踪您的依赖项,识别您正在使用的特定依赖项,并确定其中是否有已知的漏洞。Filippo Valsorda的博文“Go如何减轻供应链攻击”概述了我们的方法。九月份,我们在Julie Qiu的博文“Go的漏洞管理”中预览了Go在漏洞管理方面的做法。这项工作核心是一个新的、经过精心策划的漏洞数据库和一个新的govulncheck命令,它使用先进的静态分析来消除单独使用模块需求可能产生的绝大多数误报。
我们理解Go用户需求的一部分是我们每年年底的Go调查。今年,我们的用户体验研究人员还增加了一项轻量级的年中Go调查。我们的目标是收集到足够多的、具有统计学意义的回复,同时又不给Go社区整体带来负担。有关结果,请参阅Alice Merrick的博文“Go开发者调查2021年结果”和Todd Kulesza的博文“Go开发者调查2022年第二季度结果”。
随着世界旅行的恢复,我们也乐于在2022年的Go大会上与许多人面对面交流,特别是在七月于柏林举行的GopherCon Europe和十月于芝加哥举行的GopherCon。上周,我们举办了年度虚拟活动——Google开源直播Go Day。以下是我们在此类活动中的一些演讲
- “Go如何成为最好的自己”, Cameron Balahan在GopherCon Europe演讲。
- “Go团队问答”, Cameron Balahan、Michael Knyszek和Than McIntosh在GopherCon Europe。
- “兼容性:Go程序如何保持工作”, Russ Cox在GopherCon演讲。
- “全面的Go体验”, Cameron Balahan在GopherCon演讲(视频尚未发布)。
- “Go的结构化日志记录”, Jonathan Amsterdam在Google开源直播Go日演讲。
- “使用Go更快、更安全地编写您的应用程序”, Cody Oss在Google开源直播Go日演讲。
- “尊重Go中的内存限制”, Michael Knyszek在Google开源直播Go日演讲。
今年的另一个里程碑是《Communications of the ACM》杂志发表了Russ Cox、Robert Griesemer、Rob Pike、Ian Lance Taylor和Ken Thompson合著的“Go编程语言和环境”。这篇文章由Go的最初设计者和实现者撰写,解释了我们认为Go如此受欢迎和高效的原因。简而言之,Go的努力专注于提供一个面向整个软件开发过程的完整开发环境,同时注重在大型软件工程和大型部署方面的扩展性。
在Go语言的第14个年头,我们将继续努力使Go成为大规模软件工程的最佳环境。我们计划特别关注供应链安全、改进的兼容性和结构化日志记录,这些都已在本帖中链接。还将有许多其他改进,包括配置文件引导优化。
感谢!
Go一直远不止Google的Go团队所做的一切。感谢您——我们的贡献者以及Go社区中的每一个人——帮助Go成为当今成功的编程环境。我们祝您在新的一年里一切顺利。
下一篇文章:分享您对Go开发的反馈
上一篇文章:Go运行时:4年后
博客索引