- Fix musllinux rpath for non-cffi bindings in #2233
- Add GitHub Actions attestation support to generate-ci in #2234
- Fix upload regression to pypi/testpypi in #2229
- Fix cross compilation issues for armv7l, mips64 and ppc in #2204
- UniFFI: supports bindings generated from multiple crates in #2208
- Enable
--all-features
when building source distribution in #2215 - Fix rpath when module-name contains
.
in #2219
- Forward
cargo package --list
warnings 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_PLATFORM
in #2122 - Don't add files to an archive more than once #2125
- Only use base python executable when
MATURIN_PEP517_USE_BASE_PYTHON
is 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-ci
in #2011 - Add uv support to
develop
command in #2015 - Add support for AIX target in #2030
- Remove rust-cpython support in #2044
- Add a global
-v
option 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
--compatibility
when 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_ENV
andCONDA_PREFIX
env vars in #1879 - Reject
-i python
when cross compiling in #1891 - Support uniffi-bindgen in cargo workspaces in #1909
- Add support for configuring
xwin
using 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_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 todevelop
command in #1753 - Ignore sdist output files when building sdist in #1756
- Use
python.exe
by default inbuild
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
toupload
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 tomaturin 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, deprecateMATURIN_PEP517_ARGS
in favor of the newbuild-args
config setting.
0.15.2 - 2023-05-16
- When determining the python module name, use pyproject.toml
project.name
over Cargo.tomlpackage.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 inpyproject.toml
in #1335 - Breaking Change: Remove deprecated
python-source
option inCargo.toml
in #1335 - Breaking Change: Turn
patchelf
version warning into a hard error in #1335 - Breaking Change:
uniffi_bindgen
CLI is required for buildinguniffi
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 oftool.maturin.module-name
inpyproject.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 inPYO3_CONFIG_FILE
in #1491 - Deprecate
package.metadata.maturin.data
in favor oftool.maturin.data
inpyproject.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 ofuniversal2-apple-darwin
target in #1457 - Raise an error when
Cargo.toml
contains removed python package metadata in #1471 - Use
extension_name
instead ofmodule_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 inCargo.toml
in favor of the one inpyproject.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 fixmaturin 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 theproject
section ofpyproject.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 ofCargo.toml
in #1195 - Upgrade to clap 4.0 in #1197. This bumps MSRV to 1.61.0.
- Remove
workspace.members
inCargo.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
andbuild.rs
withoutcdylib
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 topatchelf
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 ofCargo.toml
in #1099 - Change readme and license paths in
pyproject.toml
to be relative topyproject.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 topyproject.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
andpyproject.toml
path handling in #1043 - Find python module next to
pyproject.toml
ifpyproject.toml
exists in #1044. It's technically a breaking change, but previously it doesn't work properly if the directory containingpyproject.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 ofCargo.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
inpyproject.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 commoncargo build
arguments directly tomaturin build
- Breaking Change:
--repository-url
option inupload
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 tomaturin 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 tobuild
andpublish
commands to search for python interpreters in #964 - Infer target triple from
ARCHFLAGS
for macOS to be compatible withcibuildwheel
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 tomaturin 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
formaturin build
andmaturin dev
formaturin 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
whenpythonX.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
inmaturin 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 withgenerate-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
fromghcr.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, usematurin sdist
instead. - Add macOS target support for
--zig
in #817 - Migrate Python dependency
toml
totomllib
/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 whenLD_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
andmanylinux_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
andinit
commands inmaturin --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 tomaturin 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 inpyproject.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 frompyproject.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 asSource 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 ofCargo.toml
to this new[project]
table ofpyproject.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 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
'sauthors
field is now optional per Rust RFC 3052 in #573- Allow dotted keys in
Cargo.toml
by switch fromtoml_edit
totoml
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 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
--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
- 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
toclassifiers
for pypi compatibility. The oldclassifier
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 toclassifiers
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
ifcargo
was not found
0.8.3 - 2020-08-17
- 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_PYTHON
environment variable. #331
- 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
- Python 3.8 was added to PATH in the docker image by oconnor663 in #302
0.8.1 - 2020-04-30
- cffi is installed if it's missing and python is running inside a virtualenv.
0.8.0 - 2020-04-03
- There is now a binary wheel for aarch64
- Warn if there are local dependencies
- Omit author_email if
@
is not found in authors by evandrocoan in #290
0.7.9 - 2020-03-06
- This release includes binary wheels for mac os
0.7.8 - 2020-03-06
- Added support from arm, specifically arm7l, aarch64 by ijl in #273
- Added support for manylinux2014 by ijl in #273
- 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
- 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
- maturin's metadata now lists a requirement of python3.5 or later to install.
0.7.6 - 2019-09-28
- Only
--features
,--no-default-features
and--all-features
in--cargo-extra-args
are passed tocargo metadata
when determining the bindings, fixing problems in the previous release with arguments supported bycargo build
but bycargo metadata
.
0.7.5 - 2019-09-24
- Fix clippy error to fix publishing from ci
0.7.4 - 2019-09-22
- Fix tests
0.7.3 - 2019-09-22
- Fix building when the bindings crate is behind a feature flag
0.7.3 - 2019-09-22
- 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
- Allow cross compilation with cffi and a python interpreter with the host target
- Renamed a folder to maturin so PEP 517 backend works again.
0.7.1 - 2019-08-31
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.
- 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
- Downgraded to structopt 0.2.16 to avoid the yanked 0.2.17
- Basic pypy support by ijl #105
- Python 2 support
- The custom progress bar was removed and cargo's output is shown instead
- 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 abuild.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
or2010
) and without (1-unchecked
or2010-unchecked
), but also for the native linux tag withoff
.
- The
--skip-auditwheel
flag 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
- 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
- publish defaults to release and strip, unless
--debug
or--no-strip
are given.
- New ci script based on hyperfine which also builds debian packages.
0.3.10 - 2018-11-16
- Fix rust-cpython detection and compilation
- Update reqwest to 0.9.4 which has seanmonstar/reqwest#374 fixed
- Pin reqwest to 0.9.2 to work around seanmonstar/reqwest#374
- Added cargo lock to project #9
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 |
--strip
by ijl #7
- Renamed
--bindings-crate
to--bindings
- Use deflate compression for zips by ijl #6
--target
is now actually used for the wheel compatibility tag
0.3.5 - 2018-09-20
- Upgraded to reqwest 0.9
- "Broken Pipe" with musl builds (through the reqwest upgrade)
0.3.4 - 2018-09-18
- A
--target
option which behaves like cargo option of the same name
- Musl and auditwheel compliance: Using the new
musl
feature 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
--debug
with--release
. All builds are now debug by default
0.3.3 - 2018-09-17
- Builds for i686 linux and mac
- Builds for maturin as wheel
- Usage with stable
- Wrong tags in WHEEL file on non-linux platforms
- Uploading on windows
0.3.1 - 2017-09-14
- Windows compilation
0.3.0 - 2017-09-14
- Packaging binaries
- Published on pypi. You can now
pip install maturin
- A Dockerfile based on manylinux1
- Travis ci setup builds all types of wheels for linux and mac
--no-default-features --features auditwheel
creates a manylinux compliant binary for maturin
- Replaced elfkit with goblin
0.2.0 - 2018-09-03
- Cffi support
- A
develop
subcommand - A tox example
- Show a progress bar for cargo's compile progress
- Initial Release