Go: A Documentary

Go 1.19

Part II · master 936c7fbc1c..d723df76da · 735 in-scope commits

Soft memory limit (GOMEMLIMIT) and GC CPU limiter. Scavenger index redesign. Jump tables for switches. riscv64 register ABI. linux/loong64 port. Unified IR gains full generics support.

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