Go 1.26 发布
Carlos Amedee,代表 Go 团队
2026 年 2 月 10 日
今天 Go 团队很高兴地宣布 Go 1.26 正式发布。 你可以在下载页面找到二进制归档和安装程序。
语言变化
Go 1.26 引入了两个重要的语言语法和类型系统改进。
首先,内置函数 new(用于创建新变量)现在允许其操作数是一个表达式,用于指定变量的初始值。
一个简单的例子:以下代码:
x := int64(300)
ptr := &x
可以简化为:
ptr := new(int64(300))
其次,泛型类型现在可以在其自身的类型参数列表中引用自身。这一变化简化了复杂数据结构和接口的实现。
性能改进
之前处于实验阶段的 Green Tea 垃圾回收器 现在已默认启用。
cgo 开销 基线降低了约 30%。
编译器现在在更多情况下可以在栈上分配切片的后备存储,从而提升性能。
工具改进
go fix 命令已完全重写,基于 Go 分析框架,现在包含数十个"现代化工具"——即能安全修复代码的分析器,帮助你的代码利用语言和标准库的新特性。它还包含了 inline 分析器,它会尝试内联所有带有 //go:fix inline 指令的函数的调用。后续会有两篇博客文章详细介绍这些功能。
更多改进和变化
Go 1.26 在其工具、运行时、编译器、链接器和标准库方面引入了许多对 Go 1.25 的改进。其中包括新增三个包:crypto/hpke、crypto/mlkem/mlkemtest 和 testing/cryptotest。还有特定平台的变化和 GODEBUG 设置更新。
Go 1.26 中的一些新增功能仍处于实验阶段,只有在你明确选择启用时才会暴露。值得注意的有:
- 实验性的
simd/archsimd包 提供了对"单指令多数据"(SIMD)操作的访问。 - 实验性的
runtime/secret包 提供了一种安全擦除临时变量的工具,用于处理秘密信息(通常是加密性质的)的代码。 runtime/pprof包中的实验性goroutineleak分析,用于报告泄露的 goroutine。
这些实验预计将在未来的 Go 版本中正式可用。我们鼓励你提前试用。我们非常重视你的反馈!
请参阅 Go 1.26 发行说明 获取新增内容、变化和改进的完整列表。
在接下来的几周内,后续博客文章将更详细地介绍与 Go 1.26 相关的一些主题。请稍后回来查看。
感谢所有通过编写代码、提交 bug、试用实验性功能、分享反馈以及测试候选版本而为这个版本做出贡献的人。你们的努力使 Go 1.26 尽可能地稳定。像往常一样,如果你发现任何问题,请提交 issue。
希望你喜欢使用这个新版本!