#compilers
Wiki 15
- A Simplified Model of Fil-C Walks through how Fil-C makes C/C++ memory-safe — shadow AllocationRecord pointers, parallel "invisible bytes" for heap pointers, and a GC
- Anubis WASM vendor binary: reproducible builds are surprisingly hard Three ways the compiler broke determinism while vendoring a wasm2js binary for Anubis
- Bytecode-to-source mapping Four line-table designs for a bytecode VM, and what the JVM and Lua actually do instead
- Compiler codegen luck — a cosmetic edit that ran 6x faster A one-line C rewrite (*p++ = x vs *p = x; p++;) flips Clang between a branch and a branchless csel/cmov, changing quicksort speed 6x
- Conditional move (cmov / csel) A branchless instruction that picks one of two values from a flag; faster than a branch only when the branch is unpredictable
- Eliminating Golang bounds checks with unsafe unsafe.SliceData + unsafe.Add drops a bounds check the compiler won't — 2x faster LE loads
- Everyone Should Know SIMD Mitchell Hashimoto's five-step shape for everyday SIMD, worked through a Ghostty scan loop in Zig
- Inside Zig's incremental compilation How Zig rebuilds in 50-70ms: cached ZIR, an analysis-unit dependency graph, in-place linking
- Meta-Tracing JIT compilation technique that traces the interpreter executing guest code, not the guest code itself
- Passing Too Few Parameters and the Itanium NaT Bit Raymond Chen on the failure modes of calling a function with fewer parameters than declared, and how Itanium's register-stack engine architecturally enforces parameter count
- Pointer Provenance The idea that a pointer carries not just an address but an identity tied to the allocation it was derived from, which compilers must respect
- Reproducible Builds Bit-for-bit identical output from the same source, and why compilers keep breaking it
- Retrofitting JIT Compilers into C Interpreters How yk uses meta-tracing to automatically derive JIT compilers from C interpreters with ~400 lines of changes
- Speeding up the Gleam formatter with Rust arenas Cavalieri closed a 3-year-old Gleam issue by switching the pretty printer's boxed Document tree to arena references — ~24% faster, ~10% less peak memory
- WebAssembly Portable, sandboxed compilation target: core spec, interpreter vs AOT runtimes, wasm2js fallback
Toolbox 1
- yk Meta-tracing system that adds a JIT to an existing C interpreter for about 400 lines of changes
Books 1
- Introduction to Compilers and Language Design Free one-semester compiler textbook taking a C-like language down to working x86 or ARM assembly