Golang CHANGELOG History(截至 2025.11.07 的完整变更日志 Changelog)
Golang Changelog**:
Go 语言版本变更日志(截至 2025.11.07 的变更日志)
Go 1.25 (2025 年 8 月 12 日发布)
发布日期: 2025 年 8 月 12 日
版本周期: 距离 Go 1.24 发布六个月
兼容性: 保持 Go 1 的兼容性承诺
主要特性与改进:
语言与编译器:
- 大部分更改集中在工具链、运行时和库的实现优化
- 没有引入破坏性的语言变化
标准库增强:
- 新增
encoding/json/v2包(通过GOEXPERIMENT=jsonv2标志启用),带来显著性能改进 - 修复了
crypto/subtle、encoding/pem、net/url和os等包的多个问题
- 新增
运行时优化:
- 容器感知运行时,更好地适应容器化环境
- 实验性功能支持,为未来版本奠定基础
性能改进:
- 运行时性能显著优化,提供更高效的执行体验
- 内存管理和垃圾回收进一步优化
Go 1.24 (2025 年 2 月 6 日发布)
发布日期: 2025 年 2 月 6 日
版本周期: 距离 Go 1.23 发布六个月,开发周期从 2024 年 7 月开始,11 月下旬冻结,经过 3 个月测试完善
主要特性与改进:
语言特性:
- 泛型类型别名: 完全支持泛型类型别名,允许开发者以与定义泛型相同的方式参数化类型别名
- 弱指针支持: 引入全新的
weak包,支持弱指针功能 - 终结器增强: 改进对象清理机制,提供更智能的资源管理
性能优化:
- CPU 性能提升: CPU 开销平均降低 2-3%
- Map 实现重构: 基于 Swiss Tables 的全新内置 map 实现,大幅提升 map 操作性能
- 内存分配优化: 更高效的小对象内存分配策略
- 垃圾回收改进: 更智能的垃圾回收与对象清理机制
工具链更新:
- 更智能的依赖管理
- 构建系统和测试工具的多项改进
文件系统访问:
- 目录范围的文件系统访问控制
- 增强的文件操作安全性和性能
版本维护:
- 定期安全更新,如 go1.24.5(2025 年 7 月 8 日发布)包含 go 命令的安全修复,以及编译器、链接器、运行时和 go 命令的错误修复
Go 1.23 (2024 年 8 月 6 日发布)
发布日期: 2024 年 8 月 6 日
语言特性
- 迭代器语法转正:for-range 循环支持使用函数作为 range 表达式,标准库 slices 和 maps 包新增迭代器支持
- 泛型类型别名预览:启用
GOEXPERIMENT=aliastypeparams后可在包内使用泛型类型别名 - 包级变量初始化次序明确化:修正并明确包级变量初始化顺序
- 术语规范:澄清”严格可比较”和”类型约束”等术语,禁止匿名接口类型的循环定义
工具链
- 新增 go telemetry 命令:可选的遥测系统,支持 on/local/off 三种模式
- 构建结果 JSON 化:
go build -json支持结构化输出 - 移除 GOROOT_FINAL 支持
运行时与编译器
- Timer/Ticker 改进:
- 未引用的 Timer/Ticker 可被 GC 立即回收,无需手动 Stop
- Timer/Ticker 的 channel 改为无缓冲,保证 Stop/Reset 后不接收旧值
- PGO 优化:通过重叠函数中局部变量的栈帧槽位减少栈使用,改善编译时间
- 架构支持:新增 GOARM64 和 GORISCV64 环境变量,支持 openbsd/riscv64 实验性端口
系统要求
- macOS 最低版本要求提升至 11 Big Sur
- 最后一个支持 Linux 2.6.32 的版本(Go 1.24 将要求 Linux 3.17+)
Go 1.22 (2024 年 2 月 6 日发布)
发布日期: 2024 年 2 月 6 日
语言特性
- For 循环变量作用域修复:每次迭代创建新变量,解决循环变量意外共享问题
- 整数范围支持:支持
for i := range n语法(n 为整数)
标准库
- 新增 math/rand/v2 包:更简洁的 API,更高质量的伪随机算法
- 新增 go/version 包:版本信息管理
- net/http 路由增强:支持方法(GET/POST 等)和通配符(如
/task/{id}/) - database/sql 新增 Null[T]类型:更好的可空列处理
- slices 包新增 Concat 函数:连接多个切片
工具链
- go vet 增强:检测循环变量引用、log/slog 键值不匹配等问题
- go env -changed:列出非默认环境配置
- go mod tidy -diff:预览文件变更而不实际修改
运行时
- GC 元数据优化:提升 1-3% CPU 性能,减少约 1%内存开销
- Windows/AMD64 增强:支持 SetUnhandledExceptionFilter 捕获未处理异常
Go 1.21 (2023 年 8 月 8 日发布)
发布日期: 2023 年 8 月 8 日
主要特性
- min/max 内置函数:支持任意可比较有序类型
- clear 内置函数:清空 map 或切片
- 结构化日志完善:log/slog 包性能优化
- panic 调用栈改进:优化错误信息展示
工具链
- Go 工具链模块化:go 命令使用语义化版本控制
- **基于配置文件优化(PGO)**:正式稳定支持
- go test 覆盖率改进:支持集成测试覆盖率收集
标准库
- 新增 maps 包:map 相关操作函数
- 新增 slices 包:切片操作函数(实验性)
性能
- 垃圾回收器优化:某些程序性能提升可达 40%
- 内存分配器优化:减少锁竞争
Go 1.20 (2023 年 2 月 1 日发布)
发布日期: 2023 年 2 月 1 日
语言特性
- 切片转数组指针简化:语法更简洁,无需 unsafe 包
工具链
- 应用覆盖率报告:扩展
go test -cover支持应用整体覆盖率统计 - 废弃-i 标志:go build/install/test 不再支持-i 标志
标准库
- 新增 http.ResponseController:支持对正在进行的请求进行更精细控制
- 新增 crypto/ecdh 包:椭圆曲线 Diffie-Hellman 密钥交换
运行时
- 启动时间优化:减少约 25%启动时间
- GC 暂停时间改善:大部分程序暂停时间<100 微秒
Go 1.19 (2022 年 8 月 2 日发布)
发布日期: 2022 年 8 月 2 日
语言特性
- 内存模型修订:与 C/C++/Java 等主流语言内存模型保持一致
- sync/atomic 新类型:新增 Bool, Int32, Int64, Uint32, Uint64, Uintptr, Pointer 等类型
运行时
- 新增 SetMemoryLimit:runtime/debug.SetMemoryLimit 限制 Go 内存使用
- 文档注释增强:支持链接、列表和更清晰的标题
标准库
- net/http 超时改进:Server.ConnContext 支持设置连接级超时
移植性
- 新增 LoongArch 64 位支持:linux/loong64 端口
Go 1.18 (2022 年 3 月 15 日发布)
发布日期: 2022 年 3 月 15 日
语言特性
- 泛型正式发布:支持类型参数、类型约束,实现算法复用
- 函数迭代器预览:range over func(需 GOEXPERIMENT=rangefunc)
工具链
- Fuzzing 测试:首个将模糊测试集成到标准工具链的主要语言
- 工作区模式:解决本地多模块开发依赖问题(go work 命令)
- 编译性能:AMD64 架构性能提升 20%(寄存器 ABI 扩展)
标准库
- 新增 net/netip 包:更高效的 IP 地址处理
- crypto/tls:默认使用 TLS 1.2+
- crypto/x509:默认拒绝 SHA-1 签名证书
性能改进
- CPU 性能提升:ARM64 和 PowerPC64 上提升高达 20%
Go 1.17 (2021 年 8 月 16 日发布)
发布日期: 2021 年 8 月 16 日
语言特性
- 切片转数组指针:支持
(*[N]T)(slice)语法,运行时边界检查
工具链
- 构建约束新语法:引入
//go:build替代旧的// +build - 模块图裁剪:go.mod 更精简
运行时
- 寄存器 ABI 扩展:64 位 ARM 架构性能提升 10%+
- 垃圾回收优化:暂停时间进一步降低
标准库
- 新增 io/fs 包:抽象文件系统接口
- embed 包转正:正式支持静态资源嵌入
Go 1.16 (2021 年 2 月 16 日发布)
发布日期: 2021 年 2 月 16 日
语言特性
- embed 包:静态资源编译时嵌入
- io/fs 包:文件系统抽象
工具链
- Module 成为默认:GO111MODULE 默认开启
- Mac Apple Silicon 支持:darwin/arm64 端口
标准库
- net/http:HTTP/2 推送支持改进
- archive/zip:性能优化
Go 1.15 (2020 年 8 月 11 日发布)
发布日期: 2020 年 8 月 11 日
运行时
- GC 优化:典型 GC 暂停时间<1ms
- 链接器优化:链接速度提升 20%,二进制体积减小
标准库
- time 包性能提升:T 削弱对 cgo 的依赖
Go 1.14 (2020 年 2 月 25 日发布)
发布日期: 2020 年 2 月 25 日
运行时
- goroutine 抢占调度:基于信号的异步抢占,解决长时间占用 CPU 问题
- defer 性能提升:defer 性能提升 30%
工具链
- Module 支持生产环境:模块缓存改进
Go 1.13 (2019 年 9 月 3 日发布)
发布日期: 2019 年 9 月 3 日
工具链
- 数字字面量语法:支持 0b 二进制、0o 八进制、0x 十六进制及下划线分隔
- 错误包装:标准库支持%w 格式化动词
标准库
- 新版 TLS 1.3:crypto/tls 默认启用 TLS 1.3
Go 1.12 (2019 年 2 月 25 日发布)
发布日期: 2019 年 2 月 25 日
运行时
- GC 优化:写入屏障优化,减少约 10-30%内存占用
工具链
- Module 实验性支持:GO111MODULE 引入
标准库
- crypto/tls:性能和安全改进
Go 1.11 (2018 年 8 月 24 日发布)
发布日期: 2018 年 8 月 24 日
主要特性
- Modules:引入 Go 模块系统,解决 GOPATH 依赖管理问题
- WebAssembly 支持:实验性支持 Go 编译为 Wasm
Go 1.10 (2018 年 2 月 16 日发布)
发布日期: 2018 年 2 月 16 日
工具链
- 构建缓存:go build 引入构建缓存,大幅提升构建速度
- 测试缓存:go test 结果缓存
标准库
- strings.Builder:高效字符串构建
Go 1.9 (2017 年 8 月 24 日发布)
发布日期: 2017 年 8 月 24 日
标准库
- type alias 正式支持:类型别名语法稳定
- sync.Map:并发安全的 map 实现
运行时
- 垃圾回收优化:并行 GC,减少 STW 时间
Go 1.8 (2017 年 2 月 16 日发布)
发布日期: 2017 年 2 月 16 日
标准库
- context 包进入标准库:提供取消和超时机制
- sort.Slice:基于回调的切片排序
运行时
- GC 延迟优化:STW 时间降至毫秒级
- defer 性能改进:延迟调用开销降低
Go 1.7 (2016 年 8 月 15 日发布)
发布日期: 2016 年 8 月 15 日
主要特性
- context 包引入(实验性)
- 编译器优化:编译速度提升,二进制体积缩小 20-30%
移植性
- Linux on IBM z Systems:新增 linux/s390x 端口
Go 1.5 (2015 年 8 月 19 日发布)
发布日期: 2015 年 8 月 19 日
重大变革
- 自举编译:Go 编译器完全用 Go 重写,不再依赖 C 语言
- GC 重写:引入并发 GC,STW 时间大幅缩短
Go 1.4 (2014 年 12 月 10 日发布)
发布日期: 2014 年 12 月 10 日
工具链
- go generate:代码生成工具引入
- internal 包:支持 internal 目录可见性约束
Go 1.3 (2014 年 6 月 18 日发布)
发布日期: 2014 年 6 月 18 日
运行时
- 栈管理优化:分段栈改为连续栈
标准库
- sync.Pool:对象池机制引入
Go 1.2 (2013 年 12 月 1 日发布)
发布日期: 2013 年 12 月 1 日
语言特性
- 三索引切片:introduced
slice[low:high:max]syntax - 测试覆盖率:go test 支持覆盖率统计
Go 1.1 (2013 年 5 月 13 日发布)
发布日期: 2013 年 5 月 13 日
主要改进
- 性能大幅提升:编译器和运行时优化
- Method values:支持将方法作为函数值
Go 1.0 (2012 年 3 月 28 日发布)
发布日期: 2012 年 3 月 28 日
里程碑
- 首个稳定版本:Go 1 兼容性承诺开始
- 语言规范确定:奠定后续版本基础
版本发布周期
- 常规周期:每年 2 月、8 月发布两个版本
- 维护策略:当前版本 bug 修复,前两个版本安全更新
- 兼容性:遵循 Go 1 兼容性承诺,保证向后兼容
官方 Release CHANGELOG 参考
Golang CHANGELOG History(截至 2025.11.07 的完整变更日志 Changelog)



