From 84bf514ceba6feca424d26153dd6f132b7c192f7 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 11 Mar 2026 09:01:05 -0700 Subject: [PATCH 01/39] Cycle locations. --- azure-devops/create-1es-hosted-pool.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-devops/create-1es-hosted-pool.ps1 b/azure-devops/create-1es-hosted-pool.ps1 index 80cdd74911..d5b2519b37 100644 --- a/azure-devops/create-1es-hosted-pool.ps1 +++ b/azure-devops/create-1es-hosted-pool.ps1 @@ -48,7 +48,7 @@ if ($VMSku -ieq 'Fasv6') { $AvailableLocations = @('eastus2', 'northeurope') # Locations where CPP_STL_GitHub has quota for 1024 cores (32 VMs). } -$AvailableLocationIdx = 5 # Increment for each new set of pools, to cycle through the available locations. +$AvailableLocationIdx = 6 # Increment for each new set of pools, to cycle through the available locations. $Location = $AvailableLocations[$AvailableLocationIdx % $AvailableLocations.Length] if ($Arch -ieq 'x64') { From 333249fc5e751f23cd023284559685fab8095021 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 11 Mar 2026 09:13:01 -0700 Subject: [PATCH 02/39] CUDA 13.2 (now required). --- azure-devops/provision-image.ps1 | 2 +- stl/inc/yvals_core.h | 4 ++-- tests/std/tests/GH_000639_nvcc_include_all/env.lst | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/azure-devops/provision-image.ps1 b/azure-devops/provision-image.ps1 index 2429644b0f..03a664c612 100644 --- a/azure-devops/provision-image.ps1 +++ b/azure-devops/provision-image.ps1 @@ -74,7 +74,7 @@ $PythonArgs = @('/quiet', 'InstallAllUsers=1', 'PrependPath=1', 'CompileAll=1', # https://developer.nvidia.com/cuda-toolkit if ($Provisioning_x64) { - $CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_551.61_windows.exe' + $CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/13.2.0/local_installers/cuda_13.2.0_windows.exe' } else { $CudaUrl = 'CUDA is not installed for ARM64' } diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index a47ce4cca1..f5648c52f4 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -894,8 +894,8 @@ #ifndef _ALLOW_COMPILER_AND_STL_VERSION_MISMATCH #if defined(__CUDACC__) && defined(__CUDACC_VER_MAJOR__) -#if __CUDACC_VER_MAJOR__ < 12 || (__CUDACC_VER_MAJOR__ == 12 && __CUDACC_VER_MINOR__ < 4) -_EMIT_STL_ERROR(STL1002, "Unexpected compiler version, expected CUDA 12.4 or newer."); +#if __CUDACC_VER_MAJOR__ < 13 || (__CUDACC_VER_MAJOR__ == 13 && __CUDACC_VER_MINOR__ < 2) +_EMIT_STL_ERROR(STL1002, "Unexpected compiler version, expected CUDA 13.2 or newer."); #endif // ^^^ old CUDA ^^^ #elif defined(__EDG__) // not attempting to detect __EDG_VERSION__ being less than expected diff --git a/tests/std/tests/GH_000639_nvcc_include_all/env.lst b/tests/std/tests/GH_000639_nvcc_include_all/env.lst index b58d105f34..d2f0a5adb9 100644 --- a/tests/std/tests/GH_000639_nvcc_include_all/env.lst +++ b/tests/std/tests/GH_000639_nvcc_include_all/env.lst @@ -1,8 +1,7 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -# TRANSITION, CUDA 12.4 rejected MSVC Compiler 19.50 as unsupported, so we need --allow-unsupported-compiler -PM_COMPILER="nvcc" PM_CL="--x cu -Xcompiler -Od,-EHsc,-nologo,-W4,-WX,-openmp --allow-unsupported-compiler" +PM_COMPILER="nvcc" PM_CL="--x cu -Xcompiler -Od,-EHsc,-nologo,-W4,-WX,-openmp" RUNALL_CROSSLIST PM_CL="-Xcompiler -MT" PM_CL="--debug -Xcompiler -MTd" From b76a37823e5ba2c5b0508476f7da564c2cd1c1a2 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 11 Mar 2026 09:17:35 -0700 Subject: [PATCH 03/39] CMake 4.2.3 (now required). --- CMakeLists.txt | 2 +- benchmarks/CMakeLists.txt | 2 +- tools/CMakeLists.txt | 2 +- tools/format/CMakeLists.txt | 2 +- tools/validate/CMakeLists.txt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ae54d0071..b433aa72ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -cmake_minimum_required(VERSION 4.2.1) +cmake_minimum_required(VERSION 4.2.3) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) project(msvc_standard_libraries LANGUAGES CXX) diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index ad9b1f0a43..0470518a0f 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -cmake_minimum_required(VERSION 4.2.1) +cmake_minimum_required(VERSION 4.2.3) project(msvc_standard_libraries_benchmarks LANGUAGES CXX) if(DEFINED STL_BINARY_DIR) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 5eb8ec12ae..46b85cf616 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -cmake_minimum_required(VERSION 4.2.1) +cmake_minimum_required(VERSION 4.2.3) project(msvc_standard_libraries_tools LANGUAGES CXX) add_subdirectory(format) diff --git a/tools/format/CMakeLists.txt b/tools/format/CMakeLists.txt index be3bfa9ea8..8e2ed27a9b 100644 --- a/tools/format/CMakeLists.txt +++ b/tools/format/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -cmake_minimum_required(VERSION 4.2.1) +cmake_minimum_required(VERSION 4.2.3) project(msvc_standard_libraries_format NONE) find_program(CLANG_FORMAT diff --git a/tools/validate/CMakeLists.txt b/tools/validate/CMakeLists.txt index 12a182ce6b..7232bcdba3 100644 --- a/tools/validate/CMakeLists.txt +++ b/tools/validate/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -cmake_minimum_required(VERSION 4.2.1) +cmake_minimum_required(VERSION 4.2.3) project(msvc_standard_libraries_validate LANGUAGES CXX) add_executable(validate-binary validate.cpp) From d5271b43ca55342a1dd486042e078727f8806d40 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 11 Mar 2026 09:19:11 -0700 Subject: [PATCH 04/39] MSVC Compiler 19.51.36122 (now required). Internal toolset is still 19.50. --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b433aa72ec..81684cf77e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,8 +6,8 @@ cmake_minimum_required(VERSION 4.2.3) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) project(msvc_standard_libraries LANGUAGES CXX) -if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.51.36014") - message(FATAL_ERROR "The STL must be built with MSVC Compiler 19.51.36014 or later.") +if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.51.36122") + message(FATAL_ERROR "The STL must be built with MSVC Compiler 19.51.36122 or later.") endif() include(CheckCXXSourceCompiles) From d4aff74c048c584bc6b4ee478981a0e39ef2be8d Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 11 Mar 2026 10:19:58 -0700 Subject: [PATCH 05/39] New pools. --- azure-devops/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/azure-devops/config.yml b/azure-devops/config.yml index 81067e751b..c3961a3ae1 100644 --- a/azure-devops/config.yml +++ b/azure-devops/config.yml @@ -5,13 +5,13 @@ variables: - name: x64SlowPoolName - value: 'Stl-2026-02-20T0952-x64-Pool' + value: 'Stl-2026-03-11T0936-x64-Fasv6-Pool' readonly: true - name: x64FastPoolName - value: 'Stl-2026-02-24T1452-x64-Fasv7-Pool' + value: 'Stl-2026-03-11T0936-x64-Fasv7-Pool' readonly: true - name: arm64PoolName - value: 'Stl-2026-02-20T0952-arm64-Pool' + value: 'Stl-2026-03-11T0936-arm64-Dpsv6-Pool' readonly: true - name: poolDemands value: 'EnableSpotVM -equals false' From 75452eebe2b5621866e6da74ef6bce4ff86e804c Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Fri, 13 Mar 2026 09:31:03 -0700 Subject: [PATCH 06/39] cxx23-feature.md: Delete. Users have occasionally misused this, it's outdated for C++26, and it isn't a huge time-saver anyways. --- .github/ISSUE_TEMPLATE/cxx23-feature.md | 26 ------------------------- 1 file changed, 26 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/cxx23-feature.md diff --git a/.github/ISSUE_TEMPLATE/cxx23-feature.md b/.github/ISSUE_TEMPLATE/cxx23-feature.md deleted file mode 100644 index 2d9002a313..0000000000 --- a/.github/ISSUE_TEMPLATE/cxx23-feature.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: cxx23 Feature -about: For STL maintainers only -title: PAPER_NUMBER PAPER_TITLE -labels: cxx23 -assignees: '' - ---- - -**NOTE** -This issue template is for STL maintainers only. -Please use the Bug Report template instead. - - -[PAPER_NUMBER](https://wg21.link/PAPER_NUMBER) PAPER_TITLE - -Note: If this link appears to be broken, don't worry! Papers are often -revised during a WG21 meeting before the final vote. When that happens, -there's a delay of a few weeks between the end of the meeting -and the publication of the papers. When the papers are available, -the https://wg21.link redirector will start working. - -Feature-test macro: -```cpp -#define MACRO_NAME MACRO_VALUE -``` From 887dc53c9c2c8d26b4adb4b131ce5b3722ac1531 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Fri, 13 Mar 2026 09:37:35 -0700 Subject: [PATCH 07/39] 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. --- CMakeLists.txt | 4 ++-- README.md | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 81684cf77e..7c4b587a24 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) project(msvc_standard_libraries LANGUAGES CXX) if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.51.36122") - message(FATAL_ERROR "The STL must be built with MSVC Compiler 19.51.36122 or later.") + message(FATAL_ERROR "The STL must be built with MSVC Compiler 19.51.36122 or later. Follow the README instructions.") endif() include(CheckCXXSourceCompiles) @@ -18,7 +18,7 @@ int main() {} ]=] WINDOWS_SDK_VERSION_CHECK) if(NOT WINDOWS_SDK_VERSION_CHECK) - message(FATAL_ERROR "The STL must be built with the Windows 11 SDK (10.0.26100) or later. Make sure it's available by selecting it in the Individual Components tab of the VS Installer.") + message(FATAL_ERROR "The STL must be built with the Windows 11 SDK (10.0.26100) or later. Follow the README instructions.") endif() if(NOT DEFINED VCLIBS_TARGET_ARCHITECTURE) diff --git a/README.md b/README.md index 47fe7294cf..0d4c398649 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem # Visual Studio Installer Prerequisites * Install [VS 2026 Insiders][] and keep it up to date. - + **You must install Insiders for STL development.** *See Note 1 below.* + + **You must install the Insiders IDE and the Preview build tools for STL development.** *See Note 1 below.* + Select the "Desktop development with C++" workload. + Select the following components at a minimum: - "MSVC Build Tools for x64/x86 (Preview)" @@ -155,8 +155,12 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem + Select "Add python.exe to PATH" if you want to follow the instructions below that invoke `python`. Otherwise, you should be familiar with alternative methods. -*Note 1:* The STL and the compiler ship together, and we frequently need the latest -compiler fixes and features, so the last production release of the compiler is too old. +*Note 1:* The STL and the compiler ship together, and we frequently need recently implemented +compiler fixes and features, so the Latest build tools (i.e. latest production) are too old. +Because the Insiders IDE supports having the Latest and Preview build tools installed simultaneously, +you need to ensure that you're using the Preview build tools. If you build with the IDE, we've arranged for +this to happen automatically. If you build with the Command Prompt, you need to pass `-vcvars_ver=preview` +as explained below. For more info, read the [C++ Team Blog post][preview] that announced this release process. *Note 2:* The x64/x86 build tools are usually sufficient. You'll need the ARM64/ARM64EC build tools if you're working with architecture-sensitive code. @@ -627,3 +631,4 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception [VS 2026 Insiders]: https://visualstudio.microsoft.com/insiders/ [CXXFLAGS]: https://cmake.org/cmake/help/latest/envvar/CXXFLAGS.html [start-command]: https://learn.microsoft.com/windows-server/administration/windows-commands/start +[preview]: https://devblogs.microsoft.com/cppblog/microsoft-c-msvc-build-tools-v14-51-preview-released-how-to-opt-in/ From 4878def21489f908ff7ccb394406f1fb8561c51a Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Fri, 13 Mar 2026 11:11:11 -0700 Subject: [PATCH 08/39] bug-report.md: Recommend the Latest or Preview version. --- .github/ISSUE_TEMPLATE/bug-report.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index 97b57aaa2d..4f827180d9 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -13,6 +13,10 @@ read the guidelines for submitting STL bug reports in `README.md`. If you are having problems with any component that is not the STL, instructions to get to the right place are there. +Even if your project is using an older version of the MSVC Build Tools, please +check the Latest production release (or better yet, the Preview release) before +reporting bugs. This will save time by avoiding reports of already-fixed bugs. + # Command-line test case ``` C:\Temp>type repro.cpp From 347749519ddaba5cea66b728aafed05b040a8b02 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Fri, 13 Mar 2026 12:11:35 -0700 Subject: [PATCH 09/39] pull_request_template.md: Add AI guidance. --- .github/pull_request_template.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 411e82a94b..bead761b0f 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,5 +1,19 @@ -