TopGit tracks PyO3/maturin-action on GitHub. The project has 189 stars. GitHub Action to install and run a custom maturin command with built-in support for cross compilation
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
If you want to build and publish a Python extension module for common Python versions, operating systems, and CPU architectures,
take a look at the following examples:
messense/crfs-rs: PyO3 abi3 wheel example
messense/rjmespath-rs: PyO3 abi3 wheel with Rust nightly toolchain example
astral-sh/uv: Hardened binary publishing example
milesgranger/pyrus-cramjam: PyO3 non-abi3 wheel example
messense/auditwheel-symbols: bin binding example using MUSL libc
adriangb/graphlib2: PyO3 abi3 wheel
pydantic/pydantic-core: PyO3 non-abi3 wheel with PyPy support example
messense/py-dissimilar: PyO3 non-abi3 wheel with PyPy support example
Inputs
Name
Required
Description
Type
Default
command
No
maturin command to run
string
build
args
No
Arguments to pass to maturin subcommand
string
maturin-version
No
The version of maturin to use. Must match a tagged release
string
latest
manylinux
No
Control the manylinux platform tag on linux, ignored on other platforms, use auto to build for lowest compatible
string
Defaults to auto for the publish command
target
No
The --target option for Cargo
string
container
No
manylinux docker container image name
string
Default depends on target and manylinux options, Set to off to disable manylinux docker build and build on the host instead.
docker-options
No
Additional Docker run options, for passing environment variables and etc.
string
rust-toolchain
No
Rust toolchain name.
string
Defaults to stable for Docker build. To use the latest available version for the host build, the user must specify this in the CI config or repo config.
rustup-components
No
Rustup components
string
Defaults to empty
working-directory
No
The working directory to run the command in
string
Defaults to the root of the repository
sccache
No
Enable sccache for faster builds
boolean
Defaults to false
before-script-linux
No
Script to run before the maturin command on Linux
string
manylinux Docker container
By default, this action uses the following containers for supported architectures and manylinux versions.
You can override it by supplying the container input.
Note that if use official manylinux docker images for platforms other than x86_64 and i686,
you will need to setup QEMU before using this action, for example
Note that the actions/setup-python action won't affect manylinux build since it's containerized,
so if you want to build for certain Python version for Linux, use -i pythonX.Y in the args option in
PyO3/maturin-action instead, for example
To build for every available interpreter at once — including the free-threaded builds — use
--find-interpreter; see Free-threaded CPython below.
Free-threaded CPython
maturin builds wheels for the free-threaded ("no-GIL") CPython
builds automatically when you pass --find-interpreter and a free-threaded interpreter is
available. Free-threaded interpreters carry a t suffix (python3.14t, python3.15t, …); maturin
discovers the officially supported ones (CPython 3.14 and newer) the same way it discovers the
regular builds — the experimental 3.13t is not discovered automatically. Discovery needs a
reasonably recent maturin, which the action installs by default.
Linux (manylinux)
No configuration needed — the default manylinux containers ship the free-threaded interpreters, and
the action puts every interpreter under /opt/python on PATH, so --find-interpreter finds them:
setup-python exposes the free-threaded build under its t-suffixed name (python3.14t, or
python3.14t.exe on Windows), which is what --find-interpreter looks for.
Windows: build the regular and free-threaded interpreters in separate jobs
On Windows, co-installing the regular and free-threaded interpreters of the same minor version in
one setup-python step can fail
(python/cpython#127294,
#313). Use a matrix with one interpreter per
job instead.
Stable ABI (abi3 / abi3t)
The free-threaded build has its own stable ABI, abi3t
(PEP 803, added in CPython 3.15), distinct from the
GIL-enabled abi3. PyO3 exposes both as Cargo features, and projects can enable both when they
want stable ABI wheels by default:
pyo3 = { version = "0.29", features = ["abi3-py310", "abi3t-py315"] }
One maturin invocation selects at most one stable ABI family, so do not expect one
--find-interpreter build to emit both forward-compatible wheels. To publish a complete wheel set
for current non-EOL CPython releases, run separate maturin builds with different interpreters. The
same default Cargo features can be used for each build:
The abi3-py310 wheel supports GIL-enabled CPython 3.10 and newer. The abi3t-py315 wheel
supports CPython 3.15 and newer, both GIL-enabled and free-threaded. Free-threaded CPython 3.14
predates abi3t, so the python3.14t build produces the version-specific cp314-cp314t wheel.
If stable ABI support is behind a project feature, pass that feature to both builds.
If a project enables only abi3 (no abi3t), --find-interpreter builds no free-threaded stable
ABI wheel; request a version-specific free-threaded wheel explicitly with, e.g., -i python3.14t.
Hardening Release pipelines
We recommend the following steps for hardening release pipelines:
When targeting PyPI, set --compatibility pypi to activate its pre-upload check
Set an explicit manylinux: version for each target to prevent silent regressions
Pin both maturin-action and maturin version, and use a service such as renovate to update them
No homepage URL was recorded for PyO3/maturin-action in TopGit's last sync. The README tab above frequently contains screenshots and demo links, or check the repository description on GitHub.
How active is development on PyO3/maturin-action?
The most recent commit recorded on PyO3/maturin-action was 9 days ago, based on the GitHub push timestamp. The repository has 56 forks — one of the better signals of community interest.
Is PyO3/maturin-action open source?
Yes — PyO3/maturin-action ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/PyO3/maturin-action.
What license does PyO3/maturin-action use?
PyO3/maturin-action is released under the MIT license. Always verify the LICENSE file directly on GitHub for the authoritative terms — license strings can be edited out of sync with a project's actual stance.
What topics is PyO3/maturin-action associated with?
GitHub's repository topics for PyO3/maturin-action: "cffi", "github-actions", "hacktoberfest", "manylinux", "maturin", "pyo3", "rust-cpython", "uniffi". TopGit's editorial category is open-source.
Where do I read more about PyO3/maturin-action?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/PyO3/maturin-action is the definitive source.
Read full README in the tab above.
Want a second opinion on maturin-action?
Ask an AI that can read this page — one click and you get its take on maturin-action.