Go 博客

Go 1.21 发布候选版本

Eli Bendersky 代表 Go 团队
2023 年 6 月 21 日

Go 1.21 的第一个发布候选版本 (RC) 今天在 下载页面 上发布!Go 1.21 充满了新功能和改进。获取 RC(发布候选版本)可以让您尽早试用它,在您的工作负载上进行尝试,并在最终版本发布(计划于 8 月发布)之前报告任何问题。以下是 Go 1.21 中的一些重大更改和功能;有关完整列表,请参阅 完整的发行说明

(请注意,Go 1.21 的第一个 RC 被称为 go1.21rc2,因为在标记 go1.21rc1 后发现并修复了一个错误)

工具改进

语言更改

  • 新的内置函数:min、maxclear
  • 对泛型函数的类型推断进行了多项改进。规范中 类型推断的描述 已扩展并得到澄清。
  • 在 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=wasip1GOARCH=wasm)的实验性端口。

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

下载 Go 1.21 RC 并试用!如果您发现任何问题,请 提交问题

下一篇文章:Govulncheck v1.0.0 发布!
上一篇文章:Go 开发者调查 2023 年第一季度结果
博客索引