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 { ^block1v1(): builtin.func @foo: builtin.function <()->(builtin.integer si64)> { ^entry_block2v1(): c0_op3v1_res0 = test.constant builtin.integer <0: si64>; test.return c0_op3v1_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. The LLVM dialect, although not complete, can be useful practically. It can,
for example, 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.
