the biggest gap in most compiler courses is the backend. you spend weeks on parsing and type checking, then the instructor hand-waves over register allocation and instruction selection as "out of scope." but thats where most of the interesting engineering problems live - the NP-hard graph coloring, the phase ordering problem, the tension between optimization and compile time.
interactive visualizations would help enormously here. the cranelift or LLVM IR transformations are nearly impossible to reason about from text dumps alone. being able to step through an optimization pass and see how it rewrites the IR graph would make concepts like common subexpression elimination or loop invariant code motion actually intuitive instead of abstract.
umairnadeem123•58m ago
interactive visualizations would help enormously here. the cranelift or LLVM IR transformations are nearly impossible to reason about from text dumps alone. being able to step through an optimization pass and see how it rewrites the IR graph would make concepts like common subexpression elimination or loop invariant code motion actually intuitive instead of abstract.