[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2021-03-14 Thread C.A.M. Gerlach


C.A.M. Gerlach  added the comment:

Sorry I never got around to this, I was planning on it and then life and COVID 
intervened. I can give it another look now to get it in before the 3.10 feature 
freeze (since I at least documented in detail what each change should be, so it 
should be relatively straightforward) unless someone else would rather take it.

> PEP 11 says that "[a] new feature release X.Y.0 will support all Windows 
> releases whose extended support phase is not yet expired". There was no such 
> thing as Extended Security Updates (ESU) when that provision was accepted. As 
> defined by PEP 11, extended support for Windows 7 ended on 2020-01-14. 

Yeah, "Extended Support" has a very specific, defined meaning [1] in Microsoft 
standard terminology (and other vendors as well), as the support phase after 
"Mainstream Support" but before the product end of life, where security updates 
and potentially limited bugfixes are still offered to all customers and the 
product is still considered supported, but new features and phone support is 
not. This ended 2020-01-24.

[1] https://docs.microsoft.com/en-us/lifecycle/policies/fixed

ESU [2] is a specialized, paid program available to high volume enterprise 
customers as a "last resort option" that pay big $$$ to continue receiving 
critical security updates for a limited time. This fulfills neither the letter 
nor the spirit of the policy defined in PEP 11; if such vendors need support 
for bleeding-edge Python versions for some reason, it certainly should be well 
within their means to fund someone to do so.

[2] https://docs.microsoft.com/en-us/lifecycle/faq/extended-security-updates

--
versions: +Python 3.10 -Python 3.9

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2021-03-14 Thread Eryk Sun


Eryk Sun  added the comment:

PEP 11 says that "[a] new feature release X.Y.0 will support all Windows 
releases whose extended support phase is not yet expired". There was no such 
thing as Extended Security Updates (ESU) when that provision was accepted. As 
defined by PEP 11, extended support for Windows 7 ended on 2020-01-14. 

> So wouldnt it be better to keep the code until the extended support of
> Windows 7 ends?

IMO, Windows 7 is either supported or it's not. If it's not, then workarounds 
and fallback code for Windows 7 should be removed.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2021-03-14 Thread DMI-1407


DMI-1407  added the comment:

Is a Windows Version dropped on "normal" end of life or when the extended 
support ends?
Windows 7 extended support ends in 2023 (april i think).
Source: 
https://docs.microsoft.com/en-us/troubleshoot/windows-client/windows-7-eos-faq/windows-7-extended-security-updates-faq#what-are-the-coverage-dates-for-the-three-windows-7-esu-skus

As far as i understood it, Windows 7 gets unsupported from Python 3.9 because 
of code removal?
So wouldnt it be better to keep the code until the extended support of Windows 
7 ends?

--
nosy: +DMI-1407

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2020-10-07 Thread Roundup Robot


Change by Roundup Robot :


--
nosy: +python-dev
nosy_count: 10.0 -> 11.0
pull_requests: +21578
pull_request: https://github.com/python/cpython/pull/22586

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2020-03-23 Thread C.A.M. Gerlach


C.A.M. Gerlach  added the comment:

Thanks, will do as requested. I was planning on knocking it out yesterday, but 
some unexpected things came up so I might have to push it all the way to next 
weekend, but I'll get it done.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2020-03-22 Thread Steve Dower


Steve Dower  added the comment:

Go ahead. I think you should create three PRs (docs, tests and code), with only 
as many tests in the code PR as are needed to keep it passing.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2020-03-22 Thread C.A.M. Gerlach


C.A.M. Gerlach  added the comment:

Hey, any update on this? As I mentioned, I'm willing to implement everything I 
mention here in one or more PRs, but I wanted to wait for a go-ahead in case 
some of the changes were not desired. Let me know and I'll go ahead. Thanks!

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2020-03-04 Thread STINNER Victor


Change by STINNER Victor :


--
nosy:  -vstinner

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2020-03-04 Thread C.A.M. Gerlach


C.A.M. Gerlach  added the comment:

What Eryk said wrt Windows 8 seems sound, looking at some additional data.

Per Statcounter [0], Windows 8 market share has dropped to 1.32% from 2.20% of 
all Windows users over the past 12 months, or 1.75% -> 1.01% of all desktop 
users. Extrapolating a constant linear decrease, this would imply a usage share 
of 0.55-0.60% at Python 3.9 release, or considering a more conservative (and 
realistic) constant-percent decrease, this would put the amount at 0.75%. For 
comparison, by Statcounter's same metrics, Windows XP which was EoL 5 versions 
ago is still at 1.13% of the Windows or 0.90% of the total desktop market 
today, WinVista is at 0.41%/0.33%, Win8.1 at 4.7%/3.8% (~4x Win8) and of course 
the EoL and also dropped Windows 7 is at no less than 23.2%/18.5%, nearly 20 
times the amount of Win 8 today and dropping more slowly besides.

[0] https://gs.statcounter.com/os-version-market-share/windows/desktop/worldwide

Conducting a similar analysis with the NetMarketshare data [1], we see a 0.78% 
-> 0.66% year on year share for Win8, which extrapolates to a 0.57% share at 
Py2.9 release. Vista is much lower at only 0.15%, but XP is over 2x higher at 
1.35%, and Win8.1 well over 5x as large at 3.5%. Windows 7 is, again, at no 
less than 25.2%, nearly 40x the Win 8 marketshare.

[1] https://netmarketshare.com/operating-system-market-share.aspx

Users likely to be most concerned with wanting or needing to use the latest and 
greatest version of Python are more than likely to be power users, enthusiasts 
and developers, a group that was particularly averse to adopting Windows 8 when 
it came out, was more likely to upgrade to 8.1 , and is more aware of EoL 
timeframes than the average consumer. This is empirically supported by the 
Steam survey [2], which samples a population substantially more similar to the 
profile of a developer than the average web user captured by the previous two 
surveys. Here, the numbers are much more stark: A mere 0.17% of their >96% 
Windows userbase runs Windows 8, vs. 2.10% (>10x) for Windows 8.1 and 12.4% for 
Windows 7 (~75x). Given an infinitesimal fraction of such remaining users are 
likely going to require upgrading to a bleeding-edge Python version but not 
their OS that would have been EoL for nearly 5 years, over a year longer than 
Vista itself  and 4 years longer than 7, I don't think supporting 
 that EoL OS per PEP 11 for another >5+ years with another new Python version 
need be a priority.

[2] 
https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2020-03-04 Thread C.A.M. Gerlach


C.A.M. Gerlach  added the comment:

Here's a further conservative list of low-hanging https://github.com/python/cpython/blob/master/Lib/ntpath.py#L675
* multiprocesing/connection.py | >=Win 8 | Branch can be inlined and outdated 
comments removed: 
https://github.com/python/cpython/blob/master/Lib/multiprocessing/connection.py#L866
* pathlib.py | >= Vista | Branch can be inlined and else block removed: 
https://github.com/python/cpython/blob/master/Lib/pathlib.py#L19


Tests:
* test_winreg.py | Vista | Multiple tests and constants (All the checks and 
tests requiring registry reflection/`HAS_REFLECTION`):  
https://github.com/python/cpython/blob/master/Lib/test/test_winreg.py
* test_winreg.py | https://github.com/python/cpython/blob/master/Lib/test/test_winreg.py#L309
* test/support/__init__ | <=Win 9x (!) | Test initialization branch can be 
inlined and out of date comments removed: 
https://github.com/python/cpython/blob/master/Lib/test/support/__init__.py#L987
* test_winconsoleio.py | <=Win7 | Test branch: 
https://github.com/python/cpython/blob/master/Lib/test/test_winconsoleio.py#L99
* test_winconsoleio.py | <=Vista | Skipif decorator : 
https://github.com/python/cpython/blob/master/Lib/test/test_winconsoleio.py#L99
* test_import/__init__.py | https://github.com/python/cpython/blob/master/Lib/test/test_import/__init__.py#L1025


Other:
* "Since we limit WINVER to Windows 7 anyway, it doesn't really matter which 
WinSDK version we use." -> can be updated to 8? 
https://github.com/python/cpython/blob/master/PCbuild/python.props#L101

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2020-03-04 Thread C.A.M. Gerlach


C.A.M. Gerlach  added the comment:

I'd be happy to submit a PR to resolve all the issues that I note here. Just 
say the word and I'll go right ahead.

I presume the Windows installer code [0a] should be updated to refuse to 
install on Windows <8 and given an informative warning instead letting the user 
know their system is not supported, as well as logging the appropriate messages 
in each case? Appropriate failure IDs would also be defined in the associated 
WXL [0b].

[0a] 
https://github.com/python/cpython/blob/master/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp#L3041
[0b] https://github.com/python/cpython/blob/master/Tools/msi/bundle/Default.wxl

The relevant Using Python on Windows docs [1a] should be updated to reflect 
this, along with PCBuild/readme.txt [1b]. Also, given it is dropping 2 major 
Windows versions, including one seeing widespread use, it should probably be 
mentioned in What's New; I don't see it there as it stands now.

[1a] https://github.com/python/cpython/blob/master/Doc/using/windows.rst
[1b] https://github.com/python/cpython/blob/master/PCbuild/readme.txt

As a more trivial docs change, references to "Vista's" UAC ([2a], [2b], [2c]) 
could be updated to simply refer to "Windows'" UAC to avoid confusion since it 
presumably applies to all >=Vista versions which have said feature.

[2a] 
https://github.com/python/cpython/blob/master/Lib/distutils/command/bdist_wininst.py#L52
[2b] 
https://github.com/python/cpython/blob/master/PC/bdist_wininst/install.c#L2187
[2c] 
https://github.com/python/cpython/blob/master/Doc/distutils/builtdist.rst#vista-user-access-control-uac

Finally, maybe this is stretching the scope a bit, but the relevant part of 
[1a], namely [3a], should also be updated to state that Windows CE is not 
supported (it currently states the opposite), as this was removed in 3.6.0b1 
[3ai], and additionally the Sourceforge (!) project it links to [3bii] is on an 
legacy archived CVS repo that hasn't been meaningfully updated since 2008 and 
the current versions of CE (5 and 6) at the time is long EoL now (in fact, 7 is 
coming up on its EoL in a year). Out of date references to Windows CE support 
could also be removed from the ctypes doc [3b] and the condavar code comments 
[3c], [3d].

[3a] https://github.com/python/cpython/blob/master/Doc/using/windows.rst#L1165
[3ai] 
https://github.com/python/cpython/blob/master/Misc/NEWS.d/3.6.0b1.rst#L217
[3aii] https://sourceforge.net/projects/pythonce/files/
[3b] https://github.com/python/cpython/blob/master/Doc/library/ctypes.rst 
[3c] 
https://github.com/python/cpython/blob/master/Include/internal/pycore_condvar.h#L30
[3d] https://github.com/python/cpython/blob/master/Python/condvar.h#L85

--
nosy: +CAM-Gerlach

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2019-09-26 Thread Eryk Sun


Eryk Sun  added the comment:

> I'm not sure that there is a big benefit for us to drop Windows 8 
> support (only Windows 8 but continue to support Windows 8.1), 
> compared to the annoyance for users.

According to statcounter.com and netmarketshare.com, Windows 8 still has 1% or 
less of the desktop market (across all platforms), while Windows 8.1 has about 
5%. In comparison, Windows 7 has about 25-30% share, and Windows 10 has about 
45-50%. I expect to see complaints about dropping Windows 7 support in 3.9. 
It's still quite popular and may take longer to die off than even Windows XP. I 
don't expect much noise, if any at all, about dropping Windows 8. Microsoft 
hasn't supported it for over 3 years.

A minor benefit of requiring Windows 8.1 would be support for process 
snapshotting (*). We could re-implement win32_getppid based on 
PssCaptureSnapshot and PssQuerySnapshot. This would only snapshot basic 
information about the current process (a few NtQueryInformationProcess system 
calls), whereas a Toolhelp snapshot, as is currently used, captures information 
about every process and thread in every session. Like I said, it's a minor 
benefit -- especially if we make the parent pid a static variable, so it only 
has to be looked up once. But this also opens up other features provided by 
this facility, including walking the handle table and virtual memory, if 
someone finds a use for them.

(*) For some reason ProcessSnapshot.h requires NTDDI_WIN8 instead 
NTDDI_WINBLUE, so this isn't actually a case for changing the value of  
Py_NTDDI, but it should be in principle. The docs for process snapshotting 
require Windows 8.1, and the Windows 8 version of kernel32.dll (6.2.9200.*) 
does not export any of the Pss* functions, so it really was/is not available in 
Windows 8 as far as I can tell.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2019-09-26 Thread Steve Dower


Steve Dower  added the comment:

There shouldn't be any annoyance to users, as nobody should be using Windows 8 
anymore (the update to 8.1 was free and difficult to avoid).

Updating to NTDDI_WINBLUE is fine, but not essential. Nothing about that flag 
has a real impact until we need or want to directly call functions that were 
only added in that version.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2019-09-26 Thread STINNER Victor


STINNER Victor  added the comment:

> Steve, in PR 15951 you updated Py_WINVER to 0x0602. I think it should be 
> 0x0603 (_WIN32_WINNT_WINBLUE) and Py_NTDDI should be NTDDI_WINBLUE. Windows 8 
> hasn't been supported since 2016. Windows 8.1 is supported until 2023.

Dropping Windows 7 support allows us to remove code to support Windows 7.

I'm not sure that there is a big benefit for us to drop Windows 8 support (only 
Windows 8 but continue to support Windows 8.1), compared to the annoyance for 
users.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2019-09-26 Thread Eryk Sun


Eryk Sun  added the comment:

Steve, in PR 15951 you updated Py_WINVER to 0x0602. I think it should be 0x0603 
(_WIN32_WINNT_WINBLUE) and 
Py_NTDDI should be NTDDI_WINBLUE. Windows 8 hasn't been supported since 2016. 
Windows 8.1 is supported until 2023.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2019-09-15 Thread Eryk Sun


Eryk Sun  added the comment:

Here are a couple more:

* WSA_FLAG_NO_HANDLE_INHERIT is supported. Code related to 
`support_wsa_no_inherit` in Modules/socketmodule.c can be removed.

* AddDllDirectory and RemoveDllDirectory are supported. 
os__add_dll_directory_impl and os__remove_dll_directory_impl in 
Modules/posixmodule.c no longer need to manually link to them via 
GetModuleHandleW and GetProcAddress.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2019-09-15 Thread Eryk Sun


Eryk Sun  added the comment:

3.9 can drop support for console pseudohandles in set_inheritable in 
Python/fileutils.c and Popen._filter_handle_list in Lib/subprocess.py. 

Also, _Py_write_impl in Python/fileutils.c can remove the 32767 byte limit for 
console files (and other character devices such as NUL, since it 
over-generalizes via isatty). The same applies to 
_io__WindowsConsoleIO_write_impl in Modules/_io/winconsoleio.c.

---
Discussion

In Windows 8+, the console uses "\\Device\\ConDrv" with kernel file objects. 
The console host process opens a file object for the ConDrv device itself in 
order to handle IOCTLs from clients. A console client process opens virtual 
files on ConDrv such as Connect (for generic functions such as GetConsoleCP), 
Input (default StandardInput), Output (default StandardOutput, StandardError), 
Console (//./CON), CurrentIn (//./CONIN$), and CurrentOut (//./CONOUT$). 
There's no practical limit on the size of reads and writes via these files.

Prior to Windows 8, console API requests are instead sent over an LPC port. 
Large messages that don't fit in a LPC packet are passed in a 64 KiB window of 
shared memory that's overlayed by a heap. This is the heap referred to by 
claims in the console API docs such as "[i]f the total size of the specified 
number of characters exceeds the available heap, the function fails with 
ERROR_NOT_ENOUGH_MEMORY".

With the LPC implementation, file handles for the console input buffer and 
screen buffer(s) are not real handles for kernel File objects. Rather, the 
console host process maintains a private table of pseudohandles for console 
buffers. These console pseudohandles are tagged for routing in the Windows API 
by setting the lower 2 bits. They're also verified in functions such as 
GetFileType via the undocumented function VerifyConsoleIoHandle. These 
pseudohandles have to be identified in Python because they're not supported by 
SetHandleInformation or the PROC_THREAD_ATTRIBUTE_HANDLE_LIST of CreateProcess, 
both of which require real kernel handles.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2019-09-11 Thread Zachary Ware


Zachary Ware  added the comment:


New changeset 0b72ccff56fb47e14f7b1f6590eafff8d104c229 by Zachary Ware (Steve 
Dower) in branch 'master':
bpo-32592: Set Windows 8 as the minimum required version for API support 
(GH-15951)
https://github.com/python/cpython/commit/0b72ccff56fb47e14f7b1f6590eafff8d104c229


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32592] Drop support of Windows Vista and 7 in Python 3.9

2019-09-11 Thread Steve Dower


Steve Dower  added the comment:

I'll at least make a start by updating the minimum API version.

--
title: Drop support of Windows Vista in Python 3.8 -> Drop support of Windows 
Vista and 7 in Python 3.9
versions: +Python 3.9 -Python 3.8

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com