blob: 34fd16bee993138b7e3f417352fad40c3927e6d6 [file] [log] [blame]
Hans Wennborg003a9982019-07-18 11:51:05 +00001=========================================
Tom Stellard688b1e22022-02-01 23:29:29 -08002Libc++ 15.0.0 (In-Progress) Release Notes
Hans Wennborg003a9982019-07-18 11:51:05 +00003=========================================
Louis Dionne42222072018-09-06 14:46:22 +00004
5.. contents::
6 :local:
7 :depth: 2
8
Hans Wennborg3329a842018-09-10 08:57:12 +00009Written by the `Libc++ Team <https://libcxx.llvm.org>`_
Louis Dionne42222072018-09-06 14:46:22 +000010
11.. warning::
12
Tom Stellard688b1e22022-02-01 23:29:29 -080013 These are in-progress notes for the upcoming libc++ 15 release.
Louis Dionne42222072018-09-06 14:46:22 +000014 Release notes for previous releases can be found on
Hans Wennborg3329a842018-09-10 08:57:12 +000015 `the Download Page <https://releases.llvm.org/download.html>`_.
Louis Dionne42222072018-09-06 14:46:22 +000016
17Introduction
18============
19
20This document contains the release notes for the libc++ C++ Standard Library,
Tom Stellard688b1e22022-02-01 23:29:29 -080021part of the LLVM Compiler Infrastructure, release 15.0.0. Here we describe the
Louis Dionne42222072018-09-06 14:46:22 +000022status of libc++ in some detail, including major improvements from the previous
23release and new feature work. For the general LLVM release notes, see `the LLVM
Hans Wennborg3329a842018-09-10 08:57:12 +000024documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM releases may
25be downloaded from the `LLVM releases web site <https://llvm.org/releases/>`_.
Louis Dionne42222072018-09-06 14:46:22 +000026
27For more information about libc++, please see the `Libc++ Web Site
Hans Wennborg3329a842018-09-10 08:57:12 +000028<https://libcxx.llvm.org>`_ or the `LLVM Web Site <https://llvm.org>`_.
Louis Dionne42222072018-09-06 14:46:22 +000029
Hans Wennborgfc14f4e2020-01-15 10:02:56 +010030Note that if you are reading this file from a Git checkout or the
Louis Dionne42222072018-09-06 14:46:22 +000031main Libc++ web page, this document applies to the *next* release, not
32the current one. To see the release notes for a specific release, please
Hans Wennborg3329a842018-09-10 08:57:12 +000033see the `releases page <https://llvm.org/releases/>`_.
Louis Dionne42222072018-09-06 14:46:22 +000034
Tom Stellard688b1e22022-02-01 23:29:29 -080035What's New in Libc++ 15.0.0?
Hans Wennborg003a9982019-07-18 11:51:05 +000036============================
Louis Dionne42222072018-09-06 14:46:22 +000037
38New Features
39------------
40
Nikolas Klausercfe21472022-02-14 18:26:02 +010041 - Implemented P0627R6 (Function to mark unreachable code)
Louis Dionne5a7a4172022-03-07 10:26:33 -050042 - Implemented P1165R1 (Make stateful allocator propagation more consistent for ``operator+(basic_string)``)
Nikolas Klausercfe21472022-02-14 18:26:02 +010043
Louis Dionne14918c82021-10-18 13:58:31 -040044API Changes
45-----------
Mark de Wever494905b2021-06-09 20:26:34 +020046
Louis Dionne15b1cdf2022-02-07 14:52:17 -050047- The ``_LIBCPP_ABI_UNSTABLE`` macro has been removed in favour of setting
48 ``_LIBCPP_ABI_VERSION=2``. This should not have any impact on users because
49 they were not supposed to set ``_LIBCPP_ABI_UNSTABLE`` manually, however we
50 still feel that it is worth mentioning in the release notes in case some users
51 had been doing it.
Louis Dionne12507ef2022-03-07 09:00:17 -050052
Joe Loser12572992022-02-11 18:45:44 -050053- The header ``<experimental/filesystem>`` has been removed. Instead, use
54 ``<filesystem>`` header. The associated macro
55 ``_LIBCPP_DEPRECATED_EXPERIMENTAL_FILESYSTEM`` has also been removed.
Louis Dionne15b1cdf2022-02-07 14:52:17 -050056
Nikolas Klauser62c6f112022-02-23 23:05:22 +010057- Some libc++ headers no longer transitively include all of ``<algorithm>``and ``<chrono>``.
58 If, after updating libc++, you see compiler errors related to missing declarations in
59 namespace ``std``, it might be because one of your source files now needs to
60 ``#include <algorithm>`` and/or ``#include <chrono>``.
Nikolas Klauser93205712022-02-24 00:09:18 +010061
Arthur O'Dwyer681dcb82021-12-01 19:55:26 -050062- The integer distributions ``binomial_distribution``, ``discrete_distribution``,
63 ``geometric_distribution``, ``negative_binomial_distribution``, ``poisson_distribution``,
64 and ``uniform_int_distribution`` now conform to the Standard by rejecting
65 template parameter types other than ``short``, ``int``, ``long``, ``long long``,
66 (as an extension) ``__int128_t``, and the unsigned versions thereof.
67 In particular, ``uniform_int_distribution<int8_t>`` is no longer supported.
68
Joe Loser8fcb1d92021-10-28 15:38:02 -040069ABI Changes
70-----------
71
Louis Dionne9bb7cf42021-09-08 12:57:58 -040072- The ``_LIBCPP_ABI_USE_CXX03_NULLPTR_EMULATION`` macro controlling whether we use an
73 emulation for ``std::nullptr_t`` in C++03 mode has been removed. After this change,
74 ``_LIBCPP_ABI_USE_CXX03_NULLPTR_EMULATION`` will not be honoured anymore and there
75 will be no way to opt back into the C++03 emulation of ``std::nullptr_t``.
76
Louis Dionne14918c82021-10-18 13:58:31 -040077Build System Changes
78--------------------
Louis Dionne6e1a6532022-02-08 11:38:29 -050079
80- Support for standalone builds have been entirely removed from libc++, libc++abi and
81 libunwind. Please use :ref:`these instructions <build instructions>` for building
82 libc++, libc++abi and/or libunwind.
Louis Dionnedd0baa62021-10-12 15:59:08 -040083
84- The ``{LIBCXX,LIBCXXABI,LIBUNWIND}_TARGET_TRIPLE``, ``{LIBCXX,LIBCXXABI,LIBUNWIND}_SYSROOT`` and
85 ``{LIBCXX,LIBCXXABI,LIBUNWIND}_GCC_TOOLCHAIN`` CMake variables have been removed. Instead, please
86 use the ``CMAKE_CXX_COMPILER_TARGET``, ``CMAKE_SYSROOT`` and ``CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN``
87 variables provided by CMake.