On 07. 12. 21 20:58, Guido van Rossum wrote:
On Tue, Dec 7, 2021 at 11:02 AM Christian Heimes <[email protected]
<mailto:[email protected]>> wrote:
On 07/12/2021 19.28, Guido van Rossum wrote:
> I assume it would be insensitive to ask whether we could just get
rid of
> the stable ABI altogether and focus on the limited API? Just tell
> everyone they have to rebuild binary wheels for every Python feature
> release. Presumably the deprecation of the stable ABI itself would
> require a two-release waiting period. But maybe it would be worth
it,
> given how subtle it is to do the historical research about even a
single
> function.
The stable ABI is useful for Python packages that ship binary wheels.
Take PyCA cryptography [1] as an example. Alex and Paul already build,
upload, and ship 12 abi3 wheels for each release and combinations of
CPU
arch, platform, and libc ABI. Without a stable ABI they would have to
create a total of 60 binary abi3 wheels for Python 3.6 to 3.10. The
number will only increase over time. Python 3.6 is very common on
LTS/Enterprise Linux distros.
Thanks, that's a very useful example.
If the current stable ABI makes performance improvements too complex
then we should consider to define a new stable ABI with less symbols.
But then we will run into backwards compatibility concerns. Suppose we
want to delete *one* functions from the stable ABI. How many releases do
we have to wait before we can actually delete (as opposed to just
deprecate) it? It sounds like you're saying it would take 5 releases,
i.e. if we deprecate it in 3.11, we can delete it in 3.16. It would
probably be easier to just not bother with the deprecation.
That really depends on what function we'd want to remove. There are
usually alternatives to deleting things, but the options depend on the
function. If we run out of other options we can make the function always
fail or make it leak memory.
And the regular backwards compatibility policy gives us 2 years to
figure something out :)
It is possible that we'll need a new stable ABI for nogil, though, since
refcounting is one of the few areas where even the stable ABI uses
direct struct access rather than functions.
_______________________________________________
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/WN7TBSV6LM24X6CIEQQDG63OYPIR5ZLU/
Code of Conduct: http://python.org/psf/codeofconduct/