Skip to content

VS 2022 17.5

Compare
Choose a tag to compare
@StephanTLavavej StephanTLavavej released this 09 Mar 05:27
· 739 commits to main since this release
c873cf0
  • Merged C++23 features:
    • P2322R6 #3099 ranges::fold_left, ranges::fold_right, etc.
    • P2465R3 #3108 Standard Library Modules std And std.compat
      • Initially supported for MSVC only; see tracking issue #1694 for lists of known compiler bugs and upcoming fixes.
      • Build system support is a work in progress; currently, build systems must be manually taught to compile std.ixx so you can reference std.ifc and link std.obj. (Similarly for building std.compat.ixx into std.compat.ifc and std.compat.obj.)
      • IntelliSense support is a work in progress; STL test coverage is not yet enabled.
      • Will be supported for Clang after compiler support for modules is available; see Clang's C++20 implementation status.
    • P2508R1 #3074 basic_format_string, format_string, wformat_string
  • Merged partial C++23 features:
    • P2278R4 cbegin Should Always Return A Constant Iterator:
      • The "Iterators" section, including basic_const_iterator, make_const_iterator(), and make_const_sentinel(). #3043
    • P2321R2 zip:
      • views::zip. #3035
      • Note: views::zip_transform, views::adjacent, and views::adjacent_transform are the parts that remain to be implemented.
  • Merged LWG issue resolutions:
    • LWG-3711 #2949 Missing preconditions for slide_view constructor
    • LWG-3788 #3130 jthread::operator=(jthread&&) postconditions are unimplementable under self-assignment
  • Fixed bugs:
    • Fixed compiler warnings when using Standard Library Header Units. #3069
    • Removed a non-Standard member function locale::c_str(). #3088
    • Fixed narrowing warnings when calling piecewise_constant_distribution<float>::densities() and piecewise_linear_distribution<float>::densities(). #3107
    • Fixed compiler errors when calling ranges::is_permutation with predicates that return highly unusual boolean-testable types. #3113
    • Fixed compiler errors when building the Standard Library Modules with static RTTI disabled. #3115
      • Now, building std.ixx with /GR- /D_HAS_STATIC_RTTI=0 will succeed, and std::any will simply be unavailable (as it inherently requires static RTTI).
      • Additionally, including <any> with static RTTI disabled will emit a warning message but not an error, and the feature-test macro __cpp_lib_any will indicate (by its absence) that the feature is unavailable.
    • Fixed compiler errors in reference_wrapper, thread, and variant involving incomplete types. #3101 #3148
    • When chrono::time_zone::get_info() throws an exception, fixed it to report GetLastError() as intended, instead of "The operation completed successfully." #3122
    • Fixed incorrect results returned by ellint_2(). #3077
    • Fixed error_category's default constructor to be constexpr. #3139 #3176
    • Fixed all headers to avoid emitting the off-by-default "warning C5262: implicit fall-through occurs here; are you missing a break statement? Use [[fallthrough]] when a break statement is intentionally omitted between cases". #3162
    • Fixed compiler errors in certain <ranges> scenarios by properly constraining movable-box's copy constructors. #3171
  • Improved performance:
    • Added support for unwrapping to move_sentinel. #3098
    • Improved the performance of uniform_int_distribution by implementing Daniel Lemire's algorithm Fast Random Integer Generation in an Interval. #3012
    • Optimized gcd() to avoid a redundant shift. #3127
    • Optimized locale::classic() for a 10x speedup (times, not percent). #3048
    • Added an attribute to move(), forward(), move_if_noexcept(), and forward_like() that will allow the MSVC compiler to intrinsically implement them without emitting function calls. #3182
  • Improved throughput:
    • Significantly improved compile times for <variant> visit(). #3070
    • <format> now includes fewer headers. #3128
    • Moved random number generator machinery out of <xutility>, one of the STL's central internal headers. #3157
  • Enhanced behavior:
    • Clarified get_future()'s [[nodiscard("message")]]. #3068
    • The internal headers <xatomic.h>, <xbit_ops.h>, and <xerrc.h> are now core headers. #3116
    • Improved <format>'s compiler error messages for unformattable types. #3080
  • Improved test coverage:
    • Added test coverage for <variant> visit() invoking pointers to members. #3070
    • Expanded test coverage for forward_like(). #3072
    • Updated test coverage for views::as_rvalue. #3089
    • Expanded test coverage for bind_front() and bind_back(). #3117
    • Updated our LLVM submodule reference, including new tests, and updates to the any/optional/variant shared test code. #2976
    • Fixed bogus test code discovered by Clang 15. #3135
    • Fixed the off-by-default "exhaustive" mode of the parallel is_partitioned() test. #3174
  • Code cleanups:
    • Various cleanups (described in detail in the PRs, not repeated here). #3082 #3083 #3084 #3085 #3086 #3090 #3091 #3092 #3093 #3177 #3178
    • Improved Python scripts. #3123
    • Removed compiler bug workarounds. #3155
    • Moved <atomic> implementation details, preparing for later changes. #3124
    • Removed unnecessary partial specializations of common_type for the STL's internal 128-bit integer-class types. #3153
  • Infrastructure improvements:
    • The PR/CI system now uses spot VMs again. #3071
    • Configured Azure Pipelines to avoid running checks for draft PRs. #3078
    • Added GitHub Actions to allow contributors to move their PR cards in the Code Reviews project. #2584
    • Updated dependencies. #3104 #3155
      • Updated build compiler to VS 2022 17.4 Preview 3.
      • Updated Boost.Math to 1.80.0 (now also used by the MSVC-internal build). #3077
      • Updated Clang to 15.0.1 (now required).
      • Updated CMake to 3.24 (now required).
      • Updated Google Benchmark to 1.7.0. #3151
      • Updated Python to 3.10.8.
  • Updated _MSVC_STL_UPDATE. #3073 #3147