I created a new intermediate language, called Bril, for teaching my funky open-source, hands-on compilers course. Because it’s for education, Bril prioritizes simplicity and regularity over more typical compiler priorities like performance and concision. This is an overview of Bril’s design, its quirks, and the ecosystem that has grown up around it since 2019.
I highly recommend “Essentials of Compilation” by Jeremy Siek, which explores the same nano-pass approach using both Python and Racket. His course is easily one of my favorites.