Skip to content

Commit 0527f60

Browse files
committed
PEP 803: add section for maintainer comments
1 parent 6ab735d commit 0527f60

1 file changed

Lines changed: 69 additions & 1 deletion

File tree

peps/pep-0803.rst

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ for free-threading should be prepared and defined for Python 3.15”.
5050

5151
This PEP proposes the Stable ABI for free-threading.
5252

53-
5453
Background
5554
----------
5655

@@ -80,6 +79,75 @@ were a part of older versions.
8079
This PEP proposes additional API limitations, as required to be compatible
8180
with both GIL-enabled and free-threaded builds of CPython.
8281

82+
Ecosystem maintainers want decreased maintenance burden
83+
-------------------------------------------------------
84+
85+
A major advantage of the limited API and stable ABI wheels is that new
86+
Python versions are supported on the day of release. Without stable ABI
87+
wheels, maintainers are left with a choice between closely following CPython
88+
releases and producing wheels during CPython beta periods or dealing with
89+
inevitable user requests for support for new CPython versions.
90+
91+
Cryptography
92+
^^^^^^^^^^^^
93+
94+
The cryptography project shipped 48 wheel files with their `most recent release
95+
<https://pypi.org/project/cryptography/46.0.5/#files>`_. Cryptography is
96+
somewhat unusual in that they ship 14 wheels each for both the ``cp38`` and
97+
``cp311`` stable ABIs to enable optimizations available in newer limited API
98+
versions. They also ship 14 additional ``cp314t`` wheels and 6 wheels for
99+
pypy. If there is no free-threaded stable ABI, then with Python 3.15,
100+
cryptography will be using roughtly the same amount of space on PyPI to support
101+
two versions of the free-threaded build as *all* non-EOL versions of the
102+
GIL-enabled build.
103+
104+
Cryptography maintainer Alex Gaynor `expressed a desire
105+
<https://discuss.python.org/t/making-pyobject-opaque-in-the-limited-api/77206/2>`_
106+
on discourse for a free-threaded stable ABI:
107+
108+
Just to state this explicitly from the PyCA maintainers perspective, as
109+
long as we have O(1) builds, that’s ok. What we can’t/won’t do is O(n)
110+
where we need new builds for every Python release.
111+
112+
moocore
113+
^^^^^^^
114+
115+
The moocore project `ships seven abi3 wheels
116+
<https://pypi.org/project/moocore/0.2.0/#files>`_. It has a much smaller
117+
userbase than cryptography and has a smaller appetite for build complexity. When
118+
the topic of adding support for the free-threaded build `came up on the moocore
119+
issue tracker <https://github.com/multi-objective/moocore/issues/37>`_,
120+
maintainer Manuel López-Ibáñez let the person reporting the issue know that:
121+
122+
The free-threading versions are still experimental so each new
123+
free-threading python version will need its own wheels.
124+
125+
Moreover, since free-threading is still experimental and not the default,
126+
there may be bugs that only the Python developers can fix. I would expect
127+
most users of moocore and pymoo to use the default non-free-threaded version
128+
of Python 3.14.
129+
130+
[...]
131+
132+
**I don't want to build for 3.14 free-threading unless you really need it.**
133+
134+
Later, after discovering the tracking issue for supporting the limited API on the
135+
free-threaded build, he commented:
136+
137+
By the way, python/cpython#111506 is about extending the stable ABI to
138+
support free-threaded Python. If they do that, then the builds of moocore
139+
will work in both classical and free-threaded Python versions, without
140+
needing to build new wheels for each Python version.
141+
142+
[...]
143+
144+
I will revisit this again once Python 3.15 is released. Hopefully the ABI
145+
will be stable (or even better, free-threading will be the default).
146+
147+
These two libraries -- cryptography and moocore -- are on opposite sides of the
148+
maintainer bandwidth spectrum, but both would still really like to have a stable
149+
ABI on the free-threaded build they can use to ship wheels and reduce their
150+
maintenance burden.
83151

84152
Rationale
85153
=========

0 commit comments

Comments
 (0)