Skip to main content

Build Status for the Core backend PyPI version Downloads Downloads Code Coverage Zulip Status

xDSL: A Python-native SSA Compiler Framework

xDSL is a Python-native framework for building compiler infrastructure. It provides SSA-based intermediate representations (IRs) and Pythonic APIs to define, assemble, and optimize custom IRs—all with seamless compatibility with MLIR from the LLVM project.

Inspired by MLIR, xDSL enables smooth translation of programs and abstractions between frameworks. This lets users prototype compilers entirely in Python, while still accessing MLIR's powerful optimization and code generation pipeline. All IRs in xDSL employ a unified SSA-based data structure, with regions and basic blocks, making it easy to write generic analyses and transformation passes.

xDSL supports assembling compilers from predefined or custom IRs, and organizing transformations across a multi-level IR stack. This layered approach enables abstraction-specific optimization passes, similar to the architecture of projects like Devito, PSyclone, and Firedrake.

In short, xDSL makes it possible to:

  • Prototype compilers quickly in Python
  • Build DSLs with custom IRs
  • Run analyses and transformations with simple scripts
  • Interoperate smoothly with MLIR and benefit from LLVM's backend

Contents

Installation

To contribute to xDSL, follow the xDSL Developer Setup Guide.

To use xDSL as part of a larger project for developing your own compiler, just install xDSL via pip:

pip install xdsl

To quickly install xDSL for development and contribution purposes, use:

pip install xdsl[dev]

This may be useful for projects wanting to replicate the xDSL testing setup.

Note: This version of xDSL is validated against a specific MLIR version, interoperability with other versions is not guaranteed. The supported MLIR version is 22.1.2.

Subprojects With Extra Dependencies

xDSL has a number of subprojects, some of which require extra dependencies. To keep the set of dependencies to a minimum, these extra dependencies have to be specified explicitly, e.g. by using:

pip install xdsl[gui] # or [jax], [riscv]

Getting Started

Check out the dedicated Getting Started guide for a comprehensive tutorial.

To get familiar with xDSL, we recommend starting with our tutorial notebooks. The notebooks provide hands-on examples and documentation of xDSL's core concepts: data structures, the Python-embedded abstraction definition language, and end-to-end custom compilers construction, like a database compiler. There also exists a small documentation showing how to connect xDSL with MLIR for users interested in that use case.

We provide a Makefile containing a lot of common tasks, which might provide an overview of common actions.

Discussion

You can also join the discussion at our Zulip chat room, kindly supported by community hosting from Zulip.

Metadata

Release files for xdsl 0.73.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for xdsl 0.73.0
File Size Uploaded
xdsl-0.73.0.tar.gz 4.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for xdsl 0.73.0
File Interpreter ABI Platform
xdsl-0.73.0-py3-none-any.whl Python 3 none any Details

Total release size: 8.9 MB

Release files / xdsl-0.73.0.tar.gz

Download URL xdsl-0.73.0.tar.gz
Size 4.3 MB
Tags Source
SHA-256 checksum
How to use checksums
a65edcca3a649a315e4826c43343fcbff070b60e0099b74de18a17a89f5ffdb2
BLAKE2b-256 checksum
How to use checksums
bd02917e3d1b603110b2a9dbccbfa9b877941da5f62678a988b35c31f9ff1b61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release files / xdsl-0.73.0-py3-none-any.whl

Download URL xdsl-0.73.0-py3-none-any.whl
Size 4.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
6e32458c1ad31a65ea047d9696fe65b998943b211f0c1eedabf17e1e2ecc5b5c
BLAKE2b-256 checksum
How to use checksums
b4d562438ecc0e8b3d0ddfc6894385137c0354f8daa503f4a7fa968ea04b4ab5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release history Release notifications | RSS feed

This release

0.73.0 This release

2 release files

0.71.0

2 release files

0.70.0

2 release files

0.69.0

2 release files

0.67.0

2 release files

0.65.0

2 release files

0.64.0

2 release files

0.63.0

2 release files

0.62.1

2 release files

0.62.0

2 release files

0.61.0

2 release files

0.59.0

2 release files

0.58.0

2 release files

0.57.3

2 release files

0.57.1

2 release files

0.57.0

2 release files

0.56.2

2 release files

0.56.0

2 release files

0.55.3

2 release files

0.55.2

2 release files

0.55.1

2 release files

0.54.4

2 release files

0.54.3

2 release files

0.54.2

2 release files

0.54.1

2 release files

0.53.0

2 release files

0.52.0

2 release files

0.51.0

2 release files

0.50.0

2 release files

0.49.0

2 release files

0.47.0

2 release files

0.46.0

2 release files

0.45.0

2 release files

0.43.0

2 release files

0.42.0

2 release files

0.41.0

2 release files

0.39.0

2 release files

0.38.1

2 release files

0.38.0

2 release files

0.35.0

2 release files

0.31.1

2 release files

0.31.0

2 release files

0.30.1

2 release files

0.29.1

2 release files

0.28.0

2 release files

0.27.0

2 release files

0.26.0

2 release files

0.24.0

2 release files

0.23.0

2 release files

0.21.1

2 release files

0.21.0

2 release files

0.18

2 release files

0.17

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.9

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.1

1 release file

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page