Sourced from pyo3's releases.
PyO3 0.23.3
This release is a soundness fix for PyO3 0.23.0 through 0.23.2.
In PyO3 0.23.0 the
PYO3_CONFIG_FILE
environment variable used to configure builds regressed such that changing the environment variable would no longer trigger PyO3 to reconfigure and recompile. In combination with workflows using tools such asmaturin
to build for multiple versions in a single build, this leads to Python wheels being compiled against the wrong Python API version.All users who distribute artefacts for multiple Python versions are encouraged to update and rebuild with PyO3 0.23.3. Affected wheels produced from PyO3 0.23.0 through 0.23.2 are highly unstable and will crash the Python interpreter in unpredictable ways.
Aside from this fix, PyO3 0.23.3 contains some fixes to link configuration for Python 3.13t on Windows.
Thank you to the following contributors for the improvements:
@davidhewitt
@Icxolu
@kemingy
PyO3 0.23.2
This release fixes a build failure when attempting to compile for free-threaded Python when the
abi3
orabi3-pyxx
features are enabled. With this fix, the compile will now ignore (with a warning) theabi3
andabi3-pyxx
flags (as is the case when compiling for PyPy, as neither supportabi3
).This release also iterates upon the new
IntoPyObject
trait by adding anIntoPyObjectExt
helper trait with some common convenience functions.Finally, a compile failure related to
ambiguous_associated_items
lint errors inside generated#[pyclass]
and#[derive(IntoPyObject)]
output has been fixed.Thank you to the following contributors for the improvements:
@davidhewitt
@LilyFoote
@ngoldbaum
PyO3 0.23.1
This is a re-release of PyO3 0.23.0 with corrections to fix docs.rs builds.
Thanks
@yotamofek
for the reports & fixes!PyO3 0.23.0
This release is a significant iteration to both PyO3's internals and API with two major enhancements:
- Support for Python 3.13t, also known as "free-threaded Python".
- A new trait
IntoPyObject
, which unifies the existing to-Python conversion traitsIntoPy
andToPyObject
while also allowing new optimizations and proper error handling. The new trait also has a#[derive(IntoPyObject)]
macro.While both of these new features have undergone extensive design, it will be no surprise to find teething issues. All feedback is encouraged so that we can follow up with iterative improvements for these new features in future releases.
On top of the major additions, the removal of the "GIL Refs" API deprecated in PyO3 0.21 is now complete. A number of PyO3 APIs have had new simpler names introduced now that the PyO3 API is no longer in a migration phase (for example
PyTuple::new_bound
is now simplified toPyTuple::new
).Beyond that, PyO3 0.23 contains nearly 5 months of incremental improvements, bug fixes and smaller features that have been implemented while the major work of this release was ongoing.
Please consult the migration guide for help upgrading.
Thank you to everyone who contributed code, documentation, design ideas, bug reports, and feedback. The following contributors' commits are included in this release:
... (truncated)
Sourced from pyo3's changelog.
[0.23.3] - 2024-12-03
Packaging
- Bump optional
python3-dll-a
dependency to 0.2.11. #4749Fixed
- Fix unresolved symbol link failures on Windows when compiling for Python 3.13t with
abi3
features enabled. #4733- Fix unresolved symbol link failures on Windows when compiling for Python 3.13t using the
generate-import-lib
feature. #4749- Fix compile-time regression in PyO3 0.23.0 where changing
PYO3_CONFIG_FILE
would not reconfigure PyO3 for the new interpreter. #4758[0.23.2] - 2024-11-25
Added
- Add
IntoPyObjectExt
trait. #4708Fixed
- Fix compile failures when building for free-threaded Python when the
abi3
orabi3-pyxx
features are enabled. #4719- Fix
ambiguous_associated_items
lint error in#[pyclass]
and#[derive(IntoPyObject)]
macros. #4725[0.23.1] - 2024-11-16
Re-release of 0.23.0 with fixes to docs.rs build.
[0.23.0] - 2024-11-15
Packaging
- Drop support for PyPy 3.7 and 3.8. #4582
- Extend range of supported versions of
hashbrown
optional dependency to include version 0.15. #4604- Bump minimum version of
eyre
optional dependency to 0.6.8. #4617- Bump minimum version of
hashbrown
optional dependency to 0.14.5. #4617- Bump minimum version of
indexmap
optional dependency to 2.5.0. #4617- Bump minimum version of
num-complex
optional dependency to 0.4.6. #4617- Bump minimum version of
chrono-tz
optional dependency to 0.10. #4617- Support free-threaded Python 3.13t. #4588
Added
- Add
IntoPyObject
(fallible) conversion trait to convert from Rust to Python values. #4060- Add
#[pyclass(str="<format string>")]
option to generate__str__
based on aDisplay
implementation or format string. #4233- Implement
PartialEq
forBound<'py, PyInt>
withu8
,u16
,u32
,u64
,u128
,usize
,i8
,i16
,i32
,i64
,i128
andisize
. #4317- Implement
PartialEq<f64>
andPartialEq<f32>
forBound<'py, PyFloat>
. #4348- Add
as_super
andinto_super
methods forBound<T: PyClass>
. #4351- Add FFI definitions
PyCFunctionFast
andPyCFunctionFastWithKeywords
#4415
... (truncated)
b5599dc
release: 0.23.3a423c79
fix PYO3_CONFIG_FILE
env var not requesting rebuilds (#4758)9c862e5
fix another unsafe_op_in_unsafe_fn
trigger (#4753)5c681ca
support python3-dll-a free-threaded generation (#4749)3cb0b87
ci: test debug builds using 3.13.0 (#4750)9714eab
don't link to abi3 dll on windows for free-threaded build (#4733)a752425
add missing CHANGELOG entry for 4589 (#4744)d3f79cf
ci: updates for Rust 1.83 (#4741)42bd0e5
Update class.md (#4739)824ba56
fix clippy beta (#4737)