Skip to content

Compare: Changelog

Showing with 22 additions and 24 deletions.
  1. +22 −24 Changelog.md
46 changes: 22 additions & 24 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,32 +21,12 @@ C++20 and C++23 features generally require the [`/std:c++20` and `/std:c++latest
## VC Redist Lockdown
To reduce the frequency of required reboots when updating VS (and VS Previews), we "lock down" the Visual C++ Redistributable containing the STL's `msvcp140.dll`. (Most of the STL is header-only, so most changes are unaffected.) Approximately twice a year, specific VS Previews will be "unlocked", so the VC Redist will contain updated DLLs. VS 2022 17.8 Preview 3 will be the next unlocked redist, then the next Long-Term Support release will be unlocked (it can be Preview 1 if we need).

<!-- Remember to fuse GH-4069 and GH-4075 when coalescing the 17.9 changes -->
# Expected in VS 2022 17.9 Preview 2
- Merged C++23 features:
* [P1169R4](https://wg21.link/P1169R4) [#4053](https://github.com/microsoft/STL/pull/4053) `static` `operator()`
+ This updates CTAD (class template argument deduction) for `std::function` and `packaged_task` to work with a C++23 Core Language feature, currently supported for Clang only. When MSVC and IntelliSense implement this Core feature, this will automatically "light up" the STL's CTAD for them too.
- Merged LWG issue resolutions:
* [LWG-3561](https://wg21.link/lwg3561) [#4066](https://github.com/microsoft/STL/pull/4066) Issue with internal counter in `discard_block_engine`
- Fixed bugs:
* Fixed linker errors involving `stl_asan.lib` by disabling ASan annotations in the STL for unsupported platforms (e.g. ARM, ARM64, ARM64EC). [#4058](https://github.com/microsoft/STL/pull/4058)
* Fixed `deque` to handle highly unusual fancy pointers. [#4049](https://github.com/microsoft/STL/pull/4049)
* Fixed `not_fn()` to return a perfect forwarding call wrapper in C++20 mode as required by [P0356R5](https://wg21.link/P0356R5). [#4057](https://github.com/microsoft/STL/pull/4057)
* Fixed `deque::shrink_to_fit()` to avoid requiring the allocator to be default constructible. [#4071](https://github.com/microsoft/STL/pull/4071)
* Fixed `allocate_shared()` for unbounded arrays to handle fancy pointers. [#4074](https://github.com/microsoft/STL/pull/4074)
- Improved performance:
* Improved debug codegen for `deque` by using unchecked iterators internally. [#4071](https://github.com/microsoft/STL/pull/4071)
- Enhanced behavior:
* Improved `source_location::function_name()`: [#4055](https://github.com/microsoft/STL/pull/4055)
+ It will return detailed information for Clang 17.
+ Added an "escape hatch" for all compilers: define `_USE_DETAILED_FUNCTION_NAME_IN_SOURCE_LOCATION` to `0`.
+ For example, given `template <typename T> void cats()` called with `cats<vector<int>>()`, MSVC's detailed info (implemented in VS 2022 17.6) is `"void __cdecl cats<class std::vector<int,class std::allocator<int> >>(void)"`. Clang 17's detailed info is `"void __cdecl cats(void) [T = std::vector<int>]"`. The escape hatch will return the basic info `"cats"`.
* Silenced `/Wall` warning C4868 "compiler may not enforce left-to-right evaluation order in braced initializer list" throughout the STL. [#4067](https://github.com/microsoft/STL/pull/4067)
+ *Note:* `/Wall` is not intended for regular production use, as it contains a large number of extremely noisy and low-value warnings. In general, the STL does not attempt to be `/Wall` clean.
- Improved test coverage:
* Added an ASan-Daily-CI pipeline. [#3987](https://github.com/microsoft/STL/pull/3987) [#3989](https://github.com/microsoft/STL/pull/3989) [#4029](https://github.com/microsoft/STL/pull/4029) [#4052](https://github.com/microsoft/STL/pull/4052) [#4068](https://github.com/microsoft/STL/pull/4068) [#4069](https://github.com/microsoft/STL/pull/4069) [#4075](https://github.com/microsoft/STL/pull/4075)
- Code cleanups:
* Ported a `<format>` table generator script from C++ to Python. [#3994](https://github.com/microsoft/STL/pull/3994)
- Updated `_MSVC_STL_UPDATE`. [#4062](https://github.com/microsoft/STL/pull/4062)
* Fixed the ASan-Daily-CI pipeline. [#4075](https://github.com/microsoft/STL/pull/4075)

# Expected in VS 2022 17.9 Preview 1
- Merged C++23 features:
Expand All @@ -55,9 +35,13 @@ To reduce the frequency of required reboots when updating VS (and VS Previews),
+ [P2604R0](https://wg21.link/P2604R0) `mdspan`: `data_handle_type`, `data_handle()`, `exhaustive`
+ [P2613R1](https://wg21.link/P2613R1) `mdspan`: `empty()`
+ [P2763R1](https://wg21.link/P2763R1) Fixing `layout_stride`'s Default Constructor For Fully Static Extents
* [P1169R4](https://wg21.link/P1169R4) [#4053](https://github.com/microsoft/STL/pull/4053) `static` `operator()`
+ This updates CTAD (class template argument deduction) for `std::function` and `packaged_task` to work with a C++23 Core Language feature, currently supported for Clang only. When MSVC and IntelliSense implement this Core feature, this will automatically "light up" the STL's CTAD for them too.
- Merged *partial* C++23 features:
* [P2286R8](https://wg21.link/P2286R8) Formatting Ranges:
+ Implemented `formatter::set_debug_format()`. [#3913](https://github.com/microsoft/STL/pull/3913)
- Merged LWG issue resolutions:
* [LWG-3561](https://wg21.link/lwg3561) [#4066](https://github.com/microsoft/STL/pull/4066) Issue with internal counter in `discard_block_engine`
- Fixed bugs:
* Fixed incorrect results from iostreams floating-point parsing (e.g. `"1e-07"` was incorrectly parsed as `1e-06`). [#3982](https://github.com/microsoft/STL/pull/3982)
+ This fixed a regression that was introduced by [#3364](https://github.com/microsoft/STL/pull/3364) in VS 2022 17.7.
Expand All @@ -69,22 +53,36 @@ To reduce the frequency of required reboots when updating VS (and VS Previews),
* Fixed `deque` `emplace()` and `insert()` to not require elements to be swappable; this change also improved performance. [#4022](https://github.com/microsoft/STL/pull/4022)
* Fixed `get()` and comparison operators to handle program-defined specializations of `array`. [#4041](https://github.com/microsoft/STL/pull/4041)
* Fixed compiler errors in `to_array()` involving incomplete types. [#4042](https://github.com/microsoft/STL/pull/4042)
* Fixed linker errors involving `stl_asan.lib` by disabling ASan annotations in the STL for unsupported platforms (e.g. ARM, ARM64, ARM64EC). [#4058](https://github.com/microsoft/STL/pull/4058)
* Fixed `deque` to handle highly unusual fancy pointers. [#4049](https://github.com/microsoft/STL/pull/4049)
* Fixed `not_fn()` to return a perfect forwarding call wrapper in C++20 mode as required by [P0356R5](https://wg21.link/P0356R5). [#4057](https://github.com/microsoft/STL/pull/4057)
* Fixed `deque::shrink_to_fit()` to avoid requiring the allocator to be default constructible. [#4071](https://github.com/microsoft/STL/pull/4071)
- Improved performance:
* Optimized the `copy()`, `copy_n()`, and `move()` algorithms for `vector<bool>` iterators, with speedups varying from 1.8x (times, not percent) to an incredible 3200x, depending on the size and alignment of the bits being copied. [#3353](https://github.com/microsoft/STL/pull/3353) [#4045](https://github.com/microsoft/STL/pull/4045)
* Optimized `priority_queue::push_range()` for small ranges. [#4025](https://github.com/microsoft/STL/pull/4025)
* Improved debug codegen for `deque` by using unchecked iterators internally. [#4071](https://github.com/microsoft/STL/pull/4071)
- Enhanced behavior:
* Added debug checks to `<valarray>` binary operations, verifying that the operands have the same size. [#3911](https://github.com/microsoft/STL/pull/3911)
* Deprecated `basic_istream`'s `ipfx()`/`isfx()` and `basic_ostream`'s `opfx()`/`osfx()` member functions as they're non-Standard extensions. [#4006](https://github.com/microsoft/STL/pull/4006)
* Added compiler bug workarounds for the upcoming Clang 17 release. [#4014](https://github.com/microsoft/STL/pull/4014)
* Improved the STL's error messages so that error logs will record specific `static_assert`s like "error STL1000: Unexpected compiler version, expected Clang 16.0.0 or newer." instead of just "Error in C++ Standard Library usage." [#4020](https://github.com/microsoft/STL/pull/4020)
* Silenced `/Wall` warnings when building the Standard Library Modules. [#4026](https://github.com/microsoft/STL/pull/4026)
* Silenced `/Wall` warnings:
+ When building the Standard Library Modules. [#4026](https://github.com/microsoft/STL/pull/4026)
+ Warning C4868 "compiler may not enforce left-to-right evaluation order in braced initializer list" throughout the STL. [#4067](https://github.com/microsoft/STL/pull/4067)
+ *Note:* `/Wall` is not intended for regular production use, as it contains a large number of extremely noisy and low-value warnings. In general, the STL does not attempt to be `/Wall` clean.
* Changed `num_get::do_get()` to tolerate 80-bit `long double` by removing a `static_assert` that was added in 2018.
+ *Note:* 80-bit `long double` remains unsupported by MSVC.
* Improved `source_location::function_name()`: [#4055](https://github.com/microsoft/STL/pull/4055)
+ It will return detailed information for Clang 17.
+ Added an "escape hatch" for all compilers: define `_USE_DETAILED_FUNCTION_NAME_IN_SOURCE_LOCATION` to `0`.
+ For example, given `template <typename T> void cats()` called with `cats<vector<int>>()`, MSVC's detailed info (implemented in VS 2022 17.6) is `"void __cdecl cats<class std::vector<int,class std::allocator<int> >>(void)"`. Clang 17's detailed info is `"void __cdecl cats(void) [T = std::vector<int>]"`. The escape hatch will return the basic info `"cats"`.
- Improved test coverage:
* Added an ASan-Daily-CI pipeline. [#3987](https://github.com/microsoft/STL/pull/3987) [#3989](https://github.com/microsoft/STL/pull/3989) [#4029](https://github.com/microsoft/STL/pull/4029) [#4052](https://github.com/microsoft/STL/pull/4052) [#4068](https://github.com/microsoft/STL/pull/4068) [#4069](https://github.com/microsoft/STL/pull/4069)
- Code cleanups:
* Removed unused code. [#3964](https://github.com/microsoft/STL/pull/3964) [#4005](https://github.com/microsoft/STL/pull/4005)
* Removed compiler bug workarounds. [#4012](https://github.com/microsoft/STL/pull/4012) [#4028](https://github.com/microsoft/STL/pull/4028) [#4039](https://github.com/microsoft/STL/pull/4039)
* Various cleanups (described in detail in the PRs, not repeated here). [#3973](https://github.com/microsoft/STL/pull/3973) [#4015](https://github.com/microsoft/STL/pull/4015) [#3974](https://github.com/microsoft/STL/pull/3974) [#4036](https://github.com/microsoft/STL/pull/4036) [#3940](https://github.com/microsoft/STL/pull/3940) [#3984](https://github.com/microsoft/STL/pull/3984) [#4016](https://github.com/microsoft/STL/pull/4016)
* Ported a `<format>` table generator script from C++ to Python. [#3994](https://github.com/microsoft/STL/pull/3994)
- Improved documentation:
* Improved the consistency of preprocessor comments. [#3950](https://github.com/microsoft/STL/pull/3950)
- Infrastructure improvements:
Expand All @@ -93,7 +91,7 @@ To reduce the frequency of required reboots when updating VS (and VS Previews),
+ Updated CMake to 3.27 (now required).
+ Updated Python to 3.11.5.
+ Updated Google Benchmark to 1.8.3. [#4021](https://github.com/microsoft/STL/pull/4021)
- Updated `_MSVC_STL_UPDATE`. [#4003](https://github.com/microsoft/STL/pull/4003)
- Updated `_MSVC_STL_UPDATE`. [#4003](https://github.com/microsoft/STL/pull/4003) [#4062](https://github.com/microsoft/STL/pull/4062)

<!-- Remember to fuse GH-3838 and GH-3904 when coalescing the 17.8 changes -->
# Expected in VS 2022 17.8 Preview 3
Expand Down