Repository navigation
Breaking changes: Python 3.10 dropped, moving to Stable ABI (cp311-abi3) #315
o-murphy
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
📢 Breaking changes: Python 3.10 dropped, moving to Stable ABI (cp311-abi3) + NO-GIL support (cp313t)
Hey everyone,
As part of the upcoming 2.3.x release, we're introducing major changes to how we build, test, and publish wheels. This will significantly reduce CI time, cut the number of release artifacts almost in half, and simplify maintenance — though it also adds some new complexity.
🚫 Python 3.10 is no longer supported
Starting from 2.3.x, we are dropping support for Python 3.10.
The new minimum version is Python 3.11.
🧱 New wheel build strategy
1. For GIL‑based Python (standard CPython)
We are switching to the Stable ABI (Limited API) with the target version
0x030B0000(Python 3.11).cp311-abi3) will work on Python 3.11, 3.12, 3.13, 3.14+2. For NO‑GIL (free‑threaded Python)
We will build separate wheels for free‑threaded builds:
cp313t-*(Python 3.13t)cp314t-*(Python 3.14t and later)These wheels are not covered by the Stable ABI (free‑threaded Limited API is still experimental).
📦 Expected impact
🧑💻 New rule for contributors
From now on, all new contributions must be compatible with:
cp311-abi3(Py_LIMITED_API=0x030B0000) for GIL buildscp313t-*/cp314t-*) must not break (free‑threaded safety is encouraged but not yet strictly enforced)When adding Cython code, please avoid:
🔧 Technical notes for maintainers
To build with Stable ABI, our
setup.py/pyproject.tomlnow uses:For free‑threaded wheels, we will use the
-tABI tag separately (not part ofabi3).📅 Timeline
💬 Discussion
Let us know if you have concerns or run into problems. This change should make our release process much leaner, but we're open to feedback!
All reactions