Go 语言 15 周年

生日快乐,Go!

周日,我们庆祝了Go 开源发布15 周年!

自Go 诞生 10 周年以来,Go 本身和世界都发生了巨大变化。在其他方面,很多东西保持不变:Go 仍然致力于稳定性、安全性以及支持大规模软件工程和生产。

Go 正在强势发展!Go 的用户群在过去五年中增长了两倍多,使其成为增长最快的语言之一。从十五年前诞生之初,Go 已成为十大语言之一,也是现代云语言。

随着Go 1.22在二月发布和Go 1.23在八月发布,这一年是for循环的一年。Go 1.22使得由for循环引入的变量每次迭代时作用域独立,而不是整个循环,解决了一个长期存在的语言“陷阱”。十多年前,在Go 1发布之前,Go团队对几个语言细节做出了决定;其中包括是否应该在每次迭代中创建新的循环变量。有趣的是,这个讨论相当简短且明显没有意见。Rob Pike以他一贯的风格用一个字结束了这个讨论:“stet”(保持原样)。于是事情就这样定下来了。虽然当时看似微不足道,但多年的生产经验突显了这一决策的影响。然而,在这段时间里,我们也建立了强大的工具来理解对Go更改的影响——特别是在整个Google代码库中的生态系统范围分析和测试——并建立了与社区合作和获取反馈的流程。在经过广泛测试、分析和社区讨论后,我们推出了这一变化,并配备了一种哈希二分工具,以帮助开发者大规模定位受该变化影响的代码。

对 for 循环的更改是五年逐步变化的一部分。如果没有在 Go 1.21 中引入的向前语言兼容性,这一切都不可能实现。这又建立在四年半前在 Go 1.14 中引入的 Go 模块所奠定的基础之上。

Go 1.23 在此基础上进一步引入了迭代器和用户定义的 for-range 循环。结合在两年半前推出的泛型(Go 1.18),这为自定义集合和许多其他编程模式创造了一个强大而人性化的基础。

这些版本还带来了生产就绪性的许多改进,包括备受期待的标准库 HTTP 路由器增强、执行跟踪的大规模重构,以及所有 Go 应用程序更强大的随机性。此外,我们首个 v2 标准库包的推出为未来库的发展和现代化建立了模板。

过去一年中,我们也谨慎地推出了可选参与的数据收集系统,用于 Go 工具。该系统将为 Go 开发者提供数据,以便做出更好的决策,同时保持完全开放和匿名。Go 数据收集首次出现在 gopls,即 Go 语言服务器,已经导致了一系列改进。这项工作为使使用 Go 编程成为每个人更加美好的体验铺平了道路。

展望未来,我们正在发展 Go,以更好地利用当前和未来硬件的能力。在过去 15 年中,硬件发生了很大变化。为了确保 Go 在接下来的 15 年内继续支持高性能、大规模的生产工作负载,我们需要适应大型多核、先进指令集以及在日益非均匀的内存层次结构中局部性的重要性不断增长。这些改进中的一些将是透明的。Go 1.24 将在底层实现一个全新的映射,实现对现代 CPU 的更高效支持。同时,我们正在原型设计围绕现代硬件能力和限制的新垃圾回收算法。一些改进将以新 API 和工具的形式出现,以便 Go 开发者能够更好地利用现代硬件。我们正在研究如何支持最新的向量和矩阵硬件指令,以及应用程序构建 CPU 和内存局部性的多种方式。指导我们努力的一项核心原则是可组合优化:优化对代码库的影响应该尽可能局部化,确保不会妨碍其余代码库开发的便利性。

我们将继续确保 Go 的标准库默认安全且设计上安全。这包括持续努力纳入内置、本地支持 FIPS 认证加密,因此对于需要它的应用程序来说,FIPS 加密只需简单切换标志。此外,我们还将在可以做到的地方逐步演变 Go 的标准库包,并借鉴 math/rand/v2 的例子,考虑在哪里新增 API 可以显著提高编写安全可靠 Go 代码的便利性。

我们致力于通过增强 AI 基础设施、应用程序和开发者辅助功能,使 Go 更适合 AI,同时使 AI 更适合 Go。Go 是构建生产系统的一种优秀语言,我们希望它也能成为构建生产 AI 系统的一种优秀语言。作为云基础设施语言,Go 的可靠性使其自然成为 LLM 基础设施选择之一。在 AI 应用方面,我们将继续为流行 AI SDK(包括 LangChainGo 和 Genkit)提供一流支持。从一开始,Go 就旨在改善端到端的软件工程过程,因此自然而然地,我们正着眼于引入来自 AI 的最新工具和技术,以减少开发人员繁琐工作,从而留出更多时间用于有趣内容——例如实际编程!

谢谢¶

这一切之所以成为可能,是因为 Go 拥有令人难以置信的贡献者和蓬勃发展的社区。十五年前,我们只能梦想 Go 取得的成功以及围绕 Go 发展的社区。感谢所有参与其中的人,无论参与深浅。我们祝愿大家在新的一年里一切顺利。

Austin Clements, for the Go team

https://go.dev/blog/15years

 

未经允许不得转载:岩猫星空网 » Go 语言 15 周年