Releases: microsoft/STL
Releases · microsoft/STL
VS 2019 16.5
- Hello, world!
- Announced this repo at CppCon 2019.
- Added initial documentation: readme, license, and roadmap.
- Added initial CMake build scripts for Desktop-only msvcp. #5 #80 #98 #101
- Investigated continuous integration options, like GitHub Actions or Azure Pipelines. (Chose Azure Pipelines.)
- Automated builds running in PRs. #114
- Investigated test harness solutions, either building our own to more closely match the internal system in a reasonable way, or using libcxx's
lit. (Chose to uselit.) - Began auditing test case source files from the
stdandtr1test suites. - Implemented Custom Autolinks in this repo.
- Merged C++20 features:
- P0325R4 #135
to_array() - P0340R3 #284 SFINAE-Friendly
underlying_type - P0356R5 #158
bind_front() - P0439R0 #124
enum class memory_order - P0553R4 #310
<bit>Rotating And Counting Functions - P0556R3 #310
<bit>ispow2(),ceil2(),floor2(),log2p1()bit_length()- P1355R2 Narrow Contract For
ceil2()
- P1355R2 Narrow Contract For
- P0595R2 #353
is_constant_evaluated() - P0631R8 #261
<numbers>Math Constants - P0655R1 #201
visit<R>() - P0738R2 #246
istream_iteratorCleanup - P0767R1 #179 Deprecating
is_pod - P0966R1 #176
string::reserve()Should Not Shrink - P1209R0 #236
erase_if(),erase() - P1227R2 #130 Signed
std::ssize() - P1357R1 #127
is_bounded_array,is_unbounded_array - P1612R1 #305 Relocating
endianTo<bit> - P1690R1 #341 Refining Heterogeneous Lookup For Unordered Containers
- P1902R1 #287 #353 Missing Feature-Test Macros 2017-2019
- P1959R0 #381 Removing
weak_equalityAndstrong_equality
- P0325R4 #135
- Merged partial C++20 features:
- Merged LWG issue resolutions:
- LWG-2899 #193
is_(nothrow_)move_constructibleandtuple,optional, andunique_ptr - LWG-3158 #195
tuple(allocator_arg_t, const Alloc&)should be conditionally explicit - LWG-3199 #353
istream >> bitset<0>fails - LWG-3257 #353 Missing feature testing macro update from P0858
- LWG-3266 #353
to_chars(bool)should be deleted
- LWG-2899 #193
- Merged proposed resolutions for LWG issues (not yet accepted for the C++ Working Draft, but we've chosen to implement this speculatively):
- Fixed bugs:
- Restored
swap(unique_ptr&, unique_ptr&)which was mistakenly removed. #170 - When erasing an empty range in a
vector, avoided self-move-assigning all elements. #228 - Removed a
noexceptthat was incorrectly applied to an allocating helper function inlist. #77 valarraynow uses argument-dependent lookup when callingsin(),cos(),pow(),sqrt(), etc. as required by the Standard. #286- Fixed
<filesystem>linker errors for UWP developers. #356 - Changed the return type of
locale's assignment operator toconst locale&as (perhaps surprisingly) required by the Standard. #324 - Fixed
regex_token_iteratorto return correct results. #131 - Non-member
begin()andend()now takebasic_string_viewby value as required by the Standard. #119 - Fixed
list::splice()to work correctly when splicing exactly half of onelistinto another. #129
- Restored
- Improved performance:
- Fixed a codegen size regression in
atomic<integral>andatomic<pointer>. #227 - Activated x64 FrameHandler4 exception handling, reducing the size of
msvcp140.dllfrom 588 KB to 528 KB. #154 - Reduced the stack space consumption of
listandforward_listinsertion. #366 - Improved the performance of 64-bit
atomicloads on x86. #87
- Fixed a codegen size regression in
- Improved throughput:
- Used
if constexprinstead of tag dispatch in<any>. #173
- Used
- Enhanced behavior:
- Improved the error message for
function<Ret (Args) noexcept>. #350 anynow supports over-aligned types. #173- Improved the messages that are emitted when including newer headers in older Standard modes. #252
- Strengthened
noexceptforexchange(). #364 std::functionnow avoids usingtypeid(void)in our_HAS_STATIC_RTTI=0mode, for compatibility with Clang's-fno-rttimode. #375- Added an error message explaining that the
<experimental/coroutine>,<experimental/generator>, and<experimental/resumable>headers aren't supported with Clang. #136
- Improved the error message for
- Code cleanups:
- Removed unnecessary
publickeywords instructinheritance. #219 - Used
iter[idx]for clarity in<algorithm>. #289 (Note that this was reverted in VS 2019 16.6 by #464.) - Fixed typos in comments and error messages. #96
- Marked more
virtualmember functions asoverride. #302 - Fused files together. #220 #374
- Consistently used the modern
int = 0SFINAE technique. #226 #244 #328 - Removed compiler bug workarounds. #175 #301 #372
- Various cleanups (described in detail in the PRs, not repeated here). #168 #221 #269 #320 #373
- Removed unnecessary
- Improved documentation:
- Added a comment explaining part of
invoke()'s implementation. #368
- Added a comment explaining part of
- Infrastructure improvements:
- Added clang-format validation. #132 #163 #255
- Added more code format validation. [#229](https://github.com/micro...
VS 2019 16.10
- The STL is C++20 feature complete.
- Merged C++20 features:
- P0053R7 #1564
<syncstream>- P0753R2
osyncstreamManipulators
- P0753R2
- P0355R7
<chrono>Calendars And Time Zones:- #323 implemented calendars.
- #1789 implemented new clocks, leap seconds, time zones, and parsing.
- #1870 implemented
<chrono>'sformat()support (viaformatterspecializations) and remainingoperator<<()overloads, completing this feature. - While the STL generally provides all features on all supported versions of Windows, leap seconds and time zones (which change over time) require OS support that was added to Windows 10. Specifically, updating the leap second database requires Windows 10 version 1809 or later, and time zones require
icu.dllwhich is provided by Windows 10 version 1903/19H1 or later. This applies to both client and server OSes; note that Windows Server 2019 is based on Windows 10 version 1809.
- P0408R7 #919 Efficient Access To
basic_stringbuf's Buffer - P0466R5 #1575 Layout-Compatibility And Pointer-Interconvertibility Traits
- Initially supported for MSVC only; will be supported for Clang after LLVM-48860 is resolved.
- P0475R1 #1668 Guaranteed Copy Elision For Piecewise Construction
- P0591R4 #1668 Utility Functions For Uses-Allocator Construction
- P0608R3 #1629 Improving
variant's Converting Constructor/Assignment - P0645R10 #1821 #1834 #1803 #1853 #1862 #1867 #1851 #1875
<format>Text Formatting - P0784R7 #1369 #1546 Library Support For More
constexprContainers - P0896R4 Ranges, completed with the final PRs:
- P0980R1 #1502
constexprstd::string- Initially supported for MSVC only; will be supported for Clang after LLVM-48606 is resolved.
- P1004R2 #1407 #1690 #1698
constexprstd::vector- Initially supported for MSVC only; see note for
constexprstd::string.
- Initially supported for MSVC only; see note for
- P1208R6 #664
<source_location>- Initially supported for MSVC only; will be supported for Clang after it implements
consteval(see Clang's C++20 status).
- Initially supported for MSVC only; will be supported for Clang after it implements
- P1502R1 #1567 #1692 Standard Library Header Units
- Initially supported for MSVC only; will be supported for Clang after it implements C++20 modules (see Clang's C++20 status).
- P1614R2 #1602 #1678 Adding Spaceship
<=>To The Library
- P0053R7 #1564
- Merged LWG issue resolutions:
- Fixed bugs:
- Fixed regex character class behavior with
regex::icase. #1503 - Fixed compiler errors when calling
std::equal()with user-defined contiguous iterators. #1527 - Fixed
boolalphaextraction to be case-sensitive again. #1543 #1570 (This was a regression in VS 2019 16.8 caused by #1168.) - Fixed a compiler error when calling
std::fill()withvolatile byte*. #1557 - Fixed
ranges::uniqueto correctly handle inputs that are already unique. #1561 - Fixed compiler errors, specific to Clang targeting ARM64, in
<atomic>and<bit>, related to compiler intrinsics. #1505 - Fixed C++20 mode to remove old
std::allocatormembers that were deprecated in C++17. (As usual, fine-grained and coarse-grained escape hatches are available for this removal.) #1585 - Fixed an inaccurate approximation in
binomial_distribution. #1531 - Fixed incorrect
min/maxvalues for several<random>distributions. #1601 - Fixed incorrect behavior in
gamma_distribution::param_type::operator==. #1601 - Fixed a regression in VS 2019 16.6 caused by #423, where
__declspec(dllexport)ing a class derived fromunordered_maporunordered_setwould fail to compile with astatic_assert. #1639 - Fixed compiler errors in
ranges::uninitialized_copy,ranges::uninitialized_copy_n,ranges::uninitialized_move, andranges::uninitialized_move_nwhen attempting to usememcpyfor efficiency. #1548 - Fixed incorrect behavior in
ranges::uninitialized_value_constructandranges::uninitialized_value_construct_nwhen attempting to usememsetfor efficiency. #1700 - Fixed
year_month_day_last::day()to return a valid-but-unspecified value for!ok()dates, as required by the Standard. #1663 - Fixed a regression in VS 2019 16.7 caused by #309, where
<memory>would fail to compile with/std:c++latest/Zc:alignedNew-. #1689 - Fixed incorrect behavior in
get_time(). #1620- Format specifications without delimiters are now correctly handled, even when a field is all-zero. For example,
"19700405T000006"can now be parsed with"%Y%m%dT%H%M%S". - Literal matching (outside of
'%'conversion specifications) is now case-insensitive. - If the stream ends during literal matching,
ios_base::eofbit | ios_base::failbitis now set. - Incomplete conversion specifications (e.g.
'%'appearing as the last character of a format specification) now result inios_base::failbitinstead of literal matching. - The seconds field now permits
60to handle leap seconds.
- Format specifications without delimiters are now correctly handled, even when a field is all-zero. For example,
- Fixed compiler errors in
ranges::uninitialized_copyandranges::uninitialized_movewhen attempting to usememcpyfor efficiency. #1713 - Fixed compiler errors where the
ranges::uninitialized_meow()algorithms assumed that<algorithm>was included; now they can be called after including only<memory>. #1832 - Fixed an off-by-default truncation warning in
<complex>(warning C5219: implicit conversion from'const int'to'const float', possible loss of data). [#1722](https://github.com/...
- Fixed regex character class behavior with