December 10, 2025
Nostalgia.exe vs LLVM bros
Revisiting "Let's Build a Compiler"
Vintage tutorial gets a Python & WebAssembly glow-up as HN battles nostalgia vs 'use LLVM'
TLDR: A classic compiler tutorial was translated to Python and WebAssembly, making it easy to try today. Comments split between love for the simple, hands-on style and calls to use modern tools like LLVM, with bonus nostalgia over USENET still being alive—proof old lessons still teach new tricks.
A dev just gave the 35-year-old “Let’s Build a Compiler” a modern makeover, translating the beloved Pascal-and-68000 guide into Python and WebAssembly (a way to run code fast in the browser). Hacker News didn’t just clap — it turned into a reunion, a debate, and a meme-fest. The loudest cheerleaders call it the most accessible path into compilers, with one user saying it was an “eye opener” at age 17. Others swoon over its no-nonsense approach: skip the math class vibes and generate real code early, as shoo gushed.
But the modernists showed up with a vibe of “grandpa, hand me the keys,” dropping a link to the LLVM guide and chanting “just use modern tools.” That sparked a mini culture war: learn by building tiny, messy things vs start with industry-grade machinery. Meanwhile, pjmlp dropped a bombshell: the old-school USENET compilers group is still active, prompting jokes like “tell me you’re a compiler hipster without telling me.” Everyone agrees the new repo’s code isn’t optimized — and no one cares. The crowd wants clarity, not speed: readable steps, a testable “X” value, and that nostalgia-dripping KISS language sample. Verdict: the OG tutorial is back, and the comments are pure cinema.
Key Points
- •The article revisits Jack Crenshaw’s 1988–1995 compiler tutorial and explores its ongoing relevance.
- •The author translates the tutorial’s compilers into Python and targets WebAssembly instead of 68000 assembly.
- •A repository with TUTORIAL.md maps each original tutorial part to the new implementation for easy follow-along.
- •A KISS language sample from part 13 is compiled to WASM, illustrating procedures, loops, and by-reference parameter handling.
- •The generated code is minimally optimized and tested by running WASM outputs to verify expected results; a global variable is returned for test convenience.