编程 Go 1.26 发布:new(expr)、Green Tea GC 默认开启与 go fix 重写

2026-09-13 21:01:51

Go 1.26 发布:new(expr)、Green Tea GC 默认开启与 go fix 重写

Go 1.26 于 2026-02-10 发布,作者 Carlos Amedee。发布说明:https://go.dev/doc/go1.26;发布博客:go.dev/blog/go1.26

语言变化

内置 new 函数现在允许操作数是表达式,用来指定变量初始值。原先需要先声明变量再取地址:

x := int64(300)
ptr := &x

Go 1.26 可以写成:

ptr := new(int64(300))

泛型类型现在可以在自己的类型参数列表中引用自身,即自引用泛型约束。

性能

  • 此前实验性的 Green Tea 垃圾回收器现在默认启用。
  • cgo 基线开销降低约 30%。
  • 编译器在更多情况下把 slice 的底层数组分配到栈上。

工具

go fix 命令被完全重写,使用 Go analysis 框架,包含约两打 “modernizers” 分析器。它还包含 inline 分析器,会内联所有标注了 //go:fix inline 指令的函数调用。

go mod init 现在在新 go.mod 里默认写更低的 go 版本:用 1.N.X 工具链运行 go mod init 会生成 go 1.(N-1).0;预发布版本 1.N 会生成 go 1.(N-2).0。例如 Go 1.26 RC 生成 go 1.24.0,正式版生成 go 1.25.0

新包与实验特性

新包

  • crypto/hpke
  • crypto/mlkem/mlkemtest
  • testing/cryptotest

pprof web UI(-http)现在默认展示火焰图;旧的图形视图在 View -> Graph/ui/graph

实验特性

以下特性需要 GOEXPERIMENT 显式开启:

  • simd/archsimd:提供 SIMD 操作,目前仅 amd64,支持 128/256/512-bit 向量类型如 Int8x16Float64x8,API 尚不稳定。
  • runtime/secret:提供安全擦除敏感临时数据的能力,目前支持 Linux 上的 amd64 和 arm64。
  • runtime/pprof 新增 goroutineleak profile,报告泄漏的 goroutine。用 GOEXPERIMENT=goroutineleakprofile 构建时开启,也暴露 /debug/pprof/goroutineleak 端点,计划 Go 1.27 默认启用。判定逻辑是:若一个 goroutine 阻塞在并发原语上,且该原语从任何可运行的 goroutine 都不可达,就判定为泄漏。

兼容性与破坏性变更

  • 32-bit windows/arm 端口移除。
  • bootstrap 需要 Go 1.24.6+。
  • cmd/doc / go tool doc 删除,改用 go doc
  • 历史 go fix fixers 移除。
  • JPEG 编解码器输出可能与旧版逐位不同。
  • net/url.Parse 现在拒绝形如 http://localhost:80:80/ 的 URL;可用 GODEBUG=urlstrictcolons=0 恢复旧行为。
  • net/http.ServeMux 尾斜杠重定向从 301 改为 307。
  • 弃用:net/http/httputil.ReverseProxy.Director 弃用,改用 Rewritecrypto/ecdsacrypto/rsa 的 PKCS#1 v1.5 加密相关字段/方法弃用。
复制全文 生成海报 Go 1.26 GC go fix 垃圾回收

推荐文章

程序员茄子在线接单