A New Back End for Cranelift
First of all, this is good, cranelift is good.Second of all, it's really funny how LLVM started focused on JIT with emphasis on compilation speed, and now is quite slow. Cranelift started in the same way, and now is gaining more passes and IRs, etc.I think more passes and IRs is good for clarity, correctness, and programming productivity, and single-pass designs are too brittle since the purpose of all software (the requirements) changes over time.The solution is we redouble our focus on fusion techniques to try to allow algorithms specified in multiple passes to be fused into a single pass. Then libraries like cranelift and LLVM can prevent a variety of passes, and one has the option to either go for compiler performance, picking only those that fuse or speed of compilation code, picking additional ones that don't fuse.