Installation#

rdlfmt is a single self-contained binary. Pick whichever of these fits the toolchain you already have.

Prebuilt binary#

Needs no toolchain of any kind:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/fischeti/rdlfmt/releases/latest/download/rdlfmt-installer.sh | sh

On Windows:

powershell -c "irm https://github.com/fischeti/rdlfmt/releases/latest/download/rdlfmt-installer.ps1 | iex"

Binaries for each platform are also attached to every release if you would rather place one yourself.

From PyPI#

Convenient if you already manage peakrdl this way. The package is the Rust binary in a wheel, not a Python program, so it pulls in nothing else:

uv tool install rdlfmt

Or without installing at all:

uvx rdlfmt --check .

pip install rdlfmt works the same way.

From crates.io#

If you have a Rust toolchain:

cargo install rdlfmt

From source#

Rust 1.88 or newer:

git clone https://github.com/fischeti/rdlfmt
cd rdlfmt
cargo build --release

As a PeakRDL plugin#

Installed into the same environment as PeakRDL, the wheel also registers a peakrdl fmt subcommand:

uv tool install peakrdl-cli --with rdlfmt
peakrdl fmt --check .

It takes the same arguments as the rdlfmt command and returns the same exit codes — it runs the very same binary, which ships in the wheel next to the peakrdl executable.

Unlike every other PeakRDL subcommand, fmt does not compile or elaborate your design. It reads the source text, so it can format a file that does not yet elaborate.