<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/source/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in ios</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>f69585235ec85d54e0f3fc41b2d5700430907f99 - [libc++] Put _LIBCPP_NODEBUG on all internal aliases (#118710)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#f69585235ec85d54e0f3fc41b2d5700430907f99</link>
        <description>[libc++] Put _LIBCPP_NODEBUG on all internal aliases (#118710)This significantly reduces the amount of debug information generatedfor codebases using libc++, without hurting the debugging experience.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Wed, 08 Jan 2025 16:12:59 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>b9a2658a3e8bd13b0f9e7a8a440832a95b377216 - [libc++][C++03] Use `__cxx03/` headers in C++03 mode (#109002)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#b9a2658a3e8bd13b0f9e7a8a440832a95b377216</link>
        <description>[libc++][C++03] Use `__cxx03/` headers in C++03 mode (#109002)This patch implements the forwarding to frozen C++03 headers asdiscussed inhttps://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In theRFC, we initially proposed selecting the right headers from the Clangdriver, however consensus seemed to steer towards handling this in thelibrary itself. This patch implements that direction.At a high level, the changes basically amount to making each publicheader look like this:```// inside &lt;vector&gt;#ifdef _LIBCPP_CXX03_LANG#  include &lt;__cxx03/vector&gt;#else  // normal &lt;vector&gt; content#endif```In most cases, public headers are simple umbrella headers so there isn&apos;tmuch code in the #else branch. In other cases, the #else branch containsthe actual implementation of the header.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Sat, 21 Dec 2024 12:01:48 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>c166a9c713ec86b86f1f178a5133bc128fd0a610 - [libc++] Add #if 0 block to all the top-level headers (#119234)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#c166a9c713ec86b86f1f178a5133bc128fd0a610</link>
        <description>[libc++] Add #if 0 block to all the top-level headers (#119234)Including The frozen C++03 headers results in a lot of formattingchanges in the main headers, so this splits these changes into aseparate commit instead.This is part ofhttps://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Tue, 10 Dec 2024 15:02:12 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>c6f3b7bcd0596d30f8dabecdfb9e44f9a07b6e4c - [libc++] Refactor the configuration macros to being always defined (#112094)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#c6f3b7bcd0596d30f8dabecdfb9e44f9a07b6e4c</link>
        <description>[libc++] Refactor the configuration macros to being always defined (#112094)This is a follow-up to #89178. This updates the `&lt;__config_site&gt;`macros.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Wed, 06 Nov 2024 09:39:19 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>ba87515fea90b5d55836a8e3be63a7e683ce299d - [libc++][RFC] Always define internal feature test macros (#89178)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#ba87515fea90b5d55836a8e3be63a7e683ce299d</link>
        <description>[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 `&lt;__configuration/availability.h&gt;` 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 `&lt;__config&gt;`. Ifpeople are happy with this approach, I&apos;ll make a follow-up PR to alsochange the macros defined in `&lt;__config_site&gt;`.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Sat, 12 Oct 2024 07:49:52 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>f3a4def436618c24e2eb9faa812994beb2cd7744 - [libcxx][ios] initialize __fill_val_ in _FillHelper (#110279)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#f3a4def436618c24e2eb9faa812994beb2cd7744</link>
        <description>[libcxx][ios] initialize __fill_val_ in _FillHelper (#110279)This is a small fix to https://github.com/llvm/llvm-project/pull/89305.In the `__init` function of `_FillHelper`, `__fill_val_` was leftuninitialized. This worked for the implementation in the PR because wealways checked `__set_` before trying to read it, and would initializeif it was unset.However it turns out in earlier versions of the header (at least on AIXwhich followed this path), we do a read of `__fill_val_` even if`__set_` was false before initializing, to check if it matched thesentinel value, so this causes undesired behaviour and UB.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Mon, 30 Sep 2024 23:24:32 +0000</pubDate>
        <dc:creator>David Tenty &lt;daltenty@ibm.com&gt;</dc:creator>
    </item>
<item>
        <title>748023dc3210533df2c1c6efc8af1b5954493701 - [libc++][NFC] Replace _LIBCPP_NORETURN and TEST_NORETURN with [[noreturn]] (#80455)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#748023dc3210533df2c1c6efc8af1b5954493701</link>
        <description>[libc++][NFC] Replace _LIBCPP_NORETURN and TEST_NORETURN with [[noreturn]] (#80455)`[[__noreturn__]]` is now always available, so we can simply use theattribute directly instead of through a macro.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Wed, 11 Sep 2024 06:59:46 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>4dee6411e0d993fd17099bd7564276474412383e - [libc++] Implements LWG3130. (#101889)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#4dee6411e0d993fd17099bd7564276474412383e</link>
        <description>[libc++] Implements LWG3130. (#101889)This adds addressof at the required places in [input.output]. Some ofthe new tests failed since string used operator&amp; internally. These havebeen fixed too.Note the new fstream tests perform output to a basic_string instead of adouble. Using a double requires num_get specializationnum_get&lt;CharT, istreambuf_iterator&lt;CharT,char_traits_operator_hijacker&lt;CharT&gt;&gt;This facet is not present in the locale database so the conversion wouldfail due to a missing locale facet. Using basic_string avoids using thelocale.As a drive-by fixes several bugs in the ofstream.cons tests. Thesetested ifstream instead of ofstream with an open mode.Implements:- LWG3130 [input.output] needs many addressofCloses #100246.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Tue, 06 Aug 2024 17:47:56 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>194f98c2210bf40d0490613fddbf83e04c18ad9b - [libc++] basic_ios&lt;wchar_t&gt; cannot store fill character WCHAR_MAX (#89305)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#194f98c2210bf40d0490613fddbf83e04c18ad9b</link>
        <description>[libc++] basic_ios&lt;wchar_t&gt; cannot store fill character WCHAR_MAX (#89305)`libcxx std::basic_ios` uses `WEOF` to indicate the `fill` value isuninitialized. On some platforms (e.g AIX and zOS in 64-bit mode)`wchar_t` is 4 bytes `unsigned` and `wint_t` is also 4 bytes which means`WEOF` cannot be distinguished from `WCHAR_MAX` by`std::char_traits&lt;wchar_t&gt;::eq_int_type()`, meaning this valid charactervalue cannot be stored on affected platforms (as the implementationtriggers reinitialization to `widen(&#8217; &#8217;)`).This patch introduces a new helper class `_FillHelper` uses a booleanvariable to indicate whether the fill character has been initialized,which is used by default in libcxx ABI version 2. The patch does notaffect ABI version 1 except for targets AIX in 32- and 64-bit and z/OSin 64-bit (so that the layout of the implementation is compatible withthe current IBM system provided libc++)This is a continuation of Phabricator patch[D124555](https://reviews.llvm.org/D124555). This patch uses a modifiedversion of the [approach](https://reviews.llvm.org/D124555#3566746)suggested by @ldionne .---------Co-authored-by: Louis Dionne &lt;ldionne.2@gmail.com&gt;Co-authored-by: David Tenty &lt;daltenty.dev@gmail.com&gt;

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Wed, 17 Jul 2024 18:47:13 +0000</pubDate>
        <dc:creator>Xing Xue &lt;xingxue@outlook.com&gt;</dc:creator>
    </item>
<item>
        <title>ef51e617c43ef4248973f07e0a711f69d85c948c - [libc++] Handle _LIBCPP_HAS_NO_{THREADS,LOCALIZATION} consistently with other carve-outs (#98319)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#ef51e617c43ef4248973f07e0a711f69d85c948c</link>
        <description>[libc++] Handle _LIBCPP_HAS_NO_{THREADS,LOCALIZATION} consistently with other carve-outs (#98319)Previously, we would issue an #error when using a header that requiresthreading support or localization support in a configuration where thatis disabled. This is unlike what we do for all the other carve outs likeno-filesystem, no-wide-characters or no-random-device. Instead ofissuing an #error, we normally just remove the problematic parts of theheader.This patch makes the handling of no-localization and no-threadsconsistent with the other carve-outs. I dislike the fact that userswon&apos;t get an explicit error message when trying to use e.g. ios in abuild that doesn&apos;t support localization, but I think it is better tohandle things consistently. Note that besides the consistency argument,the #error approach doesn&apos;t really work anyways since it would breakdown if we moved towards assuming the C locale only in theno-localization mode.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Mon, 15 Jul 2024 14:11:23 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>6b4b29f85900995b2a3b817548be4a534d46763b - [libc++][NFC] Remove unnecessary parens in static_asserts (#95605)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#6b4b29f85900995b2a3b817548be4a534d46763b</link>
        <description>[libc++][NFC] Remove unnecessary parens in static_asserts (#95605)These were required a long time ago due to `static_assert` not actuallybeing available in C++03. Now `static_assert` is simply mapped to`_Static_assert` in C++03, making the additional parens unnecessary.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Tue, 18 Jun 2024 08:45:30 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>e09761944cea4aeafadd055b9510ef9f0e9a7338 - [libc++] Improves UB handling in ios_base destructor. (#76525)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#e09761944cea4aeafadd055b9510ef9f0e9a7338</link>
        <description>[libc++] Improves UB handling in ios_base destructor. (#76525)Destroying an ios_base object before it is properly initialized isundefined behavior. Unlike typical C++ classes the initialization is notdone in the constructor, but in a dedicated init function. Due tovirtual inheritance of the basic_ios object in ostream and friends thisundefined behaviour can be triggered when inheriting from classes thatcan throw in their constructor and inheriting from ostream.Use the __loc_ member of ios_base as sentinel to detect whether theobject has or has not been initialized.Addresses https://github.com/llvm/llvm-project/issues/57964

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Tue, 12 Mar 2024 17:04:14 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>37dca605c9bd41732da010ee97ed15ad9585a37d - [libc++] Clean up includes of &lt;__assert&gt; (#80091)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#37dca605c9bd41732da010ee97ed15ad9585a37d</link>
        <description>[libc++] Clean up includes of &lt;__assert&gt; (#80091)Originally, we used __libcpp_verbose_abort to handle assertion failures.That function was declared from all public headers. Since we don&apos;t usethat mechanism anymore, we don&apos;t need to declare __libcpp_verbose_abortfrom all public headers, and we can clean up a lot of unnecessaryincludes.This patch also moves the definition of the various assertion categoriesto the &lt;__assert&gt; header, since we now rely on regular IWYU for theseassertion macros.rdar://105510916

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Thu, 29 Feb 2024 15:12:22 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>7b4622514d232ce5f7110dd8b20d90e81127c467 - [libc++] Fix missing and incorrect push/pop macros (#79204)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#7b4622514d232ce5f7110dd8b20d90e81127c467</link>
        <description>[libc++] Fix missing and incorrect push/pop macros (#79204)We recently noticed that the unwrap_iter.h file was pushing macros, butit was pushing them again instead of popping them at the end of thefile. This led to libc++ basically swallowing any custom definition ofthese macros in user code:    #define min HELLO    #include &lt;algorithm&gt;    // min is not HELLO anymore, it&apos;s not definedWhile investigating this issue, I noticed that our push/pop pragmas wereactually entirely wrong too. Indeed, instead of pushing macros like`move`, we&apos;d push `move(int, int)` in the pragma, which is not a validmacro name. As a result, we would not actually push macros like `move`-- instead we&apos;d simply undefine them. This led to the following code notworking:    #define move HELLO    #include &lt;algorithm&gt;    // move is not HELLO anymoreFixing the pragma push/pop incantations led to a cascade of issuesbecause we use identifiers like `move` in a large number of places, andall of these headers would now need to do the push/pop dance.This patch fixes all these issues. First, it adds a check that we don&apos;tswallow important names like min, max, move or refresh as explainedabove. This is done by augmenting the existingsystem_reserved_names.gen.py test to also check that the macros are whatwe expect after including each header.Second, it fixes the push/pop pragmas to work properly and adds missingpragmas to all the files I could detect a failure in via the newly addedtest.rdar://121365472

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Thu, 25 Jan 2024 20:48:46 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>9783f28cbb155e4a8d49c12e1c60ce14dcfaf0c7 - [libc++] Format the code base (#74334)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#9783f28cbb155e4a8d49c12e1c60ce14dcfaf0c7</link>
        <description>[libc++] Format the code base (#74334)This patch runs clang-format on all of libcxx/include and libcxx/src, inaccordance with the RFC discussed at [1]. Follow-up patches will formatthe benchmarks, the test suite and remaining parts of the code. I&apos;msplitting this one into its own patch so the diff is a bit easier toreview.This patch was generated with:   find libcxx/include libcxx/src -type f \      | grep -v &apos;module.modulemap.in&apos; \      | grep -v &apos;CMakeLists.txt&apos; \      | grep -v &apos;README.txt&apos; \      | grep -v &apos;libcxx.imp&apos; \      | grep -v &apos;__config_site.in&apos; \      | xargs clang-format -iA Git merge driver is available in libcxx/utils/clang-format-merge-driver.shto help resolve merge and rebase issues across these formatting changes.[1]: https://discourse.llvm.org/t/rfc-clang-formatting-all-of-libc-once-and-for-all

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Mon, 18 Dec 2023 19:01:33 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>77a00c0d546cd4aa8311b5b9031ae9ea8cdb050c - [libc++] Replace uses of _VSTD:: by std:: (#74331)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#77a00c0d546cd4aa8311b5b9031ae9ea8cdb050c</link>
        <description>[libc++] Replace uses of _VSTD:: by std:: (#74331)As part of the upcoming clang-formatting of libc++, this patch performsthe long desired removal of the _VSTD macro.See https://discourse.llvm.org/t/rfc-clang-formatting-all-of-libc-once-and-for-allfor the clang-format proposal.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Tue, 05 Dec 2023 16:19:15 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>4c198542226223f6a5c5511a1f89b37d15ee10b9 - [libc++] Rename _LIBCPP_INLINE_VISIBILITY to _LIBCPP_HIDE_FROM_ABI (#74095)</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#4c198542226223f6a5c5511a1f89b37d15ee10b9</link>
        <description>[libc++] Rename _LIBCPP_INLINE_VISIBILITY to _LIBCPP_HIDE_FROM_ABI (#74095)In preparation for running clang-format on the whole code base, we arealso removing mentions of the legacy _LIBCPP_INLINE_VISIBILITY macro infavor of the newer _LIBCPP_HIDE_FROM_ABI.We&apos;re still leaving the definition of _LIBCPP_INLINE_VISIBILITY to avoidcreating needless breakage in case some older patches are checked-inwith mentions of the old macro. After we branch for LLVM 18, we can doanother pass to clean up remaining uses of the macro that might havegotten introduced by mistake (if any) and remove the macro itself at thesame time. This is just a minor convenience to smooth out the transitionas much as possible.Seehttps://discourse.llvm.org/t/rfc-clang-formatting-all-of-libc-once-and-for-allfor the clang-format proposal.

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Mon, 04 Dec 2023 15:25:14 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>a3f17ba3febbd546f2342ffc780ac93b694fdc8d - [libc++] Implement P2467R1: Support exclusive mode for fstreams</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#a3f17ba3febbd546f2342ffc780ac93b694fdc8d</link>
        <description>[libc++] Implement P2467R1: Support exclusive mode for fstreamsThis patch brings std::ios_base::noreplace from P2467R1 to libc++.This requires compiling the shared library in C++23 mode since otherwisefstream::open(...) doesn&apos;t know about the new flag.Differential Revision: https://reviews.llvm.org/D137640Co-authored-by: Louis Dionne &lt;ldionne.2@gmail.com&gt;

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Mon, 18 Sep 2023 20:32:02 +0000</pubDate>
        <dc:creator>PragmaTwice &lt;twice.mliu@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>c01794e7ae8e37052e2268e7447d51665e073356 - [libc++] Move once_flag outside of &lt;mutex&gt;</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#c01794e7ae8e37052e2268e7447d51665e073356</link>
        <description>[libc++] Move once_flag outside of &lt;mutex&gt;This allows including once_flag directly from &lt;__locale&gt; instead ofdepending on all of &lt;mutex&gt;, which requires threading. In turn, thismakes it easier to support locales on platforms without threading.Drive-by change: clang-format once_flag.h and use _LIBCPP_HIDE_FROM_ABIDifferential Revision: https://reviews.llvm.org/D155487

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Mon, 17 Jul 2023 16:42:00 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>f1ea0b11ca03d0f8b5785b7ec92d2eb673eeb4b9 - [libc++] Merge _LIBCPP_FUNC_VIS, _LIBCPP_TYPE_VIS and _LIBCPP_EXCEPTION_ABI into _LIBCPP_EXPORTED_FROM_ABI</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/libcxx/include/ios#f1ea0b11ca03d0f8b5785b7ec92d2eb673eeb4b9</link>
        <description>[libc++] Merge _LIBCPP_FUNC_VIS, _LIBCPP_TYPE_VIS and _LIBCPP_EXCEPTION_ABI into _LIBCPP_EXPORTED_FROM_ABIThese macros are always defined identically, so we can simplify the code a bit by merging them.Reviewed By: ldionne, #libcSpies: libcxx-commits, krytarowski, smeenaiDifferential Revision: https://reviews.llvm.org/D152652

            List of files:
            /llvm-project/libcxx/include/ios</description>
        <pubDate>Wed, 14 Jun 2023 17:17:50 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
</channel>
</rss>
