<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/libcxx/test/std/strings/basic.string, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[libc++] Add an initial modulemap for the test support headers (#162800)</title>
<updated>2025-11-13T08:28:48+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-11-13T08:28:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=189d1853e484bab6e4f62bc8c2b509c5f020d795'/>
<id>189d1853e484bab6e4f62bc8c2b509c5f020d795</id>
<content type='text'>
This should improve the time it takes to run the test suite a bit. Right
now there are only a handful of headers in the modulemap because we're
missing a lot of includes in the tests. New headers should be added
there from the start, and we should fill up the modulemap over time
until it contains all the test support headers.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This should improve the time it takes to run the test suite a bit. Right
now there are only a handful of headers in the modulemap because we're
missing a lot of includes in the tests. New headers should be added
there from the start, and we should fill up the modulemap over time
until it contains all the test support headers.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Add availability markup for LLVM 19 and LLVM 20 (#140072)</title>
<updated>2025-11-03T01:24:30+00:00</updated>
<author>
<name>Louis Dionne</name>
<email>ldionne.2@gmail.com</email>
</author>
<published>2025-11-03T01:24:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3252e11da3ac990732d02d1a881b6544d81fe955'/>
<id>3252e11da3ac990732d02d1a881b6544d81fe955</id>
<content type='text'>
An LLVM 19-aligned libc++ was released with macOS 15.4 (and corresponding OSes),
and LLVM-20 aligned with macOS 26.0. This patch adds availability markup to
reflect that.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
An LLVM 19-aligned libc++ was released with macOS 15.4 (and corresponding OSes),
and LLVM-20 aligned with macOS 26.0. This patch adds availability markup to
reflect that.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++][test] Make `deallocate_size.pass.cpp` MSVC-friendly (#165162)</title>
<updated>2025-10-31T02:07:38+00:00</updated>
<author>
<name>A. Jiang</name>
<email>de34@live.cn</email>
</author>
<published>2025-10-31T02:07:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=73b092ff3398321b91f913c66bf9fe3bbf4d097a'/>
<id>73b092ff3398321b91f913c66bf9fe3bbf4d097a</id>
<content type='text'>
This patch contains several changes to `deallocate_size.pass.cpp`:
1. `static_cast`-ing some parameters to `size_t` to avoid narrowing.
2. Changing the type of loop variable `i` to `unsigned int` avoid
signedness mismatch with the constructor parameter.
3. Separately counting allocations and deallocations in variables
`allocated_` and `deallocated_`, and changing their type to `uint64_t`.
4. Avoiding `assert`-ing count of allocations when a `basic_string` is
allocated, just `assert`-ing after destruction instead.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch contains several changes to `deallocate_size.pass.cpp`:
1. `static_cast`-ing some parameters to `size_t` to avoid narrowing.
2. Changing the type of loop variable `i` to `unsigned int` avoid
signedness mismatch with the constructor parameter.
3. Separately counting allocations and deallocations in variables
`allocated_` and `deallocated_`, and changing their type to `uint64_t`.
4. Avoiding `assert`-ing count of allocations when a `basic_string` is
allocated, just `assert`-ing after destruction instead.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++][string] Assert resize_and_overwrite operation returns integer-like type (#162030)</title>
<updated>2025-10-09T23:32:50+00:00</updated>
<author>
<name>NagaChaitanya Vellanki</name>
<email>pnagato@protonmail.com</email>
</author>
<published>2025-10-09T23:32:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9146ef5df0543f08a86686cfeb3bd1ea7338f4c6'/>
<id>9146ef5df0543f08a86686cfeb3bd1ea7338f4c6</id>
<content type='text'>
Verify that the operation passed to resize_and_overwrite returns an
integer-like type, matching the behavior of other standard library
implementations like GCC's libstdc++

Fixes #160577</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Verify that the operation passed to resize_and_overwrite returns an
integer-like type, matching the behavior of other standard library
implementations like GCC's libstdc++

Fixes #160577</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Fold __search_substring into _Traits::find in case the second string has length 1 (#160076)</title>
<updated>2025-09-25T07:29:01+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-09-25T07:29:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a769608339ad4fff68081ceb7f388da8b660cfa1'/>
<id>a769608339ad4fff68081ceb7f388da8b660cfa1</id>
<content type='text'>
Apple M4:
```
Benchmark                                                      Baseline    Candidate    Difference    % Difference
-----------------------------------------------------------  ----------  -----------  ------------  --------------
BM_string_literal/1024                                            16.99        16.79         -0.21           -1.21
BM_string_literal/128                                              3.44         3.34         -0.10           -2.88
BM_string_literal/16                                               1.80         1.69         -0.11           -5.93
BM_string_literal/2048                                            38.44        38.38         -0.07           -0.17
BM_string_literal/256                                              5.77         5.65         -0.12           -2.02
BM_string_literal/32                                               2.03         1.92         -0.11           -5.44
BM_string_literal/4096                                            73.92        73.74         -0.18           -0.25
BM_string_literal/512                                              9.49         9.41         -0.08           -0.84
BM_string_literal/64                                               2.59         2.45         -0.14           -5.38
BM_string_literal/8                                                1.79         1.69         -0.11           -5.90
BM_string_literal/8192                                           132.09       131.81         -0.28           -0.21
```</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Apple M4:
```
Benchmark                                                      Baseline    Candidate    Difference    % Difference
-----------------------------------------------------------  ----------  -----------  ------------  --------------
BM_string_literal/1024                                            16.99        16.79         -0.21           -1.21
BM_string_literal/128                                              3.44         3.34         -0.10           -2.88
BM_string_literal/16                                               1.80         1.69         -0.11           -5.93
BM_string_literal/2048                                            38.44        38.38         -0.07           -0.17
BM_string_literal/256                                              5.77         5.65         -0.12           -2.02
BM_string_literal/32                                               2.03         1.92         -0.11           -5.44
BM_string_literal/4096                                            73.92        73.74         -0.18           -0.25
BM_string_literal/512                                              9.49         9.41         -0.08           -0.84
BM_string_literal/64                                               2.59         2.45         -0.14           -5.38
BM_string_literal/8                                                1.79         1.69         -0.11           -5.90
BM_string_literal/8192                                           132.09       131.81         -0.28           -0.21
```</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++][string] P3044R2: sub-`string_view` from `string` (#147095)</title>
<updated>2025-09-25T00:08:15+00:00</updated>
<author>
<name>Hristo Hristov</name>
<email>hghristov.rmm@gmail.com</email>
</author>
<published>2025-09-25T00:08:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=804b46bb45d2c52c873f7b06c8f12cde6d6c0814'/>
<id>804b46bb45d2c52c873f7b06c8f12cde6d6c0814</id>
<content type='text'>
Implements [P3044R2](https://wg21.link/P3044R2)

Note: `substr.pass.cpp` is refactored to accommodate the test of
`basic_string_view`'s `subview` which is an alias of `substr` without
changing the test cases.

Closes #148140

# References

- https://github.com/cplusplus/draft/pull/7975
- https://wg21.link/string.substr
- https://wg21.link/string.view.ops

---------

Co-authored-by: Hristo Hristov &lt;zingam@outlook.com&gt;
Co-authored-by: Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implements [P3044R2](https://wg21.link/P3044R2)

Note: `substr.pass.cpp` is refactored to accommodate the test of
`basic_string_view`'s `subview` which is an alias of `substr` without
changing the test cases.

Closes #148140

# References

- https://github.com/cplusplus/draft/pull/7975
- https://wg21.link/string.substr
- https://wg21.link/string.view.ops

---------

Co-authored-by: Hristo Hristov &lt;zingam@outlook.com&gt;
Co-authored-by: Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++][NFC] Inline function in string.cons/copy_alloc.pass.cpp that is used only once (#157429)</title>
<updated>2025-09-09T07:23:50+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-09-09T07:23:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cfd24cd878d54c14f190776cc1e64f0be35fd07e'/>
<id>cfd24cd878d54c14f190776cc1e64f0be35fd07e</id>
<content type='text'>
This makes the test a bit easier to understand.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes the test a bit easier to understand.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++][C++03] cherry-pick #125423 (#156824)</title>
<updated>2025-09-05T12:45:58+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-09-05T12:45:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2e6685c5c680cfeb7f7c0200a1bdc7c8f0b8a4d0'/>
<id>2e6685c5c680cfeb7f7c0200a1bdc7c8f0b8a4d0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++][NFC] Use llvm.org/PR to link to bug reports (#156288)</title>
<updated>2025-09-04T07:20:02+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-09-04T07:20:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=34d4f0c13666ea25b4d27dcb96dfc70da005f286'/>
<id>34d4f0c13666ea25b4d27dcb96dfc70da005f286</id>
<content type='text'>
We've built up quite a few links directly to github within the code
base. We should instead use `llvm.org/PR&lt;issue-number&gt;` to link to bugs,
since that is resilient to the bug tracker changing in the future. This
is especially relevant for tests linking to bugs, since they will
probably be there for decades to come. A nice side effect is that these
links are significantly shorter than the GH links, making them much less
of an eyesore.

This patch also replaces a few links that linked to the old bugzilla
instance on llvm.org.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We've built up quite a few links directly to github within the code
base. We should instead use `llvm.org/PR&lt;issue-number&gt;` to link to bugs,
since that is resilient to the bug tracker changing in the future. This
is especially relevant for tests linking to bugs, since they will
probably be there for decades to come. A nice side effect is that these
links are significantly shorter than the GH links, making them much less
of an eyesore.

This patch also replaces a few links that linked to the old bugzilla
instance on llvm.org.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Fix `basic_string::shrink_to_fit` for constant evaluation (#142712)</title>
<updated>2025-06-04T23:23:49+00:00</updated>
<author>
<name>A. Jiang</name>
<email>de34@live.cn</email>
</author>
<published>2025-06-04T23:23:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=479f9922912e3385655f0ca6e6238aaf09e6320d'/>
<id>479f9922912e3385655f0ca6e6238aaf09e6320d</id>
<content type='text'>
Currently, when the string shrink into the SSO buffer, the `__rep_.__s`
member isn't activated before the `traits_type::copy` call
yet, so internal `__builtin_memmove` call writing to the buffer causes
constant evaluation failure. The existing test coverage seems a bit
defective and doesn't cover this case - `shrink_to_fit` is called on the
copy of string after erasure, not the original string object.

This PR reorders the `__set_short_size` call, which starts the lifetime
of the SSO buffer, before the copy operation. Test coverage is achieved
by calling `shrink_to_fit` on the original erased string.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, when the string shrink into the SSO buffer, the `__rep_.__s`
member isn't activated before the `traits_type::copy` call
yet, so internal `__builtin_memmove` call writing to the buffer causes
constant evaluation failure. The existing test coverage seems a bit
defective and doesn't cover this case - `shrink_to_fit` is called on the
copy of string after erasure, not the original string object.

This PR reorders the `__set_short_size` call, which starts the lifetime
of the SSO buffer, before the copy operation. Test coverage is achieved
by calling `shrink_to_fit` on the original erased string.</pre>
</div>
</content>
</entry>
</feed>
