Go 1.23 is released(翻译)
文章目录
- 语言变化
- 工具改进
- 标准库改进
- 更多改进和变化
- 参考文献
Dmitri Shuralyov,代表 Go 团队。
2024 年 8 月 13 日。
今天,Go 团队很高兴发布 Go 1.23,您可以通过访问下载页面获取它。
如果您的计算机上已安装 Go 1.22 或 Go 1.21,您也可以在现有模块中尝试 go get toolchain@go1.23.0。这将下载新的工具链,让您立即开始在模块中使用它。稍后,当您准备好完全切换到 Go 1.23 并将其作为模块所需的最低 Go 版本时,您可以跟进 go get go@1.23.0。有关此功能的更多信息,请参阅使用 go get 管理 Go 版本模块要求。
Go 1.23 与 Go 1.22 相比有许多改进。其中一些亮点包括:
语言变化
“for-range”循环中的范围表达式现在可以是迭代器函数,例如 func(func(K) bool)
。这支持用户定义任意序列的迭代器。标准库 slices 和 maps 包中增加了几个与迭代器配合使用的功能,以及一个新的 iter 包。例如,如果您希望将映射 m 的键收集到一个切片中,然后对其值进行排序,您可以在 Go 1.23 中使用
slices.Sorted(maps.Keys(m))
Go 1.23 还包括对泛型类型别名的预览支持。
在发行说明中阅读有关 language changes 和 iterators 的更多信息。
工具改进
- 从 Go 1.23 开始,Go 工具链可以收集使用情况和故障统计信息,以帮助了解 Go 工具链的使用方式及其运行情况。这是 Go 遥测,一种可选系统。请考虑选择加入,以帮助我们保持 Go 正常运行并更好地了解 Go 的使用情况。在发行说明中了解有关 Go telemetry 的更多信息。
- go 命令具有新的便利性。例如,运行
go env -changed
可以更轻松地仅查看有效值与默认值不同的设置,而go mod tidy -diff
有助于确定对 go.mod 和 go.sum 文件的必要更改而无需修改它们。在发行说明中阅读有关 Go command 的更多信息。 - go vet 子命令现在会报告对于目标 Go 版本来说太新的符号。有关 tools 的更多信息,请参阅发行说明。
标准库改进
- Go 1.23 改进了 time.Timer 和 time.Ticker 的实现。有关 timer changes 的更多信息,请参阅发行说明。
- Go 1.23 标准库中总共有 3 个新包:iter、structs 和 unique。包 iter 如上所述。包 structs 定义标记类型以修改结构的属性。包 unique 提供规范化(“驻留”)可比较值的功能。有关 new standard library packages 的更多信息,请参阅发行说明。
- 发行说明中库的 minor 改动部分列举了标准库的许多改进和新增内容。“Go、向后兼容性和 GODEBUG”文档列举了 Go 1.23 GODEBUG 设置中的新内容。
- Go 1.23 支持 go.mod 和 go.work 文件中的新 godebug 指令,以允许分别控制默认 GODEBUG 和 go.mod 的“go”指令,以及两个版本(Go 1.21)之前提供的 //go:debug 指令注释。请参阅有关 Default GODEBUG Values 的更新文档。
更多改进和变化
- Go 1.23 增加了对 64 位 RISC-V 上的 OpenBSD 的实验性支持(openbsd/riscv64)。有一些与 Linux、macOS、ARM64、RISC-V 和 WASI 相关的小改动。在发行说明中了解有关移植的更多信息。
- 使用性能数据引导优化 (PGO) 时的构建时间减少,并且 386 和 amd64 架构上 PGO 的性能得到提升。在发行说明中了解有关运行时、编译器和链接器的更多信息。
我们鼓励每个人都阅读 Go 1.23 发行说明,以获取有关这些变化的完整详细信息以及 Go 1.23 的所有其他新功能。
在接下来的几周内,请留意后续博客文章,它们将更深入地探讨这里提到的一些主题,包括“range-over-func”、新的独特包、Go 1.23 计时器实现变化等等。
感谢为此版本做出贡献的所有人,他们编写了代码和文档、报告错误、分享反馈并测试了候选版本。您的努力有助于确保 Go 1.23 尽可能稳定。与往常一样,如果您发现任何问题,请提交问题。
Enjoy Go 1.23!
Next article: Range Over Function Types
Previous article: Secure Randomness in Go 1.22
Blog Index
参考文献
Go 1.23 is released!
Go 1.23 Release Notes