2021年12月14日,Go官方发布了Go 1.18 Beta 1版本。
Go团队负责人Russ Cox在官方博客针对该版本发布做了详细说明。
本人针对Russ的原文做了一个翻译,以飨读者。
谷歌Go团队Russ Cox
2021.12.14
我们刚刚发布了Go 1.18 Beta 1版本,大家可以从https://go.dev/dl/#go1.18beta1进行下载。
官方正式的1.18版本还需要几个月才会对外发布。这是Go 1.18版本的第一个Beta版本,让大家可以提前感受新版本的功能,如果大家在使用过程中遇到了任何问题,也欢迎提出来。
Go 1.18 Beta 1版本凝聚了谷歌的整个Go团队以及来自世界的Go语言贡献者的大量心血和付出,我们非常期待听到大家对新版本的反馈。
Go 1.18 Beta 1版本是第一个支持泛型的Go预览版本(preview release)。泛型是Go 1.0版本发布以来Go语言做出的最重要的变革,也是我们团队对单一语言做过的最大变革。对于任何重大的新功能上线,让用户试用并发现bug是通用惯例,泛型也不例外,大家可以先提前尝鲜,谨慎使用。
此外,对于一些特殊场景,比如递归泛型的特定种类支持会延后在未来的版本发布。我们知道有一些早期泛型使用者对于泛型使用得很愉快,如果你有一些场景认为适合使用泛型,我们也希望你可以尝试下这个beta版本。我们发布了一个关于泛型的简要教程,链接地址:https://go.dev/doc/tutorial/generics。我们也在上周的GopherCon会议上做了相关技术分享,链接地址:https://www.youtube.com/watch?v=35eIxI_n5ZM&t=1755s。你也可以在Go Playground的Go dev模式下试用泛型,链接地址:https://go.dev/play/?v=gotip。
Go 1.18 Beta 1添加了对于模糊测试(fuzzing-based tests)的内置支持,用于自动查找可能导致程序崩溃或者返回非法值的恶意输入。
Go 1.18 Beta 1新增了一个Go工作区模式(Go workspace mode),让你可以同时使用多个Go模块,这对于大型项目而言非常有用。
Go 1.18 Beta 1扩展了go version -m
命令,这个命令会记录编译详细信息,比如编译标记。程序可以使用debug.ReadBuildInfo
来查询自己的编译详细信息,还可以使用debug/buildinfo
包来读取其它二进制文件的编译详细信息。这个功能是为了给帮助Go二进制文件生成软件材料清单(software bill of materials, SBOM)的所有工具提供底层支持。
在今年早些时候,Go 1.17新增了基于寄存器的调用约定,用于加速Go代码在x86-64机器上的运行速度。Go 1.18 Beta 1扩展了这项功能到ARM64和PPC64架构上,会带来大概20%的速度提升。
感谢为这个Beta版本做出贡献的所有人,特别感谢谷歌的Go团队,大家为了让泛型在Go里实现,多年来一直不知疲倦地工作。我们走过了漫长的一段路,我们对目前的结果很满意,也希望大家能够喜欢。
大家可以通过https://go.dev/tip/doc/go1.18查看Go 1.18 Beta 1版本的全部变更内容。
和以前一样,特别是对于beta版本,如果大家发现了任何问题,欢迎在GitHub上提issue。
我们期待大家能够享受测试beta版本的过程,也祝大家在2021年剩余的日子里过得舒心。
节日快乐!