<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in format</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>13249036 - [libc++][format] Exposes basic-format-string</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#13249036</link>
        <description>[libc++][format] Exposes basic-format-stringThis paper was accepted during the last plenary and is intended to bebackported to LLVM 15. When backporting the release notes in the branchshould be updated too.Note the feature-test macro isn&apos;t updated since this will change; threepapers have updated the same macro in the same plenary.Implements:- P2508R1 Exposing std::basic-format-stringReviewed By: ldionne, #libcDifferential Revision: https://reviews.llvm.org/D130643(cherry picked from commit f712775dafdb221fdf73f38819fa9e618aec6b67)

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Fri, 15 Jul 2022 05:42:17 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>857a78c0 - [libc++] Implements Unicode grapheme clustering</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#857a78c0</link>
        <description>[libc++] Implements Unicode grapheme clusteringThis implements the Grapheme clustering as required byP1868R2 width: clarifying units of width and precision in std::formatThis was omitted in the initial patch, but the paper was marked as completed. This really completes the paper.Reviewed By: ldionne, #libcDifferential Revision: https://reviews.llvm.org/D126971

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Sat, 28 May 2022 13:30:10 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>8711fcae - [libc++] Treat incomplete features just like other experimental features</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#8711fcae</link>
        <description>[libc++] Treat incomplete features just like other experimental featuresIn particular remove the ability to expel incomplete features from thelibrary at configure-time, since this can now be done through the_LIBCPP_ENABLE_EXPERIMENTAL macro.Also, never provide symbols related to incomplete features inside thedylib, instead provide them in c++experimental.a (this changes thesymbols list, but not for any configuration that should have shipped).Differential Revision: https://reviews.llvm.org/D128928

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Thu, 30 Jun 2022 15:57:52 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>65897292 - [libc++][format] Improves parsing speed.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#65897292</link>
        <description>[libc++][format] Improves parsing speed.A format string like &quot;{}&quot; is quite common. In this case avoid parsingthe format-spec when it&apos;s not present. Before the parsing was alwayscalled, therefore some refactoring is done to make sure the formatterswork properly when their parse member isn&apos;t called.From the wording it&apos;s not entirely clear whether this optimization isallowed[tab:formatter]```  and the range [pc.begin(), pc.end()) from the last call to f.parse(pc).```Implies there&apos;s always a call to `f.parse` even when the format-specisn&apos;t present. Therefore this optimization isn&apos;t done for handleclasses; it&apos;s unclear whether that would break user defined formatters.The improvements give a small reduciton is code size: 719408	  12472	    488	 732368	  b2cd0	before 718824	  12472	    488	 731784	  b2a88	afterThe performance benefits when not using a format-spec are:```Comparing ./formatter_int.libcxx.out-baseline to ./formatter_int.libcxx.outBenchmark                                                               Time             CPU      Time Old      Time New       CPU Old       CPU New----------------------------------------------------------------------------------------------------------------------------------------------------BM_Basic&lt;uint32_t&gt;                                                   -0.0688         -0.0687            67            62            67            62BM_Basic&lt;int32_t&gt;                                                    -0.1105         -0.1107            73            65            73            65BM_Basic&lt;uint64_t&gt;                                                   -0.1053         -0.1049            95            85            95            85BM_Basic&lt;int64_t&gt;                                                    -0.0889         -0.0888            93            85            93            85BM_BasicLow&lt;__uint128_t&gt;                                             -0.0655         -0.0655            96            90            96            90BM_BasicLow&lt;__int128_t&gt;                                              -0.0693         -0.0694            97            90            97            90BM_Basic&lt;__uint128_t&gt;                                                -0.0359         -0.0359           256           247           256           247BM_Basic&lt;__int128_t&gt;                                                 -0.0414         -0.0414           239           229           239           229```For the cases where a format-spec is used the results remain similar,some are faster some are slower, differing per run.Reviewed By: ldionne, #libcDifferential Revision: https://reviews.llvm.org/D129426

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Sat, 09 Jul 2022 14:14:40 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>606e2808 - [libc++][format] Use forwarding references.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#606e2808</link>
        <description>[libc++][format] Use forwarding references.This implements a not accepted LWG issue. Not doing so would requireintegral types to use the handle class instead of being directly storedin the basic_format_arg.The previous code used `std::forward` in places where it wasn&apos;t requiredby the Standard. These are now removed.Implements:- P2418R2 Add support for std::generator-like types to std::format- LWG 3631 basic_format_arg(T&amp;&amp;) should use remove_cvref_t&lt;T&gt; throughoutReviewed By: ldionne, #libcDifferential Revision: https://reviews.llvm.org/D127570

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Tue, 05 Oct 2021 17:25:37 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>77ad77c0 - [libc++][format] Improve string formatters</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#77ad77c0</link>
        <description>[libc++][format] Improve string formattersThis changes the implementation of the formatter. Instead of inheritingfrom a specialized parser all formatters will use the same genericparser. This reduces the binary size.The new parser contains some additional fields only used in the chronoformatting. Since this doesn&apos;t change the size of the parser the fieldsare in the generic parser. The parser is designed to fit in 128-bit,making it cheap to pass by value.The new format function is a const member function. This isn&apos;t requiredby the Standard yet, but it will be after LWG-3636 is accepted.Additionally P2286 adds a formattable concept which requires the memberfunction to be const qualified in C++23. This paper is likely to beaccepted in the 2022 July plenary.Depends on D121530NOTE parts of the code now contains duplicates for the current and new parser.The intention is to remove the duplication in followup patches. A generaloverview of the final code is available in D124620. That review however lacks abit of polish.Most of the new code is based on the same algorithms used in the current code.The final version of this code reduces the binary size by 17 KB for this examplecode```int main() {  {    std::string_view sv{&quot;hello world&quot;};    std::format(&quot;{}{}|{}{}{}{}{}{}|{}{}{}{}{}{}|{}{}{}|{}{}|{}&quot;, true, &apos;*&apos;,                (signed char)(42), (short)(42), (int)(42), (long)(42), (long long)(42), (__int128_t)(42),                (unsigned char)(42), (unsigned short)(42), (unsigned int)(42), (unsigned long)(42),                (unsigned long long)(42), (__uint128_t)(42),                (float)(42), (double)(42), (long double)(42),                &quot;hello world&quot;, sv,                nullptr);  }  {    std::wstring_view sv{L&quot;hello world&quot;};    std::format(L&quot;{}{}|{}{}{}{}{}{}|{}{}{}{}{}{}|{}{}{}|{}{}|{}&quot;, true, L&apos;*&apos;,                (signed char)(42), (short)(42), (int)(42), (long)(42), (long long)(42), (__int128_t)(42),                (unsigned char)(42), (unsigned short)(42), (unsigned int)(42), (unsigned long)(42),                (unsigned long long)(42), (__uint128_t)(42),                (float)(42), (double)(42), (long double)(42),                L&quot;hello world&quot;, sv,                nullptr);  }}```Reviewed By: #libc, ldionneDifferential Revision: https://reviews.llvm.org/D125606

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Tue, 28 Dec 2021 17:48:04 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>4cd04d16 - [libc++] Removes unneeded &lt;iterator&gt; includes.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#4cd04d16</link>
        <description>[libc++] Removes unneeded &lt;iterator&gt; includes.Reviewed By: #libc, philnikDifferential Revision: https://reviews.llvm.org/D127675

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Mon, 13 Jun 2022 18:05:36 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>aed5ddf8 - [libc++][format] Implement format-string.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#aed5ddf8</link>
        <description>[libc++][format] Implement format-string.Implements the compile-time checking of the formatting arguments.Completes:- P2216 std::format improvementsReviewed By: #libc, ldionneDifferential Revision: https://reviews.llvm.org/D121530

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Sat, 02 Oct 2021 10:38:46 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>3cd4531b - [libc++] Granularize &lt;iterator&gt; includes</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#3cd4531b</link>
        <description>[libc++] Granularize &lt;iterator&gt; includesReviewed By: ldionne, #libcSpies: libcxx-commits, wenleiDifferential Revision: https://reviews.llvm.org/D127445

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Fri, 10 Jun 2022 17:53:10 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>f0c06c04 - [libc++][format][5/6] Improve format_to_n.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#f0c06c04</link>
        <description>[libc++][format][5/6] Improve format_to_n.Use a specialized buffer wrapper to limit the number of insertions in thebuffer. After the limit has been reached the buffer only needs to countthe number of insertions to return the buffer size required to store theentire output.Depends on D110498Reviewed By: #libc, MordanteDifferential Revision: https://reviews.llvm.org/D110499

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Sun, 26 Sep 2021 15:04:53 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>4d8268fb - [libc++][format] Improve format-arg-store.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#4d8268fb</link>
        <description>[libc++][format] Improve format-arg-store.This optimizes the __format_arg_store type to allow a more efficientstorage of the basic_format_args.It stores the data in two arrays:- A struct with the tag of the exposition only variant&apos;s type and the  offset of the element in the data array. Since this array only depends  on the type information it&apos;s calculated at compile time and can be  shared by different instances of this class.- The arguments converted to the types used in the exposition only  variant of basic_format_arg. This means the packed data can be  directly copied to an element of this variant.The new code uses rvalue reference arguments in preparation for P2418.The handle class also has some changes to prepare for P2418. The realchanged for P2418 will be done separately, but these parts make iteasier to implement that paper.Some parts of existing test code are removed since they were no longervalid after the changes, but new tests have been added.Implements parts of:- P2418 Add support for std::generator-like types to std::formatCompletes:- LWG3473 Normative encouragement in non-normative noteDepends on D121138Reviewed By: #libc, vitaut, MordanteDifferential Revision: https://reviews.llvm.org/D121514

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Sun, 03 Oct 2021 11:11:53 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>15c809e8 - [libc++][format] Adds a formattable concept.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#15c809e8</link>
        <description>[libc++][format] Adds a formattable concept.The concept is based on P2286R2 Formatting Ranges. It will be used tooptimise the storage of __format_arg_store as required by LWG-3473.Depends on D120916Reviewed By: #libc, MordanteDifferential Revision: https://reviews.llvm.org/D120921

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Sun, 30 Jan 2022 15:08:19 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>fb9a692b - [libc++][format][4/6] Improve formatted_size.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#fb9a692b</link>
        <description>[libc++][format][4/6] Improve formatted_size.Use a specialized &quot;buffer&quot; to count the number of insertions instead ofusing a `string` as storage type.Depends on D110497.Reviewed By: ldionne, #libcDifferential Revision: https://reviews.llvm.org/D110498

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Sun, 26 Sep 2021 14:48:25 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>88930229 - [libc++][format][3/6] Adds a __container_buffer.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#88930229</link>
        <description>[libc++][format][3/6] Adds a __container_buffer.Instead of writing every character directly into the container by usinga `back_insert_iterator` the data is buffered in an `array`. This bufferis then inserted to the container by calling its `insert` member function.Since there&apos;s no guarantee every container&apos;s `insert` behaves properlycontainers need to opt-in to this behaviour. The appropriate standardcontainers opt-in to this behaviour.This change improves the performance of the format functions that use a`back_insert_iterator`.Depends on D110495Reviewed By: ldionne, vitaut, #libcDifferential Revision: https://reviews.llvm.org/D110497

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Sun, 26 Sep 2021 13:47:42 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>385cc25a - [libc++] Ensure that all public C++ headers include &lt;__assert&gt;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#385cc25a</link>
        <description>[libc++] Ensure that all public C++ headers include &lt;__assert&gt;This patch changes the requirement for getting the declaration of theassertion handler from including &lt;__assert&gt; to including any publicC++ header of the library. Note that C compatibility headers areexcluded because we don&apos;t implement all the C headers ourselves --some of them are taken straight from the C library, like assert.h.It also adds a generated test to check it. Furthermore, this newgenerated test is designed in a way that will make it possible toreplace almost all the existing test-generation scripts with thissystem in upcoming patches.Differential Revision: https://reviews.llvm.org/D122506

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Fri, 25 Mar 2022 16:55:36 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>555214cb - [libc++][format][2/6] Adds a __output_iterator.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#555214cb</link>
        <description>[libc++][format][2/6] Adds a __output_iterator.Instead of using a temporary `string` in `__vformat_to_wrapped` use a newgeneric iterator. This aids to reduce the number of template instantionsand avoids using a `string` to buffer the entire formatted output.This changes the type of `format_context` and `wformat_context`, this canstill be done since the code isn&apos;t ABI stable yet.Several approaches have been evaluated:- Using a __output_buffer base class with:  - a put function to store the buffer in its internal buffer  - a virtual flush function to copy the internal buffer to the output- Using a `function` to forward the output operation to the output buffer,  much like the next method.- Using a type erased function point to store the data in the buffer.The last version resulted in the best performance. For some cases there&apos;sstill a loss of speed over the original method. This loss many becomesapparent when large strings are copied to a pointer like iterator, beforethe compiler optimized this using `memcpy`.Reviewed By: ldionne, vitaut, #libcDifferential Revision: https://reviews.llvm.org/D110495

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Sat, 04 Sep 2021 19:05:23 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>d2baefae - [libc++] Replace _LIBCPP_HAS_NO_CONCEPTS with _LIBCPP_STD_VER &gt; 17. NFCI.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#d2baefae</link>
        <description>[libc++] Replace _LIBCPP_HAS_NO_CONCEPTS with _LIBCPP_STD_VER &gt; 17. NFCI.All supported compilers that support C++20 now support concepts. So, remove`_LIB_LIBCPP_HAS_NO_CONCEPTS` in favor of `_LIBCPP_STD_VER &gt; 17`. Similarly inthe tests, remove `// UNSUPPORTED: libcpp-no-concepts`.Differential Revision: https://reviews.llvm.org/D121528

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Sat, 12 Mar 2022 15:46:57 +0000</pubDate>
        <dc:creator>Joe Loser &lt;joeloser93@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>2e2f3158 - [libc++] Granularize algorithm includes</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#2e2f3158</link>
        <description>[libc++] Granularize algorithm includesReviewed By: Mordante, ldionne, Quuxplusone, #libc, #libc_abiSpies: #libc_vendors, libcxx-commits, miyukiDifferential Revision: https://reviews.llvm.org/D119667

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Tue, 15 Feb 2022 17:18:08 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>11e4001b - [libc++][format][nfc] Header cleanup.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#11e4001b</link>
        <description>[libc++][format][nfc] Header cleanup.Remove the unneeded macro protection, forward declarations, andincludes.Reviewed By: #libc, Quuxplusone, ldionne, philnikDifferential Revision: https://reviews.llvm.org/D118925

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Thu, 03 Feb 2022 18:02:36 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>fa6b9e40 - [libc++] Normalize all our &apos;#pragma GCC system_header&apos;, and regression-test.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/format#fa6b9e40</link>
        <description>[libc++] Normalize all our &apos;#pragma GCC system_header&apos;, and regression-test.Now we&apos;ll notice if a header forgets to include this magic phrase.Differential Revision: https://reviews.llvm.org/D118800

            List of files:
            /llvm-project-15.0.7/libcxx/include/format</description>
        <pubDate>Wed, 02 Feb 2022 01:16:40 +0000</pubDate>
        <dc:creator>Arthur O&apos;Dwyer &lt;arthur.j.odwyer@gmail.com&gt;</dc:creator>
    </item>
</channel>
</rss>
