Post

Go Release History

Go Release History

Release History

Go 1.1 (2013 年 5 月)

语言特性

  • 没有重大语言特性更新,专注于性能改进和标准库增强

运行时改进

  • 引入分段栈(Segmented Stacks):
    • 函数调用栈的分配从固定大小切换为按需分配,减少了内存浪费
    • 提升了栈扩展的性能

标准库改动

  • math/big
  • 提高了大整数 (big.Int) 和大浮点数 (big.Float) 的性能
  • net/http
  • 增强了 HTTP 客户端的性能
  • 增加了对 HTTP Keep-Alive 的支持
  • go/types
  • 引入了静态类型检查工具,支持更强类型的代码分析

工具链

  • 增强了 Windows 和 ARM 平台的支持
  • 改进了编译器的代码生成质量,生成的二进制文件更小且更高效

Go 1.2 (2013 年 12 月)

语言特性

  • 允许在 return 语句中显式指定返回值,即使返回值名称已在函数签名中声明

标准库改动

  • encoding/json
  • 优化了 JSON 的编码/解码性能
  • 增加了对 omitempty 标记的灵活性
  • runtime
  • 改进了运行时调度器,支持更高效的 Goroutine 切换
  • net
  • 提高了网络连接管理的性能,支持更大的连接并发量

工具链

  • 增加了对 FreeBSD/ARM 和 Windows/ARM 的支持

Go 1.3 (2014 年 6 月)

语言特性

  • 没有新的语言特性,专注于运行时和工具链的改进

运行时改进

  • 改进了内存分配器
  • 提高了垃圾回收器的性能,减少了全局暂停时间

标准库改动

  • net/http
  • 提高了 HTTP 客户端和服务器的性能
  • os
  • 增强了跨平台文件操作的兼容性

工具链

  • 编译器从 C 实现切换为 Go 实现,标志着 Go 的完全自举
  • 改善了跨平台构建的能力

Go 1.4 (2014 年 12 月)

语言改动

  • 增强了 defer 语句在异常场景下的行为一致性

运行时改进

  • 调度器的性能优化,支持更多 Goroutine
  • 减少了垃圾回收的暂停时间

标准库改动

  • runtime/debug
  • 新增 runtime/debug 包,允许开发者更方便地调试系统
  • net/http
  • 为 HTTP/2 的未来支持奠定了基础

工具链

  • Go 编译器和工具链完全用 Go 编写,彻底摆脱了对 C 的依赖

Go 1.5 (2015 年 8 月)

语言特性

  • Vendoring 支持
  • 引入了 vendor 目录,支持本地化依赖管理

运行时改进

  • 引入了并发垃圾回收(GC),显著降低了 GC 暂停时间
  • 提高了 Goroutine 调度器的效率

标准库改动

  • net :增强了 DNS 解析的性能
  • internal :新增 internal 访问机制,用于限制内部代码的可见性

工具链

  • 增强了 ARM 和 64 位架构支持

Go 1.6 (2016 年 2 月)

语言特性

  • 增强了对 Unicode 的支持
  • 修复了一些边界条件问题

标准库改动

  • net/http :默认启用 HTTP/2
  • regexp :提升了正则表达式匹配的性能
  • reflect :提高了反射 API 的性能

工具链

  • 改进了在多核 CPU 上的性能,支持更高效的并发程序

Go 1.7 (2016 年 8 月)

语言特性

  • 引入 context 包:提供了标准化的超时和取消信号传递机制

标准库改动

  • net/http :优化了 HTTP/2 的实现
  • encoding/json :改进了大 JSON 文档的解码性能

运行时改进

  • 提高了垃圾回收的效率,减少了长时间暂停

Go 1.8 (2017 年 2 月)

运行时改进

  • 引入了基于区域的垃圾回收机制
  • 改善了内存分配器的性能

标准库改动

  • sort.Slice :新增通用的切片排序方法
  • database/sql :增强了连接池的功能

Go 1.9 (2017 年 8 月)

语言特性

  • 引入了类型别名(Type Alias),便于大型代码库迁移

标准库改动

  • sync.Map :新增高效的并发安全映射类型

Go 1.10 (2018 年 2 月)

工具链改进

  • 引入构建缓存机制,大幅加快了增量编译的速度

Go 1.11 (2018 年 8 月)

模块化支持

  • 引入 Go Modules,替代 GOPATH,成为 Go 依赖管理的新标准

Go 1.12 ~ 1.24

以下版本涵盖的改动主要集中在:

  • 泛型支持 (1.18 引入,1.19-1.21 不断优化)
  • 性能优化 :如垃圾回收、运行时调度、工具链性能
  • 模块化改进 :如模块代理、版本兼容性等
  • 云原生支持 :增强了对 WebAssembly 和容器化的支持
This post is licensed under CC BY 4.0 by the author.