-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Should we require SSE2? #3922
Comments
What are gains? For separately compiled vector algorithms they are minimal |
Slightly fewer configurations to test. |
Personally I don't care much -- the project I'm working on simply requires x64. Yet, I would see such a decision as some lack of discipline. If the compiler and the CRT supports a mode, why would STL silently break? I'd expect a consistent decision across the toolset, with another decision, like should the last version of toolset for a previous mode be canned for some extended use, like the XP toolset, or not. |
My experience also suggests that the amount of users for which this may be a problem may be very small and insignificant for you to care of, but it is not likely to be zero. Like you have million developer users with billion end users, and you expect the set for your criteria is still empty? Some users may be servicing old production machines or kiosks or something, getting updates to their IDE, possibly not even realizing they are updating the STL with that, and they will be broken by such a change. I'm not really defending keeping a legacy mode forever, but I still think that the removal should be graceful, with blocking the legacy mode across the toolset and a sympathetic apology message. |
There's some precedent - we dropped XP/Vista (the compiler and CRT don't care the way we do), and we also blocked We'll talk about this at the next weekly maintainer meeting; I do expect that the set is either empty or limited to malware botnets. The machines really are physically breaking down at this point, and even Windows didn't want to continue issuing security updates at the end of their Win7 lifecycle (and we've now waited an additional 5 years beyond that!). |
Just to make sure I understand this correctly: The only prerequisite is a SSE2 capable processor - nothing has to be specifically activated by the OS/Hypervisor correct? |
Correct. |
A hypervisor may allow changing CPUID. If it can hide SSE (whole SSE, not just SSE2), then the OS will not maintain the corresponring architectural state, and SSE2 code will break. Not sure if this can actually be achived. Found information on some VMWare product, the least it allows to hide is SSE3. |
Museum software, running on museum OS's, can continue to use museum compiler toolsets. Ensure an appropriate download link is still alive for the older toolsets and move on. Reminder also that Win8.1 consumer went out of extended support in Jan and Server2012 will go out of extended support in October. Let em die too. |
We talked about this at the weekly maintainer meeting and are in favor of requiring SSE2 unconditionally. Note that this will require very minor internal build system changes to mirror the |
It has occurred to me that |
It appears that the internal build system is globally setting I see a couple of options for the internal build - we could modify |
Blocked by VSO-1952930 "x86 This repros with VS 2022 17.9 Preview 5 x86 as soon as I remove Internally, I tried removing all |
I basically duplicated #3118 with somewhat different discussion. 😹 |
Can try again and see |
GitHub's happy now. For the MSVC-internal build, I also had to edit With that, the only remaining failure is affecting 5 tests (
|
I figured out how to fix this with internal PRs: |
We still support targeting Win7, but before it stopped receiving security updates, it was patched to require SSE2. This was KB4103718 in May 2018. It's now 5 years later. I think it would be safe for the STL to begin assuming unconditional support for SSE2, because this would cause problems only if:
This seems like it's not worth worrying about anymore. The changes on the STL's side would be minimal, but would be an improvement for all other x86-targeting user-programmers - we would remove
/arch:IA32
from the STL's build system (and test coverage), and the vectorized algorithms could begin assuming unconditional support for SSE2.The text was updated successfully, but these errors were encountered: