NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #888 most downloaded on PyPI
Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages
Last release 1 months ago
24 Aug 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
7 years old
184 releases · first in 2019
set UV_PYTHON when running maturin develop with uv by @davidhewitt in #3236
UV_PYTHON when running maturin develop with uv by @davidhewitt in #3236maturin build --pgo -i <version> with uv install by @davidhewitt in #3237Full Changelog: v1.14.1...v1.15.0
One column per quarter.
UV_PYTHON when running maturin develop with uv (#3236)maturin build --pgo -i <version> with uv install (#3237)MATURIN_PGO env var to activate --pgo (#3271)PyInit_{module_name} in UniFfi mode (#3275)musllinux_1_2 as musllinux_1_1 is EOL (#3280)Bump uraimo/run-on-arch-action to v3 to fix pytest job by @matusf in #3221
Full Changelog: v1.14.0...v1.14.1
Support parent-relative pyproject metadata in sdists by @Copilot in #3182
Full Changelog: v1.13.3...v1.14.0
__pycache__ and *.pyc files (#3202)--find-interpreters (#3206)fix: disable abi3 in pyo3 config for version-specific fallback builds by @trim21 in #3180
Full Changelog: v1.13.2...v1.13.3
fix: resolve test failures in distro packaging environments by @messense in #3129
~ install behind (#1922) by @pratyush618 in #3161lib.name in Cargo.toml by @Xuanmizhen in #3167--interpreter panic in PEP 517 backend by @messense in #3175generate-ci by @messense in #3176Cargo.toml pointing outside project root by @messense in #3178pyemscripten_*_wasm32 wheel platform tag by @messense in #3163Full Changelog: v1.13.1...v1.13.2
~ install behind (#1922) (#3161)lib.name in Cargo.toml (#3167)--interpreter panic in PEP 517 backend (#3175)generate-ci (#3176)Cargo.toml pointing outside project root (#3178)pyemscripten_*_wasm32 wheel platform tag (#3163)fix: fall back to placeholder for abi3 when found interpreters are too old by @messense in #3126
See also v1.13.0 release highlight: https://github.com/PyO3/maturin/releases/tag/v1.13.0
Full Changelog: v1.13.0...v1.13.1
No major intentional breaking changes are expected, but users with custom CI or packaging setups may want to validate their workflows after upgrading.
maturin 1.13.0 is a feature-rich release focused on better wheel generation, improved packaging workflows, and smoother cross-platform builds. This release adds new capabilities for stub generation and PGO builds, significantly improves wheel repair support on macOS and Windows, and includes a broad set of fixes for ABI tagging, source distributions, and platform-specific build behavior.
generate-stubs command and --generate-stubs build option.[tool.maturin.generate-ci.github] configuration.metadata_directory in build_wheel.This release also includes substantial internal refactoring across build orchestration, interpreter resolution, and command structure, plus dependency and CI updates that improve maintainability and reliability.
No major intentional breaking changes are expected, but users with custom CI or packaging setups may want to validate their workflows after upgrading.
--strip conflicting with --include-debuginfo in develop by @messense in #3057[tool.maturin.generate-ci.github] config support by @messense in #3066data symlink permission handling by @messense in #3069build_context into focused submodules by @messense in #3076.def file for zig + windows-gnu to export PyInit symbol by @messense in #3079-undefined dynamic_lookup via CARGO_ENCODED_RUSTFLAGS on macOS by @messense in #3083metadata_directory in build_wheel per PEP 517 by @messense in #3086WheelRepairer trait by @messense in #3112Full Changelog: v1.12.5...v1.13.0
--strip conflicting with --include-debuginfo in develop (#3057)[tool.maturin.generate-ci.github] config support (#3066)data symlink permission handling (#3069)build_context into focused submodules (#3076).def file for zig + windows-gnu to export PyInit symbol (#3079)-undefined dynamic_lookup via CARGO_ENCODED_RUSTFLAGS on macOS (#3083)metadata_directory in build_wheel per PEP 517 (#3086)--generate_stubs build options (#3105)WheelRepairer trait (#3112)Sync legacy_py.rs with upstream PyPI warehouse legacy.py
Full Changelog: v1.12.5...v1.12.6
feat: include debug info files (.pdb, .dSYM, .dwp) in wheels by @messense in #3024
maturin build --sdist wheel name/layout for excluded workspace crates by @messense in #3031target/maturin so this may cause breakage if you rely on it in standard cargo target/ locationFull Changelog: v1.12.4...v1.12.5
maturin build --sdist wheel name/layout for excluded workspace crates (#3031)Upgrade memmap2 version by @amy-kwan in #3021
Full Changelog: v1.12.3...v1.12.4
Ci: set crt-static for riscv64 and loongarch64 musl targets
maturin develop on Windows ARM with x86 Python (#3011)external_packages bindings from uniffi wheels (#3013)--sdist flag (#3014)include-import-lib option to bundle Windows import libraries in wheels (#3017)Fix: allow absolute paths for --sbom-include
--sbom-include (#3004)Fix crates.io trusted publishing
--sbom-include CLI argument for additional SBOM files (#2999)OUT_DIR assets in wheel builds (#3001)Use pypi compatibility validation for own CI
mymindstorm/setup-emsdk@v14 in generated GitHub Actions workflow (#2941)RECORD paths (on Windows) (#2965)Allow combining --compatibility pypi with other --compatibility values
--compatibility pypi with other --compatibility values (#2928)Support armv6l and armv7l in pypi compatibility
Fix manylinux2014 compliance check
* Fix failed release
Deprecate 'upload' and 'publish' CLI commands
Note: This release was yanked to a regression: https://github.com/PyO3/maturin/issues/2909
ModuleWriter to be easier to implement and useFix tagging for iOS x86_64 simulator wheels.
Fix wrong dependency on Homebrew liblzma on macOS by static linking liblama
Add tool.maturin.editable-profile option to override profile for editable package installations.
tool.maturin.editable-profile option to override profile for editable package installations.abi3 wheels on non-Windows platforms that aren't cross-compiling, the sysconfigdata of the interpreter used to run maturin will now be used, rather than a dummy interpreter.extension-module feature on PyO3 0.26+.add_directory() from ModuleWriter and make it an implementation detail for the specific impl.Fix regressions to interpreter platform detection on Windows from 1.9.5
Add builtin sysconfig for FreeBSD 14.2 amd64
build-details.jsonAdd a use-base-python option to pyproject.toml with the same behaviour as MATURIN_PEP517_USE_BASE_PYTHON.
use-base-python option to pyproject.toml with the same behaviour as MATURIN_PEP517_USE_BASE_PYTHON.Fix adding project.license-files to source distributions.
project.license-files to source distributions.Fix PEP 639 implementation, use License-Expression over License.
License-Expression over License.Fix absolute license file path from Cargo.toml in #2667
Cargo.toml in #2667Add full PEP 639 support for project.license and project.license-files in #2647.
project.license and project.license-files in #2647.--compatibility pypi to only build wheels with platform tags that can also be uploaded to PyPI. This blocks e.g. building for riscv64, which is supported by manylinux, but not by PyPI.Allow specifying compression method and level, in both build and develop modes, in #2625.
Print a message when overriding platform tag from _PYTHON_HOST_PLATFORM in #2594
Install a Rust toolchain into a temporary directory when building maturin itself or a package and a Rust toolchain is missing. Set MATURIN_NO_INSTALL_
MATURIN_NO_INSTALL_RUST to disable this behavior. #2421maturin develop with latest uv in #2584PYO3_PYTHON env var support in #2534Fix relocating shared library for namespace modules in #2513
maturin develop --skip-install in #2504Exclude packages not in the dependency tree when finding bindings in #2426
Downgrade invalid version info in pyproject.toml error to warning in #2417
Don't add wheel data to sdist in #2367
pyo3 0.23+ in #2413Fix aarch64 Windows cross compilation in #2359
Nothing published for this version
Fix abi3 interpreter discovery on Windows in #2333
xwin to compile on Windows when MSVC compiler can build for the target in #2353Nothing published for this version
Set core metadata version to 2.4 to fix project.license.files handling in #2332
project.license.files handling in #2332Nothing published for this version
Improve wheel reproducibility by sorting external libraries #2261
Fix musllinux rpath for non-cffi bindings in #2233
Fix upload regression to pypi/testpypi in #2229
Fix cross compilation issues for armv7l, mips64 and ppc in #2204
Forward cargo package --list warnings in #2186
Remove old import hook in #2105, use maturin-import-hook instead
_PYTHON_HOST_PLATFORM in #2122MATURIN_PEP517_USE_BASE_PYTHON is set in #2134Detect compiling from Linux gnu to Linux musl as cross compiling in #2010
generate-ci in #2011develop command in #2015-v option in #2080Fix usage of --compatibility when run as a PEP517 backend in #1992
Bump metadata version from 2.1 to 2.3 in #1965. Source distributions created by maturin now have reliable metadata, meaning tool such as pip, uv and p
VIRTUAL_ENV and CONDA_PREFIX env vars in #1879-i python when cross compiling in #1891xwin using env vars in #1961Add support for cross compiling with cross in #1865
Un-deprecate MATURIN_PEP517_ARGS env var in #1820
MATURIN_PEP517_ARGS env var in #1820Use external uniffi-bindgen if no root package is configured in #1797
uniffi-bindgen if no root package is configured in #1797workspace.members in sdist in #1811MACOSX_DEPLOYMENT_TARGET for editable builds by default in #1815Refactor Cargo sdist generator to avoid rewriting local dependencies in #1741
--pip-path argument to develop command in #1753python.exe by default in build command on Windows in #1757uniffi-bindgen to be installed for uniffi bindings in #1762[build-system] requires in #1793Fix sdist build failure with workspace path dependencies by HerringtonDarkholme in #1739
Fix non interactive mode check when username/password was supplied from cli in #1737
Add non-interactive mode to upload command in #1722
Add basic support for implicit namespaces #1645
Add basic support for GraalPy in #1645
Your coding agent can read these notes before it upgrades. Set up the MCP server →