来源:OSCHINA 时间:2023-06-25 15:33:58
Go 1.21 首个 RC 已发布。
虽然这是 Go 1.21 的第一个 RC,但它的版本号却是
go1.21rc2
。因为开发团队在为 RC1 打上 tag 后就发现了一个 bug,所以他们马上基于该版本进行了修复并发布更新。(资料图片仅供参考)
Go 1.21 主要变化
在 1.20 中处于预览阶段的启用配置文件引导优化 (PGO) 功能现已正式 GA。如果主软件包目录中存在名为default.pgo
的文件,go
命令将使用它来启用 PGO 构建。
Go 开发团队测试了 PGO 对多种 Go 程序的影响,发现性能提高了 2-7%。
更多详细信息查看 PGO 文档。
go
tool同时向前和向后兼容语法 log/slog 包:用于结构化日志记录
slices 包:增用于对任何元素类型的切片进行常见操作,这个包比 sort 包更快、更符合人体工程学
maps包:用于对任何类型 key-value 进行常见操作
cmp 包:用于比较有序值 (ordered values)
除了启用 PGO 时的性能改进之外:
Go 编译器本身已经在 1.21 中启用 PGO 进行了重建,因此它构建 Go 程序的速度提高了 2-4%,具体取决于主机架构 由于垃圾收集器的调整,某些应用程序的尾部延迟可能会减少高达 40% 现在使用runtime/trace收集跟踪在 amd64 和 arm64 上产生的 CPU 开销要小得多Go 1.21 已实验性支持WebAssembly System Interface (WASI), Preview 1 (GOOS=wasip1
,GOARCH=wasm
)。
为了方便编写更通用的 WebAssembly (WASM) 代码,编译器还支持从 WASM 主机导入函数的新指令:go:wasmimport
。
详情查看发布公告。
延伸阅读
Go 开发团队讨论创建 math/rand/v2:引入新 API、标准库首个 v2 版本包