<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/src/catch2, branch v3.3.2</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>v3.3.2</title>
<updated>2023-02-27T14:12:49+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-27T14:12:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=3f0283de7a9c43200033da996ff9093be3ac84dc'/>
<id>3f0283de7a9c43200033da996ff9093be3ac84dc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add IsNaN matcher</title>
<updated>2023-02-25T23:14:32+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-25T23:14:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=6fbb3f07235311d0c228b17b52406343a7aed8f2'/>
<id>6fbb3f07235311d0c228b17b52406343a7aed8f2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify test name creation for list-templated test cases</title>
<updated>2023-02-23T14:12:14+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-23T14:12:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=9ff3cde87b1d8c61d2d97c34bdc71f0ec0a34a9c'/>
<id>9ff3cde87b1d8c61d2d97c34bdc71f0ec0a34a9c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Use StringRef UDL in more preprocessor-generated strings</title>
<updated>2023-02-23T12:25:08+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-23T08:37:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=4d802ca58f32bdb80c6ff23ce4d614f2d80b2e05'/>
<id>4d802ca58f32bdb80c6ff23ce4d614f2d80b2e05</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Use StringRef UDL for generated generator names</title>
<updated>2023-02-23T12:25:07+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-22T22:31:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=13711be7cf0586f16a093970abb34e26b4b0b4c8'/>
<id>13711be7cf0586f16a093970abb34e26b4b0b4c8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Early evaluate line loc in NameAndLoc::operator==</title>
<updated>2023-02-20T14:19:57+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-20T09:22:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=584973a485160bea0feb8764c28bb65d03b988ac'/>
<id>584973a485160bea0feb8764c28bb65d03b988ac</id>
<content type='text'>
I do not know if checking the tracker name or the tracker's file
part of the location first would provide better results, but
in the common case, the line part of the location check should be
rather unique, because different `SECTION`s will have different
source lines where they are defined.

I also propagated this same check into `ITracker::findChild`,
because this significantly improves performance of section tracking
in Debug builds -&gt; 10% in macro benchmark heavily focused on section
tracking. In Release build there is usually no difference, because
the inliner will inline `NameAndLoc::operator==` into `findChild`,
and then eliminate the redundant check. (If the inliner decides
against, then this still improves the performance on average).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I do not know if checking the tracker name or the tracker's file
part of the location first would provide better results, but
in the common case, the line part of the location check should be
rather unique, because different `SECTION`s will have different
source lines where they are defined.

I also propagated this same check into `ITracker::findChild`,
because this significantly improves performance of section tracking
in Debug builds -&gt; 10% in macro benchmark heavily focused on section
tracking. In Release build there is usually no difference, because
the inliner will inline `NameAndLoc::operator==` into `findChild`,
and then eliminate the redundant check. (If the inliner decides
against, then this still improves the performance on average).
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid copying NameAndLocationRef when passed as argument</title>
<updated>2023-02-20T14:17:35+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-19T22:53:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=4f7c8cb28a0fdb4cc8b93f139b1b1e5d3ff0a328'/>
<id>4f7c8cb28a0fdb4cc8b93f139b1b1e5d3ff0a328</id>
<content type='text'>
`NameAndLocationRef` is pretty large type, so even in release build,
it is unlikely to be passed in registers. In addition to the fact
that some platforms currently do not allow passing even small types
in register (Windows ABI!!), it is better to pass it as a ref,
effectively passing around a pointer.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`NameAndLocationRef` is pretty large type, so even in release build,
it is unlikely to be passed in registers. In addition to the fact
that some platforms currently do not allow passing even small types
in register (Windows ABI!!), it is better to pass it as a ref,
effectively passing around a pointer.
</pre>
</div>
</content>
</entry>
<entry>
<title>Inline StringRef::operator==</title>
<updated>2023-02-20T14:05:09+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-19T13:03:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=e1dbad4c9e9e5517c188cbd8af04cb6369851207'/>
<id>e1dbad4c9e9e5517c188cbd8af04cb6369851207</id>
<content type='text'>
This enables its inlining even without LTO, which in turns enables
callers to determine that two StringRefs are unequals with simple
comparison of two numbers, without any function calls.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This enables its inlining even without LTO, which in turns enables
callers to determine that two StringRefs are unequals with simple
comparison of two numbers, without any function calls.
</pre>
</div>
</content>
</entry>
<entry>
<title>Inline some non-virtual functions in ITracker and TrackerContext</title>
<updated>2023-02-20T14:02:50+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-20T14:02:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=2befd98da2b91c705de8fb0ea27bff662041f51c'/>
<id>2befd98da2b91c705de8fb0ea27bff662041f51c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Move captured output into TestCaseStats when sending testCaseEnded</title>
<updated>2023-02-20T13:48:39+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-20T13:48:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=00f259aeb2fa292ccf5e4a9c3e15d6b4416a06b2'/>
<id>00f259aeb2fa292ccf5e4a9c3e15d6b4416a06b2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
