Go 1.24 is released(翻译)
文章目录
- 语言变更
- 性能改进
- 工具改进
- 标准库添加
- 改进的 WebAssembly 支持
- 参考文献
Junyang Shao,代表 Go 团队。
2025年2月11日
今天,Go 团队很高兴发布 Go 1.24,您可以通过访问下载页面获取。
Go 1.24 与 Go 1.23 相比有许多改进。以下是一些显著的变化;完整列表请参阅发行说明。
语言变更
Go 1.24 现在完全支持泛型类型别名:类型别名可以像定义类型一样进行参数化。详情请参阅语言规范。
性能改进
运行时中的多项性能改进已在一系列代表性基准测试中将 CPU 开销平均降低了 2-3%。这些改进包括 map 基于 Swiss Tables 的新内置实现、更高效的小对象内存分配,以及新的运行时内部互斥锁实现。
工具改进
-
go 命令现在提供了一种跟踪模块工具依赖关系的机制。使用 go get -tool 向当前模块添加 tool 指令。使用
go tool [tool name]
运行 tool 指令声明的工具。有关 go command 的更多信息,请参阅发行说明。 -
go vet 子命令中新增的 test 分析器,用于报告测试包中测试、模糊测试器、基准测试和示例声明中的常见错误。请参阅发行说明,了解更多关于 vet 的信息。
标准库添加
- 标准库现在包含一套新的机制,以促进 FIPS 140-3 合规性。应用程序无需更改源代码即可使用新机制来支持已获批准的算法。有关 FIPS 140-3 合规性 的更多信息,请参阅发行说明。除 FIPS 140 外,之前 x/crypto 模块中的几个软件包现在也已包含在标准库中。
- 基准测试现在可以使用速度更快、错误更少的 testing.B.Loop 方法来执行基准迭代,例如
for b.Loop() { ... }
,而不是像for range b.N
使用典型的循环结构。请参阅发行说明,了解更多关于新基准测试函数的信息。 - 新 os.Root 类型提供了在特定目录下执行隔离文件系统操作的能力。有关 filesystem access 的更多信息,请参阅发行说明。
- 运行时提供了一种新的终止机制,runtime.AddCleanup 它比 runtime.SetFinalizer 更灵活、更高效、更不易出错 。请参阅发行说明了解更多关于 cleanups 的信息。
改进的 WebAssembly 支持
Go 1.24 为 Go 程序添加了一条新指令 go:wasmexport
,用于将函数导出到 WebAssembly 宿主机,并支持将 Go 程序构建为 WASI reactor/library。有关 WebAssembly 的更多信息,请参阅发行说明。
请阅读 Go 1.24 发行说明,了解完整详细的信息。别忘了关注后续博客文章,它们将更深入地探讨这里提到的一些主题!
感谢所有为此版本做出贡献的开发者,他们编写了代码和文档,报告了错误,分享了反馈,并测试了候选版本。你们的努力确保了 Go 1.24 尽可能的稳定。与往常一样,如果您发现任何问题,请提交问题。
Enjoy Go 1.24!
Next article: Extensible Wasm Applications with Go
Previous article: Go Developer Survey 2024 H2 Results
Blog Index
参考文献
Go 1.24 is released!