Zirium
Zirium 0.0.8 is an experimental release. The API may change without a migration path.
Zirium is a Rust library for reading, inspecting, transforming, and writing textual MLIR. It also provides typed Python bindings. The parser keeps the original bytes, including comments, whitespace, malformed syntax, and invalid UTF-8. A separate semantic layer provides a compact representation for verification and editing.
The project is useful when a tool needs to understand MLIR without linking LLVM, and when source fidelity matters alongside semantic processing.
Zirium currently targets the textual syntax of MLIR 22.1. It has a deliberately narrow dialect surface and is not a replacement for all of MLIR's parser or ODS infrastructure.
The current release is intended for experimentation, tooling prototypes, and evaluation of the lossless syntax/semantic split. It does not promise broad dialect coverage, bytecode support, ODS/TableGen loading, or a stable API.
What it provides
- A byte-oriented lexer and lossless concrete syntax tree (CST).
- Recovery from malformed input with ranged diagnostics and useful outer structure.
- Stable machine-readable categories on semantic diagnostics.
- Standard
modulehandling and caller-provided func-like and call-like operation shapes. - Structural recovery of unknown custom operations, including nested regions, SSA declarations and uses, and trailing attribute dictionaries.
- Strict and best-effort lowering into a separate semantic document.
- Operations, regions, blocks, SSA values, types, attributes, locations, symbols, and dominance queries.
- Python inspection of exact type and attribute spellings, scalar attributes, and stable value identity.
- Form-independent operation roles for symbol names, signatures, and callees.
- Deterministic generic MLIR output and structural round-trip comparison.
- Buffered semantic edits that commit atomically.
- Conservative source-preserving output for documents lowered with hybrid retention.
- Rust and Python APIs over the same core implementation.
- Explicit limits for file size, token count, nesting, and large payloads.
A small example
import zirium
source = '''\
"builtin.module"() ({
%value = "example.make"() : () -> i32
"example.consume"(%value) : (i32) -> ()
}) : () -> ()
'''
parsed = zirium.parse_text(source)
assert parsed.original_bytes() == source.encode()
lowered = parsed.lower_strict("semantic")
if lowered.document is None:
for diagnostic in lowered.diagnostics:
print(diagnostic.range, diagnostic.message)
raise SystemExit(1)
document = lowered.document
document.validate_structure()
table = document.operation_table()
print([table.operation(index).name for index in range(table.count)])
print(document.canonical_bytes().decode(), end="")
Parsing and lowering are separate on purpose. A File owns the original bytes, tokens, CST, and syntax diagnostics. A Document owns resolved semantic data. This keeps malformed-source tooling from depending on a partly valid semantic model, while transformation code does not have to operate on syntax nodes.
Getting started
Zirium requires Rust 1.88 or newer. The Python package supports conventional CPython 3.11 through 3.14. Release artifacts are currently proven only for Linux x86_64 and macOS arm64 by CI; other platforms require a local source build with maturin and are not part of the platform promise. Wheels remain specific to each supported CPython version rather than using the stable ABI.
The getting-started guide covers:
- building and testing the Rust workspace;
- installing the Python extension into a virtual environment;
- parsing, lowering, verifying, and writing MLIR;
- choosing a retention profile and output mode.
The CLI examples
show how to query and edit small MLIR files with the zirium command.
For the shortest check from a fresh checkout:
cargo test --workspace
Install a published Python wheel with:
python -m pip install zirium
If a wheel is not available yet, build the extension locally using the getting-started guide.
Output modes
Zirium has three output paths, each with a different contract:
| Output | Source object | Contract |
|---|---|---|
| Original | Parsed file | Reproduces the input bytes exactly. |
| Canonical | Semantic document | Emits deterministic generic MLIR from semantic storage. |
| Preserving | Hybrid semantic document | Copies unchanged source and regenerates edited operations or blocks. |
Canonical output intentionally does not preserve comments, whitespace, aliases, or SSA spelling. Use original output when no semantic edit is needed, and hybrid retention when edits should leave unrelated source text alone.
Dialect support
Generic quoted operations are handled without a dialect registry. Unknown dialect types and attributes keep their balanced bodies as opaque values.
Registered custom syntax is currently a proving surface rather than broad MLIR dialect coverage. The built-in proving registry covers a fixed subset of Builtin, Func, Arith, and CF operations. A declarative registry can select from that same fixed set. The named stablehlo preset adds an initial custom-syntax subset for binary elementwise operations and stablehlo.return; it is not complete StableHLO support. Zirium does not load LLVM dialect definitions, interpret arbitrary ODS/TableGen files, or run Python callbacks while parsing.
The custom-format guide explains operation shapes, registry ownership, and the differences between Rust, Python, and the binary.
See compatibility and local wheel checks for the exact toolchain and CPython matrix. The corpus notes explain how syntax compatibility is tied to llvmorg-22.1.0.
Repository layout
crates/zirium/ Core Rust library
crates/zirium-python/ PyO3 extension module
python/zirium/ Python package and type declarations
python/tests/ Python API tests
tests/corpus/ Versioned MLIR compatibility corpus
docs/ Usage, compatibility, and architecture notes
fuzz/ Lexer and parser fuzz targets
The architecture notes include the syntax representation baseline and processing benchmarks.
Development checks
The complete local quality gate, including the supported Rust and Python versions, is documented in the compatibility guide. The CI workflow runs those same commands.
Python development details are documented in the getting-started guide. The release guide records the registry setup, package checks, and publication order.
License
Zirium's original code is available under the MIT or Apache 2.0 license. Some MLIR-derived or adapted test material retains the provenance and licensing information recorded in the corpus manifest.
Release notes are recorded in the changelog.
Metadata
Release files for zirium 0.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| zirium-0.0.8.tar.gz | 216.0 kB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| zirium-0.0.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.17+ x86-64 | Details |
| zirium-0.0.8-cp314-cp314-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 | macOS 11.0+ ARM64 | Details |
| zirium-0.0.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.17+ x86-64 | Details |
| zirium-0.0.8-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
| zirium-0.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.17+ x86-64 | Details |
| zirium-0.0.8-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
| zirium-0.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.17+ x86-64 | Details |
| zirium-0.0.8-cp311-cp311-macosx_11_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64 | Details |
Total release size: 8.6 MB
Release files / zirium-0.0.8.tar.gz
| Download URL | zirium-0.0.8.tar.gz |
|---|---|
| Size | 216.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
890b53d28bdae11e6e8f1b3e30fb69d7be847e9aacbe38cfff3e6dade1672197
|
|
BLAKE2b-256 checksum How to use checksums |
aa348b2f7f9011c8fd3fedd2aef117684ac02e37b1fbb75ef8af3e5bfc5a7254
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / zirium-0.0.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | zirium-0.0.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
04ddca56d258d07520f08295c21b102d3a10dfe0b68af8502bc03f7cb2916771
|
|
BLAKE2b-256 checksum How to use checksums |
d59427c26c0f77d9b01ed3731feb4bf3fad2fb70e2558e3972285f5945ccf875
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / zirium-0.0.8-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | zirium-0.0.8-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 994.9 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a594f8164dcba2b62c8d167685154e3fd542e6173acd6aadbd37dfc088b6933f
|
|
BLAKE2b-256 checksum How to use checksums |
78013bafa06d846272e91361369d0e73cc814e095587a2a18882788a107681d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / zirium-0.0.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | zirium-0.0.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
6374cefc81f74fd87c379bafeb30a38c48a85173ef1ce50e452437fe7bd52746
|
|
BLAKE2b-256 checksum How to use checksums |
e92b5abde4a711253f0e00cdbe04711bb05917a9ed56d0ab36ab51e87ab0ae18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / zirium-0.0.8-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | zirium-0.0.8-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 997.6 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8fb1dda0237bf5d385ae43d08454cc20b8b89a05f8d7c83918ad7627674072ba
|
|
BLAKE2b-256 checksum How to use checksums |
a7b4d7214eadf927cc917a62c5c9b52f5d5f07814b4fc683aea39e19bb157891
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / zirium-0.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | zirium-0.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
fbfe13a9b33548b66fea4f9f20f17f1997aebc4505d96e7665e64fa7a59dba0b
|
|
BLAKE2b-256 checksum How to use checksums |
a94574bfeeda7631e252c78237f8bf1b232fc7e3d14516487e4b0baebc006927
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / zirium-0.0.8-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | zirium-0.0.8-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 997.5 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4720bdca332de2063c32e469191bb631645a2c9b341c289d83d8a7f57fc648b8
|
|
BLAKE2b-256 checksum How to use checksums |
521a6794567818f3b8f9112b06e73f8b61b1e57676f1f1544af48a6bd92e83d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / zirium-0.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | zirium-0.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
6f00d9e464372cf8fd90e14aa1b7e38ce610163b4d39ae2a89694670010703c9
|
|
BLAKE2b-256 checksum How to use checksums |
77514726f6c50fad35ab70f90d07639993f6b15eae36fd27b2d791550fe7090f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / zirium-0.0.8-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | zirium-0.0.8-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 996.7 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
30afd9a726450061ae3beacb033a49e26471621cc96989d89bc3238d626b65e2
|
|
BLAKE2b-256 checksum How to use checksums |
33bfb08ab4618eeef8fd24af25082c86780c2a82b484b34d18dd113a4d018096
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logSecurity for zirium 0.0.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 9 files in this release have been uploaded with provenance metadata.
Attestation for zirium-0.0.8.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.