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-12-24

Licensed under