Skip to content

Commit e1a1784

Browse files
encukouhugovkwarsaw
authored
PEP 11: Friendlier policy for unsupported platforms (GH-4790)
- We have code for unsupported platforms and that’s OK, but it doesn’t imply any promises either. - We welcome and encourage people that support CPython on other platforms – without promising any particular level of welcoming and encouragement. Also: - Add concrete rules for POSIX features (so we don't “over-fit” to Linux ∩ Mac ∩ BSD) - Encourage listing “outsider” experts in the [devguide](https://devguide.python.org/core-team/experts/#platforms), and pinging the experts SC decision: encukou#3 (review) Discussion: https://discuss.python.org/t/proposed-pep-11-update-policy-for-unsupported-platforms/104986 Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Co-authored-by: Barry Warsaw <barry@python.org>
1 parent 62515a3 commit e1a1784

File tree

1 file changed

+72
-16
lines changed

1 file changed

+72
-16
lines changed

peps/pep-0011.rst

Lines changed: 72 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Post-History: `18-Aug-2007 <https://mail.python.org/archives/list/python-dev@pyt
99
`14-May-2014 <https://mail.python.org/archives/list/python-dev@python.org/thread/T7WTUJ6TD3IGYGWV3M4PHJWNLM2WPZAW/>`__,
1010
`20-Feb-2015 <https://mail.python.org/archives/list/python-dev@python.org/thread/OEQHRR2COYZDL6LZ42RBZOMIUB32WI34/>`__,
1111
`10-Mar-2022 <https://mail.python.org/archives/list/python-committers@python.org/thread/K757345KX6W5ZLTWYBUXOXQTJJTL7GW5/>`__,
12+
`21-Nov-2025 <https://discuss.python.org/t/104986>`__,
1213

1314

1415
Abstract
@@ -35,15 +36,20 @@ unmaintainability: without having experts for a large number of
3536
platforms, it is not possible to determine whether a certain
3637
change to the CPython source code will work on all supported
3738
platforms.
38-
3939
To reduce this risk, this PEP specifies what is required for a
40-
platform to be considered supported by CPython as well as providing a
41-
procedure to remove code for platforms with few or no CPython
42-
users.
40+
platform to be considered supported by the CPython core team,
41+
as well as providing a procedure to remove code for platforms
42+
with few or no CPython users.
43+
44+
On the other hand, allowing these fragments in the main repository
45+
can promote collaboration, can help identify non-portable parts of
46+
the code base, and is necessary for bootstrapping support for
47+
a "new" platform.
48+
This PEP specifies what it means for a platform to be "unsupported",
49+
and how the core team handles code for such platforms.
4350

44-
This PEP also lists what platforms *are* supported by the CPython
45-
interpreter. This lets people know what platforms are directly
46-
supported by the CPython development team.
51+
This PEP also explicitly lists what platforms are directly
52+
*supported* by the CPython development team.
4753

4854

4955
Support tiers
@@ -135,17 +141,43 @@ x86_64-unknown-freebsd BSD libc, clang Victor Stinner
135141
================================ =========================== ========
136142

137143

138-
All other platforms
139-
-------------------
144+
Unsupported platforms
145+
---------------------
146+
147+
All platforms not listed in the above tiers are *unsupported* by the core team.
148+
The core team does not develop and test on such platforms, and so they
149+
cannot provide any promises that Python will work on them.
150+
151+
However, the code base does include unsupported code -- that is, code
152+
specific to unsupported platforms.
153+
Contributions in this area are welcome as long as they:
154+
155+
- pose a minimal maintenance burden to the core team, and
156+
- benefit substantially more people than the contributor.
157+
158+
We assume contributors are able to maintain modifications/patches,
159+
test patched builds, redistribute modified code, make promises to their users,
160+
and otherwise support "their" platform.
161+
With that in mind, it is generally unnecessary to backport unsupported
162+
fixes to CPython's maintenance branches.
163+
164+
Unsupported code that *does* cause a maintenance burden, or obstructs
165+
general improvements, may be rejected or removed from the code base
166+
without a deprecation process.
167+
Core team members that do this intentionally are encouraged to notify people
168+
listed in the `Platforms experts list`_ in the CPython contributor's guide,
169+
to review any submitted fixes (if unobtrusive), and to consider adding
170+
configuration or extension capabilities necessary for workarounds.
171+
172+
People interested in unsupported platforms may add themselves to the
173+
`Platforms experts list`_ to request that they be notified on issues
174+
related to "their" platform.
175+
There is, however, no formal guarantee that they *will* be notified.
140176

141-
Support for a platform may be partial within the code base, such as
142-
from active development around platform support or accidentally.
143-
Code changes to platforms not listed in the above tiers may be rejected
144-
or removed from the code base without a deprecation process if they
145-
cause a maintenance burden or obstruct general improvements.
177+
.. _Platforms experts list: https://devguide.python.org/core-team/experts/#platforms
146178

147-
Platforms not listed here may be supported by the wider Python
148-
community in some way. If your desired platform is not listed above,
179+
Platforms not listed in this PEP may also be supported by the wider Python
180+
community in other ways. If your desired platform is not listed above,
149181
please perform a search online to see if someone is already providing
150182
support in some form.
151183

@@ -207,6 +239,27 @@ source tree 3 years after the extended support for the compiler has
207239
ended (but continue to remain available in revision control).
208240

209241

242+
POSIX
243+
'''''
244+
245+
Features specified in POSIX are expected to work according to the standard.
246+
This cuts two ways:
247+
248+
- If a POSIX feature is available, it is expected to conform to POSIX.
249+
250+
Workarounds for out-of-spec platforms are acceptable.
251+
For unsupported platforms, disabling functionality is
252+
preferred over a non-trivial workaround.
253+
254+
- CPython should make no assumptions about POSIX features beyond what's
255+
specified in POSIX.
256+
257+
For example, while POSIX specifies ``errno`` as an ``int`` with no
258+
restrictions, error codes on all supported platforms happen to be positive.
259+
Relying on this would be considered a bug, even if it only manifests on
260+
unsupported platforms.
261+
262+
210263
Legacy C Locale
211264
'''''''''''''''
212265

@@ -373,6 +426,9 @@ No-longer-supported platforms
373426
Discussions
374427
===========
375428

429+
* November 2025: `Policy for unsupported platforms
430+
<https://discuss.python.org/t/104986>`_
431+
(Petr Viktorin)
376432
* April 2022: `Consider adding a Tier 3 to tiered platform support
377433
<https://mail.python.org/archives/list/python-committers@python.org/thread/V3OZPJGA5VJFYM6XYGPZIVPOIYKX6KTD/>`_
378434
(Victor Stinner)

0 commit comments

Comments
 (0)