Supported platforms and architectures — Unofficial Python Development (Victor's notes) documentation (original) (raw)

See also Python on Android.

Supported architectures

Well supported architectures:

Best effort support architectures:

Well supported platforms

Well supported platforms on Python 3.7 and 2.7:

It took 9 years to fix all compiler warnings on Windows 64-bit! Usually, the fix was to use a larger type to avoid a downcast. For example replace int withPy_ssize_t.

Linux

CPython still has compatibility code for Linux 2.6, whereas the support of Linux 2.6.x ended in August 2011, longer than 6 years ago.

Proposition in January 2018 to drop support for old Linux kernels:https://mail.python.org/pipermail/python-dev/2018-January/151821.html

Windows

FreeBSD

macOS

Tested by Travis CI and buildbots.

Best effort and unofficial platforms

Supported platform with best effort support:

Platforms not supported officially:

Unofficial projects:

Removed platforms

PEP 11 lists removal of supported platforms:

I want CPython to support my platform¶

In short, there are 2 conditions:

If it’s not possible, the best option is to maintain a fork of CPython (fork of the Git repository) to maintain patches to top of the master branch (and maybe also patches on other branches).

More detail in the PEP 11.

C compilers

Python has a good support for:

Best effort:

Compiler flags:

See Python Continuous Integration to see exactly which C compilers and which compiler and linker flags are actually tested.

See also Python builds.

See PEP 7 for the minimum C standard version. In short, it’s a subset of C99 with static line functions and<stdint.h>.

sys.platform versus os.name

Example of sys.platform and os.name values:

Platform sys.platform os.name
AIX aix on Python3.8+, (**) posix
FreeBSD freebsd5, freebsd6, … posix
Linux linux on Python 3, linux2 on Python 2 (*) posix
macOS darwin posix
NetBSD netbsd (with a suffix?) posix
OpenBSD openbsd5 posix
Solaris sunos5 posix
Windows win32 nt

sys.platform comes from the MACHDEP variable which is built by the configure script using:

(*) sys.platform was also linux3 on old versions of Python 2.6 and Python 2.7 with Linux kernel 3.x.

(**) On AIX sys.platform included a release digit, aix3, …,aix7 on all versions of Python through version Python 3.7.