I'm working on enabling support for a free-threaded stable ABI. See Quansight-Labs/free-threaded-compatibility#310 for more detail about this work.
Right now the most concrete path forward towards that is getting PEP 803 approved. Towards that end, I'm working on a set of end-to-end tests for PEP 803 using experimental support available for opaque PyObject builds in CPython 3.15 alphas and patched versions of packaging tools.
On the Rust end of things, I've been working on this in PyO3 and currently have a branch that can build abi3 extensions on the free-threaded build. The next step is to update maturin to support building abi3.abi3t wheels.
My plan is to open a draft pull request implementing this. For now I'm going to set it up so a free-threaded interpreter is needed to produce an abi3t.abi3 wheel, but in principle cross-compiling should also work so long as the cross-compile build config sets both Py_LIMITED_API and Py_GIL_DISABLED. PEP 803 also proposes a new Py_TARGET_ABI3T macro to control this directly without overloading Py_LIMITED_API and Py_GIL_DISABLED, but that is not yet implemented in CPython so it's not straightforward to test.
I'm working on enabling support for a free-threaded stable ABI. See Quansight-Labs/free-threaded-compatibility#310 for more detail about this work.
Right now the most concrete path forward towards that is getting PEP 803 approved. Towards that end, I'm working on a set of end-to-end tests for PEP 803 using experimental support available for opaque PyObject builds in CPython 3.15 alphas and patched versions of packaging tools.
On the Rust end of things, I've been working on this in PyO3 and currently have a branch that can build
abi3extensions on the free-threaded build. The next step is to update maturin to support buildingabi3.abi3twheels.My plan is to open a draft pull request implementing this. For now I'm going to set it up so a free-threaded interpreter is needed to produce an abi3t.abi3 wheel, but in principle cross-compiling should also work so long as the cross-compile build config sets both
Py_LIMITED_APIandPy_GIL_DISABLED. PEP 803 also proposes a newPy_TARGET_ABI3Tmacro to control this directly without overloadingPy_LIMITED_APIandPy_GIL_DISABLED, but that is not yet implemented in CPython so it's not straightforward to test.