Changelog
Unreleased
- Fix generated WHEEL Tag metadata to be spec compliant.
1.9.6
- Fix regressions to interpreter platform detection on Windows from 1.9.5
- Further fixes to interpreter detection for Windows ARM64
1.9.5
- Add builtin sysconfig for FreeBSD 14.2 amd64
- Fix issue searching lib dir containing Python 3.14
build-details.json - Fix detection of compatible interpreters on Windows ARM64
1.9.4
- Add a
use-base-pythonoption topyproject.tomlwith the same behaviour asMATURIN_PEP517_USE_BASE_PYTHON. - Add builtin sysconfigs for GraalPy
- Fix calculation of platform tag for FreeBSD
1.9.3
- Fix adding
project.license-filesto source distributions. - Fix relative Readme rewrite of the root crate in source distributions.
1.9.2
- Fix PEP 639 implementation, use
License-ExpressionoverLicense.
1.9.1
- Fix absolute license file path from
Cargo.tomlin #2667
1.9.0
- Add full PEP 639 support for
project.licenseandproject.license-filesin #2647. - Add
--compatibility pypito 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.
1.8.7
- Allow specifying compression method and level, in both
buildanddevelopmodes, in #2625. - Fix Windows free-threaded builds on Python 3.14 in #2632
1.8.6
- Print a message when overriding platform tag from
_PYTHON_HOST_PLATFORMin #2594 - Use the current python interpreter's version when the abi3 feature is set with no explicit version in #2597
1.8.5
- Fix release CI build
1.8.4
- 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_RUSTto disable this behavior. #2421 - Fix broken
maturin developwith latest uv in #2584 - Add
PYO3_PYTHONenv var support in #2534 - Sort RECORD file in wheel archives to make them deterministic in #2550
- Publish wheel for loongarch64 in #2548
- Add --compression-level option to build command in #2572
1.8.3
- Fix relocating shared library for namespace modules in #2513
- Don't install dependencies when running
maturin develop --skip-installin #2504 - Use emcc.bat to query version on Windows in #2478
- Bump the attest-build-provenance version in the generated ci file in #2484
- Fix platform tag on Solaris/Illumos in #2483
- Fix cargo run uniffi-bindgen when cross compiling in #2476
1.8.2
- Exclude packages not in the dependency tree when finding bindings in #2426
- Use uv automatically when running maturin develop inside uv-created virtualenv in #2433
- Consider abi3 minor version when resolving Python interpreters in #2437
- Handle archived dylibs on AIX in #2442
- Fix unnecessary rebuilds due to pyo3 config file modified time change in #2446
- Fix the name of the .data directory in the generated wheel in #2449
- Update minimal manylinux version for loongarch64 in #2451
1.8.1
- Downgrade invalid version info in
pyproject.tomlerror to warning in #2417 - Make
maturin developfail if version info is invalid in pyproject.toml in #2418
1.8.0
- Don't add wheel data to sdist in #2367
- Add sparcv9 architecture support in #2380
- Properly handle dynamic version in pyproject.toml in #2391
- Fix xwin cross compile on non-Windows system in #2391
- Fix interpreter selection for abi3 bindings in #2392
- Use the official recommended naming pattern for cffi module file in #2406
- Add Linux armv5te architecture support in #2409
- Only build Python 3.13t wheels by default for
pyo30.23+ in #2413
1.7.8
- Fix aarch64 Windows cross compilation in #2359
1.7.7
- Fix abi3 interpreter discovery on Windows in #2333
- Normalize python source directory path in #2343
- Use different binding dirs for different uniffi modules in #2348
- Limit minimal PyPy version based on bindings crate version in #2351
- Do not use
xwinto compile on Windows when MSVC compiler can build for the target in #2353
1.7.6
- Set core metadata version to 2.4 to fix
project.license.fileshandling in #2332
1.7.5
- Improve wheel reproducibility by sorting external libraries #2261
- Fix Readme and pyproject.toml inclusions for workspace where the bindings crate is not in the root in #2262
- Add support for GNU/Hurd target in #2306
- Add preliminary free-threaded Python wheel building support in #2310
1.7.4
- Fix musllinux rpath for non-cffi bindings in #2233
- Add GitHub Actions attestation support to generate-ci in #2234
1.7.3
- Fix upload regression to pypi/testpypi in #2229
1.7.2
- Fix cross compilation issues for armv7l, mips64 and ppc in #2204
- UniFFI: supports bindings generated from multiple crates in #2208
- Enable
--all-featureswhen building source distribution in #2215 - Fix rpath when module-name contains
.in #2219
1.7.1
- Forward
cargo package --listwarnings in #2186 - In source distributions, we move the readmes of path dependencies into the respective crate to avoid collision between different readmes in #2184
1.7.0 - 2024-07-07
- Initial iOS support in #2101
- Remove old import hook in #2105, use maturin-import-hook instead
- Bump MSRV to 1.74.0 in #2108
- Add support for overriding wheel tag with
_PYTHON_HOST_PLATFORMin #2122 - Don't add files to an archive more than once #2125
- Only use base python executable when
MATURIN_PEP517_USE_BASE_PYTHONis set in #2134
1.6.0 - 2024-06-04
- Detect compiling from Linux gnu to Linux musl as cross compiling in #2010
- Add musllinux support to
generate-ciin #2011 - Add uv support to
developcommand in #2015 - Add support for AIX target in #2030
- Remove rust-cpython support in #2044
- Add a global
-voption in #2080 - Detect target based on interpreter for pep517 build-wheel in #2088
- Use base executable when possible in PEP 517 build in #2094
1.5.1 - 2024-03-21
- Fix usage of
--compatibilitywhen run as a PEP517 backend in #1992 - Fix upload returning malformed summary error in #2002
1.5.0 - 2024-03-05
- 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 poetry could skip building them for version resolution.
- Allow identical
VIRTUAL_ENVandCONDA_PREFIXenv vars in #1879 - Reject
-i pythonwhen cross compiling in #1891 - Support uniffi-bindgen in cargo workspaces in #1909
- Add support for configuring
xwinusing env vars in #1961 - Add validation for crate/package name in new/init in #1943
- Add 32-bit RISC-V support in #1969
- Improve import hook changes in #1958
- Adjust cbindgen Overrides for CFFI in #1957
1.4.0 - 2023-12-02
1.3.2 - 2023-11-14
- Add support for uniffi library mode in #1729
- Un-deprecate
MATURIN_PEP517_ARGSenv var in #1820 - Fix missing member in Cargo.toml for sdist of nested workspace layout in #1828
- Escape display name in email addresses of wheel metadata in #1832
- Fix rewriting workspace Cargo.toml in sdist in #1841
- Fix glob workspace members matching in sdist in #1846
1.3.1 - 2023-10-24
- Use external
uniffi-bindgenif no root package is configured in #1797 - Fix wheel filename for GraalPy in #1802
- Add unittest skeleton to mixed Python/Rust projects in #1807
- Preserve trailing whitespace in new project files in #1808
- Fix missing
workspace.membersin sdist in #1811 - Don't set
MACOSX_DEPLOYMENT_TARGETfor editable builds by default in #1815
1.3.0 - 2023-10-02
- Refactor Cargo sdist generator to avoid rewriting local dependencies in #1741
- Added
--pip-pathargument todevelopcommand in #1753 - Ignore sdist output files when building sdist in #1756
- Use
python.exeby default inbuildcommand on Windows in #1757 - Don't require
uniffi-bindgento be installed for uniffi bindings in #1762 - Fix platform tag for graalpy in #1773
- Always set minor version to 0 when major version >= 11 for macOS in #1778
- Warning about incorrect maturin version pyproject.toml
[build-system] requiresin #1793
1.2.3 - 2023-08-17
- Fix sdist build failure with workspace path dependencies by HerringtonDarkholme in #1739
1.2.2 - 2023-08-14
- Fix non interactive mode check when username/password was supplied from cli in #1737
1.2.1 - 2023-08-14
- Add non-interactive mode to
uploadcommand in #1722 - Fix
link-native-librariescheck for emscripten target in #1724 - Add support for
ALL_PROXYtouploadcommand in #1727 - Handle renamed Rust dependency in sdist in #1728
- Fix invalid TOML when rewriting workspace inherited dependencies in #1733
1.2.0 - 2023-08-06
- Add basic support for implicit namespaces #1645
- Add Linux mips64 and mips architecture support in #1712
- Add
x86_64h-apple-darwintarget support in #1717
1.1.0 - 2023-06-10
- Add basic support for GraalPy in #1645
- Refactor abi tag to use
EXT_SUFFIXin #1648 - Add Linux loongarch64 architecture support in #1653
- Add
--skip-installoption tomaturin developin #1654
1.0.1 - 2023-05-28
- Add more Python 3.12 sysconfigs in #1629
- Fix panicking when no cargo build targets are selected in #1635
1.0.0 - 2023-05-23
- Add support for multiple
--config-settingsin PEP517 backend in #1624 - Remove deprecated
--universal2cli option in #1620, use--target universal2-apple-darwininstead.
0.15.3 - 2023-05-20
- Fix cross compile Apple universal2 wheels on non-macOS platforms by MisLink in #1613
- Add PEP 517
config_settingssupport in #1619, deprecateMATURIN_PEP517_ARGSin favor of the newbuild-argsconfig setting.
0.15.2 - 2023-05-16
- When determining the python module name, use pyproject.toml
project.nameover Cargo.tomlpackage.namein #1608 - Fix rewriting
dev-dependenciesin sdist in #1610
0.15.1 - 2023-05-07
- Fix finding interpreters from bundled sysconfigs in #1598
0.15.0 - 2023-05-07
- Breaking Change: Build with
--no-default-featuresby default when bootstrapping from sdist in #1333 - Breaking Change: Remove deprecated
sdist-includeoption inpyproject.tomlin #1335 - Breaking Change: Remove deprecated
python-sourceoption inCargo.tomlin #1335 - Breaking Change: Turn
patchelfversion warning into a hard error in #1335 - Breaking Change:
uniffi_bindgenCLI is required for buildinguniffibindings wheels in #1352 - Add Cargo compile targets configuration for filtering multiple bin targets in #1339
- Respect
rustflagssettings in cargo configuration file in #1405 - Add support for uniffi 0.23 in #1481
- Add support for custom TLS certificate authority bundle in #1483
- Bump MSRV to 1.64.0 in #1528
- Add wildcards support to publish/upload commands on Windows in #1534
- Add support for configuring macOS deployment target version in
pyproject.tomlin #1536 - Rewrite platform specific dependencies in
Cargo.tomlby viccie30 in #1572 - Add trusted publisher support in #1578
- Add new
gitsource distribution generator in #1587
0.14.17 - 2023-04-06
- Fix wrong
EXT_SUFFIXwhen cross compiling musllinux wheels for Python 3.11 in #1560
0.14.16 - 2023-03-26
- Deprecate
package.metadata.maturin.namein favor oftool.maturin.module-nameinpyproject.tomlin #1531
0.14.15 - 2023-03-03
- Add sdist and sccache support to
generate-cicommand
0.14.14 - 2023-02-24
- Add support for Emscripten in
generate-cicommand in #1484 - Add support for linking with pyo3 in abi3 debug mode on Windows in #1487
- Use default
ext_suffixfor Emscripten target if not provided inPYO3_CONFIG_FILEin #1491 - Deprecate
package.metadata.maturin.datain favor oftool.maturin.datainpyproject.tomlin #1492
0.14.13 - 2023-02-12
maturin developnow looks for a virtualenv.venvin the current or any parent directory if no virtual environment is active.- Add a new
generate-cicommand to generate CI configuration in #1456 - Deprecate
--universal2in favor ofuniversal2-apple-darwintarget in #1457 - Raise an error when
Cargo.tomlcontains removed python package metadata in #1471 - Use
extension_nameinstead ofmodule_namefor CFFI extensions in develop mode in #1476
0.14.12 - 2023-01-31
- Keep
dev-dependenciesin sdist when there are no path dependencies in #1441
0.14.11 - 2023-01-31
- Don't package dev-only path dependencies in sdist in #1435
0.14.10 - 2023-01-13
- Use module name specified by
[package.metadata.maturin]in #1409
0.14.9 - 2023-01-10
- Don't pass
MACOSX_DEPLOYMENT_TARGETwhen query default value from rustc in #1395
0.14.8 - 2022-12-31
- Add support for packaging multiple pure Python packages in #1378
- Fallback to sysconfig interpreters for pyo3 bindings in #1381
0.14.7 - 2022-12-20
- Add workspace lock file to sdist as a fallback in #1362
0.14.6 - 2022-12-13
- Allow Rust crate to be placed outside of the directory containing
pyproject.tomlin #1347 - Disallow uniffi bin bindings in #1353
- Update bundled Python sysconfigs for Linux and macOS
0.14.5 - 2022-12-08
- Support
SOURCE_DATE_EPOCHwhen building wheels in #1334 - Fix sdist when all Cargo workspace members are excluded in #1343
0.14.4 - 2022-12-05
- Expanded architecture support for FreeBSD, NetBSD and OpenBSD in #1318
- Better error message when upload failed with status code 403 in #1323
0.14.3 - 2022-12-01
- Bump MSRV to 1.62.0 in #1297
- Fix build error when required features of bin target isn't enabled in #1299
- Fix wrong platform tag when building in i386 docker container on x86_64 host in #1301
- Fix wrong platform tag when building in armv7 docker container on aarch64 host in #1303
- Add Solaris operating system support in #1310
- Add armv6 and armv7 target support for FreeBSD in #1312
- Add riscv64 and powerpc target support for FreeBSD in #1313
- Fix powerpc64 and powerpc64le Python wheel platform tag for FreeBSD in #1313
0.14.2 - 2022-11-24
- Tighten src-layout detection logic in #1281
- Fix generating pep517 sdist for src-layout in #1288
- Deprecate
python-sourceoption inCargo.tomlin favor of the one inpyproject.tomlin #1291 - Fix auditwheel with read-only libraries in #1292
0.14.1 - 2022-11-20
- Downgrade
cargo_metadatato 0.15.0 to fixmaturin buildon old Rust versions like 1.48.0 in #1279
0.14.0 - 2022-11-19
- Breaking Change: Remove support for specifying python package metadata in
Cargo.tomlin #1200. Python package metadata should be specified in theprojectsection ofpyproject.tomlinstead as PEP 621 specifies. - Initial support for shipping bin targets as wasm32-wasi binaries that are run through wasmtime in #1107.
Note that wasmtime currently only support the five most popular platforms and that wasi binaries have restrictions when interacting with the host.
Usage is by setting
--target wasm32-wasi. - Add support for python first
srcproject layout in #1185 - Add
--srcoption to generate src layout for mixed Python/Rust projects in #1189 - Add Python metadata support for
license-filefield ofCargo.tomlin #1195 - Upgrade to clap 4.0 in #1197. This bumps MSRV to 1.61.0.
- Remove
workspace.membersinCargo.tomlfrom sdist if there isn't any path dependency in #1227 - Fix auditwheel
libpythoncheck on Python 3.7 and older versions in #1229 - Use generic tags when
sys.implementation.name!=platform.python_implementation()in #1232. Fixes the compatibility tags for Pyston. - Set default macOS deployment target version if
MACOSX_DEPLOYMENT_TARGETisn't specified in #1251 - Add support for 32-bit x86 FreeBSD target in #1254
- Add
[tool.maturin.include]and[tool.maturin.exclude]and deprecate[tool.maturin.sdist-include]#1255 - Ignore sdist tar ball instead of error out in #1259
- Add support for
uniffibindings in #1275
0.13.7 - 2022-10-29
- Fix macOS
LC_ID_DYLIBfor abi3 wheels in #1208 - Pass
--lockedto Cargo when bootstrap from sdist in #1212 - Fix build for Python 3.11 on Windows in #1222
0.13.6 - 2022-10-08
- Fix
maturin developin Windows conda virtual environment in #1146 - Fix build for crate using
pyo3andbuild.rswithoutcdylibcrate type in #1150 - Fix build on some 32-bit platform by downgrading
indicatifin #1163 - Include
Cargo.lockby default in source distribution in #1170
0.13.5 - 2022-09-27
- Fix resolving crate name bug in #1142
0.13.4 - 2022-09-27
- Fix
Cargo.tomlin new project template in #1109 - Fix
maturin developon Windows when using Python installed from msys2 in #1112 - Fix duplicated
Cargo.tomlof local dependencies in sdist in #1114 - Add support for Cargo workspace dependencies inheritance in #1123
- Add support for Cargo workspace metadata inheritance in #1131
- Use
goblininstead of shelling out topatchelfto get rpath in #1139
0.13.3 - 2022-09-15
- Allow user to override default Emscripten settings in #1059
- Enable
--crate-type cdylibon Rust 1.64.0 in #1060 - Update MSRV to 1.59.0 in #1071
- Fix abi3 wheel build when no Python interpreters found in #1072
- Add
zig arsupport in #1073 - Fix sdist build for optional path dependencies in #1084
- auditwheel: find dylibs in Cargo target directory in #1092
- Add library search paths in Cargo target directory to rpath in editable mode on Linux in #1094
- Remove default manifest path for
maturin sdistcommand in #1097 - Fix sdist when
pyproject.tomlisn't in the same dir ofCargo.tomlin #1099 - Change readme and license paths in
pyproject.tomlto be relative topyproject.tomlin #1100. It's technically a breaking change, but previously it doesn't work properly. - Add python source files specified in pyproject.toml to sdist in #1102
- Change
sdist-includepaths to be relative topyproject.tomlin #1103
0.13.2 - 2022-08-14
- Deprecate manylinux 2010 support in #858. The manylinux project already dropped its support and the rustc compiler will drop glibc 2.12 support in 1.64.0.
- Add Linux mips64el architecture support in #1023
- Add Linux mipsel architecture support in #1024
- Add Linux 32-bit powerpc architecture support in #1026
- Add Linux sparc64 architecture support in #1027
- Add PEP 440 local version identifier support in #1037
- Fix inconsistent
Cargo.tomlandpyproject.tomlpath handling in #1043 - Find python module next to
pyproject.tomlifpyproject.tomlexists in #1044. It's technically a breaking change, but previously it doesn't work properly if the directory containingpyproject.tomlisn't recognized as project root. - Add
python-sourceoption to[tool.maturin]section of pyproject.toml in #1046 - Deprecate support for specifying python metadata in
Cargo.tomlin #1048. Please migrate to PEP 621 instead. - Change
python-sourceto be relative to the file specifies it in #1049 - Change
datato be relative to the file specifies it in #1051 - Don't reinstall dependencies in
maturin developin #1052 - Find
pyproject.tomlin parent directories ofCargo.tomlin #1054
0.13.1 - 2022-07-26
- Add 64-bit RISC-V support by felixonmars in #1001
- Add support for invoking with
python3 -m maturinin #1008 - Fix detection of optional dependencies when declaring
featuresinpyproject.tomlin #1014 - Respect user specified Rust target in
maturin developin #1016 - Use
cargo rustc --crate-type cdylibon Rust nightly/dev channel in #1020
0.13.0 - 2022-07-09
- Breaking Change: Drop support for python 3.6, which is end of life in #945
- Breaking Change: Don't build source distribution by default in
maturin buildcommand in #955,--no-sdistoption is replaced by--sdist - Breaking Change: maturin no longer search for python interpreters by default and only build for current interpreter in
PATHin #964 - Breaking Change: Removed
--cargo-extra-argsand--rustc-extra-argsoptions in #972. You can now pass all commoncargo buildarguments directly tomaturin build - Breaking Change:
--repository-urloption inuploadcommand no longer accepts plain repository name, full url required and-rshort option moved to--repositoryin #987 - Add support for building with multiple binary targets in #948
- Add a
--targetoption tomaturin list-pythoncommand in #957 - Add support for using bundled python sysconfigs for PyPy when abi3 feature is enabled in #958
- Add support for cross compiling PyPy wheels when abi3 feature is enabled in #963
- Add
--find-interpreteroption tobuildandpublishcommands to search for python interpreters in #964 - Infer target triple from
ARCHFLAGSfor macOS to be compatible withcibuildwheelin #967 - Expose commonly used Cargo CLI options in
maturin buildcommand in #972 - Add support for
wasm32-unknown-emscriptentarget in #974 - Allow overriding platform release version using env var in #975
- Fix
maturin developfor arm64 Python on M1 Mac when default toolchain is x86_64 in #980 - Add
--repositoryoption tomaturin uploadcommand in #987 - Only lookup bundled Python sysconfig when interpreters aren't specified as file path in #988
- Find CPython upper to 3.12 and PyPy upper to 3.10 in #993
- Add short alias
maturin bformaturin buildandmaturin devformaturin developsubcommands in #994
0.12.20 - 2022-06-15
- Fix incompatibility with cibuildwheel for 32-bit Windows in #951
- Don't require
piperror messages to be utf-8 encoding in #953 - Compare minimum python version requirement between
requires-pythonand bindings crate in #954 - Set
PYO3_PYTHONenv var for PyPy when abi3 is enabled in #960 - Add sysconfigs for x64 Windows PyPy in #962
- Add support for Linux armv6l in #966
- Fix auditwheel bundled shared libs directory name in #969
0.12.19 - 2022-06-05
- Fix Windows Store install detection in #949
- Filter Python interpreters by target pointer width on Windows in #950
0.12.18 - 2022-05-29
- Add support for building bin bindings wheels with multiple platform tags in #928
- Skip auditwheel for non-compliant linux environment automatically in #931
- Fix abi3 wheel build issue when no Python interpreters found on host in #933
- Add Python 3.11 sysconfigs for Linux, macOS and Windows in #934
- Add Python 3.11 sysconfig for arm64 Windows in #936
- Add network proxy support to upload command in #939
- Fix python interpreter detection on arm64 Windows in #940
- Fallback to
py -X.YwhenpythonX.Ycannot be found on Windows in #943 - Auto-detect Python Installs from Microsoft Store in #944
- Add bindings detection to bin targets in #938
0.12.17 - 2022-05-18
- Don't consider compile to i686 on x86_64 Windows cross compiling in #923
- Accept
-i x.yand-i python-x.yinmaturin buildcommand in #925
0.12.16 - 2022-05-16
- Add Linux armv7l python sysconfig in #901
- Add NetBSD python sysconfig in #903
- Update 'replace_needed' to reduce total calls to 'patchelf' in #905
- Add wheel data support in #906
- Allow use python interpreters from bundled sysconfig when not cross compiling in #907
- Use setuptools-rust for bootstrapping in #909
- Allow setting the publish repository URL via
MATURIN_REPOSITORY_URLin #913 - Allow stubs-only mixed project layout in #914
- Allow setting the publish user name via
MATURIN_USERNAMEin #915 - Add Windows python sysconfig in #917
- Add support for
generate-import-libfeature of pyo3 in #918 - Integrate
cargo-xwinfor cross compiling to Windows MSVC targets in #919
0.12.15 - 2022-05-07
- Re-export
__all__for pure Rust projects in #886 - Stop setting
RUSTFLAGSenvironment variable to an empty string in #887 - Add hardcoded well-known sysconfigs for effortless cross compiling in #896
- Add support for
PYO3_CONFIG_FILEin #899
0.12.14 - 2022-04-25
- Fix PyPy pep517 build when abi3 feature is enabled in #883
0.12.13 - 2022-04-25
- Stop setting
PYO3_NO_PYTHONenvironment variable for pyo3 0.16.4 and later in #875 - Build Windows abi3 wheels for
pyo30.16.4 and later versions withgenerate-abi3-import-libfeature enabled no longer require a Python interpreter in #879
0.12.12 - 2022-04-07
- Migrate docker image to GitHub container registry in #845
- Change mixed rust/python template project layout for new projects in #855
- Automatically include license files in
.dist-info/license_filesfollowing PEP 639 in #862 - Bring back multiple values support for
--interpreteroption in #873 - Update the default edition to 2021 for new projects by sa- in #874
- Drop
python3.6fromghcr.io/pyo3/maturindocker image.
0.12.11 - 2022-03-15
- Package license files in
.dist-info/license_filesfollowing PEP 639 in #837 - Stop testing Python 3.6 on CI since it's already EOL in #840
- Update workspace members for sdist local dependencies in #844
- Migrate docker image to github container registry in #845
- Remove
PYO3_NO_PYTHONhack for Windows in #848 - Remove Windows abi3 python lib link hack in #851
- Add
-roption as a short alias for--releasein #854
0.12.10 - 2022-03-09
- Add support for
pyo3-ffiby ijl in #804 - Defaults to
musllinux_1_2for musl target if it's not bin bindings in #808 - Remove support for building only sdist via
maturin build -iin #813, usematurin sdistinstead. - Add macOS target support for
--zigin #817 - Migrate Python dependency
tomltotomllib/tomliby Contextualist in #821 - Disable auditwheel for PEP 517 build wheel process in #823
- Lookup existing cffi
header.hin workspace target directory in #833 - Fix license line ending in wheel metadata for Windows in #836
0.12.9 - 2022-02-09
- Don't require
pyproject.tomlwhen cargo manifest is not specified in #806
0.12.8 - 2022-02-08
- Add missing
--versionflag from clap 3.0 upgrade
0.12.7 - 2022-02-08
- Add support for using
zig ccas linker for easier cross compiling and manylinux compliance in #756 - Switch from reqwest to ureq to reduce dependencies in #767
- Fix missing Python submodule in wheel in #772
- Add support for specifying cargo manifest path in pyproject.toml in #781
- Add support for passing arguments to pep517 command via
MATURIN_PEP517_ARGSenv var in #786 - Fix auditwheel
No such file or directoryerror whenLD_LIBRARY_PATHcontains non-existent paths in #794
0.12.6 - 2021-12-31
- Add support for repairing cross compiled linux wheels in #754
- Add support for
manylinux_2_28andmanylinux_2_31in #755 - Remove existing so file first in
maturin developcommand to avoid triggering SIGSEV in running process in #760
0.12.5 - 2021-12-20
- Fix docs for
newandinitcommands inmaturin --helpin #734 - Add support for x86_64 Haiku in #735
- Fix undefined auditwheel policy panic in #740
- Fix sdist upload for packages where the pkgname contains multiple underscores in #741
- Implement auditwheel repair with patchelf in #742
- Add
Cargo.lockto sdist when--lockedor--frozenspecified in #749 - Infer readme file if not specified in #751
0.12.4 - 2021-12-06
- Add a
maturin initcommand as a companion tomaturin newin #719 - Don't package non-path-dep crates in sdist for workspaces in #720
- Build release packages with
password-storagefeature in #725 - Add support for x86_64 DargonFly BSD in #727
- Add a Python import hook in #729
- Allow pip warnings in
maturin developcommand in #732
0.12.3 - 2021-11-29
- Use platform tag from
sysconfig.platformon non-portable Linux in #709 - Consider current machine architecture when generating platform tags for abi3 wheels on linux in #709
- Revert back to Rust 2018 edition in #710
- Warn missing
cffipackage dependency in #711 - Add support for Illumos in #712
- Account for
MACOSX_DEPLOYMENT_TARGETenv var in wheel platform tag in #716
0.12.2 - 2021-11-26
- Add support for excluding files from wheels by
.gitignorein #695 - Fix
pip install maturinon OpenBSD 6.8 in #697 - Add support for x86, x86_64 and aarch64 on NetBSD in #704
- Add a
maturin newcommand for bootstrapping new projects in #705
0.12.1 - 2021-11-21
- Add support for cross compiling PyPy wheels in #687
- Fix
sysconfig.get_platformparsing for macOS in #690
0.12.0 - 2021-11-19
- Add support for PEP 660 editable installs in #648
- Publish musllinux_1_1 wheels for maturin in #651
- Refactor
developcommand to act identical to PEP 660 editable wheels in #653 - Upgrade to Rust 2021 edition in #655
- Add support for powerpc64 and powerpc64le on FreeBSD by pkubaj in #656
- Fix false positive missing pyinit warning on arm64 macOS in #673
- Build without rustls on arm64 Windows by nsait-linaro in #674
- Publish Windows arm64 wheels to PyPI by nsait-linaro in #675
- Add support for building on Windows mingw platforms in #677
- Allow building for non-abi3 pypy wheels when the abi3 feature is enabled in #678
- Add support for cross compiling to different operating systems in #680
0.11.5 - 2021-10-13
- Fixed module documentation missing bug of pyo3 bindings in #639
- Fix musllinux auditwheel wrongly detects libc forbidden link in #643
- Fix finding conda Python interpreters on Windows by RobertColton in #644
- Fix Unicode metadata when uploading to PyPI in #645
- Fix incorrectly folded long
Summarymetadata - Fix cross compilation for Python 3.10 in #646
0.11.4 - 2021-09-28
- Autodetect PyPy executables in #617
- auditwheel: add
libz.so.1to whitelisted libraries in #625 - auditwheel: detect musl libc in #629
- Fixed Python 3.10 and later versions detection on Windows in #630
- Install entrypoint scripts in
maturin developcommand in #633 and #634 - Add support for installing optional dependencies in
maturin developcommand in #635 - Fixed build error when
manylinux/compatibilityoptions is specified inpyproject.tomlin #637
0.11.3 - 2021-08-25
- Add path option for Python source in #584
- Add auditwheel support for musllinux in #597
[tool.maturin]options frompyproject.tomlwill be used automatically in #605- Skip unavailable Python interpreters from pyenv in #609
0.11.2 - 2021-07-20
- Use UTF-8 encoding when reading
pyproject.tomlby domdfcoding in #588 - Use Cargo's
repositoryfield asSource Codein project URL in #590 - Fold long header fields in Python metadata in #594
- Fix
maturin developfor PyPy on Unix in #596
0.11.1 - 2021-07-10
- Fix sdist error when VCS has uncommitted renamed files in #585
- Add
maturin completions <shell>command to generate shell completions in #586
0.11.0 - 2021-07-04
- Add support for reading metadata from PEP 621 project table in
pyproject.tomlin #555 - Users should migrate away from the old
[package.metadata.maturin]table ofCargo.tomlto this new[project]table ofpyproject.toml - Add PEP 656 musllinux support in #543
--manylinuxis now called--compatibilityand supports musllinux- The pure rust install layout changed from just the shared library to a python module that reexports the shared library. This should have now observable consequences for users of the created wheel expect that
my_project.my_projectis now also importable (and equal to justmy_project) - Add support for packaging type stubs in pure Rust project layout in #567
- Support i386 on OpenBSD in #568
- Support Aarch64 on OpenBSD in #570
- Support Aarch64 on FreeBSD in #571
Cargo.toml'sauthorsfield is now optional per Rust RFC 3052 in #573- Allow dotted keys in
Cargo.tomlby switch fromtoml_edittotomlcrate in #577 - Fix source distribution with local path dependencies on Windows in #580
0.10.6 - 2021-05-21
- Fix corrupted macOS binary release in #547
- Fix build with the "upload" feature disabled by ravenexp in #548
0.10.5 - 2021-05-21
- Add
manylinux_2_27support in #521 - Add support for Windows arm64 target in #524
- Always output PEP 600 platform tags in #525
- Fix missing
PyInit_<module_name>warning with Rust submodule in #528 - Better cross compiling support for PyO3 binding on Unix in #454
- Fix s390x architecture support in #530
- Fix auditwheel panic with s390x wheels in #532
- Support uploading heterogeneous wheels by ravenexp in #544
- Warn about
pyproject.tomlmissing maturin version constraint in #545
0.10.4 - 2021-04-28
- Interpreter search now uses python 3.6 to 3.12 in #495
- Consider requires-python when searching for interpreters in #495
- Support Rust extension as a submodule in mixed Python/Rust projects in #489
0.10.3 - 2021-04-13
- The
uploadcommand is now implemented, it is mostly similar totwine upload. #484 - Interpreter search now uses python 3.6 to 3.12
- Add basic support for OpenBSD in #496
- Fix the PowerPC platform by messense in #503
0.10.2 - 2021-04-03
- Fix
--targetbeing silently ignored
0.10.1 - 2021-04-03
- Fix a regression in 0.10.0 that would incorrectly assume we're building for musl instead of gnu by messense in #487
- Basic s390x support
0.10.0 - 2021-04-02
- Change manylinux default version based on target arch by messense in #424
- Support local path dependencies in source distribution (i.e. you can now package a workspace into an sdist)
- Set a more reasonable LC_ID_DYLIB entry on macOS by messense #433
- Add
--skip-existingoption to publish by messense #444 - maturn develop install dependencies automatically by messense #443
- Load credential from pypirc using repository name instead of package name by messense #445
- Add
manylinux_2_24support in #451 - Improve error message when auditwheel failed to find versioned offending symbols in #452
- Add auditwheel test to CI in #455
- Fix sdist transitive path dependencies.
- auditwheel choose higher priority tag when possible in #456, dropped
auditwheelCargo feature. - develop now writes an INSTALLER file
- develop removes an old .dist-info directory if it exists before installing the new one
- Fix wheels for PyPy on windows containing extension modules with incorrect names. #482
0.9.4 - 2021-02-18
- Fix building a bin with musl
0.9.3
- CI failure
0.9.2 - 2021-02-17
- Escape version in wheel metadata by messense in #420
- Set executable bit on shared library by messense in #421
- Rename
classifiertoclassifiersfor pypi compatibility. The oldclassifieris still available and now also works with pypi - Fix building for musl by automatically setting
-C target-feature=-crt-static
0.9.1 - 2021-01-13
- Error when the
abi3feature is selected but no minimum version - Support building universal2 wheels (x86 and aarch64 in a single file) by messense in #403
- Recognize
PYO3_CROSS_LIB_DIRfor cross compiling with abi3 targeting windows. package.metadata.maturin.classifieris renamed toclassifiersby kngwyu in #416- Added more instructions to building complex manylinux setups
0.9.0 - 2021-01-10
- Added support for building abi3 wheels with pyo3 0.13.1
- Python 3.9 is supported (it should have worked before, but it is now tested on ci)
- There are 64-bit and aarch64 binary builds for linux and 64-bit builds for windows, mac and freebsd-12-1
- The auditwheel options have changed to
--manylinux=[off|2010|2014]with manylinux2010 as default, and optionally--skip-auditwheel. - Removed Python 3.5 since it is unsupported
- The default and minimum manylinux version is now manylinux2010
- restructured text (rst) readmes are now supported, by clbarnes in #360
- Allow python 3 interpreter with debuginfo use maturin by inevity in #370
- pypirc is checked for credentials by houqp in #374
- Added support for PowerPC by mzpqnxow and programmerjake in #366
project-urlis now a toml dictionary instead of a toml list to conform to the standard- No more retry loop when the password was wrong
- When bootstrapping, also search for
cargo.exeifcargowas not found
0.8.3 - 2020-08-17
Added
- tox is now supported due to a bugfix in the latest version of tox
[tool.maturin]now supportssdist-include = ["path/**/*"]to include arbitrary files in source distributions (#296).- Add support for PyO3
0.12'sPYO3_PYTHONenvironment variable. #331
Fixed
- Fix incorrectly returning full path (not basename) from PEP 517
build_sdisthook. This fixes tox support from maturin's side - Packages installed with
maturin developare now visible to pip and can be uninstalled with pip
0.8.2 - 2020-06-29
Added
- Python 3.8 was added to PATH in the docker image by oconnor663 in #302
0.8.1 - 2020-04-30
Added
- cffi is installed if it's missing and python is running inside a virtualenv.
0.8.0 - 2020-04-03
Added
- There is now a binary wheel for aarch64
- Warn if there are local dependencies
Fixed
- Omit author_email if
@is not found in authors by evandrocoan in #290
0.7.9 - 2020-03-06
Fixed
- This release includes binary wheels for mac os
0.7.8 - 2020-03-06
Added
- Added support from arm, specifically arm7l, aarch64 by ijl in #273
- Added support for manylinux2014 by ijl in #273
Fixed
- Remove python 2 from tags by ijl in #254
- 32-bit wheels didn't work on linux. This has been fixed by dae in #250
- The path of the RECORD file on windows used a backward slash instead of a forward slash
0.7.7 - 2019-11-12
Added
- The setup.py installer for bootstrapping maturin now checks for cargo instead of failing with a complex error message.
- Upload errors now show the filesize
Changed
- maturin's metadata now lists a requirement of python3.5 or later to install.
0.7.6 - 2019-09-28
Changed
- Only
--features,--no-default-featuresand--all-featuresin--cargo-extra-argsare passed tocargo metadatawhen determining the bindings, fixing problems in the previous release with arguments supported bycargo buildbut bycargo metadata.
0.7.5 - 2019-09-24
Fixed
- Fix clippy error to fix publishing from ci
0.7.4 - 2019-09-22
Fixed
- Fix tests
0.7.3 - 2019-09-22
Fixed
- Fix building when the bindings crate is behind a feature flag
0.7.3 - 2019-09-22
Removed
- The manylinux docker container doesn't contain musl anymore. If you're targeting musl, there's no need to use manylinux.
0.7.2 - 2019-09-05
Added
- Allow cross compilation with cffi and a python interpreter with the host target
Fixed
- Renamed a folder to maturin so PEP 517 backend works again.
0.7.1 - 2019-08-31
Added
maturin build --interpreter/maturin publish --interpreterbuilds only a source distribution.
0.7.0 - 2019-08-30
With this release, the name of this project changes from pyo3-pack to maturin.
Added
- Mixed rust/python layout
- Added PEP 517 support
- Added a
maturin sdistcommand as workaround for pypa/pip#6041 - Support settings all applicable fields from the python core metadata specification in Cargo.toml
- Support for FreeBSD by kxepal #173
0.6.1
Fixed
- Downgraded to structopt 0.2.16 to avoid the yanked 0.2.17
0.6.0
Added
- Basic pypy support by ijl #105
Removed
- Python 2 support
- The custom progress bar was removed and cargo's output is shown instead
0.5.0
Added
- Support for conda environments on windows by paddyhoran #52
- maturin will generate a header for cffi crates using cbinding, which means you don't need a
build.rsanymore. The option to provide your own header file using abuild.rsstill exists. - The konstin2/maturin docker image makes it easy to build fully manylinux compliant wheels. See the readme for usage details.
- Support for manylinux2010 by ijl #70
- The
--manxlinux=[1|1-unchecked|2010|2010-unchecked|off]option allows to build for manylinux1 and manylinux2010, both with audithweel (1or2010) and without (1-uncheckedor2010-unchecked), but also for the native linux tag withoff.
Changed
- The
--skip-auditwheelflag has been deprecated in favor of--manylinux=[1|1-unchecked|2010|2010-unchecked|off]. - Switched to rustls. This means the upload feature can be used from the docker container and builds of maturin itself are manylinux compliant when compiled with the musl target.
0.4.2 - 2018-12-15
Fixup release because the appveyor failed to release artifacts for windows for 0.4.1.
0.4.1 - 2018-12-15
Added
- You can now specify trove classifiers in your Cargo.toml with
package.metadata.maturin.classifier. Implemented by ijl in #48. Example:
[package.metadata.maturin]
classifier = ["Programming Language :: Python"]
0.4.0 - 2018-11-20
Changed
- publish defaults to release and strip, unless
--debugor--no-stripare given.
Added
- New ci script based on hyperfine which also builds debian packages.
0.3.10 - 2018-11-16
Fixed
- Fix rust-cpython detection and compilation
0.3.9
Changed
- Update reqwest to 0.9.4 which has seanmonstar/reqwest#374 fixed
0.3.8
Fixed
- Pin reqwest to 0.9.2 to work around seanmonstar/reqwest#374
0.3.7
Fixed
- Added cargo lock to project #9
0.3.6
With deflate and the strip options, the wheels get about 25x smaller:
| wheel | baseline | deflate | strip + deflate |
|---|---|---|---|
| get_fourtytwo-2.0.1-cp36-cp36m-manylinux1_x86_64.whl | 2,8M | 771K | 102K |
| hello_world-0.1.0-py2.py3-none-manylinux1_x86_64.whl | 3,9M | 1,1M | 180K |
| points-0.1.0-py2.py3-none-manylinux1_x86_64.whl | 2,8M | 752K | 85K |
Added
--stripby ijl #7
Changed
- Renamed
--bindings-crateto--bindings - Use deflate compression for zips by ijl #6
Fixed
--targetis now actually used for the wheel compatibility tag
0.3.5 - 2018-09-20
Changed
- Upgraded to reqwest 0.9
Fixed
- "Broken Pipe" with musl builds (through the reqwest upgrade)
0.3.4 - 2018-09-18
Added
- A
--targetoption which behaves like cargo option of the same name
Changed
- Musl and auditwheel compliance: Using the new
muslfeature combined with the musl target, you can build completely static binaries. Thepassword-storage, which enables keyring integration, is now disabled by default. The Pypi packages are now statically linked with musl so that they are audtiwheel compliant. - Replaced
--debugwith--release. All builds are now debug by default
0.3.3 - 2018-09-17
Added
- Builds for i686 linux and mac
- Builds for maturin as wheel
Fixed
- Usage with stable
- Wrong tags in WHEEL file on non-linux platforms
- Uploading on windows
0.3.1 - 2017-09-14
Fixed
- Windows compilation
0.3.0 - 2017-09-14
Added
- Packaging binaries
- Published on pypi. You can now
pip install maturin - A Dockerfile based on manylinux1
Fixed
- Travis ci setup builds all types of wheels for linux and mac
--no-default-features --features auditwheelcreates a manylinux compliant binary for maturin
Changed
- Replaced elfkit with goblin
0.2.0 - 2018-09-03
Added
- Cffi support
- A
developsubcommand - A tox example
Changed
- Show a progress bar for cargo's compile progress
0.1.0 - 2018-08-22
- Initial Release