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)



