Skip to content

Commit

Permalink
C API: mention the workgroup, and the need to be stricter than our pu…
Browse files Browse the repository at this point in the history
…blic promises
  • Loading branch information
encukou committed Feb 28, 2025
1 parent 9867120 commit 4266d92
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions developer-workflow/c-api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,13 @@ The C API is divided into these tiers:
Each tier has different stability and maintenance requirements to consider
when you add or change definitions in it.

The compatibility guarantees for public C API are explained in the
user documentation, ``Doc/c-api/stable.rst`` (:ref:`python:stable`).
The public backwards compatibility guarantees for public C API are explained
in the user documentation, ``Doc/c-api/stable.rst`` (:ref:`python:stable`).
C language compatibility guarantees are is in ``Doc/c-api/intro.rst``
(:ref:`python:api-intro`).

Internally, we need to be more careful about compatibility than what we promise
publicly. See :ref:`public-capi` for details.


The internal API
Expand Down Expand Up @@ -93,6 +98,17 @@ CPython's public C API is available when ``Python.h`` is included normally
It should be defined in ``Include/cpython/`` (unless part of the Limited API,
see below).

Before adding new public API, please ask in the `decisions repo`_ of
the :pep:`C API workgroup <731>`.
This helps us ensure *newly added* API is consistent and maintainable.

Also check with the C API WG before requiring a C feature not present in C99.
While the *public* docs only promise compatibility with C11, in practice
we only intruduce C11 features individually as needed.

.. _decisions repo: https://github.com/capi-workgroup/decisions/issues


.. _public-api-guidelines:

Guidelines for expanding/changing the public API
Expand Down

0 comments on commit 4266d92

Please sign in to comment.