<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/src/catch2/internal, branch v3.16.0</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>Further reduce stamped out types for each templated test case</title>
<updated>2026-08-23T18:46:39+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-08-23T13:05:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=499442d7ef9242ce1bb329d69ea13ee6d340421c'/>
<id>499442d7ef9242ce1bb329d69ea13ee6d340421c</id>
<content type='text'>
This provides further speed-ups for TUs with many test cases templated
over the same set of types. For especially test-heavy (but still
realistic) TUs, the speed up is up to 20%.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This provides further speed-ups for TUs with many test cases templated
over the same set of types. For especially test-heavy (but still
realistic) TUs, the speed up is up to 20%.
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid stamping out common type helpers in each templated test cases</title>
<updated>2026-08-23T09:31:50+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-08-20T19:38:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=9a2b2ee8d6d325fc0d9ccf449fb375e78c6f3480'/>
<id>9a2b2ee8d6d325fc0d9ccf449fb375e78c6f3480</id>
<content type='text'>
This provides small (but measurable) improvements in compilation
times when a TU has multiple test cases templated over the same types.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This provides small (but measurable) improvements in compilation
times when a TU has multiple test cases templated over the same types.
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't store extra copy of all `TestCaseInfo*` in `TestRegistry`</title>
<updated>2026-08-22T21:28:11+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-08-22T21:28:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=ef3a728265292e6a1dbec727b0099d3d8b3f6420'/>
<id>ef3a728265292e6a1dbec727b0099d3d8b3f6420</id>
<content type='text'>
We used to store a full vector of "views" of the registered test infos,
so that it can be retrieved externally. However, the only user of that
interface left was `Session`, specifically `Session::applyFilenameAsTags`.

By moving the adding of the filename tags into the `ITestCaseRegistry`
interface, we avoid storing the vector and make the initial test registration
faster.

The new code is ugly and shows a design/layering issue, but no worse than
the previous approach did.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We used to store a full vector of "views" of the registered test infos,
so that it can be retrieved externally. However, the only user of that
interface left was `Session`, specifically `Session::applyFilenameAsTags`.

By moving the adding of the filename tags into the `ITestCaseRegistry`
interface, we avoid storing the vector and make the initial test registration
faster.

The new code is ugly and shows a design/layering issue, but no worse than
the previous approach did.
</pre>
</div>
</content>
</entry>
<entry>
<title>Preallocate test case vectors in TestRegistry</title>
<updated>2026-08-22T18:42:23+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-08-21T15:37:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=9915f7250dcfc2c7bbd9e86c83b29438df39d856'/>
<id>9915f7250dcfc2c7bbd9e86c83b29438df39d856</id>
<content type='text'>
Preallocating to some reasonable and small number of tests avoids
much of the geometric-reallocation threashing at low sizes, without
taking up too much memory for tiny test binaries.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Preallocating to some reasonable and small number of tests avoids
much of the geometric-reallocation threashing at low sizes, without
taking up too much memory for tiny test binaries.
</pre>
</div>
</content>
</entry>
<entry>
<title>Tiny formatting fix in catch_template_test_registry.hpp</title>
<updated>2026-08-22T18:41:59+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-08-20T18:39:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=f9dfb1031565f61bccabf7d95f91a7606eb74f45'/>
<id>f9dfb1031565f61bccabf7d95f91a7606eb74f45</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: work around clang 20/21 + libc++ compile failure in TEMPLATE_PRODUCT_TEST_CASE with differing arities (#3173)</title>
<updated>2026-08-20T15:39:01+00:00</updated>
<author>
<name>Matt Van Horn</name>
</author>
<published>2026-08-20T15:39:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=fdfc07e571eb7f046013052a9fa57db51c6a2cb9'/>
<id>fdfc07e571eb7f046013052a9fa57db51c6a2cb9</id>
<content type='text'>
* fix: work around clang 20/21 + libc++ compile failure in TEMPLATE_PRODUCT_TEST_CASE with differing arities

Fixes #3115

* docs: reference llvm/llvm-project#130778 in the clang 20/21 workaround comment

---------

Co-authored-by: Matt Van Horn &lt;455140+mvanhorn@users.noreply.github.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* fix: work around clang 20/21 + libc++ compile failure in TEMPLATE_PRODUCT_TEST_CASE with differing arities

Fixes #3115

* docs: reference llvm/llvm-project#130778 in the clang 20/21 workaround comment

---------

Co-authored-by: Matt Van Horn &lt;455140+mvanhorn@users.noreply.github.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Emit warning when using --shard-count (&gt; 1) with --order rand</title>
<updated>2026-08-10T22:08:23+00:00</updated>
<author>
<name>Matt Rasa</name>
</author>
<published>2026-07-31T13:37:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=0aeb818520028ca05cc2539ed242402ef7a7ae41'/>
<id>0aeb818520028ca05cc2539ed242402ef7a7ae41</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Make verbosity per-reporter</title>
<updated>2026-08-07T18:57:42+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-08-01T14:52:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=a0eba50e9d56c743aff1de7a50d02a6e01e73cdc'/>
<id>a0eba50e9d56c743aff1de7a50d02a6e01e73cdc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>JSONWriter uses LUT for faster checking if a char needs escaping</title>
<updated>2026-07-23T17:10:14+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-07-23T17:01:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=bb8873ccd710d55a4fa7cc02d710fdb4da69cfb0'/>
<id>bb8873ccd710d55a4fa7cc02d710fdb4da69cfb0</id>
<content type='text'>
This provides nice speedup when writing strings that don't need
escaping, at about 6% in Debug build and ~40% in Release build.
If the strings do need escaping the speedup is much smaller, at
~1% in Debug and ~6% in Release build, as the cost of actually
escaping the strings dwarves the cost of checking.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This provides nice speedup when writing strings that don't need
escaping, at about 6% in Debug build and ~40% in Release build.
If the strings do need escaping the speedup is much smaller, at
~1% in Debug and ~6% in Release build, as the cost of actually
escaping the strings dwarves the cost of checking.
</pre>
</div>
</content>
</entry>
<entry>
<title>Optimize writing of non-string values to JSON</title>
<updated>2026-07-23T12:34:43+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-07-23T12:34:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=46bdf1a04c92e7d34ee24f95d8d8a862498eede7'/>
<id>46bdf1a04c92e7d34ee24f95d8d8a862498eede7</id>
<content type='text'>
In practice, the majority of values the JSON writer handles are
strings, but this makes the code more obvious and can still provide
a small speed-up.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In practice, the majority of values the JSON writer handles are
strings, but this makes the code more obvious and can still provide
a small speed-up.
</pre>
</div>
</content>
</entry>
</feed>
