-
Notifications
You must be signed in to change notification settings - Fork 764
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
RFC: make abi3
builds the default, add feature for unlimited ABI
#2865
Comments
(posted issue without content originally, sorry) I'm wondering if we should change features around so that Advantages:
Disadvantage would be churn induced on users and tools like @messense I'd be interested to hear what you think of this from a packaging / builds side. |
IMO it's not a big issue for
It might be an issue for |
I'm not against changing the default, as long as any change in behavior is clearly visible with new compile errors. Please don't add "unstable" to the feature name, the API should be perfectly stable within the Python minor version that the extension is compiled for. |
One note: it'd be useful if pyo3 still supported specifying the abi3 minimum version if it differs from the current python. For cryptography on Windows and macOS we build abi-py36 wheels using newer Pythons. |
Definitely; I was thinking the existing |
Well I'm a biased CPython developer, so you might want other opinions, but as far as I'm concerned, go for it :) Don't use the term unstable API, that might mean something slightly different soon. Unlimited sounds good. |
I'd also like to see abi3 be the default. For naming, what about a feature called |
I feel that
I like this! |
Considering the apparent bike-sheddability of this, I deferring such a policy decision to Maturin wouldn't be a simpler first step that would help a lot to move the ecosystem into this direction. Especially for newcomers who have not yet found about the PyO3 features themselves. |
NB #2901 has indicated that if we did this, users embedding Python would get no benefit (they would effectively be tied to a version-specific Python anyway). Not a blocker, just something to document I think. |
A reason to want this: libraries can accidentally rely on features from the unlimited API and then have users fail when running abi3 builds. If the default build mode was |
I think adding this would cause less friction with #4008. I'm using apis that aren't available with |
@davidhewitt I'm open to doing a bunch of the work implementing this, since I'd like to be able to use it. Do you have any thoughts about when we should aim to land this? Is it something that can happen parallel to the gil-refs work or should it wait until after? |
I'm also reasonably keen for this but given it creates churn for user's builds when upgrading I think either:
I think with the soundness adjustments in 0.22 it's probably a bit mean, but maybe in 0.23? |
I'll make a start with a draft PR, but I'll not expect it to land for 0.22 then. |
Just realised that at the moment we have a divergence between Might influence how we want to redesign things. |
Unlimited API also adds more performant alternatives to APIs, and it will be sad if users will lose them by default. |
I do agree with this. One thought I keep having is that we should separate the ABI and API concerns. The ABI only matters when packaging, and could be set via either The API, on the other hand, we could restrict while still using the performant ABI. This way:
|
Yup, sticking to limited API allows you to build for multiple specific CPython versions of Python plus also one for stable ABI. |
No description provided.
The text was updated successfully, but these errors were encountered: