@@ -19,8 +19,13 @@ The C API is divided into these tiers:
1919Each tier has different stability and maintenance requirements to consider
2020when you add or change definitions in it.
2121
22- The compatibility guarantees for public C API are explained in the
23- user documentation, ``Doc/c-api/stable.rst`` (:ref:`python:stable`).
22+ The public backwards compatibility guarantees for public C API are explained
23+ in the user documentation, ``Doc/c-api/stable.rst`` (:ref:`python:stable`).
24+ C language compatibility guarantees are is in ``Doc/c-api/intro.rst``
25+ (:ref:`python:api-intro`).
26+
27+ Internally, we need to be more careful about compatibility than what we promise
28+ publicly. See :ref:`public-capi` for details.
2429
2530
2631The internal API
@@ -93,6 +98,17 @@ CPython's public C API is available when ``Python.h`` is included normally
9398It should be defined in ``Include/cpython/`` (unless part of the Limited API,
9499see below).
95100
101+ Before adding new public API, please ask in the `decisions repo`_ of
102+ the :pep:`C API workgroup <731>`.
103+ This helps us ensure *newly added* API is consistent and maintainable.
104+
105+ Also check with the C API WG before requiring a C feature not present in C99.
106+ While the *public* docs only promise compatibility with C11, in practice
107+ we only intruduce C11 features individually as needed.
108+
109+ .. _decisions repo: https://github.com/capi-workgroup/decisions/issues
110+
111+
96112.. _public-api-guidelines:
97113
98114Guidelines for expanding/changing the public API
0 commit comments