Go: A Documentary
English<br>简体中文
Dark Mode
Go: A Documentary
by Changkun Ou changkun.de> (and many inputs from contributors)
This document collects many interesting (publicly observable) issues,<br>discussions, proposals, CLs, and talks from the Go development process,<br>which intends to offer a comprehensive reference of the Go history.
Table of Contents
Go: A Documentary
Disclaimer
Sources
Origin
Committers
Core Authors
Compiler/Runtime Team
Library/Tools/Release/Security/Community
Group Interviews
Timeline
Language Design
General
Slice (1.2)
Package Management (1.4, 1.5, 1.7)
Type alias (1.9)
Defer (1.14)
Error values
Channel/Select
Generics
Iterator
Compatibility
Compiler Toolchain
Office Hours
Compiler
Linker
Debugger
Race Detector
Tracer
Lock Analysis
Builder
Modules
gopls
Testing, x/perf
Runtime Core
Scheduler
Execution Stack
Memory Management
Allocator
Collector
Statistics
Memory model
ABI
Misc
Standard Library
syscall
os, io, io/fs, embed
go/*
sync
Map
Pool
Mutex, RWMutex
Groups
atomic
time
context
encoding
image, x/image
math
Mobile
log
misc
Unclassified But Relevant Links
Fun Facts
Acknowledgements
License
Disclaimer
Most of the texts are written as subjective understanding based on public sources
Factual and typo errors may occur.<br>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<br>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<br>wisdom from the language user community. Here are some core committers<br>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<br>by these people, you could learn more about their oral history and fun<br>stories behind the great work.
For instance, here are some exciting talks regarding the historical feats<br>in Go might be your starting points (as a subjective recommendation):<br>talk/rob2007, talk/rob2009, talk/rob2010b, talk/rob2010d,<br>talk/rob2011a, talk/rob2013a, talk/rob2019, talk/robert2015,<br>talk/russ2014, steve2019b, etc.
Committers
Core Authors
The Go language was created by Rob, Robert, and Ken initially because<br>Rob was bothered by slow C++ compiling times, talked to Robert, and luckily<br>Ken was in the next office.<br>Later, Ian joined the project after showing interest, and<br>wrote the gccgo.<br>Rob and Ken are retired. Robert and Ian currently work on adding generics<br>to Go. Russ is also one of the core authors of the project in the early stage.<br>Back then, he was a newcomer at Google, and Rob invited Russ for joining<br>the Go team since he knew Russ from way back because of the<br>Plan 9 project. Russ worked on the early Go compiler, runtime, as well as the leap of<br>Go 1.5 bootstrap.<br>Now, Russ is the tech leader of the Go team.
Rob Pike. (Robert C. Pike, M. Sc.) Website, Blog, GitHub, Twitter, Reddit. (Retired)
Alma mater: University of Toronto (BS), California Institute of Technology
talk/rob2007 Advanced Topics in Programming Languages: Concurrency/message passing Newsqueak. May 9, 2007
talk/rob2009 The Go Programming Language. Nov 27, 2009.
talk/rob2010a Go Programming. Google I/O 2010. May 20, 2010
talk/rob2010b Origins of Go Concurrency style. Emerging Languages Camp 2010. July 21, 2010.
talk/rob2010c Public Static Void. OSCON 2010. Jul 22, 2010.
talk/rob2010d Another Go at Language Design. Aug 27, 2010.
talk/rob2011a Parallelism and Concurrency in Programming Languages. Feb 17, 2011.
talk/rob2011b Google Go: Concurrency, Type System, Memory Management and GC. Feb 25, 2011.
talk/rob2011c Lexical Scanning in Go. Aug 30, 2011.
talk/rob2012a Go Concurrency Patterns. Google I/O 2012. Jul 2, 2012.
talk/rob2012b Why Learn Go?. Sep 12, 2012.
talk/rob2013a The path to Go 1. Mar 14, 2013.
talk/rob2013b Go at Google. Apr 13, 2013.
talk/rob2013c Go Programming with Rob Pike and Andrew Gerrand. Aug 14, 2013.
talk/rob2013d Concurrency Is Not Parallelism. Oct 20, 2013.
talk/rob2014a Hello Gophers! Gophercon Opening Keynote. GopherCon 2014. Apr 24, 2014.
talk/rob2014b Implementing a bignum calculator. Sydney Go meeup. Nov, 19 2014.
talk/rob2015a The move from C to Go in the toolchain. GopherFest 2015. Jun 10, 2015.
talk/rob2015b Go Proverbs. Gopherfest. Nov 18, 2015.
talk/rob2015c Simplicity is Complicated. dotGo 2015. Dec 2, 2015.
talk/rob2016a The Design of the Go Assembler. GopherCon 2016. Aug 18,...