@@ -35,6 +35,18 @@ see the `releases page <https://llvm.org/releases/>`_.
35
35
What's New in Libc++ 19.0.0?
36
36
==============================
37
37
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
+
38
50
Implemented Papers
39
51
------------------
40
52
@@ -55,14 +67,21 @@ Implemented Papers
55
67
- P2231R1 - Missing ``constexpr `` in ``std::optional `` and ``std::variant ``
56
68
- P0019R8 - ``std::atomic_ref ``
57
69
- P2389R2 - Alias template ``dims `` for the ``extents `` of ``mdspan ``
70
+ - P2602R2 - Poison Pills are Too Toxic
71
+ - P1981R0 - Rename ``leap `` to ``leap_second ``
72
+ - P1982R0 - Rename ``link `` to ``time_zone_link ``
73
+
58
74
59
75
Improvements and New Features
60
76
-----------------------------
61
77
62
78
- The performance of growing ``std::vector `` has been improved for trivially relocatable types.
63
- - A lot of types are considered trivially relocatable now, including ``vector `` and ``string ``.
64
- - The performance of ``ranges::fill `` and ``ranges::fill_n `` has been improved for ``vector<bool>::iterator ``\s ,
79
+
80
+ - A lot of types are considered trivially relocatable now, including ``std::vector `` and ``std::string ``.
81
+
82
+ - The performance of ``std::ranges::fill `` and ``std::ranges::fill_n `` has been improved for ``std::vector<bool>::iterator ``\s ,
65
83
resulting in a performance increase of up to 1400x.
84
+
66
85
- The ``std::mismatch `` algorithm has been optimized for integral types, which can lead up to 40x performance
67
86
improvements.
68
87
@@ -79,15 +98,17 @@ Improvements and New Features
79
98
- ``std::ignore ``\s ``const __ignore_t& operator=(_Tp&&) const `` was changed to
80
99
``const __ignore_type& operator=(const _Tp&) const noexcept `` for all language versions.
81
100
101
+ - In C++23 and C++26 the number of transitive includes in several headers have been removed, improving the compilation speed.
102
+
82
103
Deprecations and Removals
83
104
-------------------------
84
105
85
- - The C++20 synchronization library (``<barrier> ``, ``<latch> ``, ``atomic::wait ``, etc.) has been deprecated
106
+ - The C++20 synchronization library (``<barrier> ``, ``<latch> ``, ``std:: atomic::wait ``, etc.) has been deprecated
86
107
in language modes prior to C++20. If you are using these features prior to C++20, please update to ``-std=c++20 ``.
87
108
In LLVM 20, the C++20 synchronization library will be removed entirely in language modes prior to C++20.
88
109
89
110
- ``_LIBCPP_DISABLE_NODISCARD_EXT `` has been removed. ``[[nodiscard]] `` applications are now unconditional.
90
- This decision is based on LEWGs discussion on `P3122 <https://wg21.link/P3122> ` and `P3162 <https://wg21.link/P3162> `
111
+ This decision is based on LEWGs discussion on `P3122 <https://wg21.link/P3122 >`_ and `P3162 <https://wg21.link/P3162 >`_
91
112
to not use ``[[nodiscard]] `` in the standard.
92
113
93
114
- The ``LIBCXX_ENABLE_ASSERTIONS `` CMake variable that was used to enable the safe mode has been deprecated and setting
@@ -130,9 +151,9 @@ Deprecations and Removals
130
151
as ``std::vector<const T> `` and ``std::list<const T> ``. This used to be supported as an undocumented extension.
131
152
If you were using ``std::vector<const T> ``, replace it with ``std::vector<T> `` instead. The
132
153
``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST `` macro can be defined to temporarily re-enable this extension as
133
- folks transition their code. This macro will be honored for one released and ignored starting in LLVM 20.
154
+ to transition to update user code. This macro will be honored for one released and ignored starting in LLVM 20.
134
155
To assist with the clean-up process, consider running your code through Clang Tidy, with
135
- `std-allocator-const <https://clang.llvm.org/extra/clang-tidy/checks/portability/std-allocator-const.html> `
156
+ `std-allocator-const <https://clang.llvm.org/extra/clang-tidy/checks/portability/std-allocator-const.html >`_
136
157
enabled.
137
158
138
159
- When configuring libc++ with localization or threads disabled, the library no longer emits an error when
@@ -153,10 +174,7 @@ LLVM 20
153
174
154
175
- The C++20 synchronization library will be removed entirely in language modes prior to C++20 in LLVM 20.
155
176
156
- LLVM 21
157
- ~~~~~~~
158
- TODO
159
-
177
+ - The ``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST `` macro will no longer have an effect.
160
178
161
179
ABI Affecting Changes
162
180
---------------------
@@ -172,7 +190,7 @@ Build System Changes
172
190
- The ``LIBCXX_EXECUTOR `` and ``LIBCXXABI_EXECUTOR `` CMake variables have been removed. Please
173
191
set ``LIBCXX_TEST_PARAMS `` to ``executor=<...> `` instead.
174
192
175
- - The Cmake variable ``LIBCXX_ENABLE_CLANG_TIDY `` has been removed. The build system has been changed
193
+ - The CMake variable ``LIBCXX_ENABLE_CLANG_TIDY `` has been removed. The build system has been changed
176
194
to automatically detect the presence of ``clang-tidy `` and the required ``Clang `` libraries.
177
195
178
196
- The CMake options ``LIBCXX_INSTALL_MODULES `` now defaults to ``ON ``.
0 commit comments