Skip to main content

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

xDSL: A Python-native SSA Compiler Framework

xDSL is a Python-native compiler framework built around SSA-based intermediate representations (IRs). Users of xDSL build a compiler by assembling predefined domain-specific IRs and, optionally, defining their own custom IRs. xDSL uses multi-level IRs, meaning that during the compilation process, a program will be lowered through several of these IRs. This allows the implementation of abstraction-specific optimization passes, similar to the structure of common DSL compilers (such as Devito, Psyclone, and Firedrake). To simplify the writing of these passes, xDSL uses a uniform data structure based on SSA, basic blocks, and regions, which additionally enables the writing of generic passes.

The design of xDSL is influenced by MLIR, a compiler framework developed in C++, that is part of the LLVM project. An inherent advantage of a close design is the easy interaction between the two frameworks, making it possible to translate abstractions and programs back and forth. This results in one big SSA-based abstraction ecosystem that can be worked with through Python, making analysis through simple scripting languages possible. Additionally, xDSL can leverage MLIR's code generation and low-level optimization capabilities.

Installation

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

pip install xdsl

Using xDSL

To use xDSL we recommend following the xDSL Developer Setup to clone the repository including the notebooks. The following tutorials will present xDSL basic concepts, how to use its irdl dialect to define new dialects in a user-friendly way, and how to work with both xDSL and MLIR.

xDSL Developer Setup

To contribute to the development of xDSL follow the subsequent steps.

Developer Installation

git clone https://github.com/xdslproject/xdsl.git
pip install --editable .
# Optional installation of extra requirements
pip install --requirement requirements-optional.txt

Testing

The xDSL project uses pytest unit tests and LLVM-style filecheck tests. They can be executed from the root directory:

# Executes pytests which are located in tests/
pytest

# Executes filecheck tests
lit tests/filecheck

Formatting

All python code used in xDSL uses yapf to format the code in a uniform manner.

To automate the formatting within vim, one can use https://github.com/vim-autoformat/vim-autoformat and trigger a :Autoformat on save.

Metadata

Release files for xdsl 0.9.1

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.9.1
File Size Uploaded
xdsl-0.9.1.tar.gz 104.5 kB Details

Built distribution (wheel)

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

Total release size: 205.0 kB

Release files / xdsl-0.9.1.tar.gz

Download URL xdsl-0.9.1.tar.gz
Size 104.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b85aa3bc4bd55a7b359e45ad9bf330ddf1319b46eb9310184745f84e26937ff9
BLAKE2b-256 checksum
How to use checksums
8f4db8bd14cd7b1fc624df754867bdd7761fc461787dd1167b703c2174b483be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.1

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

Download URL xdsl-0.9.1-py3-none-any.whl
Size 100.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
315d6d6b40fd3f2664eee34f20d5d45a8220dc6b15f2fd25f3247e9ddbea6502
BLAKE2b-256 checksum
How to use checksums
0b8ea07a1cd7ba606dbb8f73c7a9108fde38bc4dbd484db033622785a0f93550
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.1

Release history Release notifications | RSS feed

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

This release

0.9.1 This release

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