#register #allocator #backtracking #another #exists #fuzzing #ion-monkey

no-std regalloc2

Backtracking register allocator inspired from IonMonkey

27 releases (9 breaking)

0.9.3 Oct 5, 2023
0.9.2 Jul 14, 2023
0.9.1 May 31, 2023
0.6.1 Feb 16, 2023
0.0.0 Dec 3, 2021

#24 in Memory management

Download history 87549/week @ 2023-12-13 62261/week @ 2023-12-20 44500/week @ 2023-12-27 83643/week @ 2024-01-03 86758/week @ 2024-01-10 107252/week @ 2024-01-17 98763/week @ 2024-01-24 102383/week @ 2024-01-31 122962/week @ 2024-02-07 121183/week @ 2024-02-14 127284/week @ 2024-02-21 128620/week @ 2024-02-28 122259/week @ 2024-03-06 122646/week @ 2024-03-13 132598/week @ 2024-03-20 92638/week @ 2024-03-27

491,707 downloads per month
Used in 346 crates (3 directly)

Apache-2.0 WITH LLVM-exception

400KB
8K SLoC

regalloc2: another register allocator

This is a register allocator that started life as, and is about 50% still, a port of IonMonkey's backtracking register allocator to Rust. In many regards, it has been generalized, optimized, and improved since the initial port.

In addition, it contains substantial amounts of testing infrastructure (fuzzing harnesses and checkers) that does not exist in the original IonMonkey allocator.

See the design overview for (much!) more detail on how the allocator works.

License

This crate is licensed under the Apache 2.0 License with LLVM Exception. This license text can be found in the file LICENSE.

Parts of the code are derived from regalloc.rs: in particular, src/checker.rs and src/domtree.rs. This crate has the same license as regalloc.rs, so the license on these files does not differ.

Dependencies

~2MB
~33K SLoC