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).
- 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
)
- Fix corrupted macOS binary release in #547
- Fix build with the "upload" feature disabled by ravenexp in #548
- 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 heterogenous wheels by ravenexp in #544
- Warn about
pyproject.toml
missing maturin version constraint in #545
- 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
- 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
- Fix
--target
being silently ignored
- 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
- 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
- Fix building a bin with musl
- CI failure
- 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
- 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
- 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
- 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
- Python 3.8 was added to PATH in the docker image by oconnor663 in #302
- cffi is installed if it's missing and python is running inside a virtualenv.
- 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
- This release includes binary wheels for mac os
- 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
- 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--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
- 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