Skip to content

Commit 6912a06

Browse files
mordanteyuxuanchen1997
authored andcommitted
[libc++][doc] Update the release notes for LLVM 19. (#99061)
This is a preparation for the upcoming LLVM 19 release.
1 parent f54dfdb commit 6912a06

File tree

3 files changed

+52
-11
lines changed

3 files changed

+52
-11
lines changed

libcxx/docs/ReleaseNotes/19.rst

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@ see the `releases page <https://llvm.org/releases/>`_.
3535
What's New in Libc++ 19.0.0?
3636
==============================
3737

38+
The main focus of the libc++ team has been to implement new C++20, C++23,
39+
and C++26 features.
40+
41+
Experimental support for the time zone database has progressed.
42+
43+
Work on the ranges support has progressed. See
44+
:ref:`ranges-status` for the current status.
45+
46+
Work on the experimental C++17 Parallel STL has progressed. See
47+
:ref:`pstl-status` for the current status.
48+
49+
Work on the C++17 mathematical special functions has started. See
50+
:ref:`special-math-status` for the current status.
51+
3852
Implemented Papers
3953
------------------
4054

@@ -59,22 +73,29 @@ Implemented Papers
5973
- P0019R8 - ``std::atomic_ref``
6074
- P2389R2 - Alias template ``dims`` for the ``extents`` of ``mdspan``
6175
- P1223R5 - ``ranges::find_last()``, ``ranges::find_last_if()``, and ``ranges::find_last_if_not()``
76+
- P2602R2 - Poison Pills are Too Toxic
77+
- P1981R0 - Rename ``leap`` to ``leap_second``
78+
- P1982R0 - Rename ``link`` to ``time_zone_link``
79+
6280

6381
Improvements and New Features
6482
-----------------------------
6583

6684
- The performance of growing ``std::vector`` has been improved for trivially relocatable types.
67-
- A lot of types are considered trivially relocatable now, including ``vector`` and ``string``.
68-
- The performance of ``ranges::fill`` and ``ranges::fill_n`` has been improved for ``vector<bool>::iterator``\s,
85+
86+
- A lot of types are considered trivially relocatable now, including ``std::vector`` and ``std::string``.
87+
88+
- The performance of ``std::ranges::fill`` and ``std::ranges::fill_n`` has been improved for ``std::vector<bool>::iterator``\s,
6989
resulting in a performance increase of up to 1400x.
90+
7091
- The ``std::mismatch`` algorithm has been optimized for integral types, which can lead up to 40x performance
7192
improvements.
7293

7394
- The ``std::ranges::minmax`` algorithm has been optimized for integral types, resulting in a performance increase of
7495
up to 100x.
7596

7697
- The ``std::set_intersection`` and ``std::ranges::set_intersection`` algorithms have been optimized to fast-forward over
77-
contiguous ranges of non-matching values, reducing the number of comparisons from linear to
98+
contiguous ranges of non-matching values, reducing the number of comparisons from linear to
7899
logarithmic growth with the number of elements in best-case scenarios.
79100

80101
- The ``_LIBCPP_ENABLE_CXX26_REMOVED_STRSTREAM`` macro has been added to make the declarations in ``<strstream>`` available.
@@ -101,15 +122,18 @@ Improvements and New Features
101122

102123
Note: bounded iterators currently are not supported for ``vector<bool>``.
103124

125+
- In C++23 and C++26 the number of transitive includes in several headers has been reduced, improving the compilation speed.
126+
127+
104128
Deprecations and Removals
105129
-------------------------
106130

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

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

115139
- The ``LIBCXX_ENABLE_ASSERTIONS`` CMake variable that was used to enable the safe mode has been deprecated and setting
@@ -151,10 +175,11 @@ Deprecations and Removals
151175
- libc++ no longer supports ``std::allocator<const T>`` and containers of ``const``-qualified element type, such
152176
as ``std::vector<const T>`` and ``std::list<const T>``. This used to be supported as an undocumented extension.
153177
If you were using ``std::vector<const T>``, replace it with ``std::vector<T>`` instead. The
154-
``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST`` macro can be defined to temporarily re-enable this extension as
155-
folks transition their code. This macro will be honored for one released and ignored starting in LLVM 20.
178+
``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST`` macro can be defined to temporarily re-enable this extension.
179+
to temporarily re-enable this extension to make it easier to update user code
180+
This macro will be honored for one released and ignored starting in LLVM 20.
156181
To assist with the clean-up process, consider running your code through Clang Tidy, with
157-
`std-allocator-const <https://clang.llvm.org/extra/clang-tidy/checks/portability/std-allocator-const.html>`
182+
`std-allocator-const <https://clang.llvm.org/extra/clang-tidy/checks/portability/std-allocator-const.html>`_
158183
enabled.
159184

160185
- When configuring libc++ with localization or threads disabled, the library no longer emits an error when
@@ -187,6 +212,9 @@ LLVM 20
187212
``_LIBCPP_ENABLE_REMOVED_WEEKDAY_RELATIONAL_OPERATORS`` macro that was used to re-enable this extension will be
188213
ignored in LLVM 20.
189214

215+
- The ``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST`` macro will no longer have an effect.
216+
217+
190218
LLVM 21
191219
~~~~~~~
192220

@@ -197,6 +225,7 @@ LLVM 21
197225

198226
If you are using C++03 in your project, you should consider moving to a newer version of the Standard to get the most out of libc++.
199227

228+
200229
ABI Affecting Changes
201230
---------------------
202231

@@ -211,7 +240,7 @@ Build System Changes
211240
- The ``LIBCXX_EXECUTOR`` and ``LIBCXXABI_EXECUTOR`` CMake variables have been removed. Please
212241
set ``LIBCXX_TEST_PARAMS`` to ``executor=<...>`` instead.
213242

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

217246
- The CMake options ``LIBCXX_INSTALL_MODULES`` now defaults to ``ON``.

libcxx/docs/ReleaseNotes/20.rst

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,28 @@ Deprecations and Removals
5959
``_LIBCPP_ENABLE_REMOVED_WEEKDAY_RELATIONAL_OPERATORS`` macro that was used to re-enable this extension will be
6060
ignored in LLVM 20.
6161

62+
- TODO: The ``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST`` macro will no longer have an effect.
6263

6364
Upcoming Deprecations and Removals
6465
----------------------------------
6566

66-
LLVM 21
67+
LLVM 20
6768
~~~~~~~
6869

6970
- TODO
7071

7172

73+
LLVM 21
74+
~~~~~~~
75+
76+
- The status of the C++03 implementation will be frozen after the LLVM 21 release. This means that starting in LLVM 22, non-critical bug fixes may not be back-ported
77+
to C++03, including LWG issues. C++03 is a legacy platform, where most projects are no longer actively maintained. To
78+
reduce the amount of fixes required to keep such legacy projects compiling with up-to-date toolchains, libc++ will aim to freeze the status of the headers in C++03 mode to avoid unintended breaking changes.
79+
See https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc for more details.
80+
81+
If you are using C++03 in your project, you should consider moving to a newer version of the Standard to get the most out of libc++.
82+
83+
7284
ABI Affecting Changes
7385
---------------------
7486

libcxx/docs/Status/SpecialMath.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.. special-math-status:
1+
.. _special-math-status:
22

33
======================================================
44
libc++ Mathematical Special Functions Status (P0226R1)

0 commit comments

Comments
 (0)