Lines Matching +full:docs +full:- +full:libcxx +full:- +full:html
2 Libc++ 19.0.0 (In-Progress) Release Notes
9 Written by the `Libc++ Team <https://libcxx.llvm.org>`_
13 These are in-progress notes for the upcoming libc++ 19.0.0 release.
15 `the Download Page <https://releases.llvm.org/download.html>`_.
24 documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM releases may
28 <https://libcxx.llvm.org>`_ or the `LLVM Web Site <https://llvm.org>`_.
46 :ref:`pstl-status` for the current status.
49 `this issue <https://github.com/llvm/llvm-project/issues/99939>`__
53 ------------------
55 - P1132R8 - ``out_ptr`` - a scalable output pointer abstraction
56 - P1614R2 - The Mothership has Landed
57 - P2637R3 - Member ``visit``
58 - P2652R2 - Disallow User Specialization of ``allocator_traits``
59 - P2819R2 - Add ``tuple`` protocol to ``complex``
60 - P2495R3 - Interfacing ``stringstream``\s with ``string_view``
61 - P2867R2 - Remove Deprecated ``strstream``\s From C++26
62 - P2872R3 - Remove ``wstring_convert`` From C++26
63 - P3142R0 - Printing Blank Lines with ``println`` (as DR against C++23)
64 - P2944R3 - Comparisons for ``reference_wrapper`` (comparison operators for ``reference_wrapper`` only)
65 - P2591R5 - Concatenation of strings and string views
66 - P2968R2 - Make ``std::ignore`` a first-class object
67 - P2997R1 - Removing the common reference requirement from the indirectly invocable concepts (as DR against C++20)
68 - P2302R4 - ``std::ranges::contains``
69 - P1659R3 - ``std::ranges::starts_with`` and ``std::ranges::ends_with``
70 - P3029R1 - Better ``mdspan``'s CTAD
71 - P2387R3 - Pipe support for user-defined range adaptors
72 - P2713R1 - Escaping improvements in ``std::format``
73 - P2231R1 - Missing ``constexpr`` in ``std::optional`` and ``std::variant``
74 - P0019R8 - ``std::atomic_ref``
75 - P2389R2 - Alias template ``dims`` for the ``extents`` of ``mdspan``
76 - P1223R5 - ``ranges::find_last()``, ``ranges::find_last_if()``, and ``ranges::find_last_if_not()``
77 - P2602R2 - Poison Pills are Too Toxic
78 - P1981R0 - Rename ``leap`` to ``leap_second``
79 - P1982R0 - Rename ``link`` to ``time_zone_link``
80 - P2602R2 - Poison Pills are Too Toxic (as DR against C++20)
84 -----------------------------
86 - The performance of growing ``std::vector`` has been improved for trivially relocatable types.
88 - A lot of types are considered trivially relocatable now, including ``std::vector`` and ``std::string``.
90 - The performance of ``std::ranges::fill`` and ``std::ranges::fill_n`` has been improved for ``std::vector<bool>::iterator``\s,
93 - The ``std::mismatch`` algorithm has been optimized for integral types, which can lead up to 40x performance
96 - The ``std::ranges::minmax`` algorithm has been optimized for integral types, resulting in a performance increase of
99 - The ``std::set_intersection`` and ``std::ranges::set_intersection`` algorithms have been optimized to fast-forward over
100 contiguous ranges of non-matching values, reducing the number of comparisons from linear to
101 logarithmic growth with the number of elements in best-case scenarios.
103 - The ``_LIBCPP_ENABLE_CXX26_REMOVED_STRSTREAM`` macro has been added to make the declarations in ``<strstream>`` available.
105 - The ``_LIBCPP_ENABLE_CXX26_REMOVED_WSTRING_CONVERT`` macro has been added to make the declarations in ``<locale>``
108 - The formatting library is updated to Unicode 15.1.0.
110 - ``std::ignore``\s ``const __ignore_t& operator=(_Tp&&) const`` was changed to
113 - Vendors can now configure the ABI so that ``string`` and ``vector`` will use bounded iterators when hardening is
114 enabled. Note that checks for iterator invalidation are currently not supported -- any accesses made through an
127 - In C++23 and C++26 the number of transitive includes in several headers has been reduced, improving the compilation speed.
129 - ``std::stable_sort`` uses radix sort for integral types now, which can improve the performance up to 10 times, depending
133 -------------------------
135 - The C++20 synchronization library (``<barrier>``, ``<latch>``, ``std::atomic::wait``, etc.) has been deprecated
136 in language modes prior to C++20. If you are using these features prior to C++20, please update to ``-std=c++20``.
139 - ``_LIBCPP_DISABLE_NODISCARD_EXT`` has been removed. ``[[nodiscard]]`` applications are now unconditional.
143 - The ``LIBCXX_ENABLE_ASSERTIONS`` CMake variable that was used to enable the safe mode has been deprecated and setting
147 <using-hardening-modes>` for more details.
149 - The base template for ``std::char_traits`` has been removed in LLVM 19. If you are using ``std::char_traits`` with
155 - The ``_LIBCPP_ENABLE_NARROWING_CONVERSIONS_IN_VARIANT`` macro that changed the behavior for narrowing conversions
158 - The ``_LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS`` and ``_LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_VOID_SPECIALIZATION``
161 - The ``_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES`` and ``_LIBCPP_ENABLE_CXX20_REMOVED_FEATURES`` macros have
162 been removed in LLVM 19. C++17 and C++20 removed features can still be re-enabled individually.
164 - The ``_LIBCPP_INLINE_VISIBILITY`` and ``_VSTD`` macros have been removed in LLVM 19.
166 - The ``_LIBCPP_ATOMIC_ONLY_USE_BUILTINS`` configuration option has been removed in LLVM 19. This should not affect
167 many users, except perhaps users using the library with ``-ffreestanding`` with a toolchain where compiler-rt or
171 - LWG3430 disallow implicit conversion of the source arguments to ``std::filesystem::path`` when
173 a ``std::basic_*fstream`` from a ``std::basic_string_view``, a input-iterator or a C-string, instead
176 - The ``_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS`` macro has been removed and is not honored anymore. Additional
179 - libc++ no longer supports ``std::allocator<const T>`` and containers of ``const``-qualified element type, such
182 ``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST`` macro can be defined to temporarily re-enable this extension.
183 to temporarily re-enable this extension to make it easier to update user code
185 To assist with the clean-up process, consider running your code through Clang Tidy, with
186 `std-allocator-const <https://clang.llvm.org/extra/clang-tidy/checks/portability/std-allocator-const.html>`_
189 - When configuring libc++ with localization or threads disabled, the library no longer emits an error when
191 consistent with the behavior for all other libc++ carve-outs like filesystem, wide characters, a source
195 - libc++ no longer supports relational comparison for ``std::chrono::weekday``. The relational comparison operators were
198 ``_LIBCPP_ENABLE_REMOVED_WEEKDAY_RELATIONAL_OPERATORS`` macro can be defined to temporarily re-enable this extension.
201 - The operators in the ``rel_ops`` namespace have been deprecated. The deprecation is part of the paper
205 ----------------------------------
210 - The ``LIBCXX_ENABLE_ASSERTIONS`` CMake variable and the ``_LIBCPP_ENABLE_ASSERTIONS`` macro that were used to enable
213 - The C++20 synchronization library will be removed entirely in language modes prior to C++20 in LLVM 20.
215 - The relational operators for ``std::chrono::weekday`` will be removed entirely, and the
216 ``_LIBCPP_ENABLE_REMOVED_WEEKDAY_RELATIONAL_OPERATORS`` macro that was used to re-enable this extension will be
219 - The ``_LIBCPP_ENABLE_REMOVED_ALLOCATOR_CONST`` macro will no longer have an effect.
225 - 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
227 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.
228 See https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc for more details.
234 ---------------------
236 - The optional POSIX macro ``ENODATA`` has been deprecated in C++ and POSIX 2017. The
242 --------------------
244 - The ``LIBCXX_EXECUTOR`` and ``LIBCXXABI_EXECUTOR`` CMake variables have been removed. Please
247 - The CMake variable ``LIBCXX_ENABLE_CLANG_TIDY`` has been removed. The build system has been changed
248 to automatically detect the presence of ``clang-tidy`` and the required ``Clang`` libraries.
250 - The CMake options ``LIBCXX_INSTALL_MODULES`` now defaults to ``ON``.
252 - The CMake options ``LIBCXX_BENCHMARK_NATIVE_STDLIB`` and ``LIBCXX_BENCHMARK_NATIVE_GCC_TOOLCHAIN`` have