Skip to content
Opensource internals
  • Posts

Compiler

Escape Analysis in Go: Why Your Local Variable Escaped

Oct 21, 2026 25 min read Jay Hubbert

Go’s escape analysis models variables as locations in a weighted graph, walks assignment paths looking for anything that outlives its stack frame, and stamps each variable with …

GoInternalsEscape analysisCompilerMemory

Read more →

Go Passes Arguments in Registers: The Register ABI and Its Transparent Wrappers

Oct 21, 2026 18 min read Jay Hubbert

Go’s internal ABI passes arguments in registers, uses fixed registers for the goroutine pointer and a zero value, and generates ABI wrappers so old assembly keeps working.

GoInternalsAbiCompilerPerformance

Read more →

Go's Experimental SIMD Package: Vector Registers Without Assembly

Oct 21, 2026 16 min read Jay Hubbert

Go’s SIMD package exposes portable vector types that the compiler lowers to AVX or NEON instructions, with a source-to-source rewrite pass that specialises code for the vector …

GoInternalsSimdCompilerPerformance

Read more →

Go's Generics: Dictionary Passing, Shape Stenciling and GC Shape

Oct 21, 2026 18 min read Jay Hubbert

Generic code is shared per shape, the concrete types arrive in a flat dictionary of machine words, and the shape’s layout is what makes the sharing safe.

GoInternalsGenericsCompilerRuntime

Read more →

Go's Inliner: A Budget of 80 Nodes and the Art of the Cheat Sheet

Oct 21, 2026 24 min read Jay Hubbert

The Go inliner charges one unit per IR node against a budget of 80, rejects defer/go/tailcall outright, and with a PGO profile it will inline hot call sites costing up to 2000.

GoInternalsInliningCompilerPgo

Read more →

← Newer Page 1 of 2 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·