PEP 803: Stable ABI for Free-Threaded Builds

Yes. But for free-threading, the stable ABI needs to be broken in some way.

Yes, but only in the regular (non-free-threaded) builds of 3.15+.

It should be possible to make a single ABI compatible with 3.11+ (non-free-threaded) and 3.15+ (all builds).[1] Personally, I’d be happy to do it – please convince the SC that it’s a good idea! Currently it seems the complexity in testing and supporting this is not worth it.
It could be done as an “add-on” to PEP 803 – basically, extending the compatibility to lower versions.


  1. ① Add Py_OPAQUE_OBJECT as a user-settable knob for limited API 3.14 and below; ② add a shim for PEP 793’s PyModExport (ugly but self-contained); ③ add a few shims for things that only became non-static functions in or 3.15; ④ add a abi3t wheel tag, rather than relying on cp315-abi3 ↩︎

2 Likes