From bdb34790fbf8315de5c3246f904d7aef76ffb4b2 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 14 Nov 2023 13:48:06 -0800 Subject: [PATCH 01/11] Remove workaround for VSO-1881472 "/clr C++20 x86 System.AccessViolationException with atomic>". --- tests/std/include/test_atomic_wait.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/std/include/test_atomic_wait.hpp b/tests/std/include/test_atomic_wait.hpp index 16ca07aa9ce..9322cd5454a 100644 --- a/tests/std/include/test_atomic_wait.hpp +++ b/tests/std/include/test_atomic_wait.hpp @@ -286,9 +286,7 @@ inline void test_atomic_wait() { #ifndef __clang__ // TRANSITION, LLVM-46685 test_pad_bits>(waiting_duration); test_pad_bits>(waiting_duration); -#if !(defined(_M_CEE) && defined(_M_IX86)) // TRANSITION, VSO-1881472 test_pad_bits>(waiting_duration); -#endif // ^^^ no workaround ^^^ #ifndef _M_ARM test_pad_bits>(waiting_duration); test_pad_bits>(waiting_duration); From a0a774a980e4fdde86ebc38e91a074fb98377ae7 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 14 Nov 2023 13:50:28 -0800 Subject: [PATCH 02/11] Remove workaround for VSO-1885306 "warning C5039 shouldn't be emitted when an extern "C" function is marked noexcept(false)". --- stl/inc/stacktrace | 5 ----- 1 file changed, 5 deletions(-) diff --git a/stl/inc/stacktrace b/stl/inc/stacktrace index be9c8e97671..22a4eda8ba6 100644 --- a/stl/inc/stacktrace +++ b/stl/inc/stacktrace @@ -25,11 +25,6 @@ _STL_DISABLE_CLANG_WARNINGS #pragma push_macro("new") #undef new -// TRANSITION, VSO-1885306: warning C5039 shouldn't be emitted when an extern "C" function is marked noexcept(false) -#pragma warning(disable : 5039) // '__std_stacktrace_meow': pointer or reference to potentially throwing function - // passed to 'extern "C"' function under -EHc. Undefined behavior may occur if this - // function throws an exception. (/Wall) - // The separately compiled part of the implementation calls a function pointer of _Stacktrace_string_fill // type to allocate a buffer for string output. The called function does the buffer allocation and calls a function // pointer of _Stacktrace_string_fill_callback type to fill the buffer. This is needed to type-erase or From 04ea232bf8602d8339255f8bca14bae3625a5c17 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 14 Nov 2023 13:52:51 -0800 Subject: [PATCH 03/11] Remove workaround; 17.6 Preview 2 is ancient history. --- tests/std/tests/P0226R1_math_special_functions/test.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/std/tests/P0226R1_math_special_functions/test.cpp b/tests/std/tests/P0226R1_math_special_functions/test.cpp index 294f2817830..aa0993a7f54 100644 --- a/tests/std/tests/P0226R1_math_special_functions/test.cpp +++ b/tests/std/tests/P0226R1_math_special_functions/test.cpp @@ -514,9 +514,7 @@ void test_sph_neumann() { // Also test GH-3076 : Invalid output for incomplete elliptic integral of the second kind with k = 1 void test_gh_3076() { -#if !defined(_MSVC_INTERNAL_TESTING) || !defined(_DLL) // TRANSITION, 17.6 Preview 2 unlocked redist assert(isclose(ellint_2(1, 6.2831853071795862), 4.0)); -#endif // !defined(_MSVC_INTERNAL_TESTING) || !defined(_DLL) } int main() { From f34074389d5a9e6582d0b690082a0b3665a8e173 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 14 Nov 2023 15:17:13 -0800 Subject: [PATCH 04/11] Remove workaround for DevCom-10138792 "Bogus warning C4455: 'operator ""s': literal suffix identifiers that do not start with an underscore are reserved". --- tests/libcxx/expected_results.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index 17635616851..9559e7bb372 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -408,10 +408,6 @@ std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.modifiers/reset_se std/utilities/smartptr/unique.ptr/unique.ptr.create/make_unique.array.pass.cpp:0 FAIL std/utilities/smartptr/unique.ptr/unique.ptr.create/make_unique.array.pass.cpp:1 FAIL -# DevCom-10138792: C4455 'operator ""s': literal suffix identifiers that do not start with an underscore are reserved -std/strings/basic.string.literals/noexcept.compile.pass.cpp:0 FAIL -std/strings/basic.string.literals/noexcept.compile.pass.cpp:1 FAIL - # DevCom-1626139 "compile-time NaN comparison" std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/three-way.pass.cpp:0 FAIL std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/three-way.pass.cpp:1 FAIL From 93142b13ff9221ae28518041869fe24f3f29abc8 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 14 Nov 2023 15:18:48 -0800 Subject: [PATCH 05/11] Remove libcxx skips for `std/containers/sequences/vector.bool/move.pass.cpp`. --- tests/libcxx/expected_results.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index 9559e7bb372..c681105abc2 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -1060,8 +1060,6 @@ std/containers/sequences/vector.bool/construct_size_value_alloc.pass.cpp:0 FAIL std/containers/sequences/vector.bool/construct_size_value_alloc.pass.cpp:1 FAIL std/containers/sequences/vector.bool/emplace_back.pass.cpp FAIL std/containers/sequences/vector.bool/enabled_hash.pass.cpp FAIL -std/containers/sequences/vector.bool/move.pass.cpp:0 FAIL -std/containers/sequences/vector.bool/move.pass.cpp:1 FAIL std/containers/sequences/vector.bool/vector_bool.pass.cpp FAIL std/containers/sequences/vector/iterators.pass.cpp:0 FAIL std/containers/sequences/vector/iterators.pass.cpp:1 FAIL From 3c0bb5552256214171f783822b4656cb695d734a Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 14 Nov 2023 14:04:21 -0800 Subject: [PATCH 06/11] PowerShell 7.3.9. --- azure-devops/provision-image.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-devops/provision-image.ps1 b/azure-devops/provision-image.ps1 index d2079664bd1..7461fc8252e 100644 --- a/azure-devops/provision-image.ps1 +++ b/azure-devops/provision-image.ps1 @@ -91,7 +91,7 @@ if ([string]::IsNullOrEmpty($AdminUserPassword)) { $PsExecPath = Join-Path $ExtractedPsToolsPath 'PsExec64.exe' # https://github.com/PowerShell/PowerShell/releases/latest - $PowerShellZipUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.3.8/PowerShell-7.3.8-win-x64.zip' + $PowerShellZipUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.3.9/PowerShell-7.3.9-win-x64.zip' Write-Host "Downloading: $PowerShellZipUrl" $ExtractedPowerShellPath = DownloadAndExtractZip -Url $PowerShellZipUrl $PwshPath = Join-Path $ExtractedPowerShellPath 'pwsh.exe' From 0b4c09ac2ae3471aa79a18bd5d77037cae11b057 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 14 Nov 2023 13:59:59 -0800 Subject: [PATCH 07/11] Drive-by: Update URL for `git clone`. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d8bdc0aee34..4a77d9483ad 100644 --- a/README.md +++ b/README.md @@ -164,7 +164,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem * Make sure [Python][] 3.12 or later is available to CMake. 2. Open a command prompt. 3. Change directories to a location where you'd like a clone of this STL repository. -4. `git clone https://github.com/microsoft/STL --recurse-submodules` +4. `git clone https://github.com/microsoft/STL.git --recurse-submodules` To build the x86 target: From 8857eb5e8d2a5ce6b069f38e6bb0d2470718a4dc Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 14 Nov 2023 14:07:13 -0800 Subject: [PATCH 08/11] VS 2022 17.9 Preview 1. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4a77d9483ad..77e152f6742 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.8 Preview 3 or later. +1. Install Visual Studio 2022 17.9 Preview 1 or later. * Select "Windows 11 SDK (10.0.22000.0)" in the VS Installer. * We recommend selecting "C++ CMake tools for Windows" in the VS Installer. This will ensure that you're using supported versions of CMake and Ninja. @@ -156,7 +156,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.8 Preview 3 or later. +1. Install Visual Studio 2022 17.9 Preview 1 or later. * Select "Windows 11 SDK (10.0.22000.0)" in the VS Installer. * We recommend selecting "C++ CMake tools for Windows" in the VS Installer. This will ensure that you're using supported versions of CMake and Ninja. From 6c4b1764bc136d79bd1853557c9c6e383feb6d64 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 14 Nov 2023 14:08:07 -0800 Subject: [PATCH 09/11] Require MSVC 19.39. --- stl/inc/yvals_core.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index 1c494ad1100..198ebed5d62 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -892,8 +892,8 @@ _EMIT_STL_ERROR(STL1002, "Unexpected compiler version, expected CUDA 11.6 or new _EMIT_STL_ERROR(STL1000, "Unexpected compiler version, expected Clang 16.0.0 or newer."); #endif // ^^^ old Clang ^^^ #elif defined(_MSC_VER) -#if _MSC_VER < 1938 // Coarse-grained, not inspecting _MSC_FULL_VER -_EMIT_STL_ERROR(STL1001, "Unexpected compiler version, expected MSVC 19.38 or newer."); +#if _MSC_VER < 1939 // Coarse-grained, not inspecting _MSC_FULL_VER +_EMIT_STL_ERROR(STL1001, "Unexpected compiler version, expected MSVC 19.39 or newer."); #endif // ^^^ old MSVC ^^^ #else // vvv other compilers vvv // not attempting to detect other compilers From 9d9f622a2932c80510148a1794fd82e99513750e Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 15 Nov 2023 06:38:31 -0800 Subject: [PATCH 10/11] New pool. --- azure-devops/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-devops/config.yml b/azure-devops/config.yml index 0e2c41d3842..54f81c44138 100644 --- a/azure-devops/config.yml +++ b/azure-devops/config.yml @@ -5,7 +5,7 @@ variables: - name: poolName - value: 'StlBuild-2023-10-10T1443-Pool' + value: 'StlBuild-2023-11-15T0519-Pool' readonly: true - name: poolDemands value: 'EnableSpotVM -equals true' From bacc9431938ab7f464e756ae000272dff7716b8e Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 15 Nov 2023 06:58:38 -0800 Subject: [PATCH 11/11] Remove workaround for EDG common_reference_t behavior; skip internally until EDG is updated. --- .../tests/VSO_0000000_type_traits/test.cpp | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/tests/std/tests/VSO_0000000_type_traits/test.cpp b/tests/std/tests/VSO_0000000_type_traits/test.cpp index fb00b3c3efe..2c272249256 100644 --- a/tests/std/tests/VSO_0000000_type_traits/test.cpp +++ b/tests/std/tests/VSO_0000000_type_traits/test.cpp @@ -1387,27 +1387,12 @@ STATIC_ASSERT(is_same_v, simple_base const&&>); STATIC_ASSERT(is_same_v, simple_base const&&>); -#ifdef __EDG__ -// When f is the name of a function of type int(), C1XX incorrectly believes that -// decltype(false ? f : f) -// is int() in permissive mode and int(*)() in strict mode (Yes, two different incorrect results). It also -// correctly believes that -// decltype(false ? declval() : declval()) -// is int(&)(), which is nice because it allows this test case to pass. EDG believes the type of both the above -// is int() in all modes. I suspect this is intentional bug compatibility with C1XX, so I'm not filing a bug. I -// _do_ assert here that EDG produces the _wrong_ type from common_reference_t, however, so that THIS TEST WILL -// FAIL IF AND WHEN EDG STARTS BEHAVING CORRECTLY. We can then remove the non-workaround to defend against -// regression. -STATIC_ASSERT(!is_same_v, int (&)()>); -STATIC_ASSERT(!is_same_v, int (&)()>); -STATIC_ASSERT(!is_same_v, int (&)()>); -STATIC_ASSERT(!is_same_v, int (&&)()>); -#else // ^^^ EDG / not EDG vvv +#if !(defined(__EDG__) && defined(_MSVC_INTERNAL_TESTING)) // TRANSITION, remove after EDG is updated internally STATIC_ASSERT(is_same_v, int (&)()>); STATIC_ASSERT(is_same_v, int (&)()>); STATIC_ASSERT(is_same_v, int (&)()>); STATIC_ASSERT(is_same_v, int (&&)()>); -#endif // __EDG__ +#endif // ^^^ no workaround ^^^ STATIC_ASSERT(is_same_v, int const volatile&&>); STATIC_ASSERT(is_same_v, int const volatile&>);