IT之家 8 月 10 日消息,谷歌于今天为编程语言 Go 发布了全新的 1.21 版本,该版本大部分变化集中在工具链、运行时和库的实现,谷歌此前表示,Go 语言将在 1.21 版本取消对旧版微软 Windows 和苹果 macOS 系统的支持。
▲ 谷歌编程语言 Go 1.21 版本发布日志
IT之家附 Go 1.21 主要更新内容如下:
改进工具链
配置文件引导优化 (PGO)功能正式进入稳定阶段(GA)。
在 1.20 中处于预览阶段的启用配置文件引导优化 (PGO)功能现已正式进入稳定阶段,PGO 的原理是“编译器使用程序的运行时 profiling 信息,因此能够生成更高质量的代码,从而提高程序的性能”。如果主软件包目录中存在名为 default.pgo 的文件,go 命令将使用该 default.pgo 文件来启用 PGO 构建。
语言变更
添加新的内置函数:
min, max, clear
对泛型函数的类型推断进行了多项改进,包括“扩展和解释清楚规范”中类型推断的描述。
在未来版本中,开发团队计划解决 Go 编程中最常见的“循环变量捕获”问题,开发团队目前已经在 Go 1.21 中提供了“预览版”解决方案,目前用户可以使用“环境变量”在代码中启用该功能。
添加新的标准库
-
log / slog 包:用于结构化日志记;
-
slices 包:增用于对任何元素类型的切片进行常见操作,这个包比 sort 包更快、更符合人体工程学;
-
maps 包:用于对任何类型 key-value 进行常见操作;
-
cmp 包:用于比较有序值 (ordered values)。
优化性能
Go 编译器本身已经在 1.21 就 PGO 进行了重建,因此当下构建 Go 程序的速度提高了 2-4%,不过官方表示,具体的优化效率将取决于主机架构。
支持 WASI
Go 1.21 已实验性支持 WebAssembly System Interface (WASI),Preview 1。
为了方便编写更通用的 WebAssembly (WASM)代码,编译器还支持从 WASM 主机导入函数的新指令:
go:wasmimport