<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/src/CMakeLists.txt, branch v3.0.0-preview3</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>Improve detection of std::uncaught_exceptions support</title>
<updated>2020-10-08T10:39:50+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-10-06T09:07:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=3f9e779542eac5576b54987614b77a1260ecdbac'/>
<id>3f9e779542eac5576b54987614b77a1260ecdbac</id>
<content type='text'>
The problem was that Catch2 did not reliably include `&lt;exception&gt;`
before it checked for the feature test macro for
`std::uncaught_exceptions`. To avoid overhead of including
`&lt;exception&gt;` everywhere, the configuration check was split out
into a separate header.

Closes #2021
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The problem was that Catch2 did not reliably include `&lt;exception&gt;`
before it checked for the feature test macro for
`std::uncaught_exceptions`. To avoid overhead of including
`&lt;exception&gt;` everywhere, the configuration check was split out
into a separate header.

Closes #2021
</pre>
</div>
</content>
</entry>
<entry>
<title>Split EventListener base from streaming_base.hpp</title>
<updated>2020-08-29T17:09:54+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-08-24T20:52:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=33ad1ee2ac7beaae8d6bfa661213d13cecbce196'/>
<id>33ad1ee2ac7beaae8d6bfa661213d13cecbce196</id>
<content type='text'>
The base was also renamed from `TestEventListenerBase` to
`EventListenerBase`, and modified to derive directly from the
reporter interface, rather than deriving from `StreamingReporterBase`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The base was also renamed from `TestEventListenerBase` to
`EventListenerBase`, and modified to derive directly from the
reporter interface, rather than deriving from `StreamingReporterBase`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Split various reporter helpers out from streaming_base.hpp</title>
<updated>2020-08-24T08:19:24+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-08-23T20:43:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=2a8e317cfbe92f9c108960d8d33e6cefe2c40c69'/>
<id>2a8e317cfbe92f9c108960d8d33e6cefe2c40c69</id>
<content type='text'>
Due to also adding a new TU, there is no improvement to the
compilation times of the static library, but it improves the
compilation times of consumer's reporter TUs.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Due to also adding a new TU, there is no improvement to the
compilation times of the static library, but it improves the
compilation times of consumer's reporter TUs.
</pre>
</div>
</content>
</entry>
<entry>
<title>Split out ReporterFactory out of catch_interfaces_reporter.hpp</title>
<updated>2020-08-23T20:35:01+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-08-23T19:19:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=6a08d401aabac2ead19c3eff17647a2b482f96b0'/>
<id>6a08d401aabac2ead19c3eff17647a2b482f96b0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Split IReporterRegistry into its own header file</title>
<updated>2020-08-23T19:01:04+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-08-23T16:16:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=9677df6d8b4a8b8e7a1b677068975af2caca5cc9'/>
<id>9677df6d8b4a8b8e7a1b677068975af2caca5cc9</id>
<content type='text'>
Doing this removes `&lt;map&gt;` from the include set of the base reporter
interface, and thus from bunch more TUs. This provides about 1.5%
improvements in the debug build of the static library, and 1% in
release build.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Doing this removes `&lt;map&gt;` from the include set of the base reporter
interface, and thus from bunch more TUs. This provides about 1.5%
improvements in the debug build of the static library, and 1% in
release build.
</pre>
</div>
</content>
</entry>
<entry>
<title>Split catch_reporter_bases.hpp into two separate headers</title>
<updated>2020-08-23T05:30:26+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-08-22T21:16:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=ed7eaf2df3dc4d38974234591d725c4cdba11a84'/>
<id>ed7eaf2df3dc4d38974234591d725c4cdba11a84</id>
<content type='text'>
Each of the two reporter bases now has its own header file, and
cpp file. Even though this adds another TU to the compilation,
the total CPU time taken by compilation is reduced by about 1%
for debug build and ~0.5% for optimized build of the main library.
(The improvement would be roughly doubles without splitting the TUs,
but the maintainability hit is not worth it.)

The code size of the static library build has also somewhat decreased.

Follow up: Introduce combined TU for reporters, and further split
apart the catch_reporter_streaming_base.hpp header into its
constituent parts, as it still contains a whole bunch of other stuff.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Each of the two reporter bases now has its own header file, and
cpp file. Even though this adds another TU to the compilation,
the total CPU time taken by compilation is reduced by about 1%
for debug build and ~0.5% for optimized build of the main library.
(The improvement would be roughly doubles without splitting the TUs,
but the maintainability hit is not worth it.)

The code size of the static library build has also somewhat decreased.

Follow up: Introduce combined TU for reporters, and further split
apart the catch_reporter_streaming_base.hpp header into its
constituent parts, as it still contains a whole bunch of other stuff.
</pre>
</div>
</content>
</entry>
<entry>
<title>Split out CaseSensitive enum out of catch_common.hpp</title>
<updated>2020-08-18T19:02:25+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-08-18T11:11:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=6a46b344c02b2548b11e4b66f95618bd5c90d110'/>
<id>6a46b344c02b2548b11e4b66f95618bd5c90d110</id>
<content type='text'>
Only very few places actually use it, so there is no need to have
it be central to everywhere.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Only very few places actually use it, so there is no need to have
it be central to everywhere.
</pre>
</div>
</content>
</entry>
<entry>
<title>Split the NonCopyable helper out of catch_common.hpp</title>
<updated>2020-08-18T19:02:23+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-08-18T09:35:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=e7eb74981513364e6543aeec30446fda4c9a3de9'/>
<id>e7eb74981513364e6543aeec30446fda4c9a3de9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Clara cleanups</title>
<updated>2020-08-10T18:30:40+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-08-08T16:18:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=24b83edf8aca78c975c5589baf22a5de311498a7'/>
<id>24b83edf8aca78c975c5589baf22a5de311498a7</id>
<content type='text'>
* Clara is now split between a header and a cpp file.
* Removed the deprecated `+` and `+=` operators for composing
  a parser.
* Renamed `clara` and `detail` namespaces to be inline with the
rest of Catch2 (they are now `Clara` and `Detail` respectively).
* Taken most of user-exposed types out of the `Detail` namespace
completely (instead of using `using` directives to bring them into
the outer namespace).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Clara is now split between a header and a cpp file.
* Removed the deprecated `+` and `+=` operators for composing
  a parser.
* Renamed `clara` and `detail` namespaces to be inline with the
rest of Catch2 (they are now `Clara` and `Detail` respectively).
* Taken most of user-exposed types out of the `Detail` namespace
completely (instead of using `using` directives to bring them into
the outer namespace).
</pre>
</div>
</content>
</entry>
<entry>
<title>Split TextFlow out from Clara</title>
<updated>2020-08-03T21:40:14+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-08-01T18:32:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=e7aa432850c34557e857d8675bff9b3f03de41b8'/>
<id>e7aa432850c34557e857d8675bff9b3f03de41b8</id>
<content type='text'>
Now that it has its own header, various reporter TUs that want to
format text do not have to also include Clara. Together with
outlining implementations from a header into a separate TU, this
has noticeably improved the compilation times of the testing impl.

As part of this split, I also implemented some improvements to the
TextFlow code in comparison to the upstream code. These are:

* Replaced the `Spacer` type with a free function that constructs
special `Column` that does the same thing.
* Generic performance improvements, such as eliminating needless
allocations, reserving space in needed allocations, and using smarter
algorithms in some places.
* Because `Column` only ever stored 1 string in its vector, it now
holds the string directly instead.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now that it has its own header, various reporter TUs that want to
format text do not have to also include Clara. Together with
outlining implementations from a header into a separate TU, this
has noticeably improved the compilation times of the testing impl.

As part of this split, I also implemented some improvements to the
TextFlow code in comparison to the upstream code. These are:

* Replaced the `Spacer` type with a free function that constructs
special `Column` that does the same thing.
* Generic performance improvements, such as eliminating needless
allocations, reserving space in needed allocations, and using smarter
algorithms in some places.
* Because `Column` only ever stored 1 string in its vector, it now
holds the string directly instead.
</pre>
</div>
</content>
</entry>
</feed>
