[issue25361] Is python-3-5-0.exe compiled with SSE2 instrutions? If so should we mention this?

New submission from Laura Creighton: Another report in to webmaster: I tried to install Python 3.5.0 from [1]https://www.python.org/ftp/python/ 3.5.0/python-3.5.0.exe but I get an error and I'm not able to install, is this exe compiled with SSE2 instructions? Apparently no msi available Does this need a mention somewhere? ---------- assignee: docs@python components: Documentation, Installation, Windows messages: 252703 nosy: docs@python, lac, paul.moore, steve.dower, tim.golden, zach.ware priority: normal severity: normal status: open title: Is python-3-5-0.exe compiled with SSE2 instrutions? If so should we mention this? versions: Python 3.5, Python 3.6 _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

eryksun added the comment: With Visual Studio 2010 and earlier, SSE support had to be explicitly enabled. Starting with VS2012 it's on by default [1]: Because the x86 compiler generates code that uses SSE2 instructions by default, you must specify /arch:IA32 to disable generation of SSE and SSE2 instructions for x86 processors. For 3.5, the 32-bit build does use SSE2 instructions. For example, float_add uses the addsd instruction (opcode F2 0F 58): 0:000> s python35!float_add l100 f2 0f 58 71f6c5d8 f2 0f 58 44 24 08 8b 0d-84 11 18 72 f2 0f 11 44 ..XD$......r...D 0:000> u 71f6c5d8 l3 python35!float_add+0x98: 71f6c5d8 f20f58442408 addsd xmm0,mmword ptr [esp+8] 71f6c5de 8b0d84111872 mov ecx,dword ptr [python35!free_list (72181184)] 71f6c5e4 f20f11442410 movsd mmword ptr [esp+10h],xmm0 Thus 3.5 doesn't support older CPUs that lack SSE2, such as the AMD Athlon XP. I didn't check the installer itself, but that would be a pointless exercise. [1]: https://msdn.microsoft.com/en-us/library/7t5yh4fd ---------- nosy: +eryksun _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

Laura Creighton added the comment: Okay then, wherever we put the -- Beginning with 3.5 we are not supporting 3.5 we need to also tell people whose CPUs lack SSE2 that they are out of luck, as well. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

Steve Dower added the comment: Did that report come with any reason for SSE to be relevant, such as an error message or log file? Windows requires SSE these days, since Vista IIRC, so the problem is probably someone on XP. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

Laura Creighton added the comment: Further conversation has confirmed that the person is on XP. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

Laura Creighton added the comment: He says that he got an error saying something was compiled SSE2 and needed to be SSE, but if we are going to detect XP then that will be a better error message. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

eryksun added the comment:
Windows requires SSE these days, since Vista IIRC, so the problem is probably someone on XP.
Windows 8 is the first to require SSE2 [1][2]. I'm sure it's no coincidence that this became the default in VS 2012. There is probably a small minority of users that upgraded to 32-bit Windows 7 on old hardware. Python 3.5 excludes them, but I don't think the build should switch to using /arch:IA32 just to support them. If a user on such a system really needs 3.5, it's possible to create a private build without SSE2. Most packages that have extension modules will also have to be built from source instead of using prebuilt wheels. [1]: http://windows.microsoft.com/en-us/windows7/products/system-requirements [2]: http://windows.microsoft.com/en-US/windows-8/system-requirements ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

Laura Creighton added the comment: Ok, where do we put the info about how to create a private build? And who will write it? (I lack the understanding.) Does it belong in: https://docs.python.org/3/using/windows.html or some place else? ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

eryksun added the comment: Building Python 3.5 requires Visual Studio 2015 and Windows 8.1, so this would be a vanishingly small audience that's building to deploy on old 32-bit Windows 7 machines. I don't think the PSF needs to worry about this. Anyway, the "/arch (x86)" docs [1] explain how to configure a project to use IA32, and PCBuild/readme.txt [2] explains how to build Python using Visual Studio 2015. I know this doesn't really help a novice user; just tell them to install Python 3.4! [1]: https://msdn.microsoft.com/en-us/library/7t5yh4fd ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

eryksun added the comment: Sorry, I forgot to include the link to readme.txt: [2]: https://hg.python.org/cpython/file/v3.5.0/PCbuild/readme.txt ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

Steve Dower added the comment: Since we officially support platforms that don't require SSE, I'll disable those instructions for 3.5.1. As eryksun points out, this doesn't affect 64-bit builds, which are the standard for most performance critical uses anyway. ---------- assignee: docs@python -> steve.dower components: +Build, Distutils -Documentation, Installation keywords: +3.5regression nosy: +dstufft, eric.araujo _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

Laura Creighton added the comment: Another 2 bits of data: I now know of 2 separate users from a Swedish teenager mailing list, whose machines (in each case 'my father's old laptop') didn't have SSE2. One youth was running XP but spent today successfully migrating to windows 7 with help from her father. The other was already running windows 7. Neither of them had ever used Python before. They are now running 3.4. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

Roundup Robot added the comment: New changeset 15f6bbe944fa by Steve Dower in branch '3.5': Issue #25361: Disables use of SSE2 instructions in Windows 32-bit build https://hg.python.org/cpython/rev/15f6bbe944fa New changeset 3cf8c2930373 by Steve Dower in branch 'default': Issue #25361: Disables use of SSE2 instructions in Windows 32-bit build https://hg.python.org/cpython/rev/3cf8c2930373 ---------- nosy: +python-dev _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

Changes by Steve Dower <steve.dower@python.org>: ---------- resolution: -> fixed stage: -> resolved status: open -> closed _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25361> _______________________________________

Change by Ma Lin <malincns@163.com>: ---------- pull_requests: +12393 _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue25361> _______________________________________

Ma Lin <malincns@163.com> added the comment: It seems SSE2 can be re-enabled for 3.8 branch.
Starting with the March 2018 Windows 7 updates, security patches will only install on SSE2 or higher computing devices. This change only affects a small # of users on 15-20 year old legacy PCs.
https://blogs.msmvps.com/harrywaldron/2018/06/25/windows-7-sse2-compliance-r... ---------- nosy: +Ma Lin versions: -Python 3.5 _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue25361> _______________________________________

Change by Ma Lin <malincns@163.com>: ---------- versions: +Python 3.8 -Python 3.6 _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue25361> _______________________________________

Steve Dower <steve.dower@python.org> added the comment: For 3.8 we support as far back as Win7 SP1 with the update for secure DLL loading, neither of which require SSE2. So we should hold this for 3.9 when we drop Win7 completely. ---------- _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue25361> _______________________________________

Steve Dower <steve.dower@python.org> added the comment: New changeset 8bd2872adbbc7ed5dd0a7593193c52431ae34c8d by Steve Dower (animalize) in branch 'master': bpo-25361: Enable SSE2 instructions for Windows 32-bit build (GH-12438) https://github.com/python/cpython/commit/8bd2872adbbc7ed5dd0a7593193c52431ae... ---------- _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue25361> _______________________________________
participants (5)
-
eryksun
-
Laura Creighton
-
Ma Lin
-
Roundup Robot
-
Steve Dower