diff --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst --- a/libcxx/docs/ReleaseNotes.rst +++ b/libcxx/docs/ReleaseNotes.rst @@ -35,34 +35,46 @@ What's New in Libc++ 15.0.0? ============================ +The main focus of the libc++ team has been to implement new C++20 and C++23 +features. + +The C++20 ``format`` library is feature complete, but not all Standard LWG +issues have been addressed. Since it is expected that at least one of these +issues will cause an ABI break the ``format`` library is considered +experimental. + +The C++20 ``ranges`` library has progressed a lot since the last release and is +almost complete. The ``ranges`` library is considered experimental. + + Implemented Papers ------------------ -- P0627R6 (Function to mark unreachable code) -- P1165R1 (Make stateful allocator propagation more consistent for ``operator+(basic_string)``) -- P0674R1 (Support arrays in ``make_shared`` and ``allocate_shared``) -- P0980R1 (Making ``std::string`` constexpr) -- P2216R3 (std::format improvements) -- P0174R2 (Deprecating Vestigial Library Parts in C++17) -- N4190 (Removing auto_ptr, random_shuffle(), And Old Stuff) -- P0154R1 (Hardware inference size) -- P0618R0 (Deprecating ) -- P2418R2 (Add support for ``std::generator``-like types to ``std::format``) -- LWG3659 (Consider ``ATOMIC_FLAG_INIT`` undeprecation) -- P1423R3 (char8_t backward compatibility remediation) +- P0627R6 – Function to mark unreachable code +- P1165R1 – Make stateful allocator propagation more consistent for ``operator+(basic_string)`` +- P0674R1 – Support arrays in ``make_shared`` and ``allocate_shared`` +- P0980R1 – Making ``std::string`` constexpr +- P2216R3 – ``std::format`` improvements +- P0174R2 – Deprecating Vestigial Library Parts in C++17 +- N4190 – Removing ``auto_ptr``, ``random_shuffle()``, And Old ```` Stuff +- P0154R1 – Hardware inference size +- P0618R0 – Deprecating ```` +- P2418R2 – Add support for ``std::generator``-like types to ``std::format`` +- LWG3659 – Consider ``ATOMIC_FLAG_INIT`` undeprecation +- P1423R3 – ``char8_t`` backward compatibility remediation - Marked the following papers as "Complete" (note that some of those might have been implemented in a previous release but not marked as such): - - P1207R4 (Movability of Single-pass Iterators); - - P1474R1 (Helpful pointers for ``ContiguousIterator``); - - P1522R1 (Iterator Difference Type and Integer Overflow); - - P1523R1 (Views and Size Types); - - P1456R1 (Move-only views); - - P1870R1 (``forwarding-range`` is too subtle); - - P1878R1 (Constraining Readable Types); - - P1970R2 (Consistency for ``size()`` functions: Add ``ranges::ssize``); - - P1983R0 (Wording for GB301, US296, US292, US291, and US283). + - P1207R4 – Movability of Single-pass Iterators + - P1474R1 – Helpful pointers for ``ContiguousIterator`` + - P1522R1 – Iterator Difference Type and Integer Overflow + - P1523R1 – Views and Size Types + - P1456R1 – Move-only views + - P1870R1 – ``forwarding-range`` is too subtle + - P1878R1 – Constraining Readable Types + - P1970R2 – Consistency for ``size()`` functions: Add ``ranges::ssize`` + - P1983R0 – Wording for GB301, US296, US292, US291, and US283 New Features ------------ @@ -77,9 +89,15 @@ should include assertions or not by default. For details, see :ref:`the documentation ` about this new feature. -- The implementation of the function ``std::to_chars`` for integral types has - moved from the dylib to the header. This means the function no longer has a - minimum deployment target. +- The implementation of the function ``std::to_chars`` for integral types using + base 10 has moved from the dylib to the header. This means the function no + longer has a minimum deployment target. + +- The performance for ``std::to_chars``, for integral types using base 2, 8, + 10, or 16 has been improved. + +- The functions ``std::from_chars`` and ``std::to_chars`` now have 128-bit integral + support. - The format functions (``std::format``, ``std::format_to``, ``std::format_to_n``, and ``std::formatted_size``) now validate the format string at compile time. @@ -102,18 +120,13 @@ - The header ```` has been removed. Instead, use ```` header. The associated macro - ``_LIBCPP_DEPRECATED_EXPERIMENTAL_FILESYSTEM`` has also been removed. + ``_LIBCPP_DEPRECATED_EXPERIMENTAL_FILESYSTEM`` has been removed too. - Libc++ is getting ready to remove unnecessary transitive inclusions. This may break your code in the future. To future-proof your code to these removals, please compile your code with ``_LIBCPP_REMOVE_TRANSITIVE_INCLUDES`` defined and fix any compilation error resulting from missing includes. -- The ````, ````, ````, ```` and ```` - headers no longer transitively include the ```` header. If you see compiler - errors related to missing declarations in namespace ``std``, make sure you have the - necessary includes. - - The integer distributions ``binomial_distribution``, ``discrete_distribution``, ``geometric_distribution``, ``negative_binomial_distribution``, ``poisson_distribution``, and ``uniform_int_distribution`` now conform to the Standard by rejecting @@ -144,7 +157,7 @@ taken against the shared library. - The ``_LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_VOID_SPECIALIZATION`` macro has been added to allow - re-enabling the ``allocator`` specialization. When used in conjuction with + re-enabling the ``allocator`` specialization. When used in conjunction with ``_LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS``, this ensures that the members of ``allocator`` removed in C++20 can be accessed. @@ -166,6 +179,8 @@ To disable deprecation warnings you have to define ``_LIBCPP_DISABLE_DEPRECATION_WARNINGS``. Note that this disables all deprecation warnings. +- ``boyer_moore_searcher`` and ``boyer_moore_horspool_searcher`` have been implemented. + ABI Changes ----------- @@ -220,11 +235,11 @@ libc++ against alternate ABI libraries should make sure that their ABI library installs its own headers. -- The legacy testing configuration is now deprecated and will be removed in the next release. For - most users, this should not have any impact. However, if you are testing libc++, libc++abi or +- The legacy testing configuration is now deprecated and will be removed in LLVM 16. For + most users, this should not have any impact. However, if you are testing libc++, libc++abi, or libunwind in a configuration or on a platform that used to be supported by the legacy testing configuration and isn't supported by one of the configurations in ``libcxx/test/configs``, - ``libcxxabi/test/configs`` or ``libunwind/test/configs``, please move to one of those + ``libcxxabi/test/configs``, or ``libunwind/test/configs``, please move to one of those configurations or define your own. - MinGW DLL builds of libc++ no longer use dllimport in their headers, which