]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-127253: Note that Stable ABI is about ABI stability (GH-127254) (GH-127558)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 3 Dec 2024 12:57:58 +0000 (13:57 +0100)
committerGitHub <noreply@github.com>
Tue, 3 Dec 2024 12:57:58 +0000 (13:57 +0100)
(cherry picked from commit 35d37d6592d1be71ea76042165f6cbfa6c4c3a17)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
Doc/c-api/stable.rst

index 5b9e43874c7f2ba70f2808cc66593eb12d4a54a1..124e58cf950b7a7b9086942e5995cd5f5ab21530 100644 (file)
@@ -66,7 +66,7 @@ Limited C API
 
 Python 3.2 introduced the *Limited API*, a subset of Python's C API.
 Extensions that only use the Limited API can be
-compiled once and work with multiple versions of Python.
+compiled once and be loaded on multiple versions of Python.
 Contents of the Limited API are :ref:`listed below <limited-api-list>`.
 
 .. c:macro:: Py_LIMITED_API
@@ -76,7 +76,7 @@ Contents of the Limited API are :ref:`listed below <limited-api-list>`.
 
    Define ``Py_LIMITED_API`` to the value of :c:macro:`PY_VERSION_HEX`
    corresponding to the lowest Python version your extension supports.
-   The extension will work without recompilation with all Python 3 releases
+   The extension will be ABI-compatible with all Python 3 releases
    from the specified one onward, and can use Limited API introduced up to that
    version.
 
@@ -94,7 +94,15 @@ Stable ABI
 ----------
 
 To enable this, Python provides a *Stable ABI*: a set of symbols that will
-remain compatible across Python 3.x versions.
+remain ABI-compatible across Python 3.x versions.
+
+.. note::
+
+   The Stable ABI prevents ABI issues, like linker errors due to missing
+   symbols or data corruption due to changes in structure layouts or function
+   signatures.
+   However, other changes in Python can change the *behavior* of extensions.
+   See Python's Backwards Compatibility Policy (:pep:`387`) for details.
 
 The Stable ABI contains symbols exposed in the :ref:`Limited API
 <limited-c-api>`, but also other ones – for example, functions necessary to