Skip to content
Opensource internals
  • Posts

Go

Go's HTTP Transport: The Connection Pool Rewrite and the Idle-Conn Trick

Oct 21, 2026 21 min read Jay Hubbert

The Transport pool was rewritten around a per-target clientConnPoolEntry with a channel-based lock, keeps two idle connections per host by default, and only recycles a connection …

GoInternalsNet HTTPPerformanceConcurrency

Read more →

Go's Hybrid Write Barrier: Why the GC Can Mark While You Write

Oct 21, 2026 18 min read Jay Hubbert

Go’s write barrier records both the old and the new value of every pointer slot into a per-P buffer, and the flush greys both — a Yuasa deletion barrier plus a Dijkstra insertion …

GoInternalsGarbage collectionWrite barrierConcurrency

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 →

Go's Interfaces Are Two Words and a Cached itab

Oct 21, 2026 18 min read Jay Hubbert

Interfaces are two machine words, the itab is usually emitted statically by the compiler, and the runtime keeps a lock-protected hash table for the cases it cannot know.

GoInternalsInterfacesRuntimePerformance

Read more →

Go's Linker Deletes Code You Never Call: Method Pruning and Reachability

Oct 21, 2026 13 min read Jay Hubbert

The Go linker flood-fills symbols from main.main, prunes type method tables unless an interface or reflection can reach them, and drops DWARF and the symbol table with -ldflags=-w …

GoInternalsLinkerCompilerPerformance

Read more →

← Newer Page 4 of 12 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·