Skip to content

Commit

Permalink
[libc++][doc] Update the release notes for LLVM 19.
Browse files Browse the repository at this point in the history
This is a preparation for the upcoming LLVM 19 release.
  • Loading branch information
mordante committed Jul 16, 2024
1 parent 618b0b7 commit d80ce7e
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 11 deletions.
40 changes: 29 additions & 11 deletions libcxx/docs/ReleaseNotes/19.rst
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,18 @@ see the `releases page <https://llvm.org/releases/>`_.
What's New in Libc++ 19.0.0?
==============================

The main focus of the libc++ team has been to implement new C++20, C++23,
and C++26 features.

Experimental support for the time zone database has progressed.

Work on the ranges support has progressed. See
:ref:`ranges-status` for the current status.

Work on the experimental C++17 Parallel STL has progressed. See
:ref:`pstl-status` for the current status.


Implemented Papers
------------------

Expand All @@ -55,14 +67,21 @@ Implemented Papers
- P2231R1 - Missing ``constexpr`` in ``std::optional`` and ``std::variant``
- P0019R8 - ``std::atomic_ref``
- P2389R2 - Alias template ``dims`` for the ``extents`` of ``mdspan``
- P2602R2 - Poison Pills are Too Toxic
- P1981R0 - Rename ``leap`` to ``leap_second``
- P1982R0 - Rename ``link`` to ``time_zone_link``


Improvements and New Features
-----------------------------

- The performance of growing ``std::vector`` has been improved for trivially relocatable types.
- A lot of types are considered trivially relocatable now, including ``vector`` and ``string``.
- The performance of ``ranges::fill`` and ``ranges::fill_n`` has been improved for ``vector<bool>::iterator``\s,

- A lot of types are considered trivially relocatable now, including ``std::vector`` and ``std::string``.

- The performance of ``std::ranges::fill`` and ``std::ranges::fill_n`` has been improved for ``std::vector<bool>::iterator``\s,
resulting in a performance increase of up to 1400x.

- The ``std::mismatch`` algorithm has been optimized for integral types, which can lead up to 40x performance
improvements.

Expand All @@ -79,15 +98,17 @@ Improvements and New Features
- ``std::ignore``\s ``const __ignore_t& operator=(_Tp&&) const`` was changed to
``const __ignore_type& operator=(const _Tp&) const noexcept`` for all language versions.

- In C++23 and C++26 the number of transitive includes in several headers have been removed, improving the compilation speed.

Deprecations and Removals
-------------------------

- The C++20 synchronization library (``<barrier>``, ``<latch>``, ``atomic::wait``, etc.) has been deprecated
- The C++20 synchronization library (``<barrier>``, ``<latch>``, ``std::atomic::wait``, etc.) has been deprecated
in language modes prior to C++20. If you are using these features prior to C++20, please update to ``-std=c++20``.
In LLVM 20, the C++20 synchronization library will be removed entirely in language modes prior to C++20.

- ``_LIBCPP_DISABLE_NODISCARD_EXT`` has been removed. ``[[nodiscard]]`` applications are now unconditional.
This decision is based on LEWGs discussion on `P3122 <https://wg21.link/P3122>` and `P3162 <https://wg21.link/P3162>`
This decision is based on LEWGs discussion on `P3122 <https://wg21.link/P3122>`_ and `P3162 <https://wg21.link/P3162>`_
to not use ``[[nodiscard]]`` in the standard.

- The ``LIBCXX_ENABLE_ASSERTIONS`` CMake variable that was used to enable the safe mode has been deprecated and setting
Expand Down Expand Up @@ -130,9 +151,9 @@ Deprecations and Removals
as ``std::vector<const T>`` and ``std::list<const T>``. This used to be supported as an undocumented extension.
If you were using ``std::vector<const T>``, replace it with ``std::vector<T>`` instead. The
``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST`` macro can be defined to temporarily re-enable this extension as
folks transition their code. This macro will be honored for one released and ignored starting in LLVM 20.
to transition to update user code. This macro will be honored for one released and ignored starting in LLVM 20.
To assist with the clean-up process, consider running your code through Clang Tidy, with
`std-allocator-const <https://clang.llvm.org/extra/clang-tidy/checks/portability/std-allocator-const.html>`
`std-allocator-const <https://clang.llvm.org/extra/clang-tidy/checks/portability/std-allocator-const.html>`_
enabled.

- When configuring libc++ with localization or threads disabled, the library no longer emits an error when
Expand All @@ -153,10 +174,7 @@ LLVM 20

- The C++20 synchronization library will be removed entirely in language modes prior to C++20 in LLVM 20.

LLVM 21
~~~~~~~
TODO

- The ``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST`` macro will no longer have an effect.

ABI Affecting Changes
---------------------
Expand All @@ -172,7 +190,7 @@ Build System Changes
- The ``LIBCXX_EXECUTOR`` and ``LIBCXXABI_EXECUTOR`` CMake variables have been removed. Please
set ``LIBCXX_TEST_PARAMS`` to ``executor=<...>`` instead.

- The Cmake variable ``LIBCXX_ENABLE_CLANG_TIDY`` has been removed. The build system has been changed
- The CMake variable ``LIBCXX_ENABLE_CLANG_TIDY`` has been removed. The build system has been changed
to automatically detect the presence of ``clang-tidy`` and the required ``Clang`` libraries.

- The CMake options ``LIBCXX_INSTALL_MODULES`` now defaults to ``ON``.
10 changes: 10 additions & 0 deletions libcxx/docs/ReleaseNotes/20.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,16 @@ Deprecations and Removals
Upcoming Deprecations and Removals
----------------------------------

LLVM 20
~~~~~~~

- The ``LIBCXX_ENABLE_ASSERTIONS`` CMake variable and the ``_LIBCPP_ENABLE_ASSERTIONS`` macro that were used to enable
the safe mode will be removed in LLVM 20.

- The C++20 synchronization library will be removed entirely in language modes prior to C++20 in LLVM 20.

- The ``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST`` macro will no longer have an effect.

LLVM 21
~~~~~~~

Expand Down

0 comments on commit d80ce7e

Please sign in to comment.