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.
① Add
Py_OPAQUE_OBJECTas a user-settable knob for limited API 3.14 and below; ② add a shim for PEP 793’sPyModExport(ugly but self-contained); ③ add a few shims for things that only became non-static functions in or 3.15; ④ add aabi3twheel tag, rather than relying oncp315-abi3↩︎