编程 Go 1.25 发布:GOMAXPROCS 默认容器感知,json/v2 与 GC 进入实验

2026-09-12 21:01:27

Go 1.25 发布:GOMAXPROCS 默认容器感知,json/v2 与 GC 进入实验

Go 1.25 发布于 2025-08-12。下面按主题记录值得关注的变化点。

语言与规范

语言层面没有影响现有程序的变化。规范中移除了 core types 概念。

容器感知的 GOMAXPROCS

Linux 上默认参考 cgroup CPU 带宽限制(cpu.cfs_quota_us / cpu.cfs_period_us)计算并行度,并周期性(约 10s)更新。取值取逻辑 CPU 数、CPU 亲和性、cgroup 配额三者中的最小值。

GODEBUG=containermaxprocs=0   # 关闭容器感知
GODEBUG=updatemaxprocs=0      # 关闭周期性更新

新增 runtime.SetDefaultGOMAXPROCS

GC:greenteagc

新增实验性 GC,通过 GOEXPERIMENT=greenteagc 启用。针对小对象密集的应用,目标是降低约 40% 的 GC 开销。

encoding/json/v2

进入实验阶段,用 GOEXPERIMENT=jsonv2 启用,新增 encoding/json/v2encoding/json/jsontext 两个包。启用后原 encoding/json 也切到新实现,marshal/unmarshal 语义保持,但错误消息文本可能变化。新选项包括 OmitZeroStructFieldsMatchCaseInsensitiveNames

testing/synctest 转正

从 1.24 的实验包转为正式包。它在隔离 bubble 内用虚拟时钟测试并发代码,可以在不真实等待的情况下测试超时。旧实验 API 在 GOEXPERIMENT=synctest 下仍可用,将在 1.26 移除。

sync.WaitGroup.Go

sync.WaitGroup 新增 Go 方法:自动完成 Add/Done,避免忘记调用导致的并发错误。

Flight Recorder

runtime/trace 新增 Flight Recorder API:在内存中维护环形缓冲,出错时把最近一段 trace 快照写入文件,便于生产排障。

工具链与平台

编译器/链接器默认生成 DWARF 5 调试信息,减小二进制体积、加快链接;可用 GOEXPERIMENT=nodwarf5 关闭。修复了 1.21—1.24 中可能导致 nil 指针检查被错误延迟的编译器 bug。

平台方面:要求 macOS 12 Monterey 或更高;windows/arm 32 位端口将在 1.26 移除;GOAMD64=v3 及以上启用 FMA 指令。

小版本安全修复

  • go1.25.1:修复 net/http 安全问题
  • go1.25.2:大范围安全修复,涉及 archive/tarcrypto/tlscrypto/x509encoding/asn1encoding/pemnet/httpnet/mailnet/url
  • go1.25.3:修复 crypto/x509
  • go1.25.6:修复 go 命令、archive/zipcrypto/tlsnet/url
  • go1.25.8:修复 html/templatenet/urlos
  • go1.25.9:修复 go 命令、compiler、archive/tarcrypto/tlscrypto/x509html/templateos
  • go1.25.10:修复 go 命令、pack、html/templatenetnet/httpsyscall

参考:Go 1.25 发布说明发布历史

复制全文 生成海报 Go GOMAXPROCS 容器 标准库

推荐文章

程序员茄子在线接单