Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3b7423e
Run 'Validate Files' before 'clang-format Files', comment why.
StephanTLavavej Sep 2, 2026
12188d3
create-1es-hosted-pool.ps1: Add `$DiskType` to handle NVMe vs. SCSI.
StephanTLavavej Sep 1, 2026
337b482
create-1es-hosted-pool.ps1: Fadsv7 quota increase from 21 48-core VMs…
StephanTLavavej Sep 1, 2026
170cb7d
create-1es-hosted-pool.ps1: Drop Fasv6 and Fasv7.
StephanTLavavej Sep 1, 2026
8e9dc7e
create-1es-hosted-pool.ps1: Fadsv7 quota increase to 32 80-core VMs.
StephanTLavavej Sep 7, 2026
7902847
Unify x64 Slow/Medium/Fast pools.
StephanTLavavej Sep 1, 2026
527d6c8
Cycle locations.
StephanTLavavej Sep 1, 2026
205674c
provision-image.ps1: Detect errors from curl.exe.
StephanTLavavej Sep 8, 2026
7d3b731
provision-image.ps1: Reorder and use long options for curl.exe.
StephanTLavavej Sep 8, 2026
7afa855
create-1es-hosted-pool.ps1: Set `$PSNativeCommandUseErrorActionPrefer…
StephanTLavavej Sep 8, 2026
4bd1276
PowerShell 7.6.6.
StephanTLavavej Sep 8, 2026
a5b26ab
MSVC Compiler 19.52.36725.
StephanTLavavej Sep 8, 2026
7c6c0cf
New pools.
StephanTLavavej Sep 8, 2026
c9e254a
MSVC-PR-766982 renamed `/experimental:mathlib` to `/Zc:cmath`.
StephanTLavavej Sep 9, 2026
de31d84
Cite MSVC-PR-777572 which was merged 2026-09-03.
StephanTLavavej Sep 9, 2026
ce509e7
MSVC-PR-767184/772024 (merged 2026-08-19/20) fixed LNK2005 for frexp(…
StephanTLavavej Sep 9, 2026
e347563
MSVC-PR-767404 (merged 2026-08-07) fixed the comparison functions in …
StephanTLavavej Sep 9, 2026
afba6e2
MSVC-PR-767414/MSVC-PR-768260 (merged 2026-08-07/10) fixed LNK2019 fo…
StephanTLavavej Sep 9, 2026
0607182
GH 6434 (merged 2026-09-04) removed the `#pragma function` stuff that…
StephanTLavavej Sep 9, 2026
ea28fc4
MSVC-PR-771026 (merged 2026-08-19) added `/std:c++23` and deprecated …
StephanTLavavej Sep 9, 2026
e1b17bc
MSVC-PR-771455 "Mark noreturn intrinsics as cold code" was merged 202…
StephanTLavavej Sep 9, 2026
b0e0797
Add `/Zc:cmath` to libcxx, reported LLVM-222431.
StephanTLavavej Sep 9, 2026
c280ad0
Azure Pipelines: Adjust timeouts.
StephanTLavavej Sep 9, 2026
e9afd9f
Azure Pipelines: Refine timeouts.
StephanTLavavej Sep 9, 2026
89fee32
Reported GH 6445.
StephanTLavavej Sep 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 4.3.1)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
project(msvc_standard_libraries LANGUAGES CXX)

set(expected_msvc_compiler_version "19.52.36629")
set(expected_msvc_compiler_version "19.52.36725")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS expected_msvc_compiler_version)
message(FATAL_ERROR "The STL must be built with MSVC Compiler ${expected_msvc_compiler_version} or later. Follow the README instructions.")
endif()
Expand Down
11 changes: 7 additions & 4 deletions azure-devops/asan-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,16 @@ stages:
displayName: 'Test x64 ASan'
dependsOn: []
pool:
name: ${{ variables.x64SlowPoolName }}
name: ${{ variables.x64PoolName }}
demands: ${{ variables.poolDemands }}
variables:
- name: workRoot
value: '$(x64SlowPoolWorkRoot)'
value: '$(x64PoolWorkRoot)'
readonly: true
jobs:
- template: build-and-test.yml
parameters:
jobTimeoutInMinutes: 20
hostArch: x64
targetArch: x64
targetPlatform: x64
Expand All @@ -39,15 +40,16 @@ stages:
displayName: 'Test x86 ASan'
dependsOn: []
pool:
name: ${{ variables.x64SlowPoolName }}
name: ${{ variables.x64PoolName }}
demands: ${{ variables.poolDemands }}
variables:
- name: workRoot
value: '$(x64SlowPoolWorkRoot)'
value: '$(x64PoolWorkRoot)'
readonly: true
jobs:
- template: build-and-test.yml
parameters:
jobTimeoutInMinutes: 20
hostArch: x86
targetArch: x86
targetPlatform: x86
Expand All @@ -67,6 +69,7 @@ stages:
jobs:
- template: build-and-test.yml
parameters:
jobTimeoutInMinutes: 25
hostArch: arm64
targetArch: arm64
targetPlatform: arm64
Expand Down
4 changes: 3 additions & 1 deletion azure-devops/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

parameters:
- name: jobTimeoutInMinutes
type: string
- name: hostArch
type: string
- name: targetArch
Expand Down Expand Up @@ -39,7 +41,7 @@ jobs:
- job: '${{ parameters.targetPlatform }}'
strategy:
parallel: ${{ parameters.numShards }}
timeoutInMinutes: 30
timeoutInMinutes: ${{ parameters.jobTimeoutInMinutes }}
steps:
- template: checkout-self.yml
- template: checkout-submodule.yml
Expand Down
2 changes: 0 additions & 2 deletions azure-devops/build-benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ steps:
-DSTL_BINARY_DIR="$(buildOutputLocation)" `
-DVCLIBS_TARGET_ARCHITECTURE=${{ parameters.targetPlatform }} `
-S $(Build.SourcesDirectory)/benchmarks -B "$(benchmarkBuildOutputLocation)\${{ parameters.compiler }}"
timeoutInMinutes: 2
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
# TRANSITION, we currently only build the benchmarks with Clang for x64
condition: >
Expand All @@ -47,7 +46,6 @@ steps:
$PSNativeCommandUseErrorActionPreference = $true
& "$(launchVsDevShell)" -Preview -NoLogo -HostArch ${{ parameters.hostArch }} -Arch ${{ parameters.targetArch }}
cmake --build "$(benchmarkBuildOutputLocation)\${{ parameters.compiler }}"
timeoutInMinutes: 2
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
# TRANSITION, we currently only build the benchmarks with Clang for x64
condition: >
Expand Down
2 changes: 0 additions & 2 deletions azure-devops/cmake-configure-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ steps:
-DTESTS_BUILD_ONLY=${{ parameters.testsBuildOnly }} `
-DVCLIBS_TARGET_ARCHITECTURE=${{ parameters.targetPlatform }} `
-S $(Build.SourcesDirectory) -B "$(buildOutputLocation)"
timeoutInMinutes: 2
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
- task: PowerShell@2
displayName: 'Build STL'
Expand All @@ -59,6 +58,5 @@ steps:
$PSNativeCommandUseErrorActionPreference = $true
& "$(launchVsDevShell)" -Preview -NoLogo -HostArch ${{ parameters.hostArch }} -Arch ${{ parameters.targetArch }}
cmake --build "$(buildOutputLocation)"
timeoutInMinutes: 5
condition: and(succeeded(), ${{ parameters.buildStl }})
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
22 changes: 4 additions & 18 deletions azure-devops/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,20 @@
# Common configuration used by both pipelines

variables:
- name: x64SlowPoolName
value: 'Stl-2026-08-25T2113-x64-Fasv6-Pool'
readonly: true
- name: x64MediumPoolName
value: 'Stl-2026-08-25T2113-x64-Fasv7-Pool'
readonly: true
- name: x64FastPoolName
value: 'Stl-2026-08-25T2113-x64-Fadsv7-Pool'
- name: x64PoolName
value: 'Stl-2026-09-08T1422-x64-Fadsv7-Pool'
readonly: true
- name: arm64PoolName
value: 'Stl-2026-08-25T2113-arm64-Dpdsv6-Pool'
value: 'Stl-2026-09-08T1422-arm64-Dpdsv6-Pool'
readonly: true
- name: poolDemands
value: 'EnableSpotVM -equals false'
readonly: true
- name: launchVsDevShell
value: 'C:\Program Files\Microsoft Visual Studio\18\Insiders\Common7\Tools\Launch-VsDevShell.ps1'
readonly: true
# The x64 SKU Fasv6 doesn't have local temporary storage, so it must use 'C:'.
- name: x64SlowPoolWorkRoot
value: 'C:'
readonly: true
# The x64 SKU Fasv7 doesn't have local temporary storage, so it must use 'C:'.
- name: x64MediumPoolWorkRoot
value: 'C:'
readonly: true
# The x64 SKU Fadsv7 has local temporary storage, available as 'N:' (for NVMe).
- name: x64FastPoolWorkRoot
- name: x64PoolWorkRoot
value: 'N:'
readonly: true
# The arm64 SKU Dpdsv6 has local temporary storage, available as 'E:'.
Expand Down
42 changes: 15 additions & 27 deletions azure-devops/create-1es-hosted-pool.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@ Creates a 1ES Hosted Pool, set up for the STL's CI.
See https://github.com/microsoft/STL/wiki/Checklist-for-Toolset-Updates for more information.

.PARAMETER VMSku
The VM SKU can be Fasv6, Fasv7, Fadsv7, or Dpdsv6.
The VM SKU can be Fadsv7 or Dpdsv6.
#>
[CmdletBinding(PositionalBinding=$false)]
Param(
[Parameter(Mandatory)][ValidateSet('Fasv6', 'Fasv7', 'Fadsv7', 'Dpdsv6')][String]$VMSku
[Parameter(Mandatory)][ValidateSet('Fadsv7', 'Dpdsv6')][String]$VMSku
)

$ErrorActionPreference = 'Stop'
$PSNativeCommandUseErrorActionPreference = $true

$CurrentDate = Get-Date
$Timestamp = $CurrentDate.ToString('yyyy-MM-ddTHHmm')
Expand All @@ -31,41 +32,28 @@ $Timestamp = $CurrentDate.ToString('yyyy-MM-ddTHHmm')

# | SKU | Location | Cores | Notes
# |--------|----------------|------:|-------
# | Fasv6 | eastus2 | 4096 |
# | Fasv7 | australiaeast | 740 | Currently unused to stay within our regional (all-SKU) quota of 4736 cores
# | Fasv7 | northeurope | 640 |
# | Fasv7 | southeastasia | 640 |
# | Fadsv7 | australiaeast | 2048 |
# | Fadsv7 | australiaeast | 3024 |
Comment thread
StephanTLavavej marked this conversation as resolved.
# | Fadsv7 | swedencentral | 2560 |
# | Dpdsv6 | australiaeast | 2048 |
# | Dpdsv6 | southcentralus | 2048 |

if ($VMSku -ieq 'Fasv6') {
$Arch = 'x64'
$ProtoVMSize = 'Standard_F16as_v6'
$PoolSkuName = 'Standard_F64as_v6'
$PoolSize = 32 # We have quota for 4096 cores (64 VMs), so we can have old and new pools of 32 VMs each.
$AvailableLocations = @('eastus2')
} elseif ($VMSku -ieq 'Fasv7') {
$Arch = 'x64'
$ProtoVMSize = 'Standard_F16as_v7'
$PoolSkuName = 'Standard_F48as_v7'
$PoolSize = 13 # Locations where we have quota for at least 640 cores (13 VMs):
$AvailableLocations = @('northeurope', 'southeastasia')
} elseif ($VMSku -ieq 'Fadsv7') {
if ($VMSku -ieq 'Fadsv7') {
$Arch = 'x64'
$DiskType = 'NVMe'
$ProtoVMSize = 'Standard_F16ads_v7'
$PoolSkuName = 'Standard_F48ads_v7'
$PoolSize = 21 # We have quota for 2048 cores (42 VMs), so we can have old and new pools of 21 VMs each.
$AvailableLocations = @('australiaeast')
$PoolSkuName = 'Standard_F80ads_v7'
$PoolSize = 32 # Locations where we have quota for at least 2560 cores (32 VMs):
$AvailableLocations = @('australiaeast', 'swedencentral')
} elseif ($VMSku -ieq 'Dpdsv6') {
$Arch = 'arm64'
$DiskType = 'SCSI'
$ProtoVMSize = 'Standard_D16pds_v6'
$PoolSkuName = 'Standard_D64pds_v6'
$PoolSize = 32 # Locations where we have quota for at least 2048 cores (32 VMs):
$AvailableLocations = @('australiaeast', 'southcentralus')
}

$AvailableLocationIdx = 14 # Increment for each new set of pools, to cycle through the available locations.
$AvailableLocationIdx = 15 # Increment for each new set of pools, to cycle through the available locations.
$Location = $AvailableLocations[$AvailableLocationIdx % $AvailableLocations.Length]

if ($Arch -ieq 'x64') {
Expand Down Expand Up @@ -232,13 +220,13 @@ if ($Arch -ieq 'x64') {
$VM = New-AzVMConfig `
-VMName $ProtoVMName `
-VMSize $ProtoVMSize `
-DiskControllerType 'NVMe' `
-DiskControllerType $DiskType `
-Priority 'Regular'
} else {
$VM = New-AzVMConfig `
-VMName $ProtoVMName `
-VMSize $ProtoVMSize `
-DiskControllerType 'SCSI' `
-DiskControllerType $DiskType `
-Priority 'Regular' `
-SecurityType 'TrustedLaunch' `
-SharedGalleryImageId $ImageId
Expand Down Expand Up @@ -386,7 +374,7 @@ Display-ProgressBar -Status 'Creating image definition'

$ImageDefinitionName = "$ResourceGroupName-ImageDefinition"
$FeatureTrustedLaunch = @{ Name = 'SecurityType'; Value = 'TrustedLaunch'; }
if ($Arch -ieq 'x64') {
if ($DiskType -ieq 'NVMe') {
$FeatureNVMe = @{ Name = 'DiskControllerTypes'; Value = 'SCSI, NVMe'; }
} else {
$FeatureNVMe = @{ Name = 'DiskControllerTypes'; Value = 'SCSI'; }
Expand Down
12 changes: 5 additions & 7 deletions azure-devops/format-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,29 +22,27 @@ jobs:
& "$(launchVsDevShell)" -Preview -NoLogo -HostArch x64 -Arch x64
cmake -G Ninja -S $(Build.SourcesDirectory)/tools -B "$(validationBuildOutputLocation)"
cmake --build "$(validationBuildOutputLocation)"
timeoutInMinutes: 5
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
- task: PowerShell@2
displayName: 'clang-format Files'
displayName: 'Validate Files'
inputs:
pwsh: true
targetType: inline
script: |
$PSNativeCommandUseErrorActionPreference = $true
& "$(launchVsDevShell)" -Preview -NoLogo -HostArch x64 -Arch x64
cmake --build "$(validationBuildOutputLocation)" --target run-format
timeoutInMinutes: 5
cmake --build "$(validationBuildOutputLocation)" --target run-validate
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
# We need to validate files before running clang-format, which modifies them in-place.
- task: PowerShell@2
displayName: 'Validate Files'
displayName: 'clang-format Files'
inputs:
pwsh: true
targetType: inline
script: |
$PSNativeCommandUseErrorActionPreference = $true
& "$(launchVsDevShell)" -Preview -NoLogo -HostArch x64 -Arch x64
cmake --build "$(validationBuildOutputLocation)" --target run-validate
timeoutInMinutes: 2
cmake --build "$(validationBuildOutputLocation)" --target run-format
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
- task: PowerShell@2
displayName: 'Create Diff'
Expand Down
9 changes: 6 additions & 3 deletions azure-devops/provision-image.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,9 @@ foreach ($workload in $VisualStudioWorkloads) {

# https://github.com/PowerShell/PowerShell/releases/latest
if ($Provisioning_x64) {
$PowerShellUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.5/PowerShell-7.6.5-win-x64.msi'
$PowerShellUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.6/PowerShell-7.6.6-win-x64.msi'
} else {
$PowerShellUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.5/PowerShell-7.6.5-win-arm64.msi'
$PowerShellUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.6/PowerShell-7.6.6-win-arm64.msi'
}
$PowerShellArgs = @('/quiet', '/norestart')

Expand Down Expand Up @@ -111,7 +111,10 @@ Function DownloadAndInstall {
mkdir $tempPath -Force | Out-Null
$fileName = [uri]::new($Url).Segments[-1]
$installerPath = Join-Path $tempPath $fileName
curl.exe -L -o $installerPath -s -S $Url
curl.exe --fail --silent --show-error --location --output $installerPath $Url
if ($LASTEXITCODE -ne 0) {
Write-Error "curl.exe failed with non-zero exit code $LASTEXITCODE."
}

Write-Host "Installing $Name..."
$proc = Start-Process -FilePath $installerPath -ArgumentList $Args -Wait -PassThru
Expand Down
3 changes: 1 addition & 2 deletions azure-devops/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,11 @@ steps:
$PSNativeCommandUseErrorActionPreference = $true
& "$(launchVsDevShell)" -Preview -NoLogo -HostArch ${{ parameters.hostArch }} -Arch ${{ parameters.targetArch }}
ninja --verbose -k 0 ${{ parameters.testTargets }}
timeoutInMinutes: 30
timeoutInMinutes: 15
condition: and(succeeded(), ${{ parameters.runTesting }})
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
- task: PublishTestResults@2
displayName: 'Publish Tests'
timeoutInMinutes: 5
condition: and(succeededOrFailed(), ${{ parameters.runTesting }})
inputs:
searchFolder: $(buildOutputLocation)
Expand Down
Loading