finds.dev← search

// the find

PyO3/maturin

★ 5,646 · Rust · Apache-2.0 · updated Jun 2026

Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages

Maturin is the build tool for publishing Rust code as Python packages — it handles the entire pipeline from compiling a pyo3/cffi/uniffi crate to producing manylinux-compliant wheels and uploading to PyPI. If you're writing a Python extension in Rust, this is the tool the ecosystem has converged on. The pedigree is strong: polars, pydantic-core, ruff, and orjson all use it.

Zero extra config files required — a Cargo.toml and a pyproject.toml are enough to get a publishable wheel. Built-in reimplementation of auditwheel means manylinux compliance checking without a separate tool or docker-only workflow (zig cross-compilation is a real alternative). The `maturin develop` hot-reload loop is fast enough to not break your flow. The GitHub Action integration is first-class and the CI workflow generator (`maturin generate-ci`) removes the boilerplate most teams get wrong.

manylinux builds still require either a docker container or zig — the zig path works but has edge cases with C dependencies that will silently produce broken wheels. `maturin develop` does not support all features that a proper `pip install` after `maturin build` does, and the documentation buries what those differences are. Mixed Rust/Python project layout has a subtle ImportError pitfall (noted in the docs but not surfaced in the error message when you hit it). PyPy and GraalPy support is described as 'basic' and has been 'basic' for years — don't plan around it.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →