Freedom251 › Python Package Managers
Maturin

What Maturin is
Maturin turns Rust projects into Python packages, covering Rust crates with Python bindings and Rust binaries. It supports PyO3, cffi, UniFFI, and binary bindings, and builds wheels for Python 3.8 and later, with basic support for PyPy and GraalPy. Its core commands cover project creation and local development as well as packaging: `maturin new` creates a configured Cargo project, `maturin build` builds wheels into `target/wheels` by default, and `maturin develop` builds and installs a module in the current virtual environment. The develop command is faster, though it does not support every feature available when installing after a build. With `pyproject.toml` configuration and the `--sdist` option, Maturin can also build source distributions. Built packages can be uploaded to PyPI, and the guide recommends `uv publish` for packages produced by `maturin build`. Installation choices include binary downloads, pipx, uv, and pip. Maturin supports wheel building on Windows, Linux, macOS, and FreeBSD. For broadly usable Linux wheels, the guide recommends a manylinux Docker image or building with zig. The software is free and licensed under Apache License 2.0 or MIT, at the user's choice.
Who it suits
Maturin suits Rust developers who want to package crates with Python bindings or Rust binaries for Python, including projects targeting Python 3.8 and later. It also fits maintainers who build wheels or source distributions and publish packages to PyPI.
What it does well
- Supports PyO3, cffi, UniFFI, and binary bindings.
- Builds wheels for Python 3.8 and later.
- Creates and installs projects with dedicated workflow commands.
- Can generate GitHub Actions workflows for release artifacts.
- Licensed under Apache License 2.0 or MIT.
What to know first
- The faster `maturin develop` workflow lacks some build-and-install features.
- cffi and binary projects require an explicit bindings setting.
- Broadly usable Linux wheels call for manylinux or zig.
Getting started
- Install Maturin using a binary download, pipx, uv, or pip.
- Run `maturin new` to create a configured Cargo project.
- Use `maturin develop` to install a module in the current virtual environment, or `maturin build` to create wheels.
- Configure `pyproject.toml` and use `--sdist` if you need a source distribution.
- Publish built packages to PyPI; the guide recommends `uv publish` for packages built with `maturin build`.
Verdict
Choose Maturin if you need a free tool to build Python packages from Rust projects, with several binding types and PyPI publishing support. Look elsewhere if you need an all-features development install workflow or automatic binding detection for cffi and binary projects.
Questions
How much does Maturin cost?
Maturin is free software.
Which Python versions does it support?
It builds wheels for Python 3.8 and later, with basic PyPy and GraalPy support.
Which bindings can it package?
Maturin supports PyO3, cffi, UniFFI, and binary bindings. cffi and binary projects need a bindings setting.
Can Maturin publish packages to PyPI?
Yes. It can upload packages to PyPI, and its guide recommends `uv publish` for packages built with `maturin build`.
Which operating systems does Maturin support?
Wheel building is supported on Windows, Linux, macOS, and FreeBSD. Downloadable binaries are built for Windows, Linux, and macOS.
What license does Maturin use?
It is licensed under Apache License 2.0 or MIT, at the user's option.
Facts from Maturin's own pages
- Bindings
- It supports PyO3, cffi, UniFFI, and binary bindings. · maturin.rs, 7 Oct 2026
- Bindings limitation
- For cffi and binary projects, the `bindings` setting is required because Maturin cannot automatically detect those bindings. · maturin.rs, 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. · maturin.rs, 7 Oct 2026
- Build workflow
- The `maturin build` command builds wheels into `target/wheels` by default and does not upload them. · maturin.rs, 7 Oct 2026
- CI integration
- The `maturin generate-ci` command can generate a GitHub Actions workflow for building and publishing release artifacts. · maturin.rs, 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`. · maturin.rs, 7 Oct 2026
- Development workflow
- The `maturin develop` command builds a crate and installs it as a Python module in the current virtual environment. · maturin.rs, 7 Oct 2026
- Installation
- The guide lists binary downloads, pipx, uv, and pip as installation options. · maturin.rs, 7 Oct 2026
- Integrations
- The guide describes integration with tox and recommends using uv to publish packages with `uv publish`. · maturin.rs, 7 Oct 2026
- License
- Maturin is licensed under either Apache License 2.0 or MIT, at the user's option. · maturin.rs, 7 Oct 2026
- 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. · maturin.rs, 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. · maturin.rs, 7 Oct 2026
- Operating systems
- The guide lists Windows, Linux, macOS, and FreeBSD as supported wheel-building platforms. · maturin.rs, 7 Oct 2026
- Package publishing
- Maturin can upload built packages to PyPI. · maturin.rs, 7 Oct 2026
- Packaging
- Maturin can build source distributions when configured through `pyproject.toml` and invoked with `--sdist`. · maturin.rs, 7 Oct 2026
- Platform releases
- Downloadable binaries are built for Windows, Linux, and macOS, with listed architectures including x86, ARM, and PowerPC variants. · maturin.rs, 7 Oct 2026
- Publishing
- The guide says Maturin can upload packages to PyPI and recommends `uv publish` for publishing packages built with `maturin build`. · maturin.rs, 7 Oct 2026
- Purpose
- Maturin builds and publishes Rust crates with Python bindings, as well as Rust binaries, as Python packages. · maturin.rs, 7 Oct 2026
- Python interpreters
- Maturin has basic PyPy and GraalPy support. · maturin.rs, 7 Oct 2026
- Python support
- The guide says Maturin supports building wheels for Python 3.8 and later, with basic PyPy and GraalPy support. · maturin.rs, 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. · maturin.rs, 7 Oct 2026
- Supported Python versions
- Maturin supports building wheels for Python 3.8 and later. · maturin.rs, 7 Oct 2026
- Trusted publishing
- Generated GitHub Actions workflows can use PyPI trusted publishing with OpenID Connect instead of an API token. · maturin.rs, 7 Oct 2026
Where Maturin stands on Freedom251
- Python Package Managers#17 of 27