# Pliron: MLIR, But Native Rust

**URL:** <https://internals.rust-lang.org/t/pliron-mlir-but-native-rust/22563>\
**Category:** compiler\
**Created:** [March 15, 2025, 11:52am UTC](https://internals.rust-lang.org/t/pliron-mlir-but-native-rust/22563 "2025-03-15T11:52:46Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sam\_S](https://avatars.discourse-cdn.com/v4/letter/s/edb3f5/32.png) [@Sam\_S](https://internals.rust-lang.org/u/Sam_S)\
**Post date:** [March 15, 2025, 11:52am UTC](https://internals.rust-lang.org/t/pliron-mlir-but-native-rust/22563/1 "2025-03-15T11:52:46Z")

</div>

Saw a reddit post on this but can't find anymore...

This project's pretty cool, it's basically an IR (Intermediate Representation) framework for compilers, but instead of being a wrapper around MLIR or something like Melior/Inkwell, it's built from scratch, **almost entirely in safe Rust**. So theres no C API here.

Pliron isn't ready for production yet, but they're aiming high. The idea is to eventually have it easily integrated into Rust projects through [crates.io](http://crates.io). It tackles some of the headaches devs usually face when dealing with MLIR, especially those limitations of the mlir C API.

A change from MLIR:

- _Attributes_: Unlike MLIR, attributes are mutable and skip the uniqueness requirement, makes it more flexible.

Interfaces and Def-Use Chains: Builtin through Rust traits, similar to llvm and mlir but its integrated into Rust’s ecosystem.

> **[GitHub - vaivaswatha/pliron: Programming Languages Intermediate Representation](https://github.com/vaivaswatha/pliron)**
>
> Programming Languages Intermediate Representation

A introduction to pliron by the creator:

[![](https://img.youtube.com/vi/LobYuwcUaZA/maxresdefault.jpg "pliron: An Extensible IR Framework in Rust | Vaivaswatha Nagaraj | IICT'24") ](https://www.youtube.com/watch?v=LobYuwcUaZA)

_Originally posted on user.rust-lang, ppl said to post here instead..._

---

<div class="post-metadata">

**Author:** ![vaivaswatha](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/vaivaswatha/32/13111_2.png) [@vaivaswatha](https://internals.rust-lang.org/u/vaivaswatha)\
**Post date:** [April 1, 2025, 10:34am UTC](https://internals.rust-lang.org/t/pliron-mlir-but-native-rust/22563/2 "2025-04-01T10:34:11Z")

</div>

@Sam_S Thank you for posting about `pliron` here.

> Saw a reddit post on this but can't find anymore...

[This](https://www.reddit.com/r/Compilers/comments/132zkmx/pliron_an_extensible_compiler_ir_framework/) is the reddit post in the "Compilers" sub there. The one I cross-posted on the "Rust" sub was deleted by the mods.

> Pliron isn't ready for production yet

I just want to clarify that, when I say it isn't production ready in the README, I mean that it may not be useful to anyone yet, but as far as testing and overall quality is concerned, I aim for it to be production quality throughout.

> _Attributes_: Unlike MLIR, attributes are mutable and skip the uniqueness requirement, makes it more flexible.

This is correct. Attributes are similar to MLIR's [properties](https://discourse.llvm.org/t/rfc-introducing-mlir-operation-properties/67846), with the main difference being that they aren't stored "inline" with the Operation, but still in a dictionary. They just are not uniqued. It is, however, possible to unique Attributes, if necessary, using the `uniqued_any` utility within the framework.

---

<div class="post-metadata">

**Author:** ![Sam\_S](https://avatars.discourse-cdn.com/v4/letter/s/edb3f5/32.png) [@Sam\_S](https://internals.rust-lang.org/u/Sam_S)\
**Post date:** [April 4, 2025, 2:36pm UTC](https://internals.rust-lang.org/t/pliron-mlir-but-native-rust/22563/3 "2025-04-04T14:36:52Z")

</div>

> [@vaivaswatha](#):
>
> I aim for it to be production quality throughout.

Thank you for clarifying.

* * *

To my knowledge there is no other project like this in rust, melior and inkwell are rust wrappers on C APIs.

This project excites me and I am eager to see where it goes.

All the very best @vaivaswatha !

---

<div class="post-metadata">

**Author:** ![vaivaswatha](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/vaivaswatha/32/13111_2.png) [@vaivaswatha](https://internals.rust-lang.org/u/vaivaswatha)\
**Post date:** [April 4, 2025, 4:39pm UTC](https://internals.rust-lang.org/t/pliron-mlir-but-native-rust/22563/4 "2025-04-04T16:39:16Z")

</div>

Thank you very much @Sam_S

---

<div class="post-metadata">

**Author:** ![Bezalelohim](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/bezalelohim/32/14386_2.png) [@Bezalelohim](https://internals.rust-lang.org/u/Bezalelohim)\
**Post date:** [June 8, 2026, 2:09pm UTC](https://internals.rust-lang.org/t/pliron-mlir-but-native-rust/22563/5 "2026-06-08T14:09:36Z")

</div>

Is the new[CUDA OXIDE](https://github.com/NVlabs/cuda-oxide) based on this project ?

What the cuda oxide project is:

Cuda Oxide is a rust to native cuda **CUDA-Oxide** (released by NVIDIA Labs) is an experimental, custom-built backend compiler that allows developers to write GPU kernels in **pure, idiomatic Rust** and compile them directly to NVIDIA's PTX (Parallel Thread Execution) assembly

---

<div class="post-metadata">

**Author:** ![vaivaswatha](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/vaivaswatha/32/13111_2.png) [@vaivaswatha](https://internals.rust-lang.org/u/vaivaswatha)\
**Post date:** [June 8, 2026, 2:27pm UTC](https://internals.rust-lang.org/t/pliron-mlir-but-native-rust/22563/6 "2026-06-08T14:27:24Z")

</div>

Yes it is.

---

<div class="post-metadata">

**Author:** ![Bezalelohim](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/bezalelohim/32/14386_2.png) [@Bezalelohim](https://internals.rust-lang.org/u/Bezalelohim)\
**Post date:** [June 9, 2026, 9:19am UTC](https://internals.rust-lang.org/t/pliron-mlir-but-native-rust/22563/7 "2026-06-09T09:19:06Z")

</div>

We finally have a glimpse of native Rust Cuda ! Thanks, @vaivaswatha, do you work with Nvlabs ? Or do they take what you have done and patch/integrate things downstream ?

---

<div class="post-metadata">

**Author:** ![vaivaswatha](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/vaivaswatha/32/13111_2.png) [@vaivaswatha](https://internals.rust-lang.org/u/vaivaswatha)\
**Post date:** [June 9, 2026, 9:44am UTC](https://internals.rust-lang.org/t/pliron-mlir-but-native-rust/22563/8 "2026-06-09T09:44:31Z")

</div>

I do not work for Nvidia. Pliron is an independent project. The cuda-oxide compiler uses pliron as a part of its pipeline to represent various dialects.
