Go 1.21 正式发布

Go 1.21 已正式发布。

该版本大部分变化集中在工具链、运行时和库的实现。与往常一样,该版本保持了 Go 1 的兼容性承诺;事实上,Go 1.21 改进了这一承诺。开发团队希望几乎所有 Go 程序都能像以前一样继续编译和运行。

延伸阅读:Go 2 永远不会给 Go 1 带去破坏性变化

此外,Go 1.21 对版本编号进行了一个小更改。

过去使用 Go 1.N 来指代整个 Go 语言版本和版本系列,以及该系列中的第一个版本。从 Go 1.21 开始,第一个版本现在是 Go 1.N.0。最新发布的是 Go 1.21 语言及其初始实现 Go 1.21.0 release。

像go version这样的工具会将版本号显示为"go1.21.0"。有关新版本编号的详细信息,请参阅"Go Toolchains"文档中的“Go versions”。

下载地址:https://go.dev/dl/

改进工具链

在 1.20 中处于预览阶段的启用配置文件引导优化 (PGO) 功能现已正式 GA。如果主软件包目录中存在名为default.pgo的文件,go命令将使用它来启用 PGO 构建。

Profile-guided optimization (PGO) 是计算机编程中的一种编译器优化技术,翻译过来是使用配置文件引导的优化。

PGO 也被称为:

  • Profile-directedfeedback (PDF)

  • Feedback-directed optimization (FDO)

它的原理是编译器使用程序的运行时 profiling 信息,生成更高质量的代码,从而提高程序的性能。

PGO 作为一项通用的编译器优化技术,不局限于某一门语言。比如Rust 编译器也在探索使用 PGO,微软则采用LTO+PGO 来优化 Linux 内核。

在 Go 语言中,最初关于 PGO 的提案是建议向 Go GC 工具链增加对配置文件引导优化 (PGO) 的支持,以便工具链能根据运行时信息执行特定于应用程序和工作负载的优化。

Go 开发团队测试了 PGO 对多种 Go 程序的影响,发现性能提高了 2-7%。

更多详细信息查看 PGO 文档。

语言变更

添加新的标准库

优化性能

除了启用 PGO 时的性能改进之外:

支持 WASI

Go 1.21 已实验性支持WebAssembly System Interface (WASI), Preview 1 (GOOS=wasip1,GOARCH=wasm)。

为了方便编写更通用的 WebAssembly (WASM) 代码,编译器还支持从 WASM 主机导入函数的新指令:go:wasmimport。

详情查看发布说明。

延伸阅读