PyO3 0.14.0
This release contains a significant number of improvements and optimizations since the 0.13 releases. Conversion support for more Rust standard library types has been added: [T; N]
, Path
, PathBuf
, OsStr
, and OsString
. In addition, the #[pyo3(...)]
attribute options already used in #[pyclass]
and #[derive(FromPyObject)]
have been expanded to all macros to cover more options such as #[pyo3(name = "...")]
.
This release also includes some notable performance optimizations to PyO3's Python function generation, and users should observe reductions in overhead when calling PyO3-wrapped functions from Python. The documentation has also benefited from extensive work from several contributors.
Finally, there are a number of breaking changes to this release:
- To reduce the default dependency set, a new feature
multiple-pymethods
has been added. If this feature is not enabled, each#[pyclass]
may only have a single#[pymethods]
block. If this feature is enabled then the previous behavior (and dependency oninventory
) is restored. - The
pyo3::ffi
module has received many updates to keep in sync with CPython's definitions. - A number of APIs and particular usages of PyO3 macros have been marked deprecated where better alternatives now exist.
- A number of previously-deprecated APIs have been removed.
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. The following users' commits are included in this release:
@alex
@alonblade
@aviramha
@birkenfeld
@c410-f3r
@daggy1234
@daniil-konovalenko
@davidhewitt
@erikjohnston
@GabrielMajeri
@gilescope
@indygreg
@isosphere
@jameshilliard
@kangalioo
@kngwyu
@konstin
@m-ou-se
@mejrs
@messense
@nw0
@ohadravid
@ravenexp
@scalexm
@simonrainerson
@TheGhostHuCodes
@Winxton
@1tgr