Go 语言 1.26 版本正式发布:泛型限制放宽、Green Tea GC 垃圾回收器默认启用

纵横百科 网络资讯 3

2 月 19 日消息,Go 语言团队现已正式发布 1.26 版本,本次更新主要改进泛型规则,同步提升运行性能,附项目地址(https://go.dev/blog/go1.26)。

据介绍,Go 1.26 放宽了 new 内建函数的使用限制。过去 new 的运算元只能是类型,如今则允许直接使用表达式作为运算元,以便在创建变量时同时指定初始值。这项改动对于使用指针表示可选字段的序列化数据结构较为实用,可更直观地完成初始化操作。

泛型系统方面,新版本解除泛型类型不得在自身类型参数列表中自我引用的限制,使类型约束能够表达更复杂的递归接口与数据结构需求,进一步增强泛型的表达能力。

性能改进方面,原本属于实验性质的 Green Tea 垃圾回收器在 1.26 中改为默认启用。官方表示,在跨语言互通机制 cgo 上也有明显优化,基础额外开销降低约 30%,有助于提升 Go 与 C 语言混合开发场景下的整体效率。同时,编译器在更多情境下可将切片(slice)的底层存储分配到栈上,从而减少堆分配次数,降低内存管理成本并改善运行性能。

工具链方面,官方对 go fix 命令进行了全面重构,改用 Go 分析框架为基础实现,同时新增二十多个现代化自动修正器,可在不改变程序行为的前提下自动应用修正建议,帮助项目迁移至新语言特性或更新后的标准库写法。新版 go fix 还引入行内分析器(Inline Analyzer),支持通过 //go:fix inline 注解标记函数,并尝试在调用点进行内联处理,协助代码逐步现代化。

标准库方面,Go 1.26 新增 crypto / hpke、crypto / mlkem / mlkemtest 与 testing / cryptotest 等套件,扩展加密与测试能力。官方同时公布多项需显式启用的实验功能,包括用于单指令多数据运算的 simd / archsimd 套件、支持安全擦除敏感临时数据的 runtime / secret 套件等。Go 团队表示,这些实验特性有望在未来版本中转为正式功能,开发者可提前试用并提供反馈。