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 to PyTuple::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:
@abrisco
@adamcavendish
@ahlinc
@akuhnregnier
@alex
@attack68
@birkenfeld
@Brogolem35
@bschoenmaeckers
@ChayimFriedman2
@Cheukting
@csernazs
@davidhewitt
@deedy5
@dependabot[bot]
@digitalsentinel
@exg
@FlickerSoul
@gi0baro
@glevco
@Icxolu
@jakelishman
@jeff-k
@jonaspleyer
@JRRudy1
@KLMatlock
@konstin
@LilyFoote
@MatthijsKok
@Mottl
@ngoldbaum
@obi1kenobi
@Owen-CH-Leung
@sansyrox
@shehabgamin
@Stranger6667
@styvane
@Thalyum
@Tlunch
@wangxiaoying
@WilliamTakeshi
@YesSeri
@Zyell