Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows/installer/doc (PEP 11): drop support for Windows 8.1/Server 2012 R2 #113723

Open
6 tasks
josephsl opened this issue Jan 5, 2024 · 6 comments
Open
6 tasks
Labels
3.13 bugs and security fixes OS-windows

Comments

@josephsl
Copy link

josephsl commented Jan 5, 2024

Hi all,

Note: not sure if the following fals under bug report or feature request, and either of these would fit, please let me know.

Metadata:

  • Platform: Windows
  • Area: installer/documentation (code base could be covered later)
  • Issue type: request/documentation/PEP 11

Overview

As stated in doc/using/windows.rst, CPython supports a Windows release under extended support by Microsoft. As of Python 3.13 alpha 2, the earliest supported Windows version is 8.1, which went out of extended support in January 2023 (reference 1).

Change request:

In accordance with PEP 11 (reference 2), I suggest dropping Windows 8.1/Server 2012 R2 support in Python 3.13 milestone - that is, Windows 10 or later releases are supported. This is because Windows 8.1 (client) is not receiving extended security updates (ESU's) - only Server 2012 R2 receives security updates if enterprise customers pay for annual licenses. As support for a server release is tied to client releases, people can say that Python core developers should drop both 8.1 and Server 2012 R2 together.

Suggested modifications:

  1. Edit Windows installer to refuse to run unless Windows kernel version is 10.0 or above.
  2. Edit the Python documentation to state Windows 10 as minimum requirement.
  3. Long-term: edit C API and other code to drop Windows 8.1 assumptions.

References:

  1. Windows 8.1 lifecycle: https://learn.microsoft.com/en-us/lifecycle/products/windows-81
  2. PEP 11: https://peps.python.org/pep-0011/

Thanks.

Tasks

@hugovk hugovk added OS-windows 3.13 bugs and security fixes labels Jan 5, 2024
@zooba
Copy link
Member

zooba commented Jan 5, 2024

We should find the exact minimum version of Win10 that we support for 3.13 and update NTDDI_VERSION to it (options listed here), which is the best way to agree on which version is supported. This probably requires taking Windows Server into account as well, but once we have a specific number, a lot of arguments/discussions can go away.

I'm not so concerned about the version block in the installer, but we can drop the copy of UCRT which should help reduce the size slightly (Windows 10 always has its own copy).

API cleanup can indeed wait longer, but we should get the docs at least updated before beta, and python.org updated before RC.

@josephsl
Copy link
Author

josephsl commented Jan 5, 2024

Hi,

For Windows 10, I think 1607/Server 2016 would be the best unless someone using 2015 LTSC says otherwise; 2015 LTSC will be in extended support until October 2015, so if folks go with 2015 LTSC, then we could guarantee up to Python 3.14 being compatible with it. Do note that 2016 LTSC/Server 2016's extended support ends in October 2026, and that could raise questions about keep dropping Windows 10/11 releases every year or wait a while before informing users about end of support for unsupported Windows 10/11 releases.

For reference, the supported modern Windows versions (using modern lifecycle policy and LTSC releases) are Windows 10 2015 (1507) LTSC, 2016 (1607) LTSC, 2019 (1809) LTSC, 2021 (21H2) LTSC, 22H2, Windows 11 21H2 (extended support for Enterprise/Education until October 2024), 22H2, 23H2, Windows Server 2016, 2019, and 2022. The below table shows end of life dates for older LTSC/Windows 10/11 releases and projected Python 3.x release dates (using annual release cycle):

Month/Year Windows end of life release Python release
October 2024 Windows 11 21H2 Python 3.13
October 2025 Windows 10 LTSC 2015 and all forms of consumer-level Windows 10 releases, Windows 11 22H2 Python 3.14
October/November 2026 Windows 10 LTSC 2016/Server 2016, Windows 11 23H2 (November 2026) Python 3.15

Thanks.

@hugovk
Copy link
Member

hugovk commented Jan 5, 2024

This (unofficial) EOL table may also be helpful:

https://endoflife.date/windows

@zooba
Copy link
Member

zooba commented Jan 5, 2024

Thanks! I think LTSC is out of scope for us - people who are using that for its purpose (avoiding feature updates in embedded devices) should also avoid feature updates to CPython.

It seems the right "product" is probably Windows 10 Enterprise and Education and Windows 11 Enterprise and Education. By my read of those pages, at the end of October 2024 the earliest versions in support will be Windows 10 22H2 and Windows 11 22H2. That seems very recent.

Windows Server is probably a better guide, and we still have WS 2016 in "extended" support until our 2026 release. So let's say NTDDI_WIN10_RS1 is our minimum supported version for 3.13, which would be Windows 10 1607 and Windows Server 2016.

I'd like to keep dropping the various releases each year, but I think compatibility with the Server OS is more important, especially given how quickly we drop our own support compared to people who are trying to use us. Should probably update PEP 11 with something like "since 3.13 we use the earliest Windows Server release still receiving free security fixes". The table at https://endoflife.date/windows-server is indeed easier to read than the official docs, so I'm okay with referencing that.

@zooba
Copy link
Member

zooba commented Jan 9, 2024

For the sake of discussion, here's my proposed update to PEP 11 clarifying this situation: python/peps#3617

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.13 bugs and security fixes OS-windows
Projects
None yet
Development

No branches or pull requests

3 participants