
阅读《2024 中国开源开发者报告》赢大奖,扫码申请享特权

Go 1.24 已正式发布,Go 1.24 在 Go 1.23 的基础上带来了许多改进。以下是一些显著的变更。
语言变更
Go 1.24 现在完全支持generic type aliases:类型别名可以被参数化,就像定义的类型一样。有关详细信息,请参阅语言规范。
性能改进
运行时的一些性能改进使得在一系列代表性基准测试中平均降低了 2-3% 的 CPU 负载。这些改进包括基于 Swiss Tables 的新内置 map
实现、更高效的内存分配(针对小对象)以及新的运行时内部互斥锁实现。
-
go
命令现在提供了一种跟踪模块工具依赖的机制。使用go get-tool
向当前模块添加tool
指令。使用go tool [工具名称]
来运行使用tool
指令声明的工具。有关 go 命令 的更多信息,请参阅发布说明。 -
go vet
子命令中的新test
分析器报告了测试包中测试、模糊测试、基准测试和示例声明的常见错误。有关 vet 的更多信息,请参阅发布说明。
标准库新增内容
-
标准库现在包括一套新的机制,以促进 FIPS 140-3 合规性。FIPS 140-3 合规性 的应用程序无需对源代码进行任何更改即可使用新的机制来使用批准的算法。有关 FIPS 140-3 合规性 的更多信息,请参阅发布说明。除了 FIPS 140 之外,之前位于 x/crypto 模块中的几个包现在也包含在 标准库 中。
-
基准测试现在可以使用更快且更少出错的
[testing.B.Loop](about:blank)
方法来执行基准迭代,例如用for b.Loop() { ... }
代替典型的涉及b.N
的循环结构,如for range b.N
。有关新基准函数的更多信息,请参阅发布说明。 -
新的
[os.Root](about:blank)
类型提供了在特定目录下执行文件系统操作的能力。有关文件系统访问的更多信息,请参阅发布说明。 -
运行时提供了一种新的最终化机制
[runtime.AddCleanup](about:blank)
,它比[runtime.SetFinalizer](about:blank)
更灵活、更高效且更少出错。有关清理操作的更多信息,请参阅发布说明。
改进的 WebAssembly 支持
Go 1.24 增加了一个新的 go:wasmexport
指令,允许 Go 程序将函数导出到 WebAssembly 主机,并支持将 Go 程序构建为 WASI reactor/library。在发布说明中了解更多关于 WebAssembly 的信息。
要查看完整更新日志,请参考发布说明。
下载地址:https://go.dev/dl/
还没有评论,来说两句吧...