Prior to the backend framework rewrite in 2020, the project made use of only one intermediate representation (IR) across all compilation stages prior to machine code emission, namely CLIF (Cranelift IR Format). The old design made use of
instruction legalizations, which involved transforming the high-level IR continuously until each CLIF instruction corresponded to an instruction of the target machine, at which point the
executable code could be emitted. In 2020, the backend was rewritten to use a separate, machine-specific IR called
VCode for later compilation stages instead. After this rewrite, a high-level input CLIF would be optimized by a middle layer before being lowered into
VCode, which would be further transformed by remaining passes in the backend. though it was later removed. In 2022, a new
register allocator, which was adapted from the register allocator from
IonMonkey, was added. In addition, the backend framework was reworked to utilize ISLE (
Instruction Selection/Lowering Expressions DSL), another DSL in the project that was made to ease the development of the instruction selection stage in backends. The mid-end saw addition of optimization passes that make use of
e-graphs in 2022. The optimization passes are enabled by default starting in 2023. == Applications ==