Go文档:Release History(发布历史)
本文更新于2024-09-09。
官方文档:https://go.dev/doc/devel/release
泛型
go1.23.0 (2024-08-13)
- 增加遥测数据上报。
- 使用PGO编译的耗时从增加100%以上优化至个位数。
- Timer和Ticker未被引用时即可被垃圾回收,不需等待Stop。
- 增加unique、iter、structs包。
go1.22.0 (2024-02-06)
- 每次range循环创建新变量。
- CPU性能提升1–3%,内存减少约1%;启用PGO可提升2-14%。
- 增加math/rand/v2包。
- 增强net/http.ServeMux的路由功能。
go1.21.0 (2023-08-08)
- 增加min、max、clear内置函数。
- 明确包初始化顺序。
- 增加log/slog、slices、maps、cmp包。
go1.20 (2023-02-01)
- 编译支持PGO。
go1.19 (2022-08-02)
go1.18 (2022-03-15)
- 引入泛型。
- 模糊测试。
- 支持工作区。
- 切片扩容算法的大小分界从1024改为256。
模块
go1.17 (2021-08-16)
- 完善模块机制。
- 程序运行时性能提升5%,二进制程序体积减少2%。
go1.16 (2021-02-16)
- 模块感知模式默认启用。
- 支持内嵌文件。
- 链接速度加快20-25%,内存减少5-15%,使Go链接器更现代化。
- 弃用io/ioutil包。
go1.15 (2020-08-11)
- 二进制程序体积减少5%。
- 链接器速度加快20%,内存减少30%,使Go链接器更现代化。
go1.14 (2020-02-25)
- 模块机制可用于生产。
- 引入RISC-V支持。
- defer几乎零开销。
- 重新实现定时器。
go1.13 (2019-09-03)
- 改进数值字面量语法。
- 完善模块机制。
- defer性能提高30%。
- errors包增加函数As、Is、Unwrap。
go1.12 (2019-02-25)
- 完善模块机制。
go1.11 (2018-08-24)
- 引入WebAssembly支持。
- 引入模块机制。
go1.10 (2018-02-16)
- 构建缓存。
- 测试缓存。
重写编译器和运行时
go1.9 (2017-08-24)
- 类型别名。
- 并行编译。
- 使用单调时钟。
go1.8 (2017-02-16)
- 编译器和链接器速度提升15%。
- 支持插件。
- GC通常低于100毫秒,平常低于10毫秒。
- defer的开销减半。
- Go调用C的开销减半。
- 支持HTTP/2推送。
go1.7 (2016-08-15)
- 正式支持vendor。
- 编译器加入SSA。
- 程序运行时CPU提升5-35%,二进制程序体积减少20-30%。
- 增加context包。
go1.6 (2016-02-17)
- 定义CGo在Go和C之间共享指针的规则。
- 支持HTTP/2。
go1.5 (2015-08-19)
- 正式支持internal内部包。
- 自举,完全替换C代码。
- 重写编译器和运行时,不再使用6g/8g、6a/8a、6l/8l等工具链。
- stop the world基本在10毫秒以下。
- 可编译动态共享库。
Go 1
go1.4 (2014-12-10)
- 协程创建时的栈大小从8K改为2K。
- 支持规范化的导入路径。
go1.3 (2014-06-18)
- 垃圾收集器更精确。
go1.2 (2013-12-01)
- 协程创建时的栈大小从4K改为8K。
go1.1 (2013-05-13)
go1 (2012-03-28)
- Go 1兼容性保证。