Go 1.24发布 带来性能改进和更好的WebAssembly支持

站长云网 2025-02-15 5iter.com 站长云网

Go1.24由Google工程师于本周发布,是这一流行编程语言向前迈出的最新一步。Go1.24提供了各种性能改进、对Go编程语言通用类型别名的全面支持、各种Go工具改进、促进FIPS140-3合规性的标准库添加、标准库中的"os.Root"类型,以及改进的WebAssembly支持。

说到Go1.24的性能工作,在各种代表性基准测试中,运行时CPU开销平均降低了2%~3%。Go1.24对WebAssembly的改进包括新的"go:was"和"go:was"。

Go1.24与Go1.23相比有许多改进。以下是一些显著的变更;如需完整列表,请参阅发行说明。

语言变更

Go1.24现在完全支持通用类型别名:类型别名可以像已定义的类型一样被参数化。详情请参见语言规范。

性能改进

运行时的多项性能改进使CPU开销在一系列代表性基准测试中平均降低了2-3%。这些改进包括基于SwissTables的新内置map实现、更高效的小对象内存分配以及新的运行时内部互斥实现。

工具改进

  • go命令现在提供了一种跟踪模块工具依赖性的机制。使用goget-tool将tool指令添加到当前模块。使用gotool[toolname]运行使用tool指令声明的工具。在发行说明中阅读更多关于go命令的内容。

  • test子命令govet中的新test分析器可报告测试包中测试、模糊器、基准和示例声明中的常见错误。在发行说明中阅读更多关于vet的内容。

  • 标准库新增内容

  • 标准库现在包括一套新的机制,以促进FIPS140-3合规性。应用程序无需修改源代码即可使用已获批准算法的新机制。有关FIPS140-3合规性的更多信息,请参阅发布说明。除FIPS140外,x/crypto模块中的多个软件包现在也可在标准库中使用。

  • 基准现在可以使用更快、更不易出错的testing.B.Loop方法来执行基准迭代,如forb.Loop(){...}来代替涉及b.N的典型循环结构,如forrangeb.N。有关新基准函数的更多信息,请参阅发行说明。

  • 新的os.Root类型提供了在特定目录下执行文件系统隔离操作的能力。请阅读发行说明中有关文件系统访问的更多信息。

  • 运行时提供了一种新的终结机制,runtime.AddCleanup比runtime.SetFinalizer更灵活、更高效、更不易出错。有关清理的更多信息,请参阅发行说明。

  • 改进对WebAssembly的支持

    Go1.24新增了go:wasmexport指令,用于Go程序向WebAssembly主机导出函数,并支持将Go程序作为WASIreactor/library构建。请阅读WebAssembly发行说明中的更多信息。

    有关本周发布的Go1.24的下载和更多信息,请访问Go.dev.

    责任编辑:站长云网