STL
STL copied to clipboard
Support for Win7 / Server 2008 R2 through Win8.1 / Server 2012 R2 is DOOMED
We will permanently drop support for targeting Windows 7 and Server 2008 R2, plus Windows 8.1 and Server 2012 R2. This time, we've got ultraboss approval (internal "experiences" VSO-2164004 and VSO-2441848).
:gear: Code Changes
- [x] #5432
- This cleanly reverted #4857 which partially reverted #4742.
- Followup: #5496
- [x] #5433
- Followup: #5458
- [x] #5434
- [x] #5510
- [x] MSVC-PR-631778
- NON-GitHub: Link src/vctools/PDB binaries against synchronization.lib.
- NON-GitHub: Update the VCRedist to require Win8.
- NON-GitHub: MSVC.Setup.Redist.UCRT.XP was already dead.
- NON-GitHub: Remove the Vista MSUs (already dead) and Win7 MSUs.
- [x] MSVC-PR-637104
- NON-GitHub: Remove redundant Synchronization.lib.
- NON-GitHub: Update the VCRedist to (try to) require Win10.
- NON-GitHub: Delete the UCRT MSUs.
- This shrinks the VCRedist by 6.7 MB. (24.4 MB => 17.7 MB for x64; 13.3 MB => 6.6 MB for x86)
:bookmark_tabs: VS/MSVC Documentation
- [x] Document this in the release notes.
- I've sent suggested wording to Sy Brand: "Visual C++ no longer supports targeting Windows 7 / Server 2008 R2, Windows 8 / Server 2012, and Windows 8.1 / Server 2012 R2. The minimum supported operating systems are Windows 10 / Server 2016."
- [x] Document this on the https://aka.ms/vcredist page.
- [ ] Write a C++ Team Blog post.
The current redistributable URLs contain the VS version in the URL (https://aka.ms/vs/17/release/vc_redist.x64.exe). Will these continue to provide a frozen-in-time bundle for affected targets? Or will they start failing for Windows 7 / Server 2008? Will there be a new /vs/18/ URL? Or perhaps the creation of a /vs/latest short-link is in order?
Given that replacing 17 with 16 in that short-link results in downloading the VS 2015-2019 VCRedist instead of the VS 2015-2022 VCRedist, I think it's safe to say that we have a predictable system for handling new major versions of the VCRedist here, and no specific action should be required on our (STL maintainers) part.
Server 2008 R2 will continue to receive extended security updates until Jan 2026 (probably for Premium Assurance only)
just saying
Citation, please? (Not that it affects the decision.)
~~That may be difficult to cite thanks to the black-hole that is Microsoft Learn/Docs, but~~ Premium Assurance at the time was typically sold with six (6) years of Extended Support before moving to the Extended Security Update plan.
EOL (January 14, 2020) + Premium Assurance (6 years) = January 14, 2026.
EDIT: Found more information.
Copied datasheet: https://www.licensingschool.co.uk/wp-content/uploads/2016/04/SQL_Server_and_Windows_Server_Premium_Assurance_Datasheet-December-2016.pdf
Though I think you would have to have bought Premium Assurance within a fairly narrow time frame to take advantage of this.
A live source https://configmgrbits.azureedge.net/adminuicontent/ConfigMgr.AdminUIContent.cab
LifecycleProducts.xml:
Thanks, good to know. This doesn't affect our removal decision - we're not going to go out there and smash a bunch of servers with hammers, it's just that programmer-users won't be able to use the next major version of VS to ship new code to the handful of end-users that might still be running this OS for a handful of months, and the corresponding VCRedist will be blocked from installing. VS 2022 will continue to be capable of targeting Server 2008 R2, and its redist will continue to work there.
While Win8.0 client is no longer supported by Microsoft, Server 2012 classic is receiving (paid) extended security updates until Oct 2026
Windows 10 1607 LTSC is also supported till October 2026. It's just 18 months till that time. And this version of Windows is supposed to be used for very special cases with rarely updated software. The next still supported version of Windows 10 that will be supported for significant time (till 2029) is 1809 LTSC.
Since Windows 7 is going away, maybe it makes sense to also drop Windows 8, 8.1 and 10 older than 1809 with the next major Visual Studio version? All of those old versions together are less popular than Windows 7 anyway. Anybody who needs to support those old Windows versions still can install VS2022 build tools and use them.
Some popular C++ libraries (e.g. Qt6) already require Windows 10 1809.
(I personally still support Windows 7 for many of my projects, so will have to use the older build tools and SDK anyway.)
I am going to be quite greedy/aggressive/daring in increasing the minimum required version to Win10. I don't think I can get away with anything more, and "Win10 is the minimum" is easy to explain to users. This also makes very little difference to the STL. Leap seconds were added in Win10 1809, but ICU was added in Win10 1903, which is much more significant.
Edit: I think I forgot to mention here, I will try to drop Win7, Win8.0, and Win8.1 at the same time, and increase the required version directly to Win10, as Server 2012 classic and Server 2012 R2 are expiring on Oct 2026.