Go 博客
Go 1.21 发布候选版本
Go 1.21 的第一个发布候选版本 (RC) 今天在 下载页面 上发布!Go 1.21 充满了新功能和改进。获取 RC(发布候选版本)可以让您尽早试用它,在您的工作负载上进行尝试,并在最终版本发布(计划于 8 月发布)之前报告任何问题。以下是 Go 1.21 中的一些重大更改和功能;有关完整列表,请参阅 完整的发行说明。
(请注意,Go 1.21 的第一个 RC 被称为 go1.21rc2
,因为在标记 go1.21rc1
后发现并修复了一个错误)
工具改进
- 我们在 1.20 中宣布的预览版配置文件引导优化 (PGO) 功能 现已正式可用!如果在主包的目录中存在名为
default.pgo
的文件,则go
命令将使用它来启用 PGO 构建。有关更多详细信息,请参阅 PGO 文档。我们已在各种 Go 程序上衡量了 PGO 的影响,并观察到性能提高了 2-7%。 go
工具 现在支持 向后 和 向前 语言兼容性。
语言更改
- 新的内置函数:min、max 和 clear。
- 对泛型函数的类型推断进行了多项改进。规范中 类型推断的描述 已扩展并得到澄清。
- 在 Go 的未来版本中,我们计划解决 Go 编程中最常见的陷阱之一:循环变量捕获。Go 1.21 带来了此功能的预览版,您可以使用环境变量在代码中启用它。有关更多详细信息,请参阅 此 LoopvarExperiment wiki 页面。
标准库新增内容
- 用于结构化日志记录的新 log/slog 软件包。
- 用于对任何元素类型的切片执行常见操作的新 slices 软件包。这包括排序函数,这些函数通常比 sort 软件包更快且更符合人体工程学。
- 用于对任何键或元素类型的映射执行常见操作的新 maps 软件包。
- 新的 cmp 软件包,其中包含用于比较有序值的新实用程序。
性能改进
除了启用 PGO 时性能有所提高之外
- Go 编译器本身已使用启用的 PGO 重新构建为 1.21,因此它构建 Go 程序的速度提高了 2-4%,具体取决于主机架构。
- 由于垃圾回收器的调整,某些应用程序的尾部延迟可能会降低高达 40%。
- 使用 runtime/trace 收集跟踪现在在 amd64 和 arm64 上产生的 CPU 成本大大降低。
一个新的 WASI 端口
Go 1.21 添加了对 WebAssembly 系统接口 (WASI) 预览版 1(GOOS=wasip1
、GOARCH=wasm
)的实验性端口。
为了便于编写更通用的 WebAssembly (WASM) 代码,编译器还支持用于从 WASM 宿主导入函数的新指令:go:wasmimport
。
请 下载 Go 1.21 RC 并试用!如果您发现任何问题,请 提交问题。
下一篇文章:Govulncheck v1.0.0 发布!
上一篇文章:Go 开发者调查 2023 年第一季度结果
博客索引