Toolset update: MSVC Compiler 19.50 Preview 1, Clang 20 by StephanTLavavej · Pull Request #5717 · microsoft/STL (original) (raw)

📜 Changelog

🗺️ Overview

This updates our toolset to the MSVC Compiler 19.50 Preview 1 and Clang 20 in VS 2026 Insiders. As a new major version, we have a greater-than-usual number of things that need to be updated. I'm overhauling the README, simplifying the installer instructions. I've centralized the path to VsDevCmd.bat in our Azure Pipelines machinery, making it easier to update in the future. Both MSVC and Clang accumulated a lot of bugfixes, so I can remove a lot of workarounds, but in a few cases I had to report new bugs and add workarounds. Enough constexpr misbehavior was fixed that the remaining list wasn't as daunting, so I went through our libcxx skips and reported all of the remaining MSVC-specific bugs we're working around. Clang 20 allows us to enable ARM64EC which went surprisingly well (only coroutines were blocked). EDG shipped behavior changes to <source_location>, allowing us to remove workarounds that were dealing with the difference between the internal and public versions. CUDA rejects the 19.5x compiler version, so once again we need to activate their escape hatch. (We've informed NVIDIA and whenever CUDA begins allowing MSVC again, we'll update our minimum required version in the STL.)

As usual with a new major version of Clang, I'm updating our .clang-format baseline and regenerating the formatting. (This time I didn't see any new options that were worth configuring, although I experimented with parenthesis removal, which identified a few places to clean up.) I also took this opportunity to review all of our clang-format suppressions, removing them when possible. All of the remaining suppressions are now marked with a reason, using their supported syntax.

⚙️ Commits