北京时间今天凌晨,美国时间12月14日,Go核心团队技术负责人Russ Cox在Go官博发表文章《Go 1.18 Beta 1 is available, with generics》,正式宣布Go 1.18的第一个预览版Go 1.18 beta1发布!Go团队这次少见的通过官博来发布一个beta版本,足以证明Go团队对Go 1.18版本的重视,毕竟Go 1.18是Go自诞生以来最大的一次语法变动,Go团队希望Go社区的gopher们广泛参与公测,在Go 1.18版本发布之前尽可能多地找出版本中存在的bug。
这里简单翻译一下这篇官博,正文如下。
我们刚刚发布了Go 1.18 Beta 1,你可以通过访问下载页面获得该版本。
Go 1.18的正式发布还需要几个月的时间。这是Go 1.18的第一个预览版,目的是让你试一试,用一用,并让我们知道你遇到了什么问题。Go 1.18 Beta 1代表了Google的整个Go团队和世界各地的Go贡献者的大量工作,我们很高兴听到你的想法。
Go 1.18 Beta 1是第一个预览版,包含Go对使用参数化类型(parameterized type)的泛型代码的新支持。泛型是Go 1发布以来最重要的变化,当然也是我们有史以来最大的单一语言变化。对于引入这类影响较大的新特性,期待新用户发现新的错误是很常见的,泛型特性也不例外;我们一定要以适当的谨慎态度对待它们。另外,某些微妙的情况,例如特定种类的递归泛型,已经被推迟到未来的版本。也就是说,我们知道一些早期采用者已经相当满意,如果你有你认为特别适合泛型的用例,我们希望你能试一试。我们已经发布了一个关于如何开始使用泛型的简短教程,并在上周的GopherCon上做了一个演讲。你甚至可以在Go开发分支模式下的Go playground上尝试泛型。
Go 1.18 Beta1 增加了对编写基于模糊测试的内置支持,以自动查找导致程序崩溃或返回无效答案的输入。
Go 1.18 Beta1增加了一个新的"Go工作区模式",让你可以同时处理多个Go module,这对大型项目来说是一个重要的使用案例。
Go 1.18 Beta 1包含一个扩展的go version -m命令,它现在可以记录编译器flag等构建细节。程序可以使用debug.ReadBuildInfo查询自己的构建细节,现在也可以使用新的debug/buildinfo包从其他二进制文件读取构建细节。这一功能旨在为任何需要为Go二进制文件制作软件材料清单(SBOM)的工具奠定基础。
今年早些时候,Go 1.17增加了一个新的基于寄存器的调用约定,以加快X86-64系统上的Go代码。Go 1.18 Beta1将这一功能扩展到了ARM64和PPC64,使其速度提高了20%之多。
感谢所有为这个测试版做出贡献的人,特别是感谢谷歌的团队,他们多年来一直在为实现泛型而不懈努力。这是一条漫长的道路,我们对结果非常满意,我们希望你也喜欢它。
更多细节请参见Go 1.18的完整发布说明草案。
像往常一样,特别是对于测试版,如果你发现任何问题,请提交一个问题。
我们希望你喜欢测试这个测试版,并希望你在2021年的剩余时间里都有一个安逸的生活。节日快乐!
讲师主页:tonybai_cn
讲师博客: Tony Bai
专栏:《改善Go语言编程质量的50个有效实践》
实战课:《Kubernetes实战:高可用集群搭建,配置,运维与应用》
免费课:《Kubernetes基础:开启云原生之门》