-
Notifications
You must be signed in to change notification settings - Fork 638
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[wip] limited api wheels #2051
base: main
Are you sure you want to change the base?
[wip] limited api wheels #2051
Conversation
Actually can't drop any wheels before 3.11 because 3.11 introduces Py_buffer to the ABI, which we need. So we still need to build wheels for each supported Python <=3.10. So we can't drop most wheels, but we could drop CPython >= 3.13 or 3.12 in favor of a limited API wheel. It's unclear if the vectorcall improvement in 3.12 is worth it or not. |
temporarily, for testing
abi3audit needs to be installed, use pipx
maybe it's old
cibuildwheel doesn't build wheels if there's already a compatible one, so if we want to build both a 3.11 abi3 wheel and a 3.13 native wheel, we need to do something special with ci (i.e. build abi3 wheels in their own jobs). Running with Python 3.13, I saw a ~20% performance penalty of about 1µs per send (baseline 4.5µs) in the throughput benchmarks with the 3.11 abi (basically just measuring the overhead of So I can either:
I'm not sure which I'll pick when the time comes, but perhaps option 2. I really hope freethreading gets a stable ABI in 3.14, too. |
try building wheels with limited API
requires Cython 3.1, currently in prerelease
see #2010 for more about which wheels we could/should build
closes #2010