You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@@ -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 -->
+ 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)
+ 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)
+ 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.
*[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.
+ 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)
* 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)