diff --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst --- a/libcxx/docs/ReleaseNotes.rst +++ b/libcxx/docs/ReleaseNotes.rst @@ -35,33 +35,44 @@ 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 library is considered experimental. + +The C++20 ``ranges`` library has progressed a lot since the last release and is +almost complete. The library is considered [experimental|ready for general usage]. + + 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) +- 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 - 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 ------------ @@ -76,9 +87,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`` got 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. @@ -90,6 +107,8 @@ argument for the formatting functions. This change causes bit fields to become invalid arguments for the formatting functions. +- ``boyer_moore_searcher`` and ``boyer_moore_horspool_searcher`` have been implemented. + API Changes ----------- @@ -101,7 +120,7 @@ - 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, @@ -143,7 +162,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. @@ -214,11 +233,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 +- 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. - The ``LIBCXX_ENABLE_DEBUG_MODE_SUPPORT`` CMake configuration is not supported anymore. If you