<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/src/catch2/internal, branch feature/property-combinators</title>
<subtitle>Progmasoft Catch3: an independently maintained C++17 test framework with a parallel runner, property checks, snapshots and structured results.</subtitle>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/'/>
<entry>
<title>Avoid mixed-mode libc++ container annotations in Catch3 stream reuse: store released stream indices in a node-based list so ASan-instrumented clients can link the uninstrumented library without vector relocation false positives; preserve public API and third-party build flags</title>
<updated>2026-09-29T20:00:34+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-29T20:00:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=febb5b1e244174da0985b9994f8d5ed1676950e8'/>
<id>febb5b1e244174da0985b9994f8d5ed1676950e8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Backport upstream range-header and Clang diagnostic fixes</title>
<updated>2026-09-29T14:45:59+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-29T14:45:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=1f2ec07fdfe05af6df9a573f2c16551e91eef3a6'/>
<id>1f2ec07fdfe05af6df9a573f2c16551e91eef3a6</id>
<content type='text'>
Review Catch2 devel through 222e233903d287cda4713fb08e1a959e8d71fd6d. Add the direct cassert dependency to the range generator and preserve the upstream Clang pointer-to-bool diagnostic boundary in reusable streams. Record reviewed upstream revisions without changing compiler options, licensing, or fork-owned APIs.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Review Catch2 devel through 222e233903d287cda4713fb08e1a959e8d71fd6d. Add the direct cassert dependency to the range generator and preserve the upstream Clang pointer-to-bool diagnostic boundary in reusable streams. Record reviewed upstream revisions without changing compiler options, licensing, or fork-owned APIs.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix typos in comments</title>
<updated>2026-09-14T11:23:10+00:00</updated>
<author>
<name>anarch</name>
</author>
<published>2026-09-13T04:39:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=889700e9799becb812ebb2c0fcf3b888f975e0ea'/>
<id>889700e9799becb812ebb2c0fcf3b888f975e0ea</id>
<content type='text'>
Three misspellings in comments: "reuired" -&gt; "required",
"ambigous" -&gt; "ambiguous", "neccessarily" -&gt; "necessarily".

Per docs/contributing.md, the amalgamated files under extras/ are left
untouched even though they carry the same typos.

Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Three misspellings in comments: "reuired" -&gt; "required",
"ambigous" -&gt; "ambiguous", "neccessarily" -&gt; "necessarily".

Per docs/contributing.md, the amalgamated files under extras/ are left
untouched even though they carry the same typos.

Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Better handling of ANSI escape codes in TextFlow</title>
<updated>2026-09-13T21:35:34+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-09-13T21:35:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=8e2f6f7a876e127a08b1864d028199d6e0961fc6'/>
<id>8e2f6f7a876e127a08b1864d028199d6e0961fc6</id>
<content type='text'>
The new implementation keeps track of found escape codes in a separate
vector, which has two advantages:
1) The handling of inputs without any escape codes is much faster. As
   this will be the case for majority of inputs, this should provide
   nice speedup all around.
2) We no longer mangle unrelated 0xFFs in the user-provided input.

Closes #3199
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The new implementation keeps track of found escape codes in a separate
vector, which has two advantages:
1) The handling of inputs without any escape codes is much faster. As
   this will be the case for majority of inputs, this should provide
   nice speedup all around.
2) We no longer mangle unrelated 0xFFs in the user-provided input.

Closes #3199
</pre>
</div>
</content>
</entry>
<entry>
<title>Add some missing CATCH_MOVEs</title>
<updated>2026-09-11T09:27:33+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-09-11T07:41:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=b7f1a83ff0c36990a9840bcb3de56a848d24a893'/>
<id>b7f1a83ff0c36990a9840bcb3de56a848d24a893</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid per-input alloc+copy in WildcardPattern::matches</title>
<updated>2026-09-11T09:21:22+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-09-09T18:15:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=5e47f48ecc68ff48c3c085d93502559038141693'/>
<id>5e47f48ecc68ff48c3c085d93502559038141693</id>
<content type='text'>
The old implementation always forced copy (and likely alloc) for
each input when matching it. The new implementation uses the
case-insensitive comparators to avoid all that.

This provides interesting performance improvement for selecting
individual test, doing something like `./tests/SelfTest "ABC*"`
is almost 10% faster.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The old implementation always forced copy (and likely alloc) for
each input when matching it. The new implementation uses the
case-insensitive comparators to avoid all that.

This provides interesting performance improvement for selecting
individual test, doing something like `./tests/SelfTest "ABC*"`
is almost 10% faster.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use locale-independent toLower</title>
<updated>2026-09-11T09:15:58+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-09-06T21:23:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=6a5075bf73273ecb83fca61efdfde2fa1a2690bf'/>
<id>6a5075bf73273ecb83fca61efdfde2fa1a2690bf</id>
<content type='text'>
We generally do not even try to pretend to support more than plain ASCII,
because doing unicode in old C++ standards is a pain and a half. For
`toLower`, we used to wrap `std::tolower` with multiple casts to avoid UB,
but calling into it is relatively slow, and it tries to handle different
locales, which could cause unexpected results.

In addition, the new implementation is significantly faster, which helps
speed up the initial process bring up (as comparing tags, and thus test
cases is now faster).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We generally do not even try to pretend to support more than plain ASCII,
because doing unicode in old C++ standards is a pain and a half. For
`toLower`, we used to wrap `std::tolower` with multiple casts to avoid UB,
but calling into it is relatively slow, and it tries to handle different
locales, which could cause unexpected results.

In addition, the new implementation is significantly faster, which helps
speed up the initial process bring up (as comparing tags, and thus test
cases is now faster).
</pre>
</div>
</content>
</entry>
<entry>
<title>Move-enable createShard</title>
<updated>2026-09-06T18:46:11+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-09-06T18:46:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=15db9be53067d66ecd11a7ddd3097d412047130a'/>
<id>15db9be53067d66ecd11a7ddd3097d412047130a</id>
<content type='text'>
This is _technically_ a performance improvement, but in actuality
it is a tiny cleanup so it stops bothering me.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is _technically_ a performance improvement, but in actuality
it is a tiny cleanup so it stops bothering me.
</pre>
</div>
</content>
</entry>
<entry>
<title>Faster check for duplicated test cases</title>
<updated>2026-09-06T18:08:25+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-09-06T17:02:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=5fe473f202a322ab10ee10bf64fcae63593286cf'/>
<id>5fe473f202a322ab10ee10bf64fcae63593286cf</id>
<content type='text'>
By avoiding `std::set`, we save 1 allocation per checked test case,
and the sort + pairwise check has much nicer cache behaviour, leading
to much faster check.

Overall, the check is only a tiny part of the startup overhead, but
the improvement is large enough that it ends up measurable in binaries
with many tests (e.g. `SelfTest`).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
By avoiding `std::set`, we save 1 allocation per checked test case,
and the sort + pairwise check has much nicer cache behaviour, leading
to much faster check.

Overall, the check is only a tiny part of the startup overhead, but
the improvement is large enough that it ends up measurable in binaries
with many tests (e.g. `SelfTest`).
</pre>
</div>
</content>
</entry>
<entry>
<title>Reduce number of instantiations of is_foo_comparable trait</title>
<updated>2026-09-04T18:54:43+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-09-04T18:54:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=897d8043eb192d0fc361c6339ce13e1cabe481c4'/>
<id>897d8043eb192d0fc361c6339ce13e1cabe481c4</id>
<content type='text'>
This provides minor compile-time optimization.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This provides minor compile-time optimization.
</pre>
</div>
</content>
</entry>
</feed>
