Go: A Documentary

Go 1.18

Part II · master 46fd547d89..936c7fbc1c · 1569 in-scope commits

Generics land: types2 plus GC-shape stenciling on the old typechecker. The register ABI spreads to arm64 and ppc64. The pacer is redesigned to count stacks and globals. GOAMD64 levels appear. Defers become argless closures. pclntab starts losing relocations.

Each area lists the stage every thread reached in this release (with what was left open afterwards), then changes that are not part of a thread. Thread names link to the full thread on its topic page.

Memory management

From Runtime: memory allocator and garbage collector (Go 1.18–1.28)

Other changes

Scheduler and concurrency

From Runtime: scheduler, timers, channels, locks and synchronization (Go 1.18–1.28)

Other changes

Data structures and type metadata

From Runtime: maps, built-in data structures, hashing, randomness and type metadata (Go 1.18–1.28)

Other changes

Diagnostics and knobs

From Runtime: tracing, profiling, metrics and diagnostics (Go 1.18–1.28)

Other changes

OS layer, stacks and panics

From Runtime: OS and platform layer, stacks, panics and tracebacks (Go 1.18–1.28)

Other changes

Compiler frontend · types2

From Compiler frontend: the types2 type checker (Go 1.18–1.28)

Other changes

Compiler frontend · syntax, IR, generics

From Compiler frontend: syntax, IR, unified IR and the generics implementation (Go 1.18–1.28)

Other changes

Middle end and SSA optimizer

From Compiler: middle end and SSA optimization (Go 1.18–1.28)

Other changes

Backends and assemblers · architectures, ABI

From Compiler backend: architectures, register allocation, ABI and assemblers (Go 1.18–1.28)

Other changes

Linker and object files

From Linker, object files and debug info (Go 1.18–1.28)

Other changes