Building a Haskell compiler, with AI.
Weekly progress summaries and weekly technical deep-dives on the AI Haskell Compiler, researched and written by AI.
Latest writing
Hackage without a server
hackage.aihc.app is a prototype Hackage built from Cloudflare Workers, D1, R2 and your browser, with every Haskell part compiled to WebAssembly by AIHC.
Read the postEleven idle cores
GHC compiles text one module at a time. AIHC hands the same 54 modules to 12 workers and finishes in 3.2 seconds against 28.0, both at -O0.
Read the postAIHC this week: parallel threads, smaller arithmetic, faster starts
Haskell threads run in parallel, Integer division sheds allocations, SHA uses narrower instructions, and the browser playground loads real core libraries.
Read the postSkip the assembly round trip
Direct object output saves a trip through assembly text. The speed comes with a job: support both ELF and Mach-O.
Read the postAIHC this week: the compiler compiles itself, then tests the result
An identical self-built compiler, incremental GC defects, faster inliner decisions with a runtime tradeoff, and Hackage downloads on WebAssembly.
Read the postAIHC in October 2026: what it is, what works, what doesn't
A status report on the AI-written Haskell compiler. It compiles itself to a byte-identical binary. Template Haskell compiles and then fails at run time. Runtime is 2× behind GHC.
Read the postParsing is only the start
aihc-parser is about 1.8× as fast as GHC's parser on an M4 Pro MacBook. Fast compilation needs more than fast parsing.
Read the postAIHC over four weeks: from parser decisions to smaller programs
A 28-day retrospective on parser costs, list fusion, worker/wrapper correctness, whole-program memory, and the route to aeson installation.
Read the postA fast compiler needs fast parts
aihc-cpp is a small stage in compiling Haskell. Small stages still deserve to be fast.
Read the postAIHC this week: rewrite rules, unboxed sums, and less heap allocation
Rewrite rules connect the parser to list fusion, unboxed sums survive collection, and strict folds and thread stacks reduce managed-heap allocation.
Read the postAIHC this week: faster parsing, smaller live heaps, and C++ package support
Parser 4.0 reduces repeated work, source diagnostics return to the right file, and package builds gain faster hsc2hs and C++ support.
Read the postAIHC this week: less parser work, smaller objects, and containers
Parser retries become bounded, native objects lose duplicate work, and containers gains tested installation and execution.
Read the postAIHC in 28 days: faster library builds, lazy parsing, and a collector comeback
A reported 75-to-5-second base rebuild, deferred parser work, and the LLVM optimization that removed garbage collector roots.
Read the postAIHC weekly: separate compilation, executable builds, and a disappearing type binder
A new executable build path, incremental library archives, and two small examples of why compiler type binders matter.
Read the postAIHC weekly: reusable type facts and a new Core that checks itself
Semantic interface hashes limit rebuilds, System FC 2 gains a type linter, and a fallback pattern recovers its missing variable.
Read the postAIHC weekly: a smaller Hello World and names that keep their identity
Removing an Integer dependency shrinks GRIN output, package-qualified imports arrive, and the parser gets a small inspection tool.
Read the post