“What is the minimal LISP language that can interpret itself? What is the smallest LISP that can compile itself?”
A 344 page deep dive into building Lisp from first principles. Starts with a metacircular evaluator and works up to a self-hosting compiler that spits out C code. The second edition adds Lambda Calculus coverage and historical context from the punch card era. Includes a working garbage collector and a 400 line self-hosting compiler. This is programming as craft, not as framework churn.