Go Release History
Go 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/2regexp
:提升了正则表达式匹配的性能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.