pliron is an extensible compiler IR framework in Rust, inspired by MLIR.
-
Install the rust toolchain.
-
cargo buildandcargo testshould build the compiler and run the testsuite. -
To see a simple IR constructed (by the print_simple test), use the following command:
cargo test print_simple -- --show-outputIt should print something like:
builtin.module @bar { ^block_1v1(): builtin.func @foo: builtin.function <()->(builtin.integer si64)> { ^entry_block_2v1(): c0_op_3v1_res0 = test.constant builtin.integer <0: si64>; test.return c0_op_3v1_res0 } }
-
plironprovides an LLVM Dialect and consequently anllvm-opttool that can parse LLVM-IR bitcode into the LLVM dialect and output LLVM-IR bitcode.
Add a dependence to the crate in your Rust project.
Note: pliron, is under active development. All effort is made to ensure that the code is well tested
and of production quality. Current efforts are directed at completing the LLVM dialect, which can
already compile bzip2.
We also plan to start work on supporting a cranelift dialect / backend soon.
- Introduction and motivation are covered in the introductory wiki article.
- The wiki also has a comparison of
plironwith other compiler projects, touching upon some design decisions. - Code documentation can be found on docs.rs.
