hanchenye-llvm-project/libcxx/docs
Louis Dionne 9b40ee8eb0 [libc++] Define new/delete in libc++abi only by default
Previously, we would define new/delete in both libc++ and libc++abi.
Not only does this cause code bloat, but also it's technically an ODR
violation since we don't know which operator will be selected. Furthermore,
since those are weak definitions, we should strive to have as few of them
as possible (to improve load times).

My preferred choice would have been to put the operators in libc++ only
by default, however that would create a circular dependency between
libc++ and libc++abi, which GNU linkers don't handle.

Folks who want to ship new/delete in libc++ instead of libc++abi are
free to do so by turning on LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS at
CMake configure time.

On Apple platforms, this shouldn't be an ABI break because we re-export
the new/delete symbols from libc++abi. This change actually makes libc++
behave closer to the system libc++ shipped on Apple platforms.

On other platforms, this is an ABI break for people linking against libc++
but not libc++abi. However, vendors have been consulted in D68269 and no
objection was raised. Furthermore, the definitions can be controlled to
appear in libc++ instead with the CMake option.

Differential Revision: https://reviews.llvm.org/D68269
2020-10-19 11:35:01 -04:00
..
DesignDocs [libc++] Update the <version> header in-place from generate_feature_test_macro_components 2020-10-13 09:18:35 -04:00
BuildingLibcxx.rst [libc++] Provide a default LLVM_PATH when building standalone 2020-06-29 12:40:07 -04:00
CMakeLists.txt
FeatureTestMacroTable.rst [libc++] Implement C++20's P0784 (More constexpr containers) 2020-09-22 11:20:33 -04:00
Makefile.sphinx
README.txt
ReleaseNotes.rst [libc++] Define new/delete in libc++abi only by default 2020-10-19 11:35:01 -04:00
TestingLibcxx.rst [libc++] Move the default site config template alongside other config files 2020-08-29 17:14:20 -04:00
UsingLibcxx.rst Doc: Links should use https 2020-03-22 22:49:33 +01:00
conf.py Bump the trunk major version to 12 2020-07-15 12:05:05 +02:00
index.rst Reland [libcxx]Put clang::trivial_abi on smart pointers 2020-07-20 11:54:34 -04:00

README.txt

libc++ Documentation
====================

The libc++ documentation is written using the Sphinx documentation generator. It is
currently tested with Sphinx 1.1.3.

To build the documents into html configure libc++ with the following cmake options:

  * -DLLVM_ENABLE_SPHINX=ON
  * -DLIBCXX_INCLUDE_DOCS=ON

After configuring libc++ with these options the make rule `docs-libcxx-html`
should be available.