Go: A Documentary
by Changkun Ou <changkun.de> (and many inputs from contributors)
This document collects many interesting (publicly observable) issues, discussions, proposals, CLs, and talks from the Go development process, which intends to offer a comprehensive reference of the Go history.
Disclaimer
- Most of the texts are written as subjective understanding based on public sources
- Factual and typo errors may occur. Referring to the original link if some text conflicts to your understanding
- PRs are very welcome for new content submission, bug fixes, and typo fixes
- Use Issues for discussions
Sources
There are many sources for digging the documents that relate to Go's historical design, and here are some of the official sources:
- go.dev/blog
- dev.golang.org
- build.golang.org
- farmer.golang.org
- 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
Origin
Go is a big project driven by a tiny group of people and the crowd of wisdom from the language user community. Here are some core committers to the project if you are interested in following their excellent work.
Go's origin is attractive without doubts. By listening to the talks held by these people, you could learn more about their oral history and fun stories behind the great work.
For instance, here are some exciting talks regarding the historical feats
in Go might be your starting points (as a subjective recommendation):
talk/rob2007, talk/rob2009, talk/rob2010b, talk/rob2010d,
talk/rob2011a, talk/rob2013a, talk/rob2019, talk/robert2015,
talk/russ2014, steve2019b, etc.
Timeline
A timeline helps you identify the point in time about a document that is reflected in Go versions.
For what changed in the runtime and compiler in each of these releases, including internal changes that release notes leave out, see the runtime and compiler history reconstructed from commits (Go 1.0 to 1.28). Its paths not taken page collects work that was built or designed but never landed in that form, such as the request-oriented collector and lock-free channels, with the reasons each one stopped.
| Version | Release Expected/Actual Date | Days Since Last Release (+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) |
The historical release notes may helpful for general information:
- doc/go1release Go Release History
- doc/go1prerelease Pre-Go 1 Release History
- doc/go0release Weekly Release History (Before Go 1)
Fun Facts
- cl/1 Brian Kernighan. Go's first commit. Jul 19, 1972.
- issue/9 I have already used the name for MY programming language. Nov 11, 2009
- issue/2870 9 is prime if it's a hot day. Feb 3, 2012
- doc/gophercount How Many Go Developers Are There?. November 1, 2019.
- discuss/google-owns-go Russ Cox's response on "Go is Google's language, not ours"
Acknowledgements
The document author would like to first thank the TalkGo community creator Mai Yang's champion sponsorship for the golang.design initiative. His creation of the TalkGo significantly changed the Go community in China. He is also a great person that is actively contributing to all kinds of Go related projects.
It is also important to thank the continuing, inspiring discussion and sharing with the TalkGo community core members qcrao, aofei, and eddycjy.
The document would not be organized without all of the supports from them.
License
golang.design/history | CC-BY-NC-ND 4.0 © changkun