Right now, supporting the Windows x86 (32-bit) platform is the responsibility of all core developers: it’s a Tier-1 platform. I’m not comfortable with this status: I’m not sure that “all core devs” have access to a Windows machine to build Python in 32-bit mode and debug issues (specific to this platform).
Recently, I fixed a RecursionError in test_tomllib and backported my fix to Python 3.11. On Python 3.11, it’s fine on all platforms, except on Windows x86 where test_support and test_tomllib are now failing. Well, it’s likely not a bug deal to fix this issue, it’s just an example. Since the “Windows x86” job is not mandatory on pull requests, I merged my PR. @steve.dower proposed his help to fix the issue. But is it enough to have a single core dev to maintain a platform?
In general, is Python 32-bit still popular on Windows? It seems like numpy provides win32 binary wheels for Python 3.11, but Pillow doesn’t.
Python Windows download page sadly still proposes the 32-bit flavor before 64-bit flavor in the list. Same in the download links of Python 3.11.5 release for example. I’m surprised that python.org does not provide any guidance to make a decision between the Windows 32-bit and Windows 64-bit choice.
It seems like Conda only offers 64-bit flavor on Windows.
On a fresh Python, if I type “python” in a terminal, Windows Store pops up and invites me to install Python 3.11. I click on [Get] and I get… Python 3.11.5 built in 64-bit mode: ah, we are good!
While cibuildwheel supports Windows 32bit on Python 3.6 to Python 3.11, it doesn’t support Windows 32bit for PyPy 7.3. The reason is simple, PyPy no longer supports Windows 32-bit: it’s gone from the download page. They dropped Windows 32-bit support around PyPy v7.3.6.
Python 3.12.0 final is going to be shipped with Windows 32-bit installers. If we change something, it cannot happen before Python 3.13, Thomas Wouters is the Python 3.13 release manager (same for Python 3.12).
Summary:
- python.org proposes Windows 32-bit and Windows 64-bit installer, the 32-bit flavor is listed first, and there is no guidance
- Windows Store installs 64-bit binary
- Conda only supports Windows 64-bit
- GitHub Action Windows x86 (32 bit) is not mandatory (can fail, it doesn’t prevent to merge a PR)
- numpy provides 64-bit binary, Pillow doesn’t
- PyPy dropped Windows 64-bit
I’m not proposing to remove Windows 32-bit support in Python 3.13. Questions are more around:
- Who is going to fix Windows 32-bit specific issues?
- Should we still ship Windows 32-bit installers for Python 3.13?
- Should we remove the GitHub Action Windows x86 job?
So, as written in the title: Consider downgrading Windows 32-bit from Tier-1 to Tier-2 or Tier-3? (in Python 3.13?)
Previous discussion in 2018 about python.org download page: why is not 64-bit installer the default download link for Windows?. In 2018, @steve.dower wrote:
Do Intel 32-bit CPU still exist in 2023? Is it possible to explicitly install Windows in 32-bit on a 64-bit CPU? What is the ratio of Windows users who cannot 64-bit Python?
Python test suite has a few tests specific to 32-bit. And the C code has obviously some code paths specific to 32-bit pointers (#if SIZEOF_VOID_P > 4
).
Windows 32-bit is one of last 32-bit platforms that we still support on buildbots. The other one is ARM 32-bit CPU: ARM Raspbian buildbot worker: “Raspberry Pi 4 B running Raspbian (Bullseye 11.x).” Oh wait, the Cortex-A72 CPU is actually a 64-bit CPU! I suppose that @gpshead made the deliberate choice of installing Debian in 32-bit.