Sourced from pyo3's releases.
PyO3 0.22.5
This release fixes a compile regression from 0.22.4 where
#[pymethods]
with name__clear__
andclear
would generate code with a naming conflict. Thanks@awolverp
for the report and@Icxolu
for the fix!PyO3 0.22.4
This release is a security fix for PyO3 0.22.0 through 0.22.3.
The
PyWeakrefMethods
trait functions for reading borrowed values from Python weak references have been identified as unsound, because they did not account for the possibility the last strong reference could be cleared at any time, leading the borrowed value to be dangling and risk of use-after-free.PyO3 0.22.4 protects against this issue by making these methods permanently leak strong references. The methods are also marked deprecated and will be removed in PyO3 0.23. Users should switch to use the use
PyWeakrefMethods
functions which return owned references (the deprecation messages indicate the appropriate upgrade paths).These functions were added in PyO3 0.22.0; all versions from 0.22.0 through 0.22.3 have been yanked.
Aside from the security fix, PyO3 0.22.4 contains a number of other bugfixes, including:
- A fix for cases where
__traverse__
functions of base types were not called when using#[pyclass(extends = ...)]
- A fix for a regression in 0.22.3 where PyO3 generated code would trigger compile failures with crates using
#![forbid(unsafe_code)]
Thank you to the following contributors for the improvements:
Sourced from pyo3's changelog.
[0.22.5] - 2024-10-15
Fixed
- Fix regression in 0.22.4 of naming collision in
__clear__
slot andclear
method generated code. #4619[0.22.4] - 2024-10-12
Added
- Add FFI definition
PyWeakref_GetRef
andcompat::PyWeakref_GetRef
. #4528Changed
- Deprecate
_borrowed
methods onPyWeakRef
andPyWeakrefProxy
(just use the owning forms). #4590Fixed
- Revert removal of private FFI function
_PyLong_NumBits
on Python 3.13 and later. #4450- Fix
__traverse__
functions for base classes not being called by subclasses created with#[pyclass(extends = ...)]
. #4563- Fix regression in 0.22.3 failing compiles under
#![forbid(unsafe_code)]
. #4574- Workaround possible use-after-free in
_borrowed
methods onPyWeakRef
andPyWeakrefProxy
by leaking their contents. #4590- Fix crash calling
PyType_GetSlot
on static types before Python 3.10. #4599
4c88e9a
release: 0.22.58f6464e
fix __clear__
slot naming collision with clear
method (#4619)dff9723
release: 0.22.43330bf2
fix garbage collection in inheritance cases (#4563)8b23397
ci: pypy 3.7 macos on x64 stillce63713
ci: run benchmarks on ubuntu 22.04 (#4609)b1173f5
ci: fix more ubuntu-24.04 failures (#4610)7371028
ci: move more jobs to macOS arm (#4600)8e3dc45
avoid calling PyType_GetSlot
on static types before Python
3.10 (#4599)969300d
leak references for safety in
PyWeakRefMethods::upgrade_borrowed
(#4590)