Go 博客
Go 1.24 发布了!
今天 Go 团队很高兴发布 Go 1.24,您可以访问下载页面获取。
Go 1.24 在 Go 1.23 的基础上带来了许多改进。以下是一些值得注意的变化;完整列表请参阅发布说明。
语言变化
Go 1.24 现在完全支持泛型类型别名:类型别名可以像定义类型一样参数化。详情请参见语言规范。
性能改进
运行时的一些性能改进使得在一系列代表性基准测试中的 CPU 开销平均降低了 2-3%。这些改进包括基于 Swiss Tables 的新内置 map
实现、更高效的小对象内存分配,以及新的运行时内部互斥锁实现。
工具改进
go
命令现在提供了一种机制来跟踪模块的工具依赖项。使用go get -tool
可以将tool
指令添加到当前模块。使用go tool [tool name]
可以运行使用tool
指令声明的工具。在发布说明的go 命令部分阅读更多详情。go vet
子命令中新增的test
分析器可以报告测试包中测试、模糊测试、基准测试和示例声明中的常见错误。在发布说明的vet部分阅读更多详情。
标准库新增内容
-
标准库现在包含了一组新的机制,以方便符合 FIPS 140-3 标准。应用程序无需修改源代码即可使用这些新机制来实现经批准的算法。在发布说明的FIPS 140-3 合规性部分阅读更多详情。除了 FIPS 140,之前位于 x/crypto 模块中的几个包现在也可在标准库中使用。
-
基准测试现在可以使用更快、更不易出错的
testing.B.Loop
方法来执行基准测试迭代,例如使用for b.Loop() { ... }
替代涉及b.N
的典型循环结构(如for range b.N
)。在发布说明的新基准测试函数部分阅读更多详情。 -
运行时提供了一种新的终结机制
runtime.AddCleanup
,它比runtime.SetFinalizer
更灵活、更高效且更不易出错。在发布说明的清理函数部分阅读更多详情。
改进的 WebAssembly 支持
Go 1.24 新增了 go:wasmexport
指令,用于 Go 程序向 WebAssembly 主机导出函数,并支持将 Go 程序构建为 WASI reactor/library。在发布说明的WebAssembly部分阅读更多详情。
请阅读Go 1.24 发布说明以获取完整详细信息。别忘了关注后续的博客文章,它们将更深入地探讨这里提到的一些主题!
感谢所有为本次发布做出贡献的人,包括编写代码和文档、报告 bug、分享反馈以及测试发布候选版本。你们的努力帮助确保 Go 1.24 尽可能稳定。一如既往,如果您发现任何问题,请提交问题。
尽情享受 Go 1.24 吧!
下一篇文章:使用 Go 构建可扩展的 Wasm 应用程序
上一篇文章:2024 年下半年 Go 开发者调查结果
博客目录