On Mon, Jan 31, 2022 at 1:48 PM Petr Viktorin <encu...@gmail.com> wrote:
> (* we could also break the stable ABI, and we could even do it
> reasonably safely over a long period of time, but that's a whole
> different discussion.)

IMO the stable ABI must be change in the long term, it still leaks too
many implementation details. But right now, I didn't gather enough
data about the problematic APIs and what must be changed exactly. I
would prefer to only do once the work will be really blocked and there
would be no other choice.

Right now, I'm focused on fixing the *API*. It doesn't require to
break the stable ABI.

If we change the stable ABI, I would prefer to fix multiple issues at
once. Examples:

* No longer return borrowed references (ex: PyDict_GetItem is part of
the stable ABI) and no longer steal references (ex:
PyModule_AddObject)

* Disallow getting direct access into an object data without a
function to "release" the data. For example, PyBytes_AsString() gives
a direct access into the string, but Python doesn't know when the C
extension is done with it, and when it's safe to delete the object.
Such API prevents to move Python objects in memory (implement a moving
garbage collector in Python).

* Disallow dereferencing a PyObject* pointer: most structures must be
opaque. It indirectly means that accessing directly structure members
must also be disallowed. PEP 670 and PEP 674 are partially fixing the
issues.

Victor
-- 
Night gathers, and now my watch begins. It shall not end until my death.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/AFQVC6V4EXOOWV7LK7BHIIX2WPV5H2WX/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to