Releases: PyO3/pyo3
PyO3 0.16.5
This release contains an FFI definition correction to resolve crashes for PyOxidizer on Python 3.10, and a new generate-import-lib
feature to allow easier cross-compiling to Windows.
Thank you to the following users for the improvements:
PyO3 0.16.4
This release fixes a regression introduced in 0.16.3 leading to build failures on Windows, enables crates depending on PyO3 to collect code coverage using LLVM instrumentation on stable Rust version 1.60 or later, and enables safe access to time zone information attached to Python's time
and datetime
objects. There are also some adjustments to PyO3's build-time interpreter detection to make it easier to cross-compile abi3
Python extensions.
Thank you to the following users for the improvements:
@adamreichold
@davidhewitt
@mejrs
@messense
@pickfire
@ravenexp
@ricohageman
PyO3 0.15.2
PyO3 0.16.3
This release contains a number of non-breaking additions and fixes since PyO3 0.16.2.
They are mostly centered on improving support for various build configurations. There are also usability tweaks to the #[pyclass]
macro and a new intern!
macro to create statically-backed PyString
objects as an optimization technique.
Thank you to the following users for the improvements:
@adamreichold
@aganders3
@alex
@kmp1
@mejrs
@messense
@mityax
@momirza
@ravenexp
@zh-jq
PyO3 0.16.2
This release contains support for the latest PyPy 7.3.8 release, a fix for a regression from PyO3 0.16.0 which would cause flaky build failures, and corrections to documentation.
Thank you for the following users for the improvements:
PyO3 0.16.1
This release contains a couple of fixes for regressions in PyO3 0.16.0, as well as documentation fixes. The hashbrown
optional dependency range has been extended to include its new 0.12 version.
Thank you for the following users for the improvements:
@adamreichold
@alex
@birkenfeld
@davidhewitt
@JerzySpendel
@mejrs
@messense
@PanQL
PyO3 0.16.0
This release contains substantial changes and improvements over PyO3 0.15.1. To support these improvements, support has been dropped for the end-of-life Python 3.6 and Rust versions older than 1.48.
The pyo3::ffi
submodule has been split out into a separate pyo3-ffi
crate, so that users who want to use PyO3's Python bindings without any of the safe APIs or macros are able to do so.
#[pyclass]
can now be used on simple "C-like" enums to create Python enums.
The #[pyproto]
macro has been deprecated, and can be disabled by disabling the optional #[pyproto]
feature. The "magic methods" such as __repr__
which previously were implemented by #[pyproto]
gained support in #[pymethods]
in 0.15, and now in PyO3 0.16 #[pymethods]
is intended to be the only attribute macro needed to write class method implementations.
There are numerous other reworks, improvements, and bugfixes.
For full details of all changes, see the CHANGELOG.
Thank you to everyone who contributed code, documentation, design ideas, bug reports, and feedback. The following users' commits are included in this release:
@adamreichold
@aganders3
@Amanieu
@aviramha
@birkenfeld
@b05902132
@CarlKCarlK
@cmpute
@danielhenrymantilla
@davidhewitt
@DSPOM2
@ghuls
@Gobot1234
@kevinheavey
@konstin
@mejrs
@messense
@milesgranger
@mrl5
@parsons20
@ricohageman
@saidvandeklundert
@Tom1380
@vxgmichel
PyO3 0.15.1
This release is a set of bug fixes for some minor issues reported since PyO3 0.15's release. There are also some small additions for those storing PyIterator
, PySequence
, and PyMapping
in Py
smart pointers, and a PyTraceback
type to ease interacting with Python tracebacks from Rust.
For full details of all changes, see the CHANGELOG.
Thank you to everyone who contributed code, documentation, design ideas, bug reports, and feedback. The following users' commits are included in this release:
@dansvo
@davidhewitt
@KRunchPL
@mejrs
@messense
@moriyoshi
@saidvandeklundert
@taiki-e
PyO3 0.15.0
This release of PyO3 brings support for Python 3.10 and PyPy 3.8. In addition, new optional dependencies on anyhow
and eyre
have been added for easy integration of the popular error-handling libraries with Python code.
A number of consistency improvements have been made to PyList
, PyTuple
and PySequence
APIs. They now all exclusively use usize
- based indexing, and now also support Rust's indexing operator.
In this release #[pymethods]
are now able to implement many magic methods such as __str__
and __repr__
, removing the need for #[pyproto]
macro implementations. For the 0.15 release series both #[pymethods]
and #[pyproto]
will be supported; #[pyproto]
is expected to be deprecated in the future.
For full details of all changes, see the CHANGELOG. For help with upgrading, see the migration guide.
Thank you to everyone who contributed code, documentation, design ideas, bug reports, and feedback.
PyO3 0.14.5
This release fixes a compile regression of PyO3 0.14.4 where not all APIs related to PyStringData
were conditionally disabled correctly on big-endian platforms.
In addition, a few public APIs have been added to the pyo3_build_config
crate to support needs of the PyOxidizer project.
Thanks to @decathorpe and @indygreg for further reports, discussions, and resolution.