github PyO3/maturin v1.13.0

latest release: v1.13.1
18 hours ago

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.

Highlights

  • Added support for Profile-Guided Optimization (PGO).
  • Added PyO3 stub generation support, including a new generate-stubs command and --generate-stubs build option.
  • Re-implemented macOS wheel repair (delocate) and Windows wheel repair (delvewheel) in maturin, currently warn only when external shared libraries dependencies are required.
  • Added support for large zip files.
  • Added support for [tool.maturin.generate-ci.github] configuration.
  • Improved PEP 517 compatibility by respecting 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.

What's Changed

  • refactor: unified interpreter resolution pipeline by @messense in #3032
  • Sync legacy_py.rs with upstream PyPI warehouse legacy.py by @messense in #3053
  • refactor: decompose large modules into focused submodules by @messense in #3052
  • Keep cargo build artifact at original path after staging by @messense in #3054
  • Fix --strip conflicting with --include-debuginfo in develop by @messense in #3057
  • Fix abi3 wheel producing version-specific tags for CPython below minimum by @messense in #3061
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #3060
  • generate-ci: use uv pip for pytest steps to fix local wheel preference by @messense in #3063
  • Add [tool.maturin.generate-ci.github] config support by @messense in #3066
  • fix(sdist): handle parent workspaces and refactor sdist generation by @messense in #3055
  • test: refactor integration suite and switch mixed fixtures to cffi by @messense in #3068
  • Fix data symlink permission handling by @messense in #3069
  • fix: correct bugs in audit.rs typo and module_writer by @messense in #3070
  • perf: use lazy-initialized regexes instead of per-call compilation by @messense in #3071
  • refactor: extract duplicated helpers and reduce code repetition by @messense in #3072
  • refactor: split monster functions into focused methods by @messense in #3073
  • refactor: improve type safety and API clarity by @messense in #3074
  • refactor: cleanup anti-patterns by @messense in #3075
  • refactor: decompose build_context into focused submodules by @messense in #3076
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #3077
  • fix: skip legacy manylinux aliases not in PyPI allow-list by @messense in #3078
  • fix: auto-generate .def file for zig + windows-gnu to export PyInit symbol by @messense in #3079
  • ci: upgrade run-on-arch-action to ubuntu24.04, add deadsnakes PPA for newer Python by @messense in #3081
  • fix: pass -undefined dynamic_lookup via CARGO_ENCODED_RUSTFLAGS on macOS by @messense in #3083
  • feat: add Profile-Guided Optimization (PGO) support by @messense in #3085
  • Respect metadata_directory in build_wheel per PEP 517 by @messense in #3086
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #3088
  • Fix cargo path with puccinialin for Windows by @konstin in #3093
  • build(deps): bump tar from 0.4.44 to 0.4.45 by @dependabot[bot] in #3095
  • build(deps): bump rustls-webpki from 0.103.9 to 0.103.10 by @dependabot[bot] in #3096
  • ci: improve GitHub Actions generation logic by @messense in #3097
  • refactor: split BuildOptions and BuildContext into logical sub-groups by @messense in #3098
  • refactor: move subcommands to separate modules by @messense in #3099
  • refactor: decouple build orchestration from BuildContext by @messense in #3100
  • Upgrade pyo3 to 0.28 by @messense in #3101
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #3104
  • PyO3: Adds --generate_stubs build options by @Tpt in #3105
  • fix: prevent panic when no interpreters match abi3 minimum version by @messense in #3108
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #3109
  • Refactor to store CPython ABI metadata in a struct combining two enums by @ngoldbaum in #3110
  • refactor: introduce WheelRepairer trait by @messense in #3112
  • feat: re-implement delocate for repairing macOS wheels by @messense in #3114
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #3117
  • PyO3: Adds generate-stubs command by @Tpt in #3115
  • feat: re-implement delvewheel for repairing Windows wheels by @messense in #3116
  • Add auditwheel Warn mode, default to Warn on macOS/Windows by @messense in #3121
  • feat: Support large zip files by @EndPositive in #3118
  • Release v1.13.0 by @messense in #3124

New Contributors

Full Changelog: v1.12.5...v1.13.0

Don't miss a new maturin release

NewReleases is sending notifications on new releases.