Description
With #3960 (the GIL Refs API removal) complete (thanks primarily to @Icxolu I think); I think we should consider what's remaining that blocks us from releasing 0.23.
I have been speaking to @ngoldbaum regarding Python 3.13 freethreaded support and am settled with the idea that to get something out there before 3.13 final releases it's realistic to aim for having a sound implementation in PyO3 but not necessarily the ideal one (e.g. semantics may be unhelpful and performance may be bad). We can discuss the exact details in #4265, though in general this means that for questions such as whether to switch to #[pyclass(frozen)]
by default in this release I might prefer to wait until 0.24.
In terms of a list of things to do, I think this means that we need to resolve the final steps of the breaking changes:
- Finish the
IntoPyObject
introduction - I think this this is just waiting on some reviews to make next steps (?) - Decide what to do about add second lifetime to
FromPyObject
#4390 - given the design questions still there which I opened recently (😱), I am wondering whether we can wait until 0.24 for that change to avoid landing too much breakage to traits all in one go (?). - I think
PyClass: Sync
needs to happen to make the freethreaded build sound and also resolves a part ofF: Ungil
on nightly insufficient for soundness ofallow_threads
, even withoutscoped-tls
orsend_wrapper
#3658 anyway, so I intend to consider that relatively urgently.
Once those points are resolved (and we have enough of #4265 to make PyO3 sound), I would be quite keen to cut the 0.23 release so we don't stack up too many more breaking changes.
Is there anything I've missed?