History log of /llvm-project/libcxx/utils/generate_feature_test_macro_components.py (Results 1 – 25 of 219)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-21-init
# def50f70 25-Jan-2025 Hui <hui.xie1990@gmail.com>

[libc++] implement `std::flat_multimap` (#113835)

fixes https://github.com/llvm/llvm-project/issues/105190

---------

Co-authored-by: Hui Xie <huixie@Mac.broadband>
Co-authored-by: Hui Xie <hu

[libc++] implement `std::flat_multimap` (#113835)

fixes https://github.com/llvm/llvm-project/issues/105190

---------

Co-authored-by: Hui Xie <huixie@Mac.broadband>
Co-authored-by: Hui Xie <huixie@Huis-MacBook-Pro.local>

show more ...


# 24e70e39 24-Jan-2025 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Switch experimental library macros to 0/1 macros (#124030)

This is a continuation of what's been started in #89178.

As a drive-by, this also changes the PSTL macro to say `EXPERIMENTAL`
in

[libc++] Switch experimental library macros to 0/1 macros (#124030)

This is a continuation of what's been started in #89178.

As a drive-by, this also changes the PSTL macro to say `EXPERIMENTAL`
instead of `INCOMPLETE`.

show more ...


Revision tags: llvmorg-19.1.7
# c91d805e 10-Jan-2025 Jakub Mazurkiewicz <mazkuba3@gmail.com>

[libc++] Implement std::not_fn<NTTP> (#86133)

Implement `std::not_fn<NTTP>` from "P2714R1 Bind front and back to NTTP callables".


# b9a2658a 21-Dec-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++][C++03] Use `__cxx03/` headers in C++03 mode (#109002)

This patch implements the forwarding to frozen C++03 headers as
discussed in
https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-

[libc++][C++03] Use `__cxx03/` headers in C++03 mode (#109002)

This patch implements the forwarding to frozen C++03 headers as
discussed in
https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the
RFC, we initially proposed selecting the right headers from the Clang
driver, however consensus seemed to steer towards handling this in the
library itself. This patch implements that direction.

At a high level, the changes basically amount to making each public
header look like this:

```
// inside <vector>
#ifdef _LIBCPP_CXX03_LANG
# include <__cxx03/vector>
#else
// normal <vector> content
#endif
```

In most cases, public headers are simple umbrella headers so there isn't
much code in the #else branch. In other cases, the #else branch contains
the actual implementation of the header.

show more ...


Revision tags: llvmorg-19.1.6
# 7b2d592a 11-Dec-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++] Fix test FTM header guard

That template is actually not used to generate the version header yet,
but we can at least fix the include guards which are clearly incorrect.


Revision tags: llvmorg-19.1.5, llvmorg-19.1.4
# c6f3b7bc 06-Nov-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Refactor the configuration macros to being always defined (#112094)

This is a follow-up to #89178. This updates the `<__config_site>`
macros.


# 76b71c0b 05-Nov-2024 A. Jiang <de34@live.cn>

[libc++] Set `__cpp_lib_smart_ptr_for_overwrite` (#114700)

The features were implemented in LLVM 16, but mistakenly considered
unimplemented in FTM tools.


Revision tags: llvmorg-19.1.3
# cae351f3 25-Oct-2024 A. Jiang <de34@live.cn>

[libc++] Bump `__cpp_lib_optional` and `__cpp_lib_variant` (#113650)

In C++20 mode, `__cpp_lib_optional` and `__cpp_lib_variant` should be
`202106L` due to DR P2231R1.

In C++26 mode, `__cpp_lib_

[libc++] Bump `__cpp_lib_optional` and `__cpp_lib_variant` (#113650)

In C++20 mode, `__cpp_lib_optional` and `__cpp_lib_variant` should be
`202106L` due to DR P2231R1.

In C++26 mode, `__cpp_lib_variant` should be bumped to `202306L` due to
P2637R3.
- Clang 16/17 shouldn't get this bumping (as member `visit` requires
explicit object parameters), but it's very tricky to make the bumping
conditionally enabled. I _hope_ unconditionally bumping in C++26 will be
OK for LLVM 20 when the support for Clang 17 is dropped.

Related PRs:
- https://reviews.llvm.org/D102119
- #83335
- #76447

show more ...


Revision tags: llvmorg-19.1.2
# ba87515f 12-Oct-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++][RFC] Always define internal feature test macros (#89178)

Currently, the library-internal feature test macros are only defined if
the feature is not available, and always have the prefix
`

[libc++][RFC] Always define internal feature test macros (#89178)

Currently, the library-internal feature test macros are only defined if
the feature is not available, and always have the prefix
`_LIBCPP_HAS_NO_`. This patch changes that, so that they are always
defined and have the prefix `_LIBCPP_HAS_` instead. This changes the
canonical use of these macros to `#if _LIBCPP_HAS_FEATURE`, which means
that using an undefined macro (e.g. due to a missing include) is
diagnosed now. While this is rather unlikely currently, a similar change
in `<__configuration/availability.h>` caught a few bugs. This also
improves readability, since it removes the double-negation of `#ifndef
_LIBCPP_HAS_NO_FEATURE`.

The current patch only touches the macros defined in `<__config>`. If
people are happy with this approach, I'll make a follow-up PR to also
change the macros defined in `<__config_site>`.

show more ...


# a06591b4 09-Oct-2024 Hristo Hristov <hghristov.rmm@gmail.com>

[libc++][type_traits] P2674R1: A trait for implicit lifetime types (#106870)

Implements P2674R1: https://wg21.link/P2674R1

- https://eel.is/c++draft/type.traits
- https://eel.is/c++draft/meta.

[libc++][type_traits] P2674R1: A trait for implicit lifetime types (#106870)

Implements P2674R1: https://wg21.link/P2674R1

- https://eel.is/c++draft/type.traits
- https://eel.is/c++draft/meta.type.synop
- https://eel.is/c++draft/meta.unary.prop
- https://eel.is/c++draft/support.limits
- https://eel.is/c++draft/version.syn

Implementation details:
- Uses compiler intrinsic `__builtin_is_implicit_lifetime`:
- https://github.com/llvm/llvm-project/pull/101807
- Tests based on:
-
https://github.com/llvm/llvm-project/blob/d213981c80626698a07b11ce872acba098a863d4/clang/test/SemaCXX/type-traits.cpp#L1989

References:
- Implicit-lifetime
- Implicit-lifetime types [basic.types.general]/9:
https://eel.is/c++draft/basic.types.general
- Implicit-lifetime class [class.prop]/9:
https://eel.is/c++draft/class.prop
- P0593R6 Implicit creation of objects for low-level object
manipulation: https://wg21.link/P0593R6
- P1010R1 Container support for implicit lifetime types:
https://wg21.link/P1010R1
- P0593R6 Implicit creation of objects for low-level object
manipulation: https://wg21.link/P0593R6

Closes: #105259

---------

Co-authored-by: Hristo Hristov <zingam@outlook.com>

show more ...


Revision tags: llvmorg-19.1.1
# c4a42f61 17-Sep-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++] Fix the declarative generation of FTMs (#108843)

We were incorrectly computing whether a FTM has been implemented.
Instead of checking whether any version of the FTM is implemented for
th

[libc++] Fix the declarative generation of FTMs (#108843)

We were incorrectly computing whether a FTM has been implemented.
Instead of checking whether any version of the FTM is implemented for
the current Standard, we need to make sure that the correct version of
the FTM has been implemented.

As a drive-by fix, also correctly close the file that we load JSON from,
which was forgotten.

show more ...


Revision tags: llvmorg-19.1.0
# 99174842 12-Sep-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++] Make std::jthread supported in non-experimental mode (#107900)

We waited before supporting std::jthread fully because we wanted to
investigate other implementation strategies (in particula

[libc++] Make std::jthread supported in non-experimental mode (#107900)

We waited before supporting std::jthread fully because we wanted to
investigate other implementation strategies (in particular one involving
std::mutex). Since then, we did some benchmarking and decided that we
wouldn't be moving forward with std::mutex. Hence, there is no real
reason to punt on making std::jthread & friends non-experimental.

show more ...


Revision tags: llvmorg-19.1.0-rc4
# 7808541f 28-Aug-2024 A. Jiang <de34@live.cn>

[libc++] P2747R2: `constexpr` placement new (library part) (#105768)

This patch implements https://wg21.link/P2747R2.

The library changes affect direct `operator new` and `operator new[]`
calls

[libc++] P2747R2: `constexpr` placement new (library part) (#105768)

This patch implements https://wg21.link/P2747R2.

The library changes affect direct `operator new` and `operator new[]`
calls even when the core language changes are absent.

The changes are not available for MS ABI because the `operator new` and
`operator new[]` are from VCRuntime's `<vcruntime_new.h>`. A feature
request was submitted for that [1].

As a drive-by change, the patch reformatted the whole `new.pass.cpp` and
`new_array.pass.cpp` tests.

Closes #105427

[1]: https://developercommunity.visualstudio.com/t/constexpr-for-placement-operator-newope/10730304.

show more ...


# 026210e8 28-Aug-2024 A. Jiang <de34@live.cn>

[libc++][ranges] P2609R3: Relaxing Ranges Just A Smidge (#101715)

This patch implements https://wg21.link/p2609r3.
The test code was originally authored by JMazurkiewicz.

Notes:
- P2609R3 is no

[libc++][ranges] P2609R3: Relaxing Ranges Just A Smidge (#101715)

This patch implements https://wg21.link/p2609r3.
The test code was originally authored by JMazurkiewicz.

Notes:
- P2609R3 is not officially a Defect Report, but MSVC STL
implements it in C++20 mode.

Moreover, P2609R3 and P2997R1 touch exactly the same set of
concepts, and MSVC STL and libc++ have already treated P2997R1
as a DR.

- This patch also adjusted feature-test macros.
+ In C++20 mode, the value of __cpp_lib_ranges should be `202110L` because
- `202202L` covers `range_adaptor_closure` (P2387R3), and
- `202207L` covers move-only types in range adaptors (P2494R2).
And all of these changes are only available since C++23 mode.

+ In C++23 mode, the value should be `202406L` because
- `202211L` covers removing poison overloads (P2602R2),
- `202302L` covers relaxing projected value types (P2609R3), and
- `202406L` covers removing requirements on `iter_common_reference_t` (P2997R1).
And all of these changes are already or being implemented.

Fixes #105253.

Co-authored-by: Jakub Mazurkiewicz <mazkuba3@gmail.com>

show more ...


# 1c48c9cc 26-Aug-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++] Implement P2985R0: std::is_virtual_base_of (#105847)

This trait is implemented in C++26 conditionally on the compiler
supporting the __builtin_is_virtual_base_of intrinsic. I believe only

[libc++] Implement P2985R0: std::is_virtual_base_of (#105847)

This trait is implemented in C++26 conditionally on the compiler
supporting the __builtin_is_virtual_base_of intrinsic. I believe only
tip-of-trunk Clang currently implements that builtin.

Closes #105432

show more ...


Revision tags: llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2
# 879640cb 03-Aug-2024 Mark de Wever <koraq@xs4all.nl>

[libc++] Implements the new version header generator. (#97847)

The generator makes a few changes to the output
- removes the synopsis, it did not really show what was implemented
correctly.
- the

[libc++] Implements the new version header generator. (#97847)

The generator makes a few changes to the output
- removes the synopsis, it did not really show what was implemented
correctly.
- the output now is clang-format clean.

This code uses the new FTM data structure. Since the contents of this
structure are not up-to-date the code is only used in its tests.

show more ...


Revision tags: llvmorg-19.1.0-rc1
# 3ce6f68e 25-Jul-2024 Mark de Wever <koraq@xs4all.nl>

[libc++][spaceship] Marks P1614 as complete. (#99375)

Implements parts of:
- P1902R1 Missing feature-test macros 2017-2019

Completes:
- P1614R2 The Mothership has Landed

Fixes #100018


Revision tags: llvmorg-20-init
# 04760bfa 19-Jul-2024 nicole mazzuca <nicole@strega-nil.co>

[libc++][ranges] P1223R5: `find_last` (#99312)

Implements [P1223R5][] completely.

Includes an implementation of `find_last`, `find_last_if`, and
`find_last_if_not`.

[P1223R5]: https://wg21.li

[libc++][ranges] P1223R5: `find_last` (#99312)

Implements [P1223R5][] completely.

Includes an implementation of `find_last`, `find_last_if`, and
`find_last_if_not`.

[P1223R5]: https://wg21.link/p1223r5

show more ...


# e475bb7a 19-Jul-2024 Hristo Hristov <hghristov.rmm@gmail.com>

[libc++][memory] P1132R8: `out_ptr` - a scalable output pointer abstraction (#73618)

Differential Revision: https://reviews.llvm.org/D150525

Implements:
- https://wg21.link/P1132R8 - `out_ptr` -

[libc++][memory] P1132R8: `out_ptr` - a scalable output pointer abstraction (#73618)

Differential Revision: https://reviews.llvm.org/D150525

Implements:
- https://wg21.link/P1132R8 - `out_ptr` - a scalable output pointer
abstraction
- https://eel.is/c++draft/smartptr.adapt - 20.3.4 Smart pointer adaptors
- https://wg21.link/LWG3734 - Inconsistency in `inout_ptr` and `out_ptr`
for empty case
- https://wg21.link/LWG3897- `inout_ptr` will not update raw pointer to
0

---------

Co-authored-by: Hristo Hristov <zingam@outlook.com>

show more ...


# cb3de24b 18-Jul-2024 Hristo Hristov <hghristov.rmm@gmail.com>

[libc++][iterator][ranges] P2997R1: Removing the common reference requirement from the indirectly invocable concepts (#98817)

Implements as DR against C++20: https://wg21.link/P2997R1

References:

[libc++][iterator][ranges] P2997R1: Removing the common reference requirement from the indirectly invocable concepts (#98817)

Implements as DR against C++20: https://wg21.link/P2997R1

References:
- https://eel.is/c++draft/indirectcallable.indirectinvocable
- https://eel.is/c++draft/version.syn#header:%3cversion%3e

---------

Co-authored-by: Hristo Hristov <zingam@outlook.com>

show more ...


# 4a19be5d 18-Jul-2024 Hristo Hristov <hghristov.rmm@gmail.com>

[libc++][strings] P2591R5: Concatenation of strings and string views (#88389)

Implemented: https://wg21.link/P2591R5
- https://eel.is/c++draft/string.syn
- https://eel.is/c++draft/string.op.plus

[libc++][strings] P2591R5: Concatenation of strings and string views (#88389)

Implemented: https://wg21.link/P2591R5
- https://eel.is/c++draft/string.syn
- https://eel.is/c++draft/string.op.plus

---------

Co-authored-by: Hristo Hristov <zingam@outlook.com>

show more ...


# 4e338dce 15-Jul-2024 Xiaoyang Liu <siujoeng.lau@gmail.com>

[libc++] P2389R2: `dextents` Index Type Parameter (#97393)

This patch implements P2389R2, which was adopted at the St. Louis meeting.
It builds upon previous enhancements from P2299R3, which introd

[libc++] P2389R2: `dextents` Index Type Parameter (#97393)

This patch implements P2389R2, which was adopted at the St. Louis meeting.
It builds upon previous enhancements from P2299R3, which introduced deduction
guides and the `dextents` alias template.

show more ...


# deeb9368 10-Jul-2024 Mark de Wever <koraq@xs4all.nl>

[libc++][format] define __cpp_lib_format. (#98275)

In order to define the format __cpp_lib_format to its initial value
(201907) these papers need to be completed:
- P0645R10 Text Formatting
- P16

[libc++][format] define __cpp_lib_format. (#98275)

In order to define the format __cpp_lib_format to its initial value
(201907) these papers need to be completed:
- P0645R10 Text Formatting
- P1652R1 Printf corner cases in std::format
- 1361R2 Integration of chrono with text formatting The first two have
been implemented for a while the latter is almost done.

The next value (202106) requires:
- P2216R3 std::format improvements which has been implemented

The next value (202110) requires:
- P2418R2 Add support for std::generator-like types to std::format
- P2372R3 Fixing locale handling in chrono formatters The first one has
been implemented for a while the latter is almost done. The latter paper
is a DR against 1361R2 and both are implemented at the same time.

We've had user feedback that the missing of the __cpp_lib_format makes
their lives harder (https://github.com/llvm/llvm-project/issues/77773).
The missing papers 1361R2 and P2372R3 are very close to completion and
might completed before LLVM-19, but it will be a close call. This has
been discussed in the monthly libc++ meeting and we decided to set the
__cpp_lib_format so it will be set in LLVM-19.

Based on the discussion and the implementation status the
__cpp_lib_format is set to 202110.

Fixes #77773

show more ...


# e42f760b 09-Jul-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++] Define the __cpp_lib_atomic_ref feature test macro (#98081)

We forgot to enable it when we landed std::atomic_ref in 42ba740aff.


# 2dadf8d7 08-Jul-2024 Mark de Wever <koraq@xs4all.nl>

[libc++] Update status after the St. Louis meeting. (#97951)

This updates:
- The status tables
- Feature test macros
- New headers for modules


123456789