Go 语言历史
英文原版:https://golang.design/history/,来自 Changkun Ou 及其他贡献者
此翻译文档可能更新不及时,您可以查看英文原版获得最新更新。
此文档收集了Go语言开发过程中公开的讨论及提案,以全面地展现Go语言发展历史。
免责声明
- 很多内容是对于公开信息的主观理解
- 可能出现实际错误或拼写错误。如果某些内容和您的观点相违背,请参考原始链接
- 非常欢迎关于新内容、错误修复、拼写修复的合并请求
- 使用 Github Issue 进行讨论
资料来源
有很多探索 Go 历史设计的平台,以下是这些平台的官方网站:
- go.dev/blog
- dev.go.dev
- build.go.dev
- farmer.go.dev
- go.dev/talks
- go.dev/doc
- go.dev/pkg
- github.com/golang/go
- github.com/golang/proposal
- github.com/golang/go/wiki
- go-review.googlesource.com
- groups.google.com/g/golang-nuts
- groups.google.com/g/golang-dev
- groups.google.com/g/golang-tools
起源
Go 是由一个小组织以及语言社区的用户推动的。以下是一些核心贡献者,你可能会对他们杰出的工作感兴趣。
Go 的起源很吸引人。通过这些人举办的讲座,您可以了解到相关的口述历史和有趣的故事。
例如,您可以选择这些有关 Go 历史壮举的讲座作为起点(仅建议): talk/rob2007, talk/rob2009, talk/rob2010b, talk/rob2010d, talk/rob2011a, talk/rob2013a, talk/rob2019, talk/robert2015, talk/russ2014, steve2019b, etc.
时间线
时间线能帮助你确定关联到 Go 版本文档。
关于每个版本中运行时与编译器的具体变化(包括发布说明中省略的内部改动),参见 基于提交历史重建的运行时与编译器演进史(Go 1.0 至 1.28,英文)。其中的未选择的路(Paths not taken)一页收录了曾经实现或设计、但最终没有以该形式合入的工作,例如面向请求的垃圾收集器(ROC)和无锁通道,并给出每项工作停下来的原因(英文)。
| 版本 | 发布预期/实际时间 | 距离上一次发布天数 (+Delay) |
|---|---|---|
| Go 1 | - / 2012.03.28 | - |
| Go 1.1 | - / 2013.05.13 | 440 |
| Go 1.2 | - / 2013.12.01 | 202 |
| Go 1.3 | - / 2014.06.18 | 199 |
| Go 1.4 | - / 2014.12.10 | 175 |
| Go 1.5 | 2015.07.31 / 2015.08.19 | 252 (+19) |
| Go 1.6 | 2016.01.31 / 2016.02.17 | 182 (+17) |
| Go 1.7 | 2016.07.31 / 2016.08.15 | 180 (+15) |
| Go 1.8 | 2017.01.31 / 2017.02.16 | 185 (+16) |
| Go 1.9 | 2017.07.31 / 2017.08.24 | 189 (+24) |
| Go 1.10 | 2018.01.31 / 2018.02.16 | 176 (+16) |
| Go 1.11 | 2018.07.31 / 2018.08.24 | 189 (+24) |
| Go 1.12 | 2019.01.31 / 2019.02.25 | 185 (+25) |
| Go 1.13 | 2019.07.31 / 2019.09.03 | 190 (+34) |
| Go 1.14 | 2020.01.31 / 2020.02.25 | 175 (+25) |
| Go 1.15 | 2020.07.31 / 2020.08.11 | 168 (+11) |
| Go 1.16 | 2021.01.31 / 2021.02.16 | 189 (+16) |
| Go 1.17 | 2021.07.31 / 2021.08.16 | 181 (+16) |
| Go 1.18 | 2022.01.31 / 2022.03.15 | 196 (+43) |
| Go 1.19 | 2022.07.31 / 2022.08.02 | 140 (+2) |
| Go 1.20 | 2023.01.31 / 2023.02.01 | 183 (+1) |
| Go 1.21 | 2023.07.31 / 2023.08.08 | 188 (+8) |
| Go 1.22 | 2024.01.31 / 2024.02.07 | 184 (+7) |
| Go 1.23 | 2024.07.31 / 2024.08.14 | 189 (+14) |
| Go 1.24 | 2025.01.31 / 2025.02.12 | 182 (+12) |
| Go 1.25 | 2025.07.31 / 2025.08.12 | 181 (+12) |
| Go 1.26 | 2026.01.31 / 2026.02.10 | 182 (+10) |
| Go 1.27 | 2026.07.31 / 2026.08.19 | 190 (+19) |
历史版本说明可以提供一些大概信息:
- doc/go1release Go 发布历史
- doc/go1prerelease Go 1 预发布历史
- doc/go0release 每周发布历史(Go 1 之前)
有趣的事实
- cl/1 Brian Kernighan,Go的首次提交。1972年7月19日。
- issue/9 我使用了 MY 作为编程语言的名字,2009年11月11日。
- issue/2870 9 不是素数,2012年2月3日。
- doc/gophercount 有多少 Go 开发者?2019年11月1日。
- discuss/google-owns-go Russ Cox 关于“Go是谷歌的语言,不是我们的语言”的回应。
鸣谢
首先感谢 TalkGo 社区创建者 Mai Yang 对 golang.design 倡议的大力推动。他创建的 TalkGo 极大地改变了中国的 Go 社区。他也是一个伟大的人,积极为各种与 Go 相关的项目作贡献。
同样重要的是感谢 TalkGo 社区核心成员 qcrao 和 eddycjy 的持续而鼓舞人心的讨论和分享。
如果没有他们的支持,此文档无法完成。
许可
golang.design/history | CC-BY-NC-ND 4.0 © changkun