llvm-project/libcxx/docs/Status/Cxx23Papers.csv
Mark de Wever ad76a85954
[libc++][format] Improves escaping. (#88283)
The change increments the size of the lookup table considerably. The
table has an "upper boundary" check. The removal of the code units with
the property Grapheme_Extend=Yes removes the range E0100..E01EF. This
breaks the trailing large continuous section in two parts. This will be
improved in a followup patch.

Implements:
- P2713R1 Escaping improvements in std::format
- LWG3965 Incorrect example in [format.string.escaped] p3 for formatting
of combining characters

```
---------------------------------------------------------
Benchmark                           Before          After    
---------------------------------------------------------
BM_ascii_escaped<char>            95696 ns      110704 ns
BM_unicode_escaped<char>          89311 ns      101371 ns
BM_cyrillic_escaped<char>         58633 ns       63329 ns
BM_japanese_escaped<char>         44500 ns       41223 ns
BM_emoji_escaped<char>            99156 ns      111022 ns
BM_ascii_escaped<wchar_t>         92245 ns      112441 ns
BM_unicode_escaped<wchar_t>       80970 ns      102776 ns
BM_cyrillic_escaped<wchar_t>      51253 ns       58977 ns
BM_japanese_escaped<wchar_t>      37252 ns       36885 ns
BM_emoji_escaped<wchar_t>         96226 ns      115885 ns
```
2024-04-25 17:16:41 +02:00

15 KiB
Raw Blame History

1Paper #GroupPaper NameMeetingStatusFirst released versionLabels
2
3`P2017R1 <https://wg21.link/P2017R1>`__LWGConditionally borrowed rangesFebruary 2021|Complete|16.0|ranges|
4`P2259R1 <https://wg21.link/P2259R1>`__LWGRepairing input range adaptors and counted_iteratorFebruary 2021|ranges|
5
6`P1425R4 <https://wg21.link/P1425R4>`__LWGIterators pair constructors for stack and queueJune 2021|Complete|14.0|ranges|
7`P1659R3 <https://wg21.link/P1659R3>`__LWGstarts_with and ends_withJune 2021|Complete|19.0|ranges|
8`P1989R2 <https://wg21.link/P1989R2>`__LWGRange constructor for std::string_viewJune 2021|Complete|14.0|ranges|
9
10`P2321R2 <https://wg21.link/P2321R2>`__LWG``zip``October 2021|In Progress||ranges|
11
12`P1206R7 <https://wg21.link/P1206R7>`__LWG``ranges::to``: A function to convert any range to a containerFebruary 2022|Complete|17.0|ranges|
13`P2387R3 <https://wg21.link/P2387R3>`__LWGPipe support for user-defined range adaptorsFebruary 2022|Complete|19.0|ranges|
14`P2440R1 <https://wg21.link/P2440R1>`__LWG``ranges::iota``, ``ranges::shift_left`` and ``ranges::shift_right``February 2022|ranges|
15`P2441R2 <https://wg21.link/P2441R2>`__LWG``views::join_with``February 2022|In Progress||ranges|
16`P2442R1 <https://wg21.link/P2442R1>`__LWGWindowing range adaptors: ``views::chunk`` and ``views::slide``February 2022|ranges|
17`P2443R1 <https://wg21.link/P2443R1>`__LWG``views::chunk_by``February 2022|Complete|18.0|ranges|
18
19`P1223R5 <https://wg21.link/P1223R5>`__LWG``ranges::find_last()``, ``ranges::find_last_if()``, and ``ranges::find_last_if_not()``July 2022|ranges|
20`P1899R3 <https://wg21.link/P1899R3>`__LWG``stride_view``July 2022|ranges|
21`P2093R14 <https://wg21.link/P2093R14>`__LWGFormatted outputJuly 2022|Complete|18.0
22`P2278R4 <https://wg21.link/P2278R4>`__LWG``cbegin`` should always return a constant iteratorJuly 2022|ranges|
23`P2286R8 <https://wg21.link/P2286R8>`__LWGFormatting RangesJuly 2022|Complete|16.0|format| |ranges|
24`P2302R4 <https://wg21.link/P2302R4>`__LWG``std::ranges::contains``July 2022|Complete|19.0|ranges|
25`P2322R6 <https://wg21.link/P2322R6>`__LWG``ranges::fold``July 2022|ranges|
26`P2374R4 <https://wg21.link/P2374R4>`__LWG``views::cartesian_product``July 2022|ranges|
27`P2408R5 <https://wg21.link/P2408R5>`__LWGRanges iterators as inputs to non-Ranges algorithmsJuly 2022|ranges|
28`P2446R2 <https://wg21.link/P2446R2>`__LWG``views::as_rvalue``July 2022|Complete|16.0|ranges|
29`P2467R1 <https://wg21.link/P2467R1>`__LWGSupport exclusive mode for ``fstreams``July 2022|Complete|18.0
30`P2474R2 <https://wg21.link/P2474R2>`__LWG``views::repeat``July 2022|Complete|17.0|ranges|
31`P2494R2 <https://wg21.link/P2494R2>`__LWGRelaxing range adaptors to allow for move only typesJuly 2022|Complete|17.0|ranges|
32`P2499R0 <https://wg21.link/P2499R0>`__LWG``string_view`` range constructor should be ``explicit``July 2022|Complete|16.0|ranges|
33`P2502R2 <https://wg21.link/P2502R2>`__LWG``std::generator``: Synchronous Coroutine Generator for RangesJuly 2022|ranges|
34`P2520R0 <https://wg21.link/P2520R0>`__LWG``move_iterator`` should be a random access iteratorJuly 2022|Complete| [#note-P2520R0]_17.0|ranges|
35`P2540R1 <https://wg21.link/P2540R1>`__LWGEmpty Product for certain ViewsJuly 2022|ranges|
36
37`P1202R5 <https://wg21.link/P1202R5>`__LWGAsymmetric FencesNovember 2022|concurrency TS|
38`P1264R2 <https://wg21.link/P1264R2>`__LWGRevising the wording of ``stream`` input operationsNovember 2022|Complete|9.0
39`P1478R8 <https://wg21.link/P1478R8>`__LWG``Byte-wise`` ``atomic`` ``memcpy``November 2022|concurrency TS|
40`P2167R3 <https://wg21.link/P2167R3>`__LWGImproved Proposed Wording for LWG 2114November 2022
41`P2396R1 <https://wg21.link/P2396R1>`__LWGConcurrency TS 2 fixes November 2022|concurrency TS|
42`P2505R5 <https://wg21.link/P2505R5>`__LWGMonadic Functions for ``std::expected``November 2022|Complete|17.0
43`P2539R4 <https://wg21.link/P2539R4>`__LWGShould the output of ``std::print`` to a terminal be synchronized with the underlying stream?November 2022|Complete|18.0|format|
44`P2602R2 <https://wg21.link/P2602R2>`__LWGPoison Pills are Too ToxicNovember 2022|Complete|19.0|ranges|
45`P2708R1 <https://wg21.link/P2708R1>`__LWGNo Further Fundamentals TSesNovember 2022|Nothing to do|
46
47`P0290R4 <https://wg21.link/P0290R4>`__LWG``apply()`` for ``synchronized_value<T>``February 2023|concurrency TS|
48`P2770R0 <https://wg21.link/P2770R0>`__LWGStashing stashing ``iterators`` for proper flatteningFebruary 2023|Partial| [#note-P2770R0]_|ranges|
49`P2164R9 <https://wg21.link/P2164R9>`__LWG``views::enumerate``February 2023|ranges|
50`P2711R1 <https://wg21.link/P2711R1>`__LWGMaking multi-param constructors of ``views`` ``explicit``February 2023|In Progress| [#note-P2711R1]_|ranges|
51`P2609R3 <https://wg21.link/P2609R3>`__LWGRelaxing Ranges Just A SmidgeFebruary 2023|ranges|
52`P2713R1 <https://wg21.link/P2713R1>`__LWGEscaping improvements in ``std::format``February 2023|Complete|19.0|format|
53`P2675R1 <https://wg21.link/P2675R1>`__LWG``format``'s width estimation is too approximate and not forward compatibleFebruary 2023|Complete|17.0|format|
54`P2572R1 <https://wg21.link/P2572R1>`__LWG``std::format`` fill character allowancesFebruary 2023|Complete|17.0|format|
55`P2693R1 <https://wg21.link/P2693R1>`__LWGFormatting ``thread::id`` and ``stacktrace``February 2023|Partial| [#note-P2693R1]_|format|
56`P2679R2 <https://wg21.link/P2679R2>`__LWGFixing ``std::start_lifetime_as`` for arraysFebruary 2023
57`P2674R1 <https://wg21.link/P2674R1>`__LWGA trait for implicit lifetime typesFebruary 2023
58`P2655R3 <https://wg21.link/P2655R3>`__LWG``common_reference_t`` of ``reference_wrapper`` Should Be a Reference TypeFebruary 2023
59`P2652R2 <https://wg21.link/P2652R2>`__LWGDisallow User Specialization of ``allocator_traits``February 2023|Complete|19.0
60`P2787R1 <https://wg21.link/P2787R1>`__LWG``pmr::generator`` - Promise Types are not ValuesFebruary 2023
61`P2614R2 <https://wg21.link/P2614R2>`__LWGDeprecate ``numeric_limits::has_denorm``February 2023|Complete|18.0
62`P2588R3 <https://wg21.link/P2588R3>`__LWG``barrier``s phase completion guaranteesFebruary 2023
63`P2763R1 <https://wg21.link/P2763R1>`__LWG``layout_stride`` static extents default constructor fixFebruary 2023
64`P2736R2 <https://wg21.link/P2736R2>`__CWGReferencing The Unicode StandardFebruary 2023|format|