Maturin
Maturin is free, cross-platform software for packaging Rust projects as Python packages.
What Maturin is
Maturin is free, cross-platform software for packaging Rust projects as Python packages. It handles Rust crates with Python bindings and Rust binaries, supporting PyO3, cffi, UniFFI, and binary bindings. Wheels can target Python 3.8 and later, with basic PyPy and GraalPy support. The workflow includes `maturin new` for creating a configured Cargo project, `maturin build` for producing wheels in `target/wheels`, and `maturin develop` for installing a module in the current virtual environment. Source distributions can be built with `pyproject.toml` and `--sdist`. Packages can be uploaded to PyPI, with `uv publish` recommended for built packages. Installation options include binary downloads, pipx, uv, and pip. Wheel building supports Windows, Linux, macOS, and FreeBSD. Maturin is licensed under Apache 2.0 or MIT.
Good
- Supports PyO3, cffi, UniFFI, and binary bindings
- Builds wheels for Python 3.8 and later
- Can generate GitHub Actions workflows
- Supports PyPI publishing
- Free on Windows, Linux, and macOS
Watch out
- `maturin develop` lacks some build features
- cffi and binary projects require bindings configuration
- Linux compatibility may require manylinux or zig
Who it suits
Maturin suits Rust developers who need Python packages, wheels, source distributions, or PyPI publishing across major desktop platforms.
Verdict
Maturin covers the main Rust-to-Python packaging workflow, from project setup through wheel building and publishing. Its free cross-platform tooling is useful, though some projects need extra configuration or a full build instead of `develop`.
The facts
Each one read from Maturin's own pages, with the date it was checked.
What it does
- Bindings
- It supports PyO3, cffi, UniFFI, and binary bindings.checked 7 Oct 2026
- Bindings limitation
- For cffi and binary projects, the `bindings` setting is required because Maturin cannot automatically detect those bindings.checked 7 Oct 2026
- Build commands
- Its main commands are `maturin new` to create a configured Cargo project, `maturin build` to build wheels, and `maturin develop` to build and install a module in the current virtual environment.checked 7 Oct 2026
- Build workflow
- The `maturin build` command builds wheels into `target/wheels` by default and does not upload them.checked 7 Oct 2026
- CI integration
- The `maturin generate-ci` command can generate a GitHub Actions workflow for building and publishing release artifacts.checked 7 Oct 2026
- Development limit
- The guide notes that `maturin develop` is faster but does not support every feature available when installing after `maturin build`.checked 7 Oct 2026
- Development workflow
- The `maturin develop` command builds a crate and installs it as a Python module in the current virtual environment.checked 7 Oct 2026
- Installation
- The guide lists binary downloads, pipx, uv, and pip as installation options.checked 7 Oct 2026
- Integrations
- The guide describes integration with tox and recommends using uv to publish packages with `uv publish`.checked 7 Oct 2026
- License
- Maturin is licensed under either Apache License 2.0 or MIT, at the user's option.checked 7 Oct 2026
- Operating systems
- The guide lists Windows, Linux, macOS, and FreeBSD as supported wheel-building platforms.checked 7 Oct 2026
- Package publishing
- Maturin can upload built packages to PyPI.checked 7 Oct 2026
- Packaging
- Maturin can build source distributions when configured through `pyproject.toml` and invoked with `--sdist`.checked 7 Oct 2026
- Publishing
- The guide says Maturin can upload packages to PyPI and recommends `uv publish` for publishing packages built with `maturin build`.checked 7 Oct 2026
- Purpose
- Maturin builds and publishes Rust crates with Python bindings, as well as Rust binaries, as Python packages.checked 7 Oct 2026
- Python interpreters
- Maturin has basic PyPy and GraalPy support.checked 7 Oct 2026
- Python support
- The guide says Maturin supports building wheels for Python 3.8 and later, with basic PyPy and GraalPy support.checked 7 Oct 2026
- Security and compliance
- The guide describes manylinux compatibility checks for Linux wheels; no security certification or compliance program is stated on the pages reviewed.checked 7 Oct 2026
- Supported Python versions
- Maturin supports building wheels for Python 3.8 and later.checked 7 Oct 2026
- Trusted publishing
- Generated GitHub Actions workflows can use PyPI trusted publishing with OpenID Connect instead of an API token.checked 7 Oct 2026
Where it runs
- Linux compatibility
- For widely usable Linux wheels, the guide says to use a manylinux Docker image or build with zig; Maturin checks generated libraries and assigns wheel platform tags.checked 7 Oct 2026
- Linux wheel compatibility
- For widely usable Linux wheels on PyPI, the guide says to use a manylinux Docker image or build with zig.checked 7 Oct 2026
- Platform releases
- Downloadable binaries are built for Windows, Linux, and macOS, with listed architectures including x86, ARM, and PowerPC variants.checked 7 Oct 2026


