Skip to content

Commit 8730d4e

Browse files
committed
Review feedback from Carol
1 parent 2e1b1be commit 8730d4e

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

peps/pep-0809.rst

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@ The Stable ABI as ``abi3`` can no longer be preserved, and requires replacement.
1616
incompatibilities, with planned retirement after 10 years. A new ABI ``abi2030``
1717
is planned to provide five years of overlap for the next ABI.
1818

19-
Long-term stability will be enabled without restricting users through a
20-
mechanism for runtime ABI discovery, allowing extensions to be compiled with
21-
knowledge of APIs that were not available in prior releases, but can be accessed
22-
through an identical ABI.
19+
Long-term stability will be enabled through a mechanism for runtime ABI
20+
discovery, allowing extensions to be run with earlier releases that support the
21+
same ABI. Changes and additions during the lifespan of an ABI can be added as
22+
*interfaces*, allowing them to be discovered at runtime so that callers can
23+
choose suitable fallback behaviour. Currently, such additions prevent extensions
24+
from loading at all on earlier runtimes.
2325

2426
The ``abi3`` ABI will be retained in GIL-enabled builds for five years, after
2527
which time it will be retired (and only ``abi2025`` and ``abi2030`` will be
@@ -38,8 +40,8 @@ Motivation
3840
==========
3941

4042
The Stable ABI is currently not available for free-threaded builds.
41-
Extensions will fail to build when :c:macro:`Py_LIMITED_API` is defined,
42-
and extensions built for GIL-enabled builds of CPython will fail to load
43+
Extensions will fail to build when :c:macro:`Py_LIMITED_API` is defined.
44+
Likewise, extensions built for GIL-enabled builds of CPython will fail to load
4345
(or crash) on free-threaded builds.
4446

4547
In its `acceptance post <https://discuss.python.org/t/84319/123>`__
@@ -79,13 +81,13 @@ exposes.
7981
The Limited API is versioned, and building against Limited API 3.X
8082
yields an extension that is ABI-compatible with CPython 3.X and *any* later
8183
version (though bugs in CPython sometimes cause incompatibilities in practice).
82-
Also, the Limited API is not "stable": newer versions may remove API that
83-
were a part of older versions.
84+
Also, the Limited API is not "stable": newer versions may remove API items that
85+
were available in older versions.
8486

8587
This PEP proposes a significant change to versioning of both the Limited API
86-
and the Stable ABI, with the goal of enabling long-term management of stability
87-
and compatibility, but without preventing access to innovations for those who
88-
are using the limited subsets.
88+
and the Stable ABI. The goal is to enable long-term management of stability
89+
and compatibility, while also allowing users of the limited subsets to have
90+
access to innovations in later Python releases.
8991

9092

9193
Rationale
@@ -125,10 +127,10 @@ ABI Stability
125127

126128
The Stable ABI will be frozen for a duration of at least 10 years. When a new
127129
version of the Stable ABI is frozen, the existing version will continue to be
128-
supported for at least 5 years. This allows ample migration time for consumers
129-
(that is, package developers) to migrate their entire range of supported
130-
releases simultaneously. However, if the core team sees no reason to replace the
131-
current Stable ABI, the new version may be deferred.
130+
supported for at least 5 years. This allows ample migration time for package
131+
maintainers (and other users) to migrate their entire range of supported
132+
releases simultaneously. However, if the Python team sees no reason to replace
133+
the current Stable ABI, the new version may be deferred.
132134

133135
When a Stable ABI is frozen, the year becomes the name of the ABI. For example,
134136
we anticipate that the first ABI under this scheme will be ``abi2026``, and will
@@ -163,7 +165,7 @@ New Export Hook (PEP 793)
163165
-------------------------
164166

165167
Implementation of this PEP requires :pep:`793` (``PyModExport``:
166-
A new entry point for C extension modules) to be
168+
A new entry point for C extension modules) to be
167169
accepted, providing a new “export hook” for defining extension modules.
168170
Using the new hook will become mandatory in Limited API 3.15.
169171

0 commit comments

Comments
 (0)