-
Notifications
You must be signed in to change notification settings - Fork 12k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[libc++] Replace
__compressed_pair
with [[no_unique_address]]
- Loading branch information
1 parent
e6ec366
commit da991f8
Showing
21 changed files
with
644 additions
and
596 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
=========================================== | ||
Libc++ 20.0.0 (In-Progress) Release Notes | ||
=========================================== | ||
|
||
.. contents:: | ||
:local: | ||
:depth: 2 | ||
|
||
Written by the `Libc++ Team <https://libcxx.llvm.org>`_ | ||
|
||
.. warning:: | ||
|
||
These are in-progress notes for the upcoming libc++ 20.0.0 release. | ||
Release notes for previous releases can be found on | ||
`the Download Page <https://releases.llvm.org/download.html>`_. | ||
|
||
Introduction | ||
============ | ||
|
||
This document contains the release notes for the libc++ C++ Standard Library, | ||
part of the LLVM Compiler Infrastructure, release 19.0.0. Here we describe the | ||
status of libc++ in some detail, including major improvements from the previous | ||
release and new feature work. For the general LLVM release notes, see `the LLVM | ||
documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM releases may | ||
be downloaded from the `LLVM releases web site <https://llvm.org/releases/>`_. | ||
|
||
For more information about libc++, please see the `Libc++ Web Site | ||
<https://libcxx.llvm.org>`_ or the `LLVM Web Site <https://llvm.org>`_. | ||
|
||
Note that if you are reading this file from a Git checkout or the | ||
main Libc++ web page, this document applies to the *next* release, not | ||
the current one. To see the release notes for a specific release, please | ||
see the `releases page <https://llvm.org/releases/>`_. | ||
|
||
What's New in Libc++ 20.0.0? | ||
============================== | ||
|
||
Implemented Papers | ||
------------------ | ||
|
||
Improvements and New Features | ||
----------------------------- | ||
|
||
- The internal structure ``__compressed_pair`` has been replaced with ``[[no_unique_address]]``, resulting in reduced | ||
compile times and smaller debug information as well as better code gen if optimizations are disabled. | ||
|
||
Deprecations and Removals | ||
------------------------- | ||
|
||
- TODO: 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. | ||
|
||
Upcoming Deprecations and Removals | ||
---------------------------------- | ||
|
||
LLVM 21 | ||
~~~~~~~ | ||
TODO | ||
|
||
|
||
ABI Affecting Changes | ||
--------------------- | ||
|
||
- The internal structure ``__compressed_pair`` has been replaced with ``[[no_unique_address]]``. This change results in | ||
empty final types being placed at the beginning of the object instead of where the beginning of the | ||
``__compressed_pair`` subobject was. This is only observable by checking the address of the subobject. | ||
|
||
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 | ||
to automatically detect the presence of ``clang-tidy`` and the required ``Clang`` libraries. | ||
|
||
- The CMake options ``LIBCXX_INSTALL_MODULES`` now defaults to ``ON``. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.