Golang CHANGELOG History(截至2025.11.07的完整变更日志Changelog)

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/subtleencoding/pemnet/urlos等包的多个问题
  • 运行时优化:

    • 容器感知运行时,更好地适应容器化环境
    • 实验性功能支持,为未来版本奠定基础
  • 性能改进:

    • 运行时性能显著优化,提供更高效的执行体验
    • 内存管理和垃圾回收进一步优化

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参考

go.dev/doc/devel/release

Golang CHANGELOG History(截至2025.11.07的完整变更日志Changelog)

https://www.wdft.com/3ba902b3.html

Author

Jaco Liu

Posted on

2025-11-07

Updated on

2025-11-07

Licensed under