[Python-Dev] Python 3.7: remove all private C functions from the Python C API?

Brett Cannon brett at python.org
Sun Sep 11 15:21:39 EDT 2016


In general I support cleaning up our C API to more  clearly delineate the
boundaries of what people can rely on and what they shouldn't. Could we go
farther and do the same separation of the base and limited API at the
header level instead of interleaving through #ifndef?

On Sun, Sep 11, 2016, 01:38 Victor Stinner <victor.stinner at gmail.com> wrote:

> Hi,
>
> Currently, Python has 3 C API:
>
> * python core API
> * regular API: subset of the core API
> * stable API (ABI?), the Py_LIMITED_API thing: subset of the regular API
>
> For practical purpose, all functions are declared in Include/*.h.
> Basically, Python exposes "everything". There are private functions
> which are exported using PyAPI_FUNC(), whereas they should only be
> used inside Python "core". Technically, I'm not sure that we can get
> ride of PyAPI_FUNC() because the stdlib also has extensions which use
> a few private functions.
>
> For Python 3.7, I propose that we move all these private functions in
> separated header files, maybe Include/private/ or Include/core/, and
> not export them as part of the "regular API".
>
> The risk is that too many C extensions rely on all these tiny
> "private" functions. Maybe for performance. I don't know.
>
> What do you think?
>
> See also the issue #26900, "Exclude the private API from the stable API":
> http://bugs.python.org/issue26900
>
> Victor
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/brett%40python.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20160911/1a50f405/attachment.html>


More information about the Python-Dev mailing list