Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning (for the cli, not for the crate).

Unreleased

1.4.0 - 2023-12-02

  • Bump MSRV to 1.67.0 in #1847
  • Add support for cross compiling with cross in #1865

1.3.2 - 2023-11-14

  • Add support for uniffi library mode in #1729
  • Un-deprecate MATURIN_PEP517_ARGS env 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-bindgen if 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.members in sdist in #1811
  • Don't set MACOSX_DEPLOYMENT_TARGET for 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-path argument to develop command in #1753
  • Ignore sdist output files when building sdist in #1756
  • Use python.exe by default in build command on Windows in #1757
  • Don't require uniffi-bindgen to 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] requires in #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 upload command in #1722
  • Fix link-native-libraries check for emscripten target in #1724
  • Add support for ALL_PROXY to upload command 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-darwin target support in #1717

1.1.0 - 2023-06-10

  • Add basic support for GraalPy in #1645
  • Refactor abi tag to use EXT_SUFFIX in #1648
  • Add Linux loongarch64 architecture support in #1653
  • Add --skip-install option to maturin develop in #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-settings in PEP517 backend in #1624
  • Remove deprecated --universal2 cli option in #1620, use --target universal2-apple-darwin instead.

0.15.3 - 2023-05-20

  • Fix cross compile Apple universal2 wheels on non-macOS platforms by MisLink in #1613
  • Add PEP 517 config_settings support in #1619, deprecate MATURIN_PEP517_ARGS in favor of the new build-args config setting.

0.15.2 - 2023-05-16

  • When determining the python module name, use pyproject.toml project.name over Cargo.toml package.name in #1608
  • Fix rewriting dev-dependencies in 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-features by default when bootstrapping from sdist in #1333
  • Breaking Change: Remove deprecated sdist-include option in pyproject.toml in #1335
  • Breaking Change: Remove deprecated python-source option in Cargo.toml in #1335
  • Breaking Change: Turn patchelf version warning into a hard error in #1335
  • Breaking Change: uniffi_bindgen CLI is required for building uniffi bindings wheels in #1352
  • Add Cargo compile targets configuration for filtering multiple bin targets in #1339
  • Respect rustflags settings 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.toml in #1536
  • Rewrite platform specific dependencies in Cargo.toml by viccie30 in #1572
  • Add trusted publisher support in #1578
  • Add new git source distribution generator in #1587

0.14.17 - 2023-04-06

  • Fix wrong EXT_SUFFIX when cross compiling musllinux wheels for Python 3.11 in #1560

0.14.16 - 2023-03-26

  • Deprecate package.metadata.maturin.name in favor of tool.maturin.module-name in pyproject.toml in #1531

0.14.15 - 2023-03-03

  • Add sdist and sccache support to generate-ci command

0.14.14 - 2023-02-24

  • Add support for Emscripten in generate-ci command in #1484
  • Add support for linking with pyo3 in abi3 debug mode on Windows in #1487
  • Use default ext_suffix for Emscripten target if not provided in PYO3_CONFIG_FILE in #1491
  • Deprecate package.metadata.maturin.data in favor of tool.maturin.data in pyproject.toml in #1492

0.14.13 - 2023-02-12

  • maturin develop now looks for a virtualenv .venv in the current or any parent directory if no virtual environment is active.
  • Add a new generate-ci command to generate CI configuration in #1456
  • Deprecate --universal2 in favor of universal2-apple-darwin target in #1457
  • Raise an error when Cargo.toml contains removed python package metadata in #1471
  • Use extension_name instead of module_name for CFFI extensions in develop mode in #1476

0.14.12 - 2023-01-31

  • Keep dev-dependencies in 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_TARGET when 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.toml in #1347
  • Disallow uniffi bin bindings in #1353
  • Update bundled Python sysconfigs for Linux and macOS

0.14.5 - 2022-12-08

  • Support SOURCE_DATE_EPOCH when 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-source option in Cargo.toml in favor of the one in pyproject.toml in #1291
  • Fix auditwheel with read-only libraries in #1292

0.14.1 - 2022-11-20

  • Downgrade cargo_metadata to 0.15.0 to fix maturin build on 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.toml in #1200. Python package metadata should be specified in the project section of pyproject.toml instead 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 src project layout in #1185
  • Add --src option to generate src layout for mixed Python/Rust projects in #1189
  • Add Python metadata support for license-file field of Cargo.toml in #1195
  • Upgrade to clap 4.0 in #1197. This bumps MSRV to 1.61.0.
  • Remove workspace.members in Cargo.toml from sdist if there isn't any path dependency in #1227
  • Fix auditwheel libpython check 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_TARGET isn'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 uniffi bindings in #1275

0.13.7 - 2022-10-29

  • Fix macOS LC_ID_DYLIB for abi3 wheels in #1208
  • Pass --locked to 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 develop in Windows conda virtual environment in #1146
  • Fix build for crate using pyo3 and build.rs without cdylib crate type in #1150
  • Fix build on some 32-bit platform by downgrading indicatif in #1163
  • Include Cargo.lock by 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.toml in new project template in #1109
  • Fix maturin develop on Windows when using Python installed from msys2 in #1112
  • Fix duplicated Cargo.toml of 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 goblin instead of shelling out to patchelf to get rpath in #1139

0.13.3 - 2022-09-15

  • Allow user to override default Emscripten settings in #1059
  • Enable --crate-type cdylib on 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 ar support 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 sdist command in #1097
  • Fix sdist when pyproject.toml isn't in the same dir of Cargo.toml in #1099
  • Change readme and license paths in pyproject.toml to be relative to pyproject.toml in #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-include paths to be relative to pyproject.toml in #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.toml and pyproject.toml path handling in #1043
  • Find python module next to pyproject.toml if pyproject.toml exists in #1044. It's technically a breaking change, but previously it doesn't work properly if the directory containing pyproject.toml isn't recognized as project root.
  • Add python-source option to [tool.maturin] section of pyproject.toml in #1046
  • Deprecate support for specifying python metadata in Cargo.toml in #1048. Please migrate to PEP 621 instead.
  • Change python-source to be relative to the file specifies it in #1049
  • Change data to be relative to the file specifies it in #1051
  • Don't reinstall dependencies in maturin develop in #1052
  • Find pyproject.toml in parent directories of Cargo.toml in #1054

0.13.1 - 2022-07-26

  • Add 64-bit RISC-V support by felixonmars in #1001
  • Add support for invoking with python3 -m maturin in #1008
  • Fix detection of optional dependencies when declaring features in pyproject.toml in #1014
  • Respect user specified Rust target in maturin develop in #1016
  • Use cargo rustc --crate-type cdylib on 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 build command in #955, --no-sdist option is replaced by --sdist
  • Breaking Change: maturin no longer search for python interpreters by default and only build for current interpreter in PATH in #964
  • Breaking Change: Removed --cargo-extra-args and --rustc-extra-args options in #972. You can now pass all common cargo build arguments directly to maturin build
  • Breaking Change: --repository-url option in upload command no longer accepts plain repository name, full url required and -r short option moved to --repository in #987
  • Add support for building with multiple binary targets in #948
  • Add a --target option to maturin list-python command 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-interpreter option to build and publish commands to search for python interpreters in #964
  • Infer target triple from ARCHFLAGS for macOS to be compatible with cibuildwheel in #967
  • Expose commonly used Cargo CLI options in maturin build command in #972
  • Add support for wasm32-unknown-emscripten target in #974
  • Allow overriding platform release version using env var in #975
  • Fix maturin develop for arm64 Python on M1 Mac when default toolchain is x86_64 in #980
  • Add --repository option to maturin upload command 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 b for maturin build and maturin dev for maturin develop subcommands in #994

0.12.20 - 2022-06-15

  • Fix incompatibility with cibuildwheel for 32-bit Windows in #951
  • Don't require pip error messages to be utf-8 encoding in #953
  • Compare minimum python version requirement between requires-python and bindings crate in #954
  • Set PYO3_PYTHON env 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.Y when pythonX.Y cannot 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.y and -i python-x.y in maturin build command 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_URL in #913
  • Allow stubs-only mixed project layout in #914
  • Allow setting the publish user name via MATURIN_USERNAME in #915
  • Add Windows python sysconfig in #917
  • Add support for generate-import-lib feature of pyo3 in #918
  • Integrate cargo-xwin for 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 RUSTFLAGS environment variable to an empty string in #887
  • Add hardcoded well-known sysconfigs for effortless cross compiling in #896
  • Add support for PYO3_CONFIG_FILE in #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_PYTHON environment variable for pyo3 0.16.4 and later in #875
  • Build Windows abi3 wheels for pyo3 0.16.4 and later versions with generate-abi3-import-lib feature 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_files following PEP 639 in #862
  • Bring back multiple values support for --interpreter option in #873
  • Update the default edition to 2021 for new projects by sa- in #874
  • Drop python3.6 from ghcr.io/pyo3/maturin docker image.

0.12.11 - 2022-03-15

  • Package license files in .dist-info/license_files following 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_PYTHON hack for Windows in #848
  • Remove Windows abi3 python lib link hack in #851
  • Add -r option as a short alias for --release in #854

0.12.10 - 2022-03-09

  • Add support for pyo3-ffi by ijl in #804
  • Defaults to musllinux_1_2 for musl target if it's not bin bindings in #808
  • Remove support for building only sdist via maturin build -i in #813, use maturin sdist instead.
  • Add macOS target support for --zig in #817
  • Migrate Python dependency toml to tomllib / tomli by Contextualist in #821
  • Disable auditwheel for PEP 517 build wheel process in #823
  • Lookup existing cffi header.h in 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.toml when cargo manifest is not specified in #806

0.12.8 - 2022-02-08

  • Add missing --version flag from clap 3.0 upgrade

0.12.7 - 2022-02-08

  • Add support for using zig cc as 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_ARGS env var in #786
  • Fix auditwheel No such file or directory error when LD_LIBRARY_PATH contains 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_28 and manylinux_2_31 in #755
  • Remove existing so file first in maturin develop command to avoid triggering SIGSEV in running process in #760

0.12.5 - 2021-12-20

  • Fix docs for new and init commands in maturin --help in #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.lock to sdist when --locked or --frozen specified in #749
  • Infer readme file if not specified in #751

0.12.4 - 2021-12-06

  • Add a maturin init command as a companion to maturin new in #719
  • Don't package non-path-dep crates in sdist for workspaces in #720
  • Build release packages with password-storage feature in #725
  • Add support for x86_64 DargonFly BSD in #727
  • Add a Python import hook in #729
  • Allow pip warnings in maturin develop command in #732

0.12.3 - 2021-11-29

  • Use platform tag from sysconfig.platform on 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 cffi package dependency in #711
  • Add support for Illumos in #712
  • Account for MACOSX_DEPLOYMENT_TARGET env var in wheel platform tag in #716

0.12.2 - 2021-11-26

  • Add support for excluding files from wheels by .gitignore in #695
  • Fix pip install maturin on OpenBSD 6.8 in #697
  • Add support for x86, x86_64 and aarch64 on NetBSD in #704
  • Add a maturin new command for bootstrapping new projects in #705

0.12.1 - 2021-11-21

  • Add support for cross compiling PyPy wheels in #687
  • Fix sysconfig.get_platform parsing 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 develop command 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 Summary metadata
  • Fix cross compilation for Python 3.10 in #646

0.11.4 - 2021-09-28

  • Autodetect PyPy executables in #617
  • auditwheel: add libz.so.1 to 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 develop command in #633 and #634
  • Add support for installing optional dependencies in maturin develop command in #635
  • Fixed build error when manylinux/compatibility options is specified in pyproject.toml in #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 from pyproject.toml will 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.toml by domdfcoding in #588
  • Use Cargo's repository field as Source Code in project URL in #590
  • Fold long header fields in Python metadata in #594
  • Fix maturin develop for 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.toml in #555
  • Users should migrate away from the old [package.metadata.maturin] table of Cargo.toml to this new [project] table of pyproject.toml
  • Add PEP 656 musllinux support in #543
  • --manylinux is now called --compatibility and 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_project is now also importable (and equal to just my_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's authors field is now optional per Rust RFC 3052 in #573
  • Allow dotted keys in Cargo.toml by switch from toml_edit to toml crate 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_27 support 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.toml missing 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 upload command is now implemented, it is mostly similar to twine 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 --target being 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-existing option 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_24 support 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 auditwheel Cargo 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 classifier to classifiers for pypi compatibility. The old classifier is 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 abi3 feature 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_DIR for cross compiling with abi3 targeting windows.
  • package.metadata.maturin.classifier is renamed to classifiers by 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-url is 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.exe if cargo was 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 supports sdist-include = ["path/**/*"] to include arbitrary files in source distributions (#296).
  • Add support for PyO3 0.12's PYO3_PYTHON environment variable. #331

Fixed

  • Fix incorrectly returning full path (not basename) from PEP 517 build_sdist hook. This fixes tox support from maturin's side
  • Packages installed with maturin develop are 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-features and --all-features in --cargo-extra-args are passed to cargo metadata when determining the bindings, fixing problems in the previous release with arguments supported by cargo build but by cargo 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 --interpreter builds 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 sdist command 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.rs anymore. The option to provide your own header file using a build.rs still 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 (1 or 2010) and without (1-unchecked or 2010-unchecked), but also for the native linux tag with off.

Changed

  • The --skip-auditwheel flag has been deprecated in favor of --manxlinux=[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 --debug or --no-strip are 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

0.3.8

Fixed

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:

wheelbaselinedeflatestrip + deflate
get_fourtytwo-2.0.1-cp36-cp36m-manylinux1_x86_64.whl2,8M771K102K
hello_world-0.1.0-py2.py3-none-manylinux1_x86_64.whl3,9M1,1M180K
points-0.1.0-py2.py3-none-manylinux1_x86_64.whl2,8M752K85K

Added

  • --strip by ijl #7

Changed

  • Renamed --bindings-crate to --bindings
  • Use deflate compression for zips by ijl #6

Fixed

  • --target is 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 --target option which behaves like cargo option of the same name

Changed

  • Musl and auditwheel compliance: Using the new musl feature combined with the musl target, you can build completely static binaries. The password-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 --debug with --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 auditwheel creates a manylinux compliant binary for maturin

Changed

  • Replaced elfkit with goblin

0.2.0 - 2018-09-03

Added

  • Cffi support
  • A develop subcommand
  • A tox example

Changed

  • Show a progress bar for cargo's compile progress

0.1.0 - 2018-08-22

  • Initial Release