Skip to content

Toolset update: MSVC Compiler 19.51.36122, CUDA 13.2#6157

Open
StephanTLavavej wants to merge 39 commits intomicrosoft:mainfrom
StephanTLavavej:toolset-update
Open

Toolset update: MSVC Compiler 19.51.36122, CUDA 13.2#6157
StephanTLavavej wants to merge 39 commits intomicrosoft:mainfrom
StephanTLavavej:toolset-update

Conversation

@StephanTLavavej
Copy link
Member

@StephanTLavavej StephanTLavavej commented Mar 13, 2026

Changelog

  • Improved test coverage:
    • Added ARM64 ASan test coverage.
  • Code cleanups:
    • Removed compiler bug workarounds.
  • Infrastructure improvements:
    • Updated dependencies.
      • Updated MSVC Compiler to 19.51.36122 (now required).
      • Updated CMake to 4.2.3 (now required).
      • Updated CUDA to 13.2 (now required).

Commits

  • Cycle locations.
  • CUDA 13.2 (now required).
  • CMake 4.2.3 (now required).
  • MSVC Compiler 19.51.36122 (now required).
    • Internal toolset is still 19.50.
  • New pools.
  • cxx23-feature.md: Delete.
    • Users have occasionally misused this, it's outdated for C++26, and it isn't a huge time-saver anyways.
  • README.md, CMakeLists.txt: Improve guidance for the Preview build tools.
    • If the compiler or WinSDK version checks fail, we should point to the README's centralized explanation of the VS Installer and vcvarsall.bat options.
  • bug-report.md: Recommend the Latest or Preview version.
  • pull_request_template.md: Add AI guidance.
  • Azure Pipelines: Consolidate Setup TMP Directory into Clean After Checkout.
    • Deleting and recreating tmpDir is essentially cleaning, so we don't need to adjust the displayName. The checkout doesn't use tmpDir, so we can do this in any order. This will avoid displaying an extremely boring step in Azure Pipelines.
  • All: Avoid warnings about comparing unsigned integers with zero.
    • MSVC warning C4296: '<': expression is always false
    • CUDA warning 186-D: pointless comparison of unsigned integer with zero
  • All: Remove workaround for CWG-1129, implemented aeons ago.
  • CUDA: Perma-workaround for designated aggregate initialization.
  • CUDA: Remove workaround for Down With Typename.
    • I'm adding test coverage for this.
  • CUDA: Remove workaround for CWG-2518 static_assert(false).
    • No test coverage necessary; the whole issue was that static_assert(false) was previously an instant error.
  • CUDA: Remove workaround for intrinsics.
    • I'm adding test coverage for this.
  • CUDA: Remove workaround for nocheck type traits.
    • I'm adding test coverage for this.
  • CUDA: Remove workaround for static call operators.
    • See followup mechanical replacement. I'm adding test coverage for this.
  • CUDA: Remove workaround for parenthesized aggregate initialization.
    • I'm adding test coverage for this.
  • MSVC: Remove workaround: VSO-1285783 was fixed by MSVC-PR-694629 on 2025-12-12.
    • Including the 4th and final workaround, which appears to have been fixed by later changes.
  • MSVC: Remove workaround: VSO-2714784 was fixed by MSVC-PR-707352 on 2026-02-10.
  • MSVC: Remove workaround: VSO-2714798 was fixed by MSVC-PR-708374 on 2026-02-17.
  • MSVC: Remove workaround: DevCom-10798069 was fixed by MSVC-PR-704666 on 2026-02-02.
  • MSVC: Remove workaround: DevCom-10416247 was fixed before 2024-10-15.
  • MSVC: Remove workaround: VSO-570323 was a /Za bug, which we no longer test or care about.
  • EDG: Remove workaround: VSO-892694 was fixed by VS-PR-527543 on 2024-02-09.
  • /analyze: CppCoreCheck.dll was removed by MSVC-PR-674029 on 2025-10-29.
  • Tests: GH_000639_nvcc_include_all: Add coverage for removed CUDA workarounds.
  • Tests: P1682R3_to_underlying: Remove SFINAE workaround, use concepts.
  • Tests: VSO_0000000_instantiate_type_traits: Use is_permissive.hpp instead of handwritten logic.
    • Drop the "TRANSITION, Evil Extension" comment because all usage of is_permissive is inherently TRANSITION. De Morgan the condition to clarify its behavior.
  • Tests: Dev11_1074023_constexpr: Test the constexpr mutex constructor.
  • Tests: Enable ASan annotation tests for ARM64, except Clang.
  • Comments: Clarify the CUDA restrict workaround.
  • Comments: CUDA still needs the basic_format_arg() workaround.
  • Comments: Update citation from WG21-N4928 + WG21-P2655R3 to WG21-N5032.
    • The paragraph number changed, but the content was otherwise identical.
  • Comments: Consistently say "TRANSITION, ABI".
  • Comments: Drop TRANSITION comment in experimental code.
    • We're never going to mess with this again.
  • Comments: Update citation from DevCom-10265237 to VSO-2826400.
  • Mechanical: _STATIC_CALL_OPERATOR => static, _CONST_CALL_OPERATOR => nothing

STL-ASan-CI passed.

StephanTLavavej and others added 30 commits March 12, 2026 05:12
Internal toolset is still 19.50.
Users have occasionally misused this, it's outdated for C++26, and it isn't a huge time-saver anyways.
If the compiler or WinSDK version checks fail, we should point to the README's centralized explanation of the VS Installer and `vcvarsall.bat` options.
…ckout.

Deleting and recreating tmpDir is essentially cleaning, so we don't need to adjust the displayName.

The checkout doesn't use tmpDir, so we can do this in any order.

This will avoid displaying an extremely boring step in Azure Pipelines.
MSVC warning C4296: '<': expression is always false
CUDA warning 186-D: pointless comparison of unsigned integer with zero
This was introduced by GH 5662 on 2025-08-08.
Just initialize the return value with `{}` to avoid garbage.
Use the name `_Tm` (instead of the previous `_Time`) for consistency with other returns.

Avoids host compiler error C2760: syntax error: '}' was unexpected here; expected 'expression'
I'm adding test coverage for this.
No test coverage necessary; the whole issue was that static_assert(false) was previously an instant error.
I'm adding test coverage for this.
I'm adding test coverage for this.
I'm adding test coverage for this.
…025-12-12.

Including the 4th and final workaround, which appears to have been fixed by later changes.
…on 2026-02-02.

P1004R2_constexpr_vector still needs 2 workarounds, filed GH 6155 for followup.
```
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.50.35717\bin\Hostx64\x64>dir | rg "EspXEngine|CppCoreCheck"
01/21/2026  03:15 PM         1,343,008 CppCoreCheck.dll
01/21/2026  03:15 PM         3,117,128 EspXEngine.dll

C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.51.36122\bin\Hostx64\x64>dir | rg "EspXEngine|CppCoreCheck"
03/10/2026  11:27 AM         4,054,048 EspXEngine.dll
```
…tead of handwritten logic.

Drop the "TRANSITION, Evil Extension" comment because all usage of is_permissive is inherently TRANSITION.

De Morgan the condition to clarify its behavior.
@StephanTLavavej StephanTLavavej requested a review from a team as a code owner March 13, 2026 19:39
@StephanTLavavej StephanTLavavej added the infrastructure Related to repository automation label Mar 13, 2026
@github-project-automation github-project-automation bot moved this to Initial Review in STL Code Reviews Mar 13, 2026
@StephanTLavavej

This comment was marked as resolved.

@azure-pipelines

This comment was marked as resolved.

@StephanTLavavej StephanTLavavej moved this from Initial Review to Final Review in STL Code Reviews Mar 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

infrastructure Related to repository automation

Projects

Status: Final Review

Development

Successfully merging this pull request may close these issues.

1 participant