| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[libc++] Stabilize transitive includes for C++23 (#134143) Our mechanism to retain transitive includes for backwards compatibility was previously not taking into account C++23: this means that users on C++23 would not get any protection against the removal of transitive includes. This was fine when C++23 was still not used widely and it allowed us to make build time improvements for such "bleeding edge" users. It also didn't take into account the larger topic of providing a backwards compatible set of declarations, which is the real goal of this mechanism. However, now that C++23 is used pretty widely, we should start providing transitive includes backwards compatibility for users of that language mode too. This patch documents that requirement and mentions backwards compatibility of the set of declarations as well, meaning we may also add internal headers in the _LIBCPP_REMOVE_TRANSITIVE_INCLUDES blocks going forward. There are no actual changes to the code since we haven't removed transitive includes since the last release. However, starting now, we should guard any removal of transitive includes behind #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 23 instead of #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 | 10 个月前 | |
[libc++] Replace 'tags' in CSV status pages by inline notes (#105581) This patch replaces 'tags' in the CSV status pages by inline notes that optionally describe more details about the paper/LWG issue. Tags were not really useful anymore because we have a vastly superior tagging system via Github issues, and keeping the tags up-to-date between CSV files and Github is going to be really challenging. This patch also adds support for encoding custom notes in the CSV files via Github issues. To encode a note in the CSV file, the body (initial description) of a Github issue can be edited to contain the following markers: BEGIN-RST-NOTES text that will be added as a note in the RST END-RST-NOTES Amongst other things, this solves the problem of conveying that a paper has been implemented as a DR, and it gives a unified way to add notes to the status pages from Github. | 1 年前 | |
[libc++] Optimize num_get integral functions (#121795) --------------------------------------------------- Benchmark old new --------------------------------------------------- BM_num_get<bool> 86.5 ns 32.3 ns BM_num_get<long> 82.1 ns 30.3 ns BM_num_get<long long> 85.2 ns 33.4 ns BM_num_get<unsigned short> 85.3 ns 31.2 ns BM_num_get<unsigned int> 84.2 ns 31.1 ns BM_num_get<unsigned long> 83.6 ns 31.9 ns BM_num_get<unsigned long long> 87.7 ns 31.5 ns BM_num_get<float> 116 ns 114 ns BM_num_get<double> 114 ns 114 ns BM_num_get<long double> 113 ns 114 ns BM_num_get<void*> 151 ns 144 ns This patch applies multiple optimizations: - Stages two and three of do_get are merged and a custom integer parser has been implemented This avoids allocations, removes the need for strto{,u}ll and avoids __stage2_int_loop (avoiding extra writes to memory) - std::find has been replaced with __atoms_offset, which uses vector instructions to look for a character Fixes #158100 Fixes #158102 | 8 个月前 | |
[libc++][ranges] LWG3505: split_view::outer-iterator::operator++ misspecified (#155160) Implemented in LLVM15: https://github.com/llvm/llvm-project/commit/e53c461bf3f0feebb4fd6b43e05a0047f8edb945 This LWG concernslazy_split_view despite the outdated title. Closes #104320 # References - https://wg21.link/LWG3505 - https://wg21.link/range.lazy.split.outer Co-authored-by: Hristo Hristov <zingam@outlook.com> | 8 个月前 | |
[libc++] Split ABI flag for removing iterator bases and removing the second member in reverse_iterator (#143079) Currently _LIBCPP_NO_ITERATOR_BASES controls both whether specific classes derive from iterator and whether reverse_iterator has a second member variable. These two changes are orthogonal though, and one can be applied in all langauge modes while the other change is only conforming for C++17 and later. | 10 个月前 | |
[libc++][NFC] Fix typo in documentation | 3 年前 | |
docs: Fix Sphinx detection with out-of-tree builds Adapt to changes made in r302499. llvm-svn: 302517 | 9 年前 | |
[libc++] Fix typos in documentation (#139853) | 1 年前 | |
[libc++] Reorganize and fix the libc++ CI dockerfiles (#167530) Instead of having one large Dockerfile building multiple images with relatively confusing inheritance, explicitly have three standalone Dockerfiles each building one image. Then, tie the three images together using the docker-compose file which explicitly versions the base image used by the Android and the Github Actions images. | 8 个月前 | |
[libc++] Implement P2988R12: std::optional<T&> (#155202) Resolves #148131 - Unlock std::optional<T&> implementation - Allow instantiations of optional<T(&)(...)> and optional<T(&)[]> but disables value_or() and optional::iterator + all iterator related functions - Update documentation - Update tests | 8 个月前 | |
[libc++][hardening] Allow setting the assertion semantic via CMake. (#167636) Add a new CMake variable, LIBCXX_ASSERTION_SEMANTIC, that largely mirrors LIBCXX_HARDENING_MODE, except that it also supports a special value hardening_dependent that indicates the semantic will be selected based on the hardening mode in effect: - fast and extensive map to quick_enforce; - debug maps to enforce. | 8 个月前 | |
[libc++] Documentation polish (#132962) - Some lists re-ordered alphabetically - Spelling, grammar, language, etc | 1 年前 | |
[libc++][NFC] Use llvm.org/PR to link to bug reports (#156288) We've built up quite a few links directly to github within the code base. We should instead use llvm.org/PR<issue-number> to link to bugs, since that is resilient to the bug tracker changing in the future. This is especially relevant for tests linking to bugs, since they will probably be there for decades to come. A nice side effect is that these links are significantly shorter than the GH links, making them much less of an eyesore. This patch also replaces a few links that linked to the old bugzilla instance on llvm.org. | 10 个月前 | |
[libc++] NFC: Add note about how the libcxx website gets updated | 4 年前 | |
[libc++] Add and empty skeleton for LLVM 22 release notes (#149535) | 1 年前 | |
[libc++] Fix outdated release procedure for release notes | 2 年前 | |
[libc++][docs] Fix documentation of REQUIRES: std-at-least-* (#166226) Due to me not double-checking my PR, an overly eager AI auto-completion made it into my previous PR :/ | 8 个月前 | |
[libc++][hardening] Introduce assertion semantics. (#149459) Assertion semantics closely mimic C++26 Contracts evaluation semantics. This brings our implementation closer in line with C++26 Library Hardening (one particular benefit is that using the observe semantic makes adopting hardening easier for projects). | 11 个月前 | |
[libc++] Enable compiler-rt when performing a bootstrapping build (#167065) Otherwise, we end up using whatever system-provided compiler runtime is available, which doesn't work on macOS since compiler-rt is located inside the toolchain path, which can't be found by default. However, disable the tests for compiler-rt since those are linking against the system C++ standard library while using the just-built libc++ headers, which is non-sensical and leads to undefined references on macOS. | 8 个月前 | |
[NFC][Py Reformat] Reformat python files in libcxx/libcxxabi This is an ongoing series of commits that are reformatting our Python code. Reformatting is done with black. If you end up having problems merging this commit because you have made changes to a python file, the best way to handle that is to run git checkout --ours <yourfile> and then reformat it with black. If you run into any problems, post to discourse about it and we will try to help. RFC Thread below: https://discourse.llvm.org/t/rfc-document-and-standardize-python-code-style Reviewed By: #libc, kwk, Mordante Differential Revision: https://reviews.llvm.org/D150763 | 3 年前 | |
[libcxx] [doc] Document the supported target versions of Windows (#167845) The llvm-mingw toolchains defaults to _WIN32_WINNT=0x601, so this configuration is covered by our CI build matrix. | 8 个月前 |
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.
The documentation in this directory is published at https://libcxx.llvm.org. It is kept up-to-date by a build bot: https://lab.llvm.org/buildbot/#/builders/publish-sphinx-docs. If you notice that the documentation is not updating anymore, please contact one of the maintainers.