Skip to content

Support for Windows Vista #55

@adang1345

Description

@adang1345

... On the subject of CPython and Vista compatibility, may I be so cheeky 😄 as to ask whether you'd consider backporting support down to NT 6.0 (Vista, WS2008R1) in your PythonWin7 offerings?

You have provided (and continue to provide 👍 ) an invaluable service 🥇 to the retrocomputing communities, namely the Win7 one, with your Win7-compatible py3.9+ builds; these are already being put into good use by compiling Win7-compatible yt-dlp (both x86 and x64) builds for Win7 users, because the yt-dlp team are adamant on ceasing support for any CPython version not officially supported by the PSF themselves; thus, py3.8 was dropped last year and now py3.9 will be imminently dropped...

However, the NT6.0 crowd 😉 has been left without something concrete 😢 ; FTR, a member of the MSFN forums has come up with source-patched and self-recompiled versions of py3.8.13, py3.9.13, py3.10.18 and py3.11.4 (nothing newer as I write this), but these "assemblies" have non-standard configuration and mainly target WinXP SP3 32-bit hosts, with legacy CPUs only supporting the SSE instruction set...

I have taken a closer look at your PythonWindows py3.8.x builds and your PythonWin7 py3.9.x, py3.10.x, py3.11.x, py3.12.x, py3.13.xbuilds; the installers have been extracted with UniExtract2 and/or the embed-win32 packages have been extracted.

The one file that presents the incompatibilities with Vista SP2 is always the python3x.dll one: in more detail:

python38.dll (PythonWindows), python39.dll (PythonWin7) and python310.dll (PythonWin7), all three have ONLY ONE Win7+ kernel32.dll function:

GetActiveProcessorCount

python311.dll (PythonWin7), python312.dll (PythonWin7) and python313.dll (PythonWin7), all three have ONLY TWO Win7+ kernel32.dll functions:

GetActiveProcessorCount (case of python[38,39,310].dll)

SetWaitableTimerEx

If I HexEdit GetActiveProcessorCount to GetLastError (for lack of a better one) in the first group of DLLs, I can make py3.8.x/py3.9.x/py3.10.x launch on this Vista SP2 32-bit machine; likewise, if I HexEdit GetActiveProcessorCount to GetLastError and SetWaitableTimerEx to SetWaitableTimer in the second group of DLLs , I can make py3.11.x/py3.12.x/py3.13.x launch, too, on the Vista SP2 32-bit machine; but this is hacking binary files, there's no telling how the actual Python code will behave on a remote scenario... FWIW, I can run recent yt-dlp versions with these bin-hacked CPython mods quite fine (no issue I could detect myself...).

Optimally, the Vista-incompatible Python code should be excised from source and then the source recompiled, with compiler targeting at minimum NT 6.0; hopefully, Vista-compatible builds would be produced...

Thanks for your precious time reading this ❤️ ; any personal thoughts on achieving NT 6.0 support in your py3.8+ builds would be welcome/highly appreciated 😄 ...

Thanks for all that you already do 👍 , kindest regards from a Vista die-hard 😉 ...

Originally posted by @Vangelis66 in #23

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions