@@ -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
1415Abstract
@@ -35,15 +36,20 @@ unmaintainability: without having experts for a large number of
3536platforms, it is not possible to determine whether a certain
3637change to the CPython source code will work on all supported
3738platforms.
38-
3939To 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
4955Support 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,
149181please perform a search online to see if someone is already providing
150182support in some form.
151183
@@ -207,6 +239,27 @@ source tree 3 years after the extended support for the compiler has
207239ended (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+
210263Legacy C Locale
211264'''''''''''''''
212265
@@ -373,6 +426,9 @@ No-longer-supported platforms
373426Discussions
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