Skip to content

[libc++] Update status after the Kona meeting. #72421

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 16, 2023

Conversation

mordante
Copy link
Member

This updates:

  • The status tables
  • Feature test macros (including previously missing ones)
  • New headers for modules

@mordante mordante added the libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. label Nov 15, 2023
@mordante mordante requested a review from a team as a code owner November 15, 2023 18:11
@llvmbot
Copy link
Member

llvmbot commented Nov 15, 2023

@llvm/pr-subscribers-libcxx

Author: Mark de Wever (mordante)

Changes

This updates:

  • The status tables
  • Feature test macros (including previously missing ones)
  • New headers for modules

Patch is 115.76 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/72421.diff

25 Files Affected:

  • (modified) libcxx/docs/FeatureTestMacroTable.rst (+34)
  • (modified) libcxx/docs/Helpers/Styles.rst (+3)
  • (modified) libcxx/docs/Status/Cxx2cIssues.csv (+23-1)
  • (modified) libcxx/docs/Status/Cxx2cPapers.csv (+19)
  • (modified) libcxx/include/version (+38-1)
  • (modified) libcxx/modules/std.cppm.in (+6)
  • (added) libcxx/test/std/language.support/support.limits/support.limits.general/.version.compile.pass.cpp (+123)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp (+34)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/array.version.compile.pass.cpp (+34)
  • (added) libcxx/test/std/language.support/support.limits/support.limits.general/cstring.version.compile.pass.cpp (+71)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/expected.version.compile.pass.cpp (+36-2)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/map.version.compile.pass.cpp (+44)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp (+37-3)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp (+3-2)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp (+37-3)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp (+43)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/span.version.compile.pass.cpp (+36-2)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/string_view.version.compile.pass.cpp (+41-7)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp (+44)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/unordered_map.version.compile.pass.cpp (+44)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp (+44)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp (+36-2)
  • (modified) libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp (+550-2)
  • (modified) libcxx/utils/generate_feature_test_macro_components.py (+105-2)
  • (modified) libcxx/utils/libcxx/header_information.py (+2)
diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
index 42bf6eb46212d07..9b4e46404d658ea 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -236,6 +236,8 @@ Status
     --------------------------------------------------- -----------------
     ``__cpp_lib_format``                                *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_format_uchar``                          *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_generic_unordered_lookup``              ``201811L``
     --------------------------------------------------- -----------------
     ``__cpp_lib_int_pow2``                              ``202002L``
@@ -342,6 +344,8 @@ Status
     --------------------------------------------------- -----------------
     ``__cpp_lib_print``                                 *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_ranges_as_const``                       *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_ranges_as_rvalue``                      ``202207L``
     --------------------------------------------------- -----------------
     ``__cpp_lib_ranges_chunk``                          *unimplemented*
@@ -378,6 +382,8 @@ Status
     --------------------------------------------------- -----------------
     ``__cpp_lib_to_underlying``                         ``202102L``
     --------------------------------------------------- -----------------
+    ``__cpp_lib_tuple_like``                            *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_unreachable``                           ``202202L``
     --------------------------------------------------- -----------------
     **C++ 26**
@@ -392,18 +398,44 @@ Status
     --------------------------------------------------- -----------------
     ``__cpp_lib_copyable_function``                     *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_debugging``                             *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_algorithm``                *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_array``                    *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_cstring``                  *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_expected``                 *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_mdspan``                   *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_optional``                 *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_string_view``              *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_freestanding_variant``                  *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_fstream_native_handle``                 *unimplemented*
     --------------------------------------------------- -----------------
     ``__cpp_lib_function_ref``                          *unimplemented*
     --------------------------------------------------- -----------------
     ``__cpp_lib_hazard_pointer``                        *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_linalg``                                *unimplemented*
+    --------------------------------------------------- -----------------
+    ``__cpp_lib_out_ptr``                               *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_ratio``                                 ``202306L``
     --------------------------------------------------- -----------------
     ``__cpp_lib_rcu``                                   *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_saturation_arithmetic``                 *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_smart_ptr_owner_equality``              *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_span_initializer_list``                 *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_sstream_from_string_view``              *unimplemented*
     --------------------------------------------------- -----------------
     ``__cpp_lib_submdspan``                             *unimplemented*
@@ -412,6 +444,8 @@ Status
     --------------------------------------------------- -----------------
     ``__cpp_lib_to_chars``                              *unimplemented*
     --------------------------------------------------- -----------------
+    ``__cpp_lib_tuple_like``                            *unimplemented*
+    --------------------------------------------------- -----------------
     ``__cpp_lib_within_lifetime``                       *unimplemented*
     =================================================== =================
 
diff --git a/libcxx/docs/Helpers/Styles.rst b/libcxx/docs/Helpers/Styles.rst
index 31352efde608fcf..67560351d734397 100644
--- a/libcxx/docs/Helpers/Styles.rst
+++ b/libcxx/docs/Helpers/Styles.rst
@@ -23,6 +23,7 @@
         .spaceship { background-color: #B0E0E6; }
         .fc { background-color: #8EAF63; white-space:nowrap; }
         .concurrency { background-color: #909090; white-space:nowrap; }
+        .dr { background-color: #FFFF99; }
       </style>
 
 .. role:: notstarted
@@ -45,6 +46,7 @@
 .. role:: spaceship
 .. role:: fc
 .. role:: concurrency
+.. role:: dr
 
 .. |chrono| replace:: :chrono:`chrono`
 .. |format| replace:: :format:`format`
@@ -52,6 +54,7 @@
 .. |spaceship| replace:: :spaceship:`spaceship`
 .. |flat_containers| replace:: :fc:`flat containers`
 .. |concurrency TS| replace:: :concurrency:`concurrency TS`
+.. |DR| replace:: :dr:`Defect Report`
 
 .. |sect| unicode:: U+00A7
 .. |hellip| unicode:: U+2026
diff --git a/libcxx/docs/Status/Cxx2cIssues.csv b/libcxx/docs/Status/Cxx2cIssues.csv
index a928b69ea10c489..fe0f13f6e8cb2c2 100644
--- a/libcxx/docs/Status/Cxx2cIssues.csv
+++ b/libcxx/docs/Status/Cxx2cIssues.csv
@@ -17,6 +17,28 @@
 "`3938 <https://wg21.link/LWG3938>`__","Cannot use ``std::expected`` monadic ops with move-only ``error_type``","Varna June 2023","|Complete|","18.0",""
 "`3940 <https://wg21.link/LWG3940>`__","``std::expected<void, E>::value()`` also needs ``E`` to be copy constructible","Varna June 2023","","",""
 "","","","","",""
+"`2392 <https://wg21.link/LWG2392>`__","""character type"" is used but not defined","Kona November 2023","","",""
+"`3203 <https://wg21.link/LWG3203>`__","``span`` element access invalidation","Kona November 2023","","",""
+"`3305 <https://wg21.link/LWG3305>`__","``any_cast<void>``","Kona November 2023","","",""
+"`3431 <https://wg21.link/LWG3431>`__","``<=>`` for containers should require ``three_way_comparable<T>`` instead of ``<=>``","Kona November 2023","","",""
+"`3749 <https://wg21.link/LWG3749>`__","``common_iterator`` should handle integer-class difference types","Kona November 2023","","",""
+"`3809 <https://wg21.link/LWG3809>`__","Is ``std::subtract_with_carry_engine<uint16_t>`` supposed to work","Kona November 2023","","",""
+"`3892 <https://wg21.link/LWG3892>`__","Incorrect formatting of nested ranges and tuples","Kona November 2023","|Complete|","17.0","|format|"
+"`3897 <https://wg21.link/LWG3897>`__","``inout_ptr`` will not update raw pointer to 0","Kona November 2023","","",""
+"`3946 <https://wg21.link/LWG3946>`__","The definition of ``const_iterator_t`` should be reworked","Kona November 2023","","",""
+"`3947 <https://wg21.link/LWG3947>`__","Unexpected constraints on ``adjacent_transform_view::base()``","Kona November 2023","","","|ranges|"
+"`3948 <https://wg21.link/LWG3948>`__","``possibly-const-range and as-const-pointer`` should be ``noexcept``","Kona November 2023","","","|ranges|"
+"`3949 <https://wg21.link/LWG3949>`__","``std::atomic<bool>``'s trivial destructor dropped in C++17 spec wording","Kona November 2023","","",""
+"`3951 <https://wg21.link/LWG3951>`__","[expected.object.swap]: Using ``value()`` instead of ``has_value()``","Kona November 2023","","",""
+"`3953 <https://wg21.link/LWG3953>`__","``iter_move`` for ``common_iterator`` and ``counted_iterator`` should return ``decltype(auto)``","Kona November 2023","","","|ranges|"
+"`3957 <https://wg21.link/LWG3957>`__","[container.alloc.reqmts] The value category of v should be claimed","Kona November 2023","","",""
+"`3965 <https://wg21.link/LWG3965>`__","Incorrect example in [format.string.escaped] p3 for formatting of combining characters","Kona November 2023","","","|format|"
+"`3970 <https://wg21.link/LWG3970>`__","[mdspan.syn] Missing definition of ``full_extent_t`` and ``full_extent``","Kona November 2023","","",""
+"`3973 <https://wg21.link/LWG3973>`__","Monadic operations should be ADL-proof","Kona November 2023","","",""
+"`3974 <https://wg21.link/LWG3974>`__","``mdspan::operator[]`` should not copy ``OtherIndexTypes``","Kona November 2023","","",""
+"`3987 <https://wg21.link/LWG3987>`__","Including ``<flat_foo>`` doesn't provide ``std::begin``/``end``","Kona November 2023","","","|flat_containers|"
+"`3990 <https://wg21.link/LWG3990>`__","Program-defined specializations of ``std::tuple`` and ``std::variant`` can't be properly supported","Kona November 2023","","",""
+"`4001 <https://wg21.link/LWG4001>`__","``iota_view`` should provide ``empty``","Kona November 2023","","","|ranges|"
+"","","","","",""
 "`3343 <https://wg21.link/LWG3343>`__","Ordering of calls to ``unlock()`` and ``notify_all()`` in Effects element of ``notify_all_at_thread_exit()`` should be reversed","Not Yet Adopted","|Complete|","16.0",""
-"`3892 <https://wg21.link/LWG3892>`__","Incorrect formatting of nested ranges and tuples","Not Yet Adopted","|Complete|","17.0","|format|"
 "","","","","",""
diff --git a/libcxx/docs/Status/Cxx2cPapers.csv b/libcxx/docs/Status/Cxx2cPapers.csv
index 0590e2d487c27bd..eb5398f66d0e0c1 100644
--- a/libcxx/docs/Status/Cxx2cPapers.csv
+++ b/libcxx/docs/Status/Cxx2cPapers.csv
@@ -27,3 +27,22 @@
 "`P2714R1 <https://wg21.link/P2714R1>`__","LWG","Bind front and back to NTTP callables","Varna June 2023","","",""
 "`P2630R4 <https://wg21.link/P2630R4>`__","LWG","``submdspan``","Varna June 2023","","",""
 "","","","","","",""
+"`P0543R3 <https://wg21.link/P0543R3>`__","LWG","Saturation arithmetic","Kona November 2023","","",""
+"`P2407R5 <https://wg21.link/P2407R5>`__","LWG","Freestanding Library: Partial Classes","Kona November 2023","","",""
+"`P2546R5 <https://wg21.link/P2546R5>`__","LWG","Debugging Support","Kona November 2023","","",""
+"`P2905R2 <https://wg21.link/P2905R2>`__","LWG","Runtime format strings","Kona November 2023","","","|format| |DR|"
+"`P2918R2 <https://wg21.link/P2918R2>`__","LWG","Runtime format strings II","Kona November 2023","","","|format|"
+"`P2909R4 <https://wg21.link/P2909R4>`__","LWG","Fix formatting of code units as integers (Dude, where’s my ``char``?)","Kona November 2023","","","|format| |DR|"
+"`P0952R2 <https://wg21.link/P0952R2>`__","LWG","A new specification for ``std::generate_canonical``","Kona November 2023","","",""
+"`P2447R6 <https://wg21.link/P2447R6>`__","LWG","``std::span`` over an initializer list","Kona November 2023","","",""
+"`P2821R5 <https://wg21.link/P2821R5>`__","LWG","``span.at()``","Kona November 2023","","",""
+"`P2868R3 <https://wg21.link/P2868R3>`__","LWG","Remove Deprecated ``std::allocator`` Typedef From C++26","Kona November 2023","","",""
+"`P2870R3 <https://wg21.link/P2870R3>`__","LWG","Remove ``basic_string::reserve()`` From C++26","Kona November 2023","","",""
+"`P2871R3 <https://wg21.link/P2871R3>`__","LWG","Remove Deprecated Unicode Conversion Facets from C++26","Kona November 2023","","",""
+"`P2819R2 <https://wg21.link/P2819R2>`__","LWG","Add tuple protocol to complex","Kona November 2023","","",""
+"`P2937R0 <https://wg21.link/P2937R0>`__","LWG","Freestanding: Remove ``strtok``","Kona November 2023","","",""
+"`P2833R2 <https://wg21.link/P2833R2>`__","LWG","Freestanding Library: inout expected span","Kona November 2023","","",""
+"`P2836R1 <https://wg21.link/P2836R1>`__","LWG","``std::basic_const_iterator`` should follow its underlying type's convertibility","Kona November 2023","","","|DR|"
+"`P2264R7 <https://wg21.link/P2264R7>`__","LWG","Make ``assert()`` macro user friendly for C and C++","Kona November 2023","","",""
+"`P1673R13 <https://wg21.link/P1673R13>`__","LWG","A free function linear algebra interface based on the BLAS","Kona November 2023","","",""
+"","","","","","",""
diff --git a/libcxx/include/version b/libcxx/include/version
index ec0cb0813492383..0db366af9e42e63 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -79,6 +79,7 @@ __cpp_lib_constexpr_utility                             201811L <utility>
 __cpp_lib_constexpr_vector                              201907L <vector>
 __cpp_lib_copyable_function                             202306L <functional>
 __cpp_lib_coroutine                                     201902L <coroutine>
+__cpp_lib_debugging                                     202311L <debugging>
 __cpp_lib_destroying_delete                             201806L <new>
 __cpp_lib_enable_shared_from_this                       201603L <memory>
 __cpp_lib_endian                                        201907L <bit>
@@ -92,8 +93,17 @@ __cpp_lib_expected                                      202211L <expected>
 __cpp_lib_filesystem                                    201703L <filesystem>
 __cpp_lib_format                                        202106L <format>
 __cpp_lib_format_ranges                                 202207L <format>
+__cpp_lib_format_uchar                                  202311L <>
 __cpp_lib_formatters                                    202302L <stacktrace> <thread>
 __cpp_lib_forward_like                                  202207L <utility>
+__cpp_lib_freestanding_algorithm                        202311L <algorithm>
+__cpp_lib_freestanding_array                            202311L <array>
+__cpp_lib_freestanding_cstring                          202306L <cstring>
+__cpp_lib_freestanding_expected                         202311L <expected>
+__cpp_lib_freestanding_mdspan                           202311L <mdspan>
+__cpp_lib_freestanding_optional                         202311L <optional>
+__cpp_lib_freestanding_string_view                      202311L <string_view>
+__cpp_lib_freestanding_variant                          202311L <variant>
 __cpp_lib_fstream_native_handle                         202306L <fstream>
 __cpp_lib_function_ref                                  202306L <functional>
 __cpp_lib_gcd_lcm                                       201606L <numeric>
@@ -124,6 +134,7 @@ __cpp_lib_is_swappable                                  201603L <type_traits>
 __cpp_lib_jthread                                       201911L <stop_token> <thread>
 __cpp_lib_latch                                         201907L <latch>
 __cpp_lib_launder                                       201606L <new>
+__cpp_lib_linalg                                        202311L <linalg>
 __cpp_lib_list_remove_return_type                       201806L <forward_list> <list>
 __cpp_lib_logical_traits                                201510L <type_traits>
 __cpp_lib_make_from_tuple                               201606L <tuple>
@@ -146,13 +157,15 @@ __cpp_lib_not_fn                                        201603L <functional>
 __cpp_lib_null_iterators                                201304L <iterator>
 __cpp_lib_optional                                      202110L <optional>
                                                         201606L // C++17
-__cpp_lib_out_ptr                                       202106L <memory>
+__cpp_lib_out_ptr                                       202311L <memory>
+                                                        202106L // C++23
 __cpp_lib_parallel_algorithm                            201603L <algorithm> <numeric>
 __cpp_lib_polymorphic_allocator                         201902L <memory_resource>
 __cpp_lib_print                                         202207L <ostream> <print>
 __cpp_lib_quoted_string_io                              201304L <iomanip>
 __cpp_lib_ranges                                        202207L <algorithm> <functional> <iterator>
                                                                 <memory> <ranges>
+__cpp_lib_ranges_as_const                               202207L <ranges>
 __cpp_lib_ranges_as_rvalue                              202207L <ranges>
 __cpp_lib_ranges_chunk                                  202202L <ranges>
 __cpp_lib_ranges_chunk_by                               202202L <ranges>
@@ -174,6 +187,7 @@ __cpp_lib_remove_cvref                                  201711L <type_traits>
 __cpp_lib_result_of_sfinae                              201210L <functional> <type_traits>
 __cpp_lib_robust_nonmodifying_seq_ops                   201304L <algorithm>
 __cpp_lib_sample                                        201603L <algorithm>
+__cpp_lib_saturation_arithmetic                         202311L <>
 __cpp_lib_scoped_lock                                   201703L <mutex>
 __cpp_lib_semaphore                                     201907L <semaphore>
 __cpp_lib_shared_mutex                                  201505L <shared_mutex>
@@ -186,6 +200,7 @@ __cpp_lib_smart_ptr_for_overwrite                       202002L <memory>
 __cpp_lib_smart_ptr_owner_equality                      202306L <memory>
 __cpp_lib_source_location                               201907L <source_location>
 __cpp_lib_span                                          202002L <span>
+__cpp_lib_span_initializer_list                         202311L <span>
 __cpp_lib_spanstream                                    202106L <spanstream>
 __cpp_lib_ssize                                         201902L <iterator>
 __cpp_lib_sstream_from_string_view                      202306L <sstream>
@@ -211,6 +226,9 @@ __cpp_lib_transformation_trait_aliases                  201304L <type_traits>
 __cpp_lib_transparent_operators                         201510L <functional> <memory>
                                                         201210L // C++14
 __cpp_lib_tuple_element_t                               201402L <tuple>
+__cpp_lib_tuple_like                                    202311L <map> <tuple> <unordered_map>
+                                                                <utility>
+                                                        202207L // C++23
 __cpp_lib_tuples_by_type                                201304L <tuple> <utility>
 __cpp_lib_type_identity                                 201806L <type_traits>
 __cpp_lib_type_trait_variable_templates                 201510L <type_traits>
@@ -364,6 +382,7 @@ __cpp_lib_within_lifetime                               202306L <type_traits>
 # undef  __cpp_lib_execution
 // # define __cpp_lib_execution                            201902L
 // # define __cpp_lib_format                               202106L
+// # define __cpp_lib_format_uchar                         202311L
 # define __cpp_lib_generic_unordered_lookup             201811L
 # define __cpp_lib_int_pow2                             202002L
 # define __cpp_lib_integer_comparison_functions         202002L
@@ -435,6 +454,7 @@ __cpp_lib_within_lifetime                               202306L <type_traits>
 # define __cpp_lib_optional                             202110L
 // # define __cpp_lib_out_ptr                              202106L
 ...
[truncated]

Copy link

github-actions bot commented Nov 15, 2023

✅ With the latest revision this PR passed the Python code formatter.

Copy link
Member

@ldionne ldionne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, thanks!

This updates:
- The status tables
- Feature test macros (including previously missing ones)
- New headers for modules
@mordante mordante force-pushed the GH-Kona_status_update branch from f304721 to 6c346c1 Compare November 15, 2023 19:02
@mordante mordante merged commit f49ccca into llvm:main Nov 16, 2023
@mordante mordante deleted the GH-Kona_status_update branch November 16, 2023 09:17
sr-tream pushed a commit to sr-tream/llvm-project that referenced this pull request Nov 20, 2023
This updates:
- The status tables
- Feature test macros (including previously missing ones)
- New headers for modules
zahiraam pushed a commit to zahiraam/llvm-project that referenced this pull request Nov 20, 2023
This updates:
- The status tables
- Feature test macros (including previously missing ones)
- New headers for modules
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants