Skip to content

Update dependency microsoft/STL to v17 (master) - #11450

Closed
renovate-bot wants to merge 1 commit into
erlang:masterfrom
renovate-bot:renovate/master-microsoft-stl-17.x
Closed

Update dependency microsoft/STL to v17 (master)#11450
renovate-bot wants to merge 1 commit into
erlang:masterfrom
renovate-bot:renovate/master-microsoft-stl-17.x

Conversation

@renovate-bot

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Update Change
microsoft/STL major msvc-build-tools-14.5017.14

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

microsoft/STL (microsoft/STL)

v17.14: VS 2022 17.14

Compare Source

  • Merged C++26 features:
  • Merged partial C++26 features:
    • P3471R4 #​5274 Standard Library Hardening
      • Currently disabled by default.
      • This can be enabled (for any Standard mode) by defining _MSVC_STL_HARDENING to 1 project-wide.
      • As C++26 Contracts are not yet implemented, this defaults to calling __fastfail() for hardened precondition violations.
  • Related behavior enhancement:
    • Implemented "destructor tombstones" to mitigate use-after-free mistakes. #​5318
      • Currently disabled by default.
      • This can be enabled by defining _MSVC_STL_DESTRUCTOR_TOMBSTONES to 1 project-wide.
  • Merged LWG issue resolutions:
  • Merged proposed resolutions for LWG issues (not yet accepted for the C++ Working Draft, but we've chosen to implement this speculatively):
  • Fixed bugs:
    • Fixed system_category().message() to prefer US English, followed by the system locale, with an ultimate fallback of FormatMessageA's behavior for dwLanguageId == 0. #​5104
      • This is consistent with generic_category().message() (which always returns US English in our implementation) and has the best chance of returning something intelligible instead of "unknown error" or "???".
      • This fixed a regression that was introduced by #​2669 in VS 2022 17.3.
    • Fixed regex's behavior:
      • To reject bogus character class ranges like R"([\d-e])". #​5158
      • For negated character class escapes (\D for non-digits, \S for non-whitespace, \W for non-words) when matching against Unicode characters:
        • Outside square-bracket character classes. #​5160
        • Inside square-bracket character classes (partially fixed). #​5214
      • For character ranges in case-insensitive mode. #​5164
      • For the basic grammar to parse a single digit for backreferences. #​5167
      • For its internal buffers to grow geometrically. #​5175
      • For the special character . (dot). #​5192
      • For its constructor to accept (null, zero) arguments. #​5211
    • Fixed filesystem::equivalent() to return correct results when shared folders are involved. #​5130
    • Fixed chrono::weekday's constructor to avoid integer overflow for extreme inputs. #​5156
    • Fixed push_range() for stack, queue, and priority_queue to forward the range to c.append_range() when possible, exactly as depicted in the Standard. #​5168
    • Fixed code to call ranges::begin and ranges::end exactly as depicted in the Standard:
    • Fixed compiler errors in range_formatter involving highly unusual contiguous ranges. #​5187
    • Fixed heterogeneous lookup for unordered containers to follow the Standard, allowing braced initializer lists to be used as arguments. #​5208
    • Fixed compiler errors in views::counted involving highly unusual types. #​5223
    • Fixed integer overflow in this_thread::sleep_for() with extremely small units (e.g. picoseconds). #​5237
    • Fixed basic_string::reserve()'s ASan annotations to detect writes to its unused capacity. #​5252
    • Fixed how <format> handles field width for alternate form general floating-point. #​5261
    • Fixed compiler errors when constructing a basic_ispanstream from a modifiable basic_string. #​5309
      • This fixed a regression that was introduced by #​4938 in VS 2022 17.13.
    • Fixed compiler errors when using <format> in a CUDA project, by adding a compiler bug workaround. #​5335
    • Fixed compiler errors when converting between different specializations of basic_const_iterator. #​5325
  • Improved performance:
    • Added vectorized implementations of:
      • basic_string::find() for a character. #​5101
    • Improved the vectorized implementations of:
      • basic_string::find_first_of() and basic_string::find_last_of(). #​5029
    • regex_traits::translate() is now an identity function, as required by the Standard, instead of an expensive locale operation. #​5209
    • The STL now takes advantage of compiler support for C++23 P1169R4 static operator() in earlier Standard modes, slightly improving codegen. #​5284 #​5312
    • Optimized the minstd_rand and minstd_rand0 random number engines by avoiding constant divisions. #​5256
    • Slightly improved move_only_function's constructors to do less work when setting the object to be empty. #​5328
  • Enhanced behavior:
    • std::expected, std::unexpected, and all STL exception types are now marked [[nodiscard]]. #​5174
      • This affects all user-defined functions returning these types by value. It also affects any directly constructed temporaries that are immediately discarded.
    • Deprecated the non-Standard locale::empty() static member function. #​5197
    • Changed the STL to avoid using is_trivial, which is being deprecated in C++26. #​5202
    • Improved the STL's debug checks with better messages and fewer branches. #​5270
  • Improved debugger visualization:
    • Improved the visualizers for basic_string_view and its iterators by suppressing irrelevant pointer values. #​5176
    • Dramatically simplified how the visualizers for basic_string and its iterators are implemented. #​5177
  • Improved test coverage:
    • Simplified the test harness by dropping ctest. Now we always directly invoke stl-lit.py. #​5169
    • Improved the test harness to warn only once when a compiler is missing. #​5199
    • Categorized libcxx test failures. #​5231
    • Updated our LLVM submodule, including new tests. #​5235
    • Added test coverage for the ASan annotations in basic_string::reserve() and vector::reserve(). #​5241
    • Skipped libcxx tests in response to a new compiler warning C5321, which warns when the resolution to CWG-1656 affects a u8 string literal. #​5283
  • Code cleanups:
  • Infrastructure improvements:
    • Updated dependencies. #​5186 #​5247 #​5257 #​5284 #​5335
      • Updated build compiler to VS 2022 17.14 Preview 2 (now required).
      • Updated Clang to 19.1.5 (now required).
      • Updated Google Benchmark to 1.9.1.
      • Updated Python to 3.13.2.
      • Updated VMs to compute-optimized F32as_v6.
  • Updated _MSVC_STL_UPDATE. #​5162 #​5217 #​5264 #​5323

v17.13: VS 2022 17.13

Compare Source

  • Merged C++23 features:
  • Merged C++23 Defect Reports:
    • P3107R5 #​4821 Permit An Efficient Implementation Of <print>
      • P3235R3 std::print More Types Faster With Less Memory
  • Fixed bugs:
    • Fixed an infinite loop in deque::shrink_to_fit(). #​4955
      • This fixed a regression that was introduced by #​4091 in VS 2022 17.10.
    • Fixed compiler errors when constructing highly unusual unique_ptrs (storing fancy pointers) from unspeakably evil relics of the forgotten past. #​4922
    • Fixed compiler errors when calling ranges::inplace_merge with certain combinations of elements, projections, and comparisons. #​4927
    • Fixed compiler errors in basic_ispanstream's constructor and basic_ispanstream::span() taking ReadOnlyRange&& with highly unusual types. #​4938
    • Fixed compiler errors in the highly unusual scenario of calling basic_string and basic_string_view's find_first_of() family of member functions for program-defined "unicorn" character types. #​4951
    • Fixed compiler errors when constructing optional from highly unusual types. #​4961
    • Fixed sequence container emplacement functions (e.g. vector::emplace_back()) to avoid emitting "warning C5046: Symbol involving type with internal linkage not defined" for highly unusual types. #​4963 #​4980
      • This also fixed ODR violations when mixing C++14 with C++17-and-later translation units calling sequence container emplacement functions for any types.
    • Fixed ODR violations when mixing C++17 with C++20-and-later translation units calling list/forward_list::remove/remove_if/unique(). #​4975
    • Fixed compiler errors in variant's converting constructor and converting assignment operator for certain types. #​4966
    • Fixed bitset's streaming operator operator>>(basic_istream<CharT, Traits>&, bitset<N>&) to use the stream's Traits to compare characters. #​4970
    • Fixed basic_string and list's internal constructors to avoid disrupting highly unusual scenarios. #​4976
    • Fixed compiler errors when constructing a packaged_task from a move-only function object. #​4946
    • For Clang /fp:fast, fixed <cmath> and <limits> to avoid emitting -Wnan-infinity-disabled warnings, except when numeric_limits::infinity()/quiet_NaN()/signaling_NaN() are specifically called. #​4990
    • Fixed ranges::copy_n to properly handle negative values of n (as a no-op) when activating our memmove() optimization. #​5046
      • Also fixed our memmove() optimization (used by copy_n(), ranges::copy_n, and more) to avoid emitting compiler warnings with certain iterators.
    • Fixed filesystem::directory_entry::refresh() to avoid sporadically failing for nonexistent network paths on Windows 11 24H2. #​5077
    • Fixed basic_istream::get() and basic_istream::getline() to never write a null terminator into zero-sized buffers, and to always write a null terminator otherwise. #​5073
    • Fixed assign_range() for sequence containers to static_assert that the container elements are assignable from the range's reference type. #​5086
    • Fixed compiler errors in various ranges algorithms when used with views::iota in certain scenarios. #​5091
  • Improved performance:
    • Added vectorized implementations of:
      • basic_string::find_first_of(). #​4744
      • basic_string::find_last_of(). #​4934
      • basic_string::find() for a substring. #​5048
      • basic_string::rfind() for a substring. #​5057
      • basic_string::rfind() for a single character. #​5087
      • search(), ranges::search, and default_searcher, for 1-byte and 2-byte elements. #​4745
      • find_end() and ranges::find_end, for 1-byte and 2-byte elements. #​4943 #​5041 #​5042
      • bitset's constructors from strings. #​4839
      • remove() and ranges::remove. #​4987
    • Improved the vectorized implementations of:
      • ranges::minmax, now activated for 1-byte and 2-byte elements. #​4913
      • The minmax_element() and minmax() algorithm families. #​4917 #​5016
    • Helped the compiler auto-vectorize:
    • ranges algorithms now unwrap output iterators, avoiding unnecessary checking. #​5015 #​5027
    • Optimized bitset's streaming operators. #​5008
    • Optimized the newline-printing overloads println(FILE*), println(ostream&), and nullary println(). #​4672
    • Updated array and vector's spaceship comparison operators to take advantage of the vectorized implementation of lexicographical_compare_three_way(). #​5078
    • Extended the "key extraction" optimization in the unique associative containers (both ordered and unordered) to handle more types. #​5050
    • Optimized filesystem::symlink_status() by avoiding unnecessary Windows API calls. #​5071
  • Improved throughput:
    • Improved C++23 throughput by not including all of <ostream> (which drags in <format>) unless the Standard requires it. #​4936
    • Improved C++23 throughput of <queue>, <stack>, <stacktrace>, and <thread> by not including all of <format>. #​5003
    • Moved system_clock, high_resolution_clock, and chrono_literals from a commonly-included internal header to <chrono>. #​5105
      • This has source-breaking impact. If you see compiler errors complaining that it doesn't recognize chrono types like system_clock or UDLs like 1729ms, you need to include <chrono> specifically, instead of assuming that headers like <thread> will drag it in.
  • Enhanced behavior:
    • Changed an internal pair constructor to be private. #​4979
    • Fixed a CodeQL warning by replacing a squirrelly memcpy() call in the filesystem implementation (that was intentionally performing a read overrun) with two cromulent memcpy() calls. #​4933
    • Silenced CodeQL warnings. #​4942 #​4985 #​5072
    • Added a visualizer for system_clock::time_point. #​5005
    • Changed some vector machinery to use scope guards instead of throw;, making debugging easier when exceptions are thrown. #​4977
    • Improved regex_error::what()'s message for regex_constants::error_badbrace. #​5025
    • Improved optional<T>::swap()'s static_assert messages when T isn't both move constructible and swappable. #​5065
    • Removed locale::id's non-Standard constructor from size_t and implicit conversion operator to size_t. #​5067
      • For user-visible headers, at least. They remain dllexported for binary compatibility.
    • Improved mutex assertions to distinguish "unlock of unowned mutex" from "unlock of mutex not owned by the current thread". #​5099
  • Improved test coverage:
    • Updated tests to work with Clang 18. #​4932 #​4937
    • Fixed sporadic failures in a timed_mutex test. #​4973
    • Extended CUDA test coverage beyond C++14, adding C++17 and C++20. #​4974
    • When Python psutil is installed, the test harness now supports a priority parameter, defaulting to idle. #​5032
    • Increased the consistency of the swap_ranges() benchmark by adding allocators to control alignment. #​5043
    • Updated our LLVM submodule, including new tests. #​5038
    • Divided the increasingly large test for vectorized algorithms into smaller parts, extracting mismatch(), lexicographical_compare(), and lexicographical_compare_three_way() into a separate test. #​5063
  • Code cleanups:
    • Removed compiler bug workarounds. #​4939 #​4944 #​4947 #​5017 #​5103
    • Explicitly marked packaged_task's defaulted move constructor and move assignment operator as noexcept. #​4940
    • Various cleanups (described in detail in the PRs, not repeated here). #​4945 #​5014 #​5058
    • Refactored internal usage of the tuple-like and pair-like concepts. #​4983
    • Used if constexpr to simplify eldritch horrors from beyond spacetime locale facets. #​5001
    • Simplified control flow in basic_string::find_first_not_of()/find_last_not_of(). #​5006
    • Refactored the vectorized implementation of bitset::to_string(). #​5013
    • Replaced SFINAE with concepts in C++20-and-later code. #​5044
  • Improved documentation:
    • Removed an inaccurate comment in list's move assignment operator. #​5024
  • Infrastructure improvements:
    • Updated dependencies. #​4947 #​5017 #​5082
      • Updated build compiler to VS 2022 17.13 Preview 1 (and 17.12 is now required).
      • Updated Clang to 18.1.8 (now required).
      • Updated CMake to 3.30 (now required).
      • Updated Python to 3.13.0 (now required).
      • Updated the PR/CI system to Windows Server 2025.
  • Build system improvements:
    • Removed a workaround in the benchmark build. #​4928
  • Updated _MSVC_STL_UPDATE. #​4926 #​4994 #​5064

v17.12: VS 2022 17.12

Compare Source

  • Merged C++26 features:
  • Merged C++23 features:
    • P2286R8 Formatting Ranges, completed by:
      • Implemented range-default-formatter. #​4716
      • Implemented formatter for the container adaptors stack, queue, and priority_queue. #​4825
  • Merged LWG issue resolutions:
  • Merged proposed resolutions for LWG issues (not yet accepted for the C++ Working Draft, but we've chosen to implement this speculatively):
  • Fixed bugs:
    • Fixed static analysis warning C26818 "Switch statement does not cover all cases. Consider adding a 'default' label (es.79)." #​4715
      • Note: The STL has always attempted to be /W4 /analyze clean, but does not yet attempt to be clean with respect to all additional static analysis rulesets.
    • Fixed atomic_ref::is_lock_free() on x64 to return true for 1, 2, 4, 8, and 16 bytes only. #​4729
    • Fixed uniform_real_distribution<RealType>{min, max} to stay within the inclusive-exclusive range [min, max) and never generate the max value exactly. #​4740
    • Fixed filesystem::weakly_canonical() to avoid failing on Windows 11 24H2 in certain scenarios. #​4844
    • Fixed condition_variable_any::wait_for() to consistently use steady_clock. #​4755
    • Removed a broken and useless visualizer for ranges::view_interface. #​4835
    • Fixed the visualizer for move_iterator to use the updated name of its internal data member. #​4836
      • This fixed a regression that was introduced by #​1080 in VS 2019 16.8.
    • Fixed expected to conditionally delete its copy constructor and copy assignment operator as depicted in the Standard, which affects overload resolution in unusual scenarios. #​4837
    • Fixed time_put/put_time() to avoid crashing for:
      • Unknown conversion specifiers. (Now they're copied unchanged.) #​4840
      • Out-of-range tm fields. (Now they're replaced with a ? character.) #​4883
    • Fixed compiler errors in ranges::inplace_merge and ranges::minmax in unusual scenarios. #​4841
    • Fixed truncation warnings when:
      • Using conjunction and disjunction with non-bool_constant arguments. #​4846
      • Calling algorithms with contiguous iterators whose difference types are narrower than ptrdiff_t. #​4898
    • Improved array::size() and <mdspan> static analysis annotations, fixing warnings in some scenarios. #​4856
    • Fixed lexicographical_compare_three_way() to enforce the Standard's mandate that the comparison returns a comparison category type. #​4878
    • Fixed compiler errors in the parallel scan algorithms inclusive_scan(), exclusive_scan(), transform_inclusive_scan(), and transform_exclusive_scan() when the intermediate and output types are different. #​4701
    • Fixed the vectorized implementation of floating-point ranges::min, ranges::max, and ranges::minmax to return correct results for negative zeros. #​4734
    • Fixed Clang compiler errors for certain constexpr variant scenarios by adding a compiler bug workaround. #​4903
    • Fixed compiler errors when using <random> machinery (e.g. generate_canonical(), uniform_real_distribution) via Standard Library Modules or Standard Library Header Units by adding compiler bug workarounds. #​4906
    • Fixed compiler errors when using <format> machinery in user-defined modules by adding compiler bug workarounds. #​4919
    • Fixed <format> to avoid crashing when formatting floating-point values with large precisions combined with the # (alternate form) or L (locale-specific form) options. #​4907
  • Improved performance:
    • Overhauled condition_variable and condition_variable_any, improving their performance and simplifying their implementation. #​4720
      • As a result, condition_variable, timed_mutex, and recursive_timed_mutex are now trivially destructible.
    • Improved the performance of search(), find_end(), and their ranges forms by removing calls to memcmp() that were surprisingly harmful. #​4654 #​4753
    • Improved the ARM64 performance of popcount() by using new compiler intrinsics. #​4695 #​4733
    • Further improved the vectorized implementations of:
    • Slightly improved the performance of ranges::min, ranges::max, and ranges::minmax for certain iterator types. #​4775
    • On x86, the STL is now built with /arch:SSE2 (which is the default) instead of /arch:IA32. #​4741
    • Used Clang builtins to improve the performance of <cmath>'s floating-point comparison functions for mixed types. #​4648
    • On x64, atomic_ref<16 bytes> now always uses the cmpxchg16b instruction. #​4751
    • Streaming a small bitset to a basic_ostream now avoids dynamically allocating memory. #​4818
    • Slightly improved performance for Clang ARM64 <atomic>. #​4870
    • Updated char_traits<wchar_t/char16_t>::compare/find/length, find, and ranges::find to call wmemcmp/wmemchr/wcslen when possible, which will improve performance after a future UCRT header update. #​4873 #​4894
    • Optimized equality comparisons for empty strings and string_views. #​4904
  • Improved throughput:
    • Improved <queue> and <stack> throughput by dragging in fewer headers. #​4707
  • Enhanced behavior:
    • P0608R3 Improving variant's Converting Constructor/Assignment is now unconditionally active (i.e. in C++17 mode and above), instead of being restricted to C++20 mode and above. #​4713
      • This C++20 behavioral change was originally implemented by #​1629 in VS 2019 16.10. While it can have source-breaking impact, it generally has highly desirable effects.
    • Changed the machinery for copying map/set nodes to use scope guards instead of throw;, making debugging easier when exceptions are thrown. #​4749
    • Added debug checks to gcd() and lcm() for precondition violations. #​4776
    • Added "lifetimebound" attributes to min, max, clamp, ranges::min, ranges::max, and ranges::clamp, allowing MSVC code analysis and Clang -Wdangling to detect dangling references in improper usage. #​4838
    • Updated the precondition check in vector::pop_back() to be guarded by _CONTAINER_DEBUG_LEVEL. #​4849
    • Renamed the parameters of views::iota and views::repeat to provide better IDE guidance. #​4908
    • Simplified internal locale facet machinery to use class-specific operator new and operator delete overloads in both release and debug mode. #​4916
  • Improved debugger visualization:
  • Improved test coverage:
    • Updated LLVM-derived test coverage for <any>, <optional>, and <variant>. #​4713
    • Properly tested the resolution of LWG-4053 "Unary call to std::views::repeat does not decay the argument". #​4748
    • Improved the benchmarks for bitset::to_string(). #​4817
    • Updated our LLVM submodule, including new tests. #​4862 #​4910
    • Re-enabled tests that were previously skipped in the libcxx test suite. #​4721 #​4732 #​4911
    • Skipped tests that were sporadically failing due to incorrect timing assumptions. #​4885
    • Added compiler bug workarounds. #​4895
    • Tested the resolution of LWG-4105 "ranges::ends_with's Returns misses difference casting". #​4897
    • Updated tests to work with Clang 19. #​4912
    • Avoided unnecessary usage of rand(), which is considered harmful. #​4921
  • Code cleanups:
  • Reverted change:
    • Removed then temporarily restored support for targeting Windows 7 and Server 2008 R2. This will be permanently removed in the future. #​4742 #​4857
  • Infrastructure improvements:
    • The STL now clearly rejects attempts to:
      • Build a preset whose architecture doesn't match the compiler command prompt. #​4709
      • Test a build whose architecture doesn't match the compiler command prompt. #​4717
    • Updated dependencies. #​4725 #​4824 #​4889
      • Updated build compiler to VS 2022 17.12 Preview 1 (and 17.11 is now required).
      • Updated CMake to 3.29 (now required).
      • Updated Ninja to 1.12.1.
      • Updated Python to 3.12.5.
      • Updated Google Benchmark to 1.8.5. #​4851
  • Build system improvements:
  • Updated _MSVC_STL_UPDATE. #​4706 #​4708 #​4754 #​4872

v17.11: VS 2022 17.11

Compare Source

  • Merged C++26 features:
  • Merged partial C++23 features:
  • Merged LWG issue resolutions:
  • Fixed bugs:
    • Fixed condition_variable::wait_until() and condition_variable_any::wait_until() to consistently use the given time_point's clock type, instead of also depending on the system clock. This also fixed condition_variable::wait_for() to consistently use steady_clock. #​4457
    • Fixed <format> to always perform compile-time format string checking for wchar_t, even when the narrow execution character set doesn't support it. #​4459
    • Fixed compiler errors when constexpr basic_string interacted with the undocumented compiler option /d1initall. #​4474
    • Fixed atomic_ref for 16-byte objects to correctly report is_lock_free() and is_always_lock_free on x64 (when the optional mode _STD_ATOMIC_ALWAYS_USE_CMPXCHG16B is defined to be 1) and ARM64 (always). #​4478
    • Removed the vectorized implementation of ranges::find with unreachable_sentinel as it was fundamentally incompatible with ASan (Address Sanitizer). #​4486
      • This was introduced by #​2434 in VS 2022 17.3.
    • Fixed incorrect results from the vectorized implementation of ranges::find_last for certain combinations of value and element types. #​4561
      • This fixed a regression that was introduced by #​3925 in VS 2022 17.9.
    • Fixed the STL to avoid emitting the off-by-default warning C4365 (signed/unsigned mismatch) when the /ZI compiler option (debug info for Edit and Continue) is used. #​4487
      • These warnings were most noticeable when building the Standard Library Modules, but they were also emitted by classic includes.
    • Fixed the STL to avoid emitting the off-by-default warning C5246 (brace elision). #​4527
    • Fixed compiler errors involving incomplete types in:
    • Fixed make_from_tuple() to properly implement LWG-3528 with a constraint instead of a static_assert. #​4528
    • Added integral overloads for <cmath>'s classification functions fpclassify(), isfinite(), isinf(), isnan(), isnormal(), and signbit(). #​4537
    • Fixed is_trivial to correctly handle unusual types. #​4576
    • Avoided mentioning __vectorcall for ARM64EC, where it is not yet supported. #​4600
    • Fixed std.ixx to include <intrin.h> in the Global Module Fragment, fixing compiler errors with import std; in certain scenarios. #​4626
    • Fixed compiler errors when a user-defined formatter calls basic_format_parse_context::next_arg_id() with an empty format-spec. #​4640
    • Fixed compiler errors when using <expected> in /permissive mode. #​4658
      • Note: While /permissive mode is discouraged, it's currently supported for most STL components.
    • Fixed compiler errors when inheriting expected's constructors in certain scenarios. #​4664
    • Fixed pair's self-swap() behavior to follow the Standard by self-swapping its elements. #​4674
    • Fixed atomic<void*> and atomic_ref<void*> to provide difference_type. #​4689
  • Improved performance:
    • Helped the compiler auto-vectorize:
      • replace_copy(), replace_copy_if(), ranges::replace_copy, and ranges::replace_copy_if. #​4431
      • iota(). #​4627
      • ranges::iota. #​4647
    • Added vectorized implementations of:
    • Further improved the vectorized implementations of:
      • count(), find(), ranges::count, ranges::find, and ranges::find_last. #​4570 #​4614
    • Used Clang builtins to improve the performance of <cmath>'s floating-point classification and comparison
      functions: #​4612
      • Classification: isfinite(), isinf(), isnan(), isnormal()
      • Comparison: isgreater(), isgreaterequal(), isless(), islessequal(), islessgreater(), isunordered()
    • Improved normal_distribution::operator()(engine, param) by avoiding unnecessarily recomputing coefficients. #​4618
  • Improved throughput:
    • Slightly improved <mdspan> throughput by using short-circuiting conjunction_v instead of fold expressions. #​4559
    • Refactored floating-point machinery, improving throughput by reducing inclusion of various headers. #​4615
    • Improved <string_view> throughput by no longer dragging in most of <string>'s contents. #​4633
  • Improved diagnostics:

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "after 2am on monday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@forking-renovate forking-renovate Bot added the team:VM Assigned to OTP team VM label Aug 10, 2026
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

CT Test Results

    3 files    136 suites   51m 3s ⏱️
1 683 tests 1 627 ✅ 56 💤 0 ❌
2 326 runs  2 252 ✅ 74 💤 0 ❌

Results for commit 2112d96.

To speed up review, make sure that you have read Contributing to Erlang/OTP and that all checks pass.

See the TESTING and DEVELOPMENT HowTo guides for details about how to run test locally.

Artifacts

// Erlang/OTP Github Action Bot

@kikofernandez

Copy link
Copy Markdown
Contributor

relevant updates will be performed manually, on a per need basis

@forking-renovate

Copy link
Copy Markdown

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 17.x releases. But if you manually upgrade to 17.x then Renovate will re-enable minor and patch updates automatically.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

@renovate-bot
renovate-bot deleted the renovate/master-microsoft-stl-17.x branch August 11, 2026 07:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

team:VM Assigned to OTP team VM

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants