diff --git a/.github/workflows/update-status-chart.yml b/.github/workflows/update-status-chart.yml index 7379faf7c48..12ae8109d65 100644 --- a/.github/workflows/update-status-chart.yml +++ b/.github/workflows/update-status-chart.yml @@ -20,7 +20,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ">=22.2.0" + node-version: ">=23.9.0" - name: Install Packages run: | npm ci diff --git a/README.md b/README.md index 2600f98cee3..4e306f137e4 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem # How To Build With The Visual Studio IDE -1. Install Visual Studio 2022 17.14 Preview 1 or later. +1. Install Visual Studio 2022 17.14 Preview 2 or later. * Select "Windows 11 SDK (10.0.22621.0)" in the VS Installer. * Select "MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools (Latest)" in the VS Installer if you would like to build the ARM64/ARM64EC target. @@ -160,7 +160,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem # How To Build With A Native Tools Command Prompt -1. Install Visual Studio 2022 17.14 Preview 1 or later. +1. Install Visual Studio 2022 17.14 Preview 2 or later. * Select "Windows 11 SDK (10.0.22621.0)" in the VS Installer. * Select "MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools (Latest)" in the VS Installer if you would like to build the ARM64/ARM64EC target. diff --git a/azure-devops/checkout-self.yml b/azure-devops/checkout-self.yml index 7fac477f5b8..69fbb011639 100644 --- a/azure-devops/checkout-self.yml +++ b/azure-devops/checkout-self.yml @@ -11,6 +11,7 @@ steps: submodules: false fetchDepth: 1 fetchTags: false + retryCountOnTaskFailure: 4 - script: | git clean --quiet -x -d -f -f displayName: 'Clean after checkout' diff --git a/azure-devops/config.yml b/azure-devops/config.yml index 732fe64fe9f..60d59b5502a 100644 --- a/azure-devops/config.yml +++ b/azure-devops/config.yml @@ -5,7 +5,7 @@ variables: - name: poolName - value: 'StlBuild-2025-02-15T0137-Pool' + value: 'StlBuild-2025-03-11T1203-Pool' readonly: true - name: poolDemands value: 'EnableSpotVM -equals false' diff --git a/azure-devops/create-1es-hosted-pool.ps1 b/azure-devops/create-1es-hosted-pool.ps1 index aa99a024346..7dce5e9bca5 100644 --- a/azure-devops/create-1es-hosted-pool.ps1 +++ b/azure-devops/create-1es-hosted-pool.ps1 @@ -22,7 +22,7 @@ $ImageSku = '2025-datacenter-azure-edition' $LogFile = '1es-hosted-pool.log' $ProgressActivity = 'Preparing STL CI pool' -$TotalProgress = 26 +$TotalProgress = 38 $CurrentProgress = 1 <# @@ -103,7 +103,30 @@ $AdminPWSecure = New-Password $Credential = New-Object System.Management.Automation.PSCredential ('AdminUser', $AdminPWSecure) #################################################################################################### -Display-ProgressBar -Status 'Creating virtual network' +Display-ProgressBar -Status 'Creating public IP address' + +$PublicIpAddressName = $ResourceGroupName + '-PublicIpAddress' +$PublicIpAddress = New-AzPublicIpAddress ` + -Name $PublicIpAddressName ` + -ResourceGroupName $ResourceGroupName ` + -Location $Location ` + -Sku 'Standard' ` + -AllocationMethod 'Static' + +#################################################################################################### +Display-ProgressBar -Status 'Creating NAT gateway' + +$NatGatewayName = $ResourceGroupName + '-NatGateway' +$NatGateway = New-AzNatGateway ` + -Name $NatGatewayName ` + -ResourceGroupName $ResourceGroupName ` + -Location $Location ` + -IdleTimeoutInMinutes 10 ` + -Sku 'Standard' ` + -PublicIpAddress $PublicIpAddress + +#################################################################################################### +Display-ProgressBar -Status 'Creating network security group' $NetworkSecurityGroupName = $ResourceGroupName + '-NetworkSecurity' $NetworkSecurityGroup = New-AzNetworkSecurityGroup ` @@ -111,12 +134,23 @@ $NetworkSecurityGroup = New-AzNetworkSecurityGroup ` -ResourceGroupName $ResourceGroupName ` -Location $Location +#################################################################################################### +Display-ProgressBar -Status 'Creating virtual network subnet config' + +# TRANSITION, 2025-09-30: "On September 30, 2025, default outbound access for new deployments will be retired." +# https://learn.microsoft.com/en-us/azure/virtual-network/ip-services/default-outbound-access +# We're using `-DefaultOutboundAccess $false` to opt-in early. $SubnetName = $ResourceGroupName + '-Subnet' $Subnet = New-AzVirtualNetworkSubnetConfig ` -Name $SubnetName ` -AddressPrefix '10.0.0.0/16' ` + -DefaultOutboundAccess $false ` + -NatGateway $NatGateway ` -NetworkSecurityGroup $NetworkSecurityGroup +#################################################################################################### +Display-ProgressBar -Status 'Creating virtual network' + $VirtualNetworkName = $ResourceGroupName + '-Network' $VirtualNetwork = New-AzVirtualNetwork ` -Name $VirtualNetworkName ` @@ -136,7 +170,7 @@ $Nic = New-AzNetworkInterface ` -Subnet $VirtualNetwork.Subnets[0] #################################################################################################### -Display-ProgressBar -Status 'Creating prototype VM' +Display-ProgressBar -Status 'Creating prototype VM config' # Previously: -Priority 'Spot' $VM = New-AzVMConfig ` @@ -145,6 +179,9 @@ $VM = New-AzVMConfig ` -DiskControllerType 'NVMe' ` -Priority 'Regular' +#################################################################################################### +Display-ProgressBar -Status 'Setting prototype VM OS' + $VM = Set-AzVMOperatingSystem ` -VM $VM ` -Windows ` @@ -152,10 +189,16 @@ $VM = Set-AzVMOperatingSystem ` -Credential $Credential ` -ProvisionVMAgent +#################################################################################################### +Display-ProgressBar -Status 'Adding prototype VM network interface' + $VM = Add-AzVMNetworkInterface ` -VM $VM ` -Id $Nic.Id +#################################################################################################### +Display-ProgressBar -Status 'Setting prototype VM source image' + $VM = Set-AzVMSourceImage ` -VM $VM ` -PublisherName $ImagePublisher ` @@ -163,15 +206,24 @@ $VM = Set-AzVMSourceImage ` -Skus $ImageSku ` -Version 'latest' +#################################################################################################### +Display-ProgressBar -Status 'Setting prototype VM boot diagnostic' + $VM = Set-AzVMBootDiagnostic ` -VM $VM ` -Disable +#################################################################################################### +Display-ProgressBar -Status 'Creating prototype VM' + New-AzVm ` -ResourceGroupName $ResourceGroupName ` -Location $Location ` -VM $VM >> $LogFile +#################################################################################################### +Display-ProgressBar -Status 'Getting prototype VM OS disk name' + $VM = Get-AzVM ` -ResourceGroupName $ResourceGroupName ` -Name $ProtoVMName @@ -350,25 +402,41 @@ Remove-AzDisk ` Display-ProgressBar -Status 'Deleting unused network interface' Remove-AzNetworkInterface ` --ResourceGroupName $ResourceGroupName ` --Name $NicName ` --Force >> $LogFile + -ResourceGroupName $ResourceGroupName ` + -Name $NicName ` + -Force >> $LogFile #################################################################################################### Display-ProgressBar -Status 'Deleting unused virtual network' Remove-AzVirtualNetwork ` --ResourceGroupName $ResourceGroupName ` --Name $VirtualNetworkName ` --Force >> $LogFile + -ResourceGroupName $ResourceGroupName ` + -Name $VirtualNetworkName ` + -Force >> $LogFile #################################################################################################### Display-ProgressBar -Status 'Deleting unused network security group' Remove-AzNetworkSecurityGroup ` --ResourceGroupName $ResourceGroupName ` --Name $NetworkSecurityGroupName ` --Force >> $LogFile + -ResourceGroupName $ResourceGroupName ` + -Name $NetworkSecurityGroupName ` + -Force >> $LogFile + +#################################################################################################### +Display-ProgressBar -Status 'Deleting unused NAT gateway' + +Remove-AzNatGateway ` + -ResourceGroupName $ResourceGroupName ` + -Name $NatGatewayName ` + -Force >> $LogFile + +#################################################################################################### +Display-ProgressBar -Status 'Deleting unused public IP address' + +Remove-AzPublicIpAddress ` + -ResourceGroupName $ResourceGroupName ` + -Name $PublicIpAddressName ` + -Force >> $LogFile #################################################################################################### Write-Progress -Activity $ProgressActivity -Completed diff --git a/azure-devops/provision-image.ps1 b/azure-devops/provision-image.ps1 index ea42153a8d5..67357c4a121 100644 --- a/azure-devops/provision-image.ps1 +++ b/azure-devops/provision-image.ps1 @@ -46,10 +46,8 @@ $PowerShellArgs = @('/quiet', '/norestart') $PythonUrl = 'https://www.python.org/ftp/python/3.13.2/python-3.13.2-amd64.exe' $PythonArgs = @('/quiet', 'InstallAllUsers=1', 'PrependPath=1', 'CompileAll=1', 'Include_doc=0') -# TRANSITION, GH-5282: Install only nvcc and cudart, then manually add CUDA to the PATH (see below). $CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_551.61_windows.exe' -$CudaArgs = @('-s', '-n', 'nvcc_12.4', 'cudart_12.4') -$CudaPath = 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin' +$CudaArgs = @('-s', '-n') <# .SYNOPSIS @@ -114,12 +112,6 @@ DownloadAndInstall -Name 'CUDA' -Url $CudaUrl -Args $CudaArgs Write-Host 'Setting environment variables...' -# TRANSITION, GH-5282: Manually add CUDA to the PATH. -# Don't use $Env:PATH here - that's the local path for this running script, captured before we installed anything. -# The machine path was just updated by the installers above. -$machinePath = [Environment]::GetEnvironmentVariable('Path', 'Machine') -[Environment]::SetEnvironmentVariable('Path', "$machinePath;$CudaPath", 'Machine') - # The STL's PR/CI builds are totally unrepresentative of customer usage. [Environment]::SetEnvironmentVariable('VSCMD_SKIP_SENDTELEMETRY', '1', 'Machine') diff --git a/stl/inc/__msvc_bit_utils.hpp b/stl/inc/__msvc_bit_utils.hpp index a89221adec0..4217cb208a3 100644 --- a/stl/inc/__msvc_bit_utils.hpp +++ b/stl/inc/__msvc_bit_utils.hpp @@ -51,7 +51,7 @@ _NODISCARD constexpr int _Countl_zero_fallback(_Ty _Val) noexcept { return static_cast(_Nx) - static_cast(_Val); } -#if !defined(_M_CEE_PURE) && !defined(__CUDACC__) && !defined(__INTEL_COMPILER) +#if !defined(_M_CEE_PURE) && !defined(__CUDACC__) #define _HAS_COUNTL_ZERO_INTRINSICS 1 #else // ^^^ intrinsics available / intrinsics unavailable vvv #define _HAS_COUNTL_ZERO_INTRINSICS 0 @@ -179,7 +179,7 @@ _NODISCARD constexpr int _Popcount_fallback(_Ty _Val) noexcept { } #if ((defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC))) \ - && !defined(_M_CEE_PURE) && !defined(__CUDACC__) && !defined(__INTEL_COMPILER) + && !defined(_M_CEE_PURE) && !defined(__CUDACC__) #define _HAS_TZCNT_BSF_INTRINSICS 1 #else // ^^^ intrinsics available / intrinsics unavailable vvv #define _HAS_TZCNT_BSF_INTRINSICS 0 @@ -273,8 +273,7 @@ _NODISCARD int _Checked_x86_x64_countr_zero(const _Ty _Val) noexcept { #endif // _HAS_TZCNT_BSF_INTRINSICS -#if (defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64)) && !defined(_M_CEE_PURE) && !defined(__CUDACC__) \ - && !defined(__INTEL_COMPILER) +#if (defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64)) && !defined(_M_CEE_PURE) && !defined(__CUDACC__) #define _HAS_POPCNT_INTRINSICS 1 #if defined(__AVX__) || defined(_M_ARM64) || defined(_M_ARM64EC) #define _POPCNT_INTRINSICS_ALWAYS_AVAILABLE 1 diff --git a/stl/inc/__msvc_int128.hpp b/stl/inc/__msvc_int128.hpp index 7933e595820..e0a0dd34ddb 100644 --- a/stl/inc/__msvc_int128.hpp +++ b/stl/inc/__msvc_int128.hpp @@ -36,8 +36,7 @@ _STL_DISABLE_CLANG_WARNINGS _STD_BEGIN -#if defined(_M_X64) && !defined(_M_ARM64EC) && !defined(_M_CEE_PURE) && !defined(__CUDACC__) \ - && !defined(__INTEL_COMPILER) +#if defined(_M_X64) && !defined(_M_ARM64EC) && !defined(_M_CEE_PURE) && !defined(__CUDACC__) #define _STL_128_INTRINSICS 1 #ifdef __clang__ // clang doesn't have _udiv128 / _div128 #define _STL_128_DIV_INTRINSICS 0 diff --git a/stl/inc/__msvc_iter_core.hpp b/stl/inc/__msvc_iter_core.hpp index d549bf06ce7..e77903479a1 100644 --- a/stl/inc/__msvc_iter_core.hpp +++ b/stl/inc/__msvc_iter_core.hpp @@ -283,7 +283,7 @@ struct _Iter_traits_category4 { template concept _Cpp17_random_delta = -#if defined(__CUDACC__) && !defined(__clang__) // TRANSITION, CUDA 12.5 +#if defined(__CUDACC__) && !defined(__clang__) // TRANSITION, fixed in CUDA 12.5 totally_ordered<_It> && requires(_It __i, typename incrementable_traits<_It>::difference_type __n) { #else // ^^^ workaround / no workaround vvv totally_ordered<_It> && requires(_It __i, incrementable_traits<_It>::difference_type __n) { diff --git a/stl/inc/__msvc_ranges_tuple_formatter.hpp b/stl/inc/__msvc_ranges_tuple_formatter.hpp index eeb768995f6..677997e3abb 100644 --- a/stl/inc/__msvc_ranges_tuple_formatter.hpp +++ b/stl/inc/__msvc_ranges_tuple_formatter.hpp @@ -264,7 +264,8 @@ class basic_format_arg { } }; -#if defined(__clang__) || defined(__EDG__) // TRANSITION, LLVM-81774 (Clang), VSO-1956558 (EDG) +#if defined(__clang__) || defined(__EDG__) \ + || defined(__CUDACC__) // TRANSITION, LLVM-81774 (Clang), VSO-1956558 (EDG), VSO-2411436 (needed by CUDA 12.8.1) basic_format_arg() noexcept : _Active_state(_Basic_format_arg_type::_None), _No_state() {} #else // ^^^ workaround / no workaround vvv basic_format_arg() noexcept = default; diff --git a/stl/inc/array b/stl/inc/array index 5be4b29622d..09bf8820073 100644 --- a/stl/inc/array +++ b/stl/inc/array @@ -230,6 +230,11 @@ private: _STL_VERIFY(*this <= _Last, "array iterator range transposed"); } + friend constexpr void _Verify_range( + const _Array_const_iterator& _First, const _Array_const_iterator& _Last) noexcept { + _First._Verify_with(_Last); + } + constexpr void _Seek_to(pointer _It) noexcept { _Idx = static_cast(_It - _Ptr); } @@ -277,15 +282,6 @@ public: #endif // !_HAS_CXX20 }; -#if _ITERATOR_DEBUG_LEVEL != 0 -template -constexpr void _Verify_range( - const _Array_const_iterator<_Ty, _Size>& _First, const _Array_const_iterator<_Ty, _Size>& _Last) noexcept { - // TRANSITION, CUDA - _First._Verify_with(_Last); -} -#endif // _ITERATOR_DEBUG_LEVEL != 0 - #if _HAS_CXX20 template struct pointer_traits<_Array_const_iterator<_Ty, _Size>> { diff --git a/stl/inc/cmath b/stl/inc/cmath index 8b6b938ff66..7190d446064 100644 --- a/stl/inc/cmath +++ b/stl/inc/cmath @@ -11,8 +11,7 @@ #include #include -#if !defined(__clang__) && !defined(__CUDACC__) && !defined(__INTEL_COMPILER) \ - && !defined(_M_CEE) // TRANSITION, VSO-1663104 +#if !defined(__clang__) && !defined(__CUDACC__) && !defined(_M_CEE) // TRANSITION, VSO-1663104 #define _HAS_CMATH_INTRINSICS 1 #else // ^^^ intrinsics available / intrinsics unavailable vvv #define _HAS_CMATH_INTRINSICS 0 diff --git a/stl/inc/string b/stl/inc/string index 2ba574013fc..51661e2ad8f 100644 --- a/stl/inc/string +++ b/stl/inc/string @@ -441,39 +441,31 @@ template _NODISCARD basic_string<_Elem> _Integral_to_string(const _Ty _Val) { // convert _Val to string static_assert(is_integral_v<_Ty>, "_Ty must be integral"); - using _UTy = make_unsigned_t<_Ty>; _Elem _Buff[21]; // can hold -2^63 and 2^64 - 1, plus NUL _Elem* const _Buff_end = _STD end(_Buff); _Elem* _RNext = _Buff_end; - const auto _UVal = static_cast<_UTy>(_Val); - if (_Val < 0) { - _RNext = _UIntegral_to_buff(_RNext, 0 - _UVal); - *--_RNext = '-'; + + if constexpr (is_signed_v<_Ty>) { + const auto _UVal = static_cast>(_Val); + if (_Val < 0) { + _RNext = _UIntegral_to_buff(_RNext, 0 - _UVal); + *--_RNext = '-'; + } else { + _RNext = _UIntegral_to_buff(_RNext, _UVal); + } } else { - _RNext = _UIntegral_to_buff(_RNext, _UVal); + _RNext = _UIntegral_to_buff(_RNext, _Val); } return basic_string<_Elem>(_RNext, _Buff_end); } -// TRANSITION, CUDA - warning: pointless comparison of unsigned integer with zero -template -_NODISCARD basic_string<_Elem> _UIntegral_to_string(const _Ty _Val) { - // convert _Val to string - static_assert(is_integral_v<_Ty>, "_Ty must be integral"); - static_assert(is_unsigned_v<_Ty>, "_Ty must be unsigned"); - _Elem _Buff[21]; // can hold 2^64 - 1, plus NUL - _Elem* const _Buff_end = _STD end(_Buff); - _Elem* const _RNext = _UIntegral_to_buff(_Buff_end, _Val); - return basic_string<_Elem>(_RNext, _Buff_end); -} - _EXPORT_STD _NODISCARD inline string to_string(int _Val) { return _Integral_to_string(_Val); } _EXPORT_STD _NODISCARD inline string to_string(unsigned int _Val) { - return _UIntegral_to_string(_Val); + return _Integral_to_string(_Val); } _EXPORT_STD _NODISCARD inline string to_string(long _Val) { @@ -481,7 +473,7 @@ _EXPORT_STD _NODISCARD inline string to_string(long _Val) { } _EXPORT_STD _NODISCARD inline string to_string(unsigned long _Val) { - return _UIntegral_to_string(_Val); + return _Integral_to_string(_Val); } _EXPORT_STD _NODISCARD inline string to_string(long long _Val) { @@ -489,7 +481,7 @@ _EXPORT_STD _NODISCARD inline string to_string(long long _Val) { } _EXPORT_STD _NODISCARD inline string to_string(unsigned long long _Val) { - return _UIntegral_to_string(_Val); + return _Integral_to_string(_Val); } _EXPORT_STD _NODISCARD inline string to_string(double _Val) { @@ -512,7 +504,7 @@ _EXPORT_STD _NODISCARD inline wstring to_wstring(int _Val) { } _EXPORT_STD _NODISCARD inline wstring to_wstring(unsigned int _Val) { - return _UIntegral_to_string(_Val); + return _Integral_to_string(_Val); } _EXPORT_STD _NODISCARD inline wstring to_wstring(long _Val) { @@ -520,7 +512,7 @@ _EXPORT_STD _NODISCARD inline wstring to_wstring(long _Val) { } _EXPORT_STD _NODISCARD inline wstring to_wstring(unsigned long _Val) { - return _UIntegral_to_string(_Val); + return _Integral_to_string(_Val); } _EXPORT_STD _NODISCARD inline wstring to_wstring(long long _Val) { @@ -528,7 +520,7 @@ _EXPORT_STD _NODISCARD inline wstring to_wstring(long long _Val) { } _EXPORT_STD _NODISCARD inline wstring to_wstring(unsigned long long _Val) { - return _UIntegral_to_string(_Val); + return _Integral_to_string(_Val); } _EXPORT_STD _NODISCARD inline wstring to_wstring(double _Val) { diff --git a/stl/inc/utility b/stl/inc/utility index ae7f4094f14..999de93c950 100644 --- a/stl/inc/utility +++ b/stl/inc/utility @@ -951,8 +951,8 @@ _NODISCARD constexpr bool in_range(const _Ty _Value) noexcept { #endif // _HAS_CXX20 #if _HAS_CXX23 -_EXPORT_STD template -_NODISCARD _MSVC_INTRINSIC constexpr underlying_type_t<_Ty> to_underlying(_Ty _Value) noexcept { +_EXPORT_STD template // TRANSITION, VSO-2253317: should be _MSVC_INTRINSIC +_NODISCARD constexpr underlying_type_t<_Ty> to_underlying(_Ty _Value) noexcept { return static_cast>(_Value); } diff --git a/stl/inc/xmemory b/stl/inc/xmemory index acac82131e1..f65246466cc 100644 --- a/stl/inc/xmemory +++ b/stl/inc/xmemory @@ -1500,8 +1500,8 @@ struct _Container_proxy_ptr12 : _Basic_container_proxy_ptr12 { }; #if _ITERATOR_DEBUG_LEVEL == 0 -_INLINE_VAR constexpr _Fake_allocator _Fake_alloc{}; -#define _GET_PROXY_ALLOCATOR(_Alty, _Al) _Fake_alloc // TRANSITION, VSO-1284799, should be _Fake_allocator{} +#define _GET_PROXY_ALLOCATOR(_Alty, _Al) \ + _Fake_allocator {} template using _Container_proxy_ptr = _Fake_proxy_ptr_impl; #else // ^^^ _ITERATOR_DEBUG_LEVEL == 0 / _ITERATOR_DEBUG_LEVEL > 0 vvv diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index 3525693fa21..3b482db985b 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -526,14 +526,7 @@ #define _STL_STRINGIZE_(S) #S #define _STL_STRINGIZE(S) _STL_STRINGIZE_(S) -// Note that _STL_PRAGMA is load-bearing; -// it still needs to exist even once CUDA and ICC support _Pragma. -#if defined(__CUDACC__) || defined(__INTEL_COMPILER) -#define _STL_PRAGMA(PRAGMA) __pragma(PRAGMA) -#else -#define _STL_PRAGMA(PRAGMA) _Pragma(#PRAGMA) -#endif - +#define _STL_PRAGMA(PRAGMA) _Pragma(#PRAGMA) #define _STL_PRAGMA_MESSAGE(MESSAGE) _STL_PRAGMA(message(MESSAGE)) #define _EMIT_STL_MESSAGE(MESSAGE) _STL_PRAGMA_MESSAGE(__FILE__ "(" _STL_STRINGIZE(__LINE__) "): " MESSAGE) @@ -698,8 +691,6 @@ #ifndef __has_cpp_attribute #define _HAS_MSVC_ATTRIBUTE(x) 0 -#elif defined(__CUDACC__) // TRANSITION, CUDA - warning: attribute namespace "msvc" is unrecognized -#define _HAS_MSVC_ATTRIBUTE(x) 0 #else #define _HAS_MSVC_ATTRIBUTE(x) __has_cpp_attribute(msvc::x) #endif @@ -885,26 +876,20 @@ #define _STL_DISABLE_DEPRECATED_WARNING \ _Pragma("clang diagnostic push") \ _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") -#elif defined(__CUDACC__) || defined(__INTEL_COMPILER) -#define _STL_DISABLE_DEPRECATED_WARNING \ - __pragma(warning(push)) \ - __pragma(warning(disable : 4996)) // was declared deprecated -#else // vvv MSVC vvv +#else // ^^^ defined(__clang__) / !defined(__clang__) vvv #define _STL_DISABLE_DEPRECATED_WARNING \ _Pragma("warning(push)") \ _Pragma("warning(disable : 4996)") // was declared deprecated -#endif // ^^^ MSVC ^^^ +#endif // ^^^ !defined(__clang__) ^^^ #endif // _STL_DISABLE_DEPRECATED_WARNING // clang-format on #ifndef _STL_RESTORE_DEPRECATED_WARNING #ifdef __clang__ #define _STL_RESTORE_DEPRECATED_WARNING _Pragma("clang diagnostic pop") -#elif defined(__CUDACC__) || defined(__INTEL_COMPILER) -#define _STL_RESTORE_DEPRECATED_WARNING __pragma(warning(pop)) -#else // vvv MSVC vvv +#else // ^^^ defined(__clang__) / !defined(__clang__) vvv #define _STL_RESTORE_DEPRECATED_WARNING _Pragma("warning(pop)") -#endif // ^^^ MSVC ^^^ +#endif // ^^^ !defined(__clang__) ^^^ #endif // !defined(_STL_RESTORE_DEPRECATED_WARNING) #define _CPPLIB_VER 650 @@ -923,8 +908,8 @@ _EMIT_STL_ERROR(STL1002, "Unexpected compiler version, expected CUDA 12.4 or new _EMIT_STL_ERROR(STL1000, "Unexpected compiler version, expected Clang 19.0.0 or newer."); #endif // ^^^ old Clang ^^^ #elif defined(_MSC_VER) -#if _MSC_VER < 1942 // Coarse-grained, not inspecting _MSC_FULL_VER -_EMIT_STL_ERROR(STL1001, "Unexpected compiler version, expected MSVC 19.42 or newer."); +#if _MSC_VER < 1944 // Coarse-grained, not inspecting _MSC_FULL_VER +_EMIT_STL_ERROR(STL1001, "Unexpected compiler version, expected MSVC 19.44 or newer."); #endif // ^^^ old MSVC ^^^ #else // vvv other compilers vvv // not attempting to detect other compilers @@ -2024,10 +2009,6 @@ compiler option, or define _ALLOW_RTCc_IN_STL to suppress this error. #define _STATIC_CALL_OPERATOR static #define _CONST_CALL_OPERATOR #define _STATIC_LAMBDA static -#elif _MSC_VER < 1944 // TRANSITION, internal toolset needs to be updated to VS 2022 17.14 Preview 1 -#define _STATIC_CALL_OPERATOR -#define _CONST_CALL_OPERATOR const -#define _STATIC_LAMBDA #else // TRANSITION, VSO-2383148, fixed in VS 2022 17.14 Preview 3 #define _STATIC_CALL_OPERATOR static #define _CONST_CALL_OPERATOR diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index d3359a1b79c..bf8daabd5c6 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -602,6 +602,7 @@ std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/m std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_time_point.pass.cpp SKIPPED std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp SKIPPED std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp SKIPPED +std/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp SKIPPED std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp SKIPPED # Not analyzed, likely bogus tests. Various assertions, probably POSIX assumptions. diff --git a/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp b/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp index cc2fabe66af..0f79623e2df 100644 --- a/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp +++ b/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp @@ -1370,8 +1370,6 @@ _CONSTEXPR20 bool test_mem_fn() { const int&& r2 = mf_pmd(move(cw)); assert(&r2 == &cw.m_i); - -#ifndef _M_CEE // TRANSITION, VSO-1664293 w.m_i = 1000; assert(mem_fn(&Widget::nullary)(w) == 1001); @@ -1395,7 +1393,6 @@ _CONSTEXPR20 bool test_mem_fn() { assert(mem_fn(&Widget::unary_lv)(&w, 6) == 1061); assert(mem_fn(&Widget::unary_rv)(move(w), 7) == 1404); -#endif // ^^^ no workaround ^^^ return true; } diff --git a/tests/std/tests/GH_000639_nvcc_include_all/test.compile.pass.cpp b/tests/std/tests/GH_000639_nvcc_include_all/test.compile.pass.cpp index 3141bc208ce..dc49c8ff92f 100644 --- a/tests/std/tests/GH_000639_nvcc_include_all/test.compile.pass.cpp +++ b/tests/std/tests/GH_000639_nvcc_include_all/test.compile.pass.cpp @@ -4,3 +4,12 @@ #define _MSVC_TESTING_NVCC #include <__msvc_all_public_headers.hpp> + +using namespace std; + +#if _HAS_CXX20 +// Test VSO-2411436 "[Feedback] CUDA (12.8) host code compilation fails with std::format and VS2022" +void test_VSO_2411436() { + (void) format("{}", 1729); +} +#endif // _HAS_CXX20 diff --git a/tests/std/tests/P0019R8_atomic_ref/test.cpp b/tests/std/tests/P0019R8_atomic_ref/test.cpp index 47f42a78be0..ad351d42b23 100644 --- a/tests/std/tests/P0019R8_atomic_ref/test.cpp +++ b/tests/std/tests/P0019R8_atomic_ref/test.cpp @@ -53,11 +53,7 @@ void test_atomic_ref_constraints_single() { // COMPILE-ONLY }); { [[maybe_unused]] auto instantiator = [](const AR& r, TD v, std::memory_order ord) { -#if defined(__clang__) || defined(__EDG__) // TRANSITION, VSO-2343282 (void) r.operator TD(); -#else // ^^^ no workaround / workaround vvv - [[maybe_unused]] TD td = r; -#endif // ^^^ workaround ^^^ (void) r.load(); (void) r.load(ord); r.wait(v); diff --git a/tests/std/tests/P0466R5_layout_compatibility_and_pointer_interconvertibility_traits/test.cpp b/tests/std/tests/P0466R5_layout_compatibility_and_pointer_interconvertibility_traits/test.cpp index 55333fccfcd..1500983e015 100644 --- a/tests/std/tests/P0466R5_layout_compatibility_and_pointer_interconvertibility_traits/test.cpp +++ b/tests/std/tests/P0466R5_layout_compatibility_and_pointer_interconvertibility_traits/test.cpp @@ -199,7 +199,7 @@ constexpr bool test() { ASSERT(!is_corresponding_member(&S5::v1, &S6::v2)); ASSERT(!is_corresponding_member(&S5::v2, &S6::v1)); ASSERT(!is_corresponding_member(&S5::v3, &S6::v3)); -#ifndef _M_CEE // TRANSITION, VSO-1664293 +#ifndef _M_CEE // TRANSITION, VSO-2417635 ASSERT(!is_corresponding_member(&NS::v1, &NS::w1)); #endif // ^^^ no workaround ^^^ ASSERT(!is_corresponding_member(&S7::f1, &S7::f1)); @@ -236,7 +236,7 @@ constexpr bool test() { ASSERT(is_pointer_interconvertible_with_class(&U::v2)); ASSERT(!is_pointer_interconvertible_with_class(&NS::a)); -#ifndef _M_CEE // TRANSITION, VSO-1664293 +#ifndef _M_CEE // TRANSITION, VSO-2417635 ASSERT(!is_pointer_interconvertible_with_class(&NS::b)); #endif // ^^^ no workaround ^^^ ASSERT(!is_pointer_interconvertible_with_class(&C::f1)); diff --git a/tests/std/tests/P0896R4_views_take/test.cpp b/tests/std/tests/P0896R4_views_take/test.cpp index d14de052e7b..a512435f971 100644 --- a/tests/std/tests/P0896R4_views_take/test.cpp +++ b/tests/std/tests/P0896R4_views_take/test.cpp @@ -561,22 +561,17 @@ constexpr void move_only_test() { } constexpr void output_range_test() { -#if !defined(__clang__) && !defined(__EDG__) // TRANSITION, VSO-1132704 - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ - { - using R = test::range; - int some_writable_ints[] = {0, 1, 2, 3}; - static_assert(same_as>); + using R = test::range; + int some_writable_ints[] = {0, 1, 2, 3}; + static_assert(same_as>); - // How do I implement "Fill up to n elements in {output range} with {value}"? - ranges::fill(R{some_writable_ints} | views::take(99999), 42); - assert(ranges::equal(some_writable_ints, initializer_list{42, 42, 42, 42})); + // How do I implement "Fill up to n elements in {output range} with {value}"? + ranges::fill(R{some_writable_ints} | views::take(99999), 42); + assert(ranges::equal(some_writable_ints, initializer_list{42, 42, 42, 42})); - ranges::fill(R{some_writable_ints} | views::take(3), 13); - assert(ranges::equal(some_writable_ints, initializer_list{13, 13, 13, 42})); - } + ranges::fill(R{some_writable_ints} | views::take(3), 13); + assert(ranges::equal(some_writable_ints, initializer_list{13, 13, 13, 42})); } void test_DevCom_1397309() { diff --git a/tools/format/CMakeLists.txt b/tools/format/CMakeLists.txt index 7b0a9adffdd..dbd31237141 100644 --- a/tools/format/CMakeLists.txt +++ b/tools/format/CMakeLists.txt @@ -18,7 +18,7 @@ execute_process( ) if(clang_format_version MATCHES "clang-format version ([0-9]+\.[0-9]+\.[0-9]+)") - set(expected_version "19.1.1") + set(expected_version "19.1.5") if(CMAKE_MATCH_1 VERSION_LESS expected_version) message(FATAL_ERROR "Found clang-format: ${CLANG_FORMAT} (\"${CMAKE_MATCH_1}\", older than expected version \"${expected_version}\")") elseif(CMAKE_MATCH_1 VERSION_EQUAL expected_version)