<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/src, branch remove_redundant_destructors</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>Remove redundant destructors</title>
<updated>2023-12-31T01:56:54+00:00</updated>
<author>
<name>Chris Thrasher</name>
</author>
<published>2023-12-28T22:39:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=a5245ac76b18beae4a5b6ed62bbf4ae0194b457c'/>
<id>a5245ac76b18beae4a5b6ed62bbf4ae0194b457c</id>
<content type='text'>
Classes will automatically inherit the virtual-ness of their base
class destructors. If the base class already has a virtual
destructor and the derived class needs default destructor semantics
then the derived class can omit defining the destructor in favor of
the compiler automatically defining it.

This has an additional benefit of reenabling move semantics. The
presence of a user-specified destructor automatically disables move
operations.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Classes will automatically inherit the virtual-ness of their base
class destructors. If the base class already has a virtual
destructor and the derived class needs default destructor semantics
then the derived class can omit defining the destructor in favor of
the compiler automatically defining it.

This has an additional benefit of reenabling move semantics. The
presence of a user-specified destructor automatically disables move
operations.
</pre>
</div>
</content>
</entry>
<entry>
<title>Handle linking to liblog when [cross] building for Android using meson. (#2784)</title>
<updated>2023-12-28T22:40:42+00:00</updated>
<author>
<name>影月 零</name>
</author>
<published>2023-12-28T22:40:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=c8262e1f40c8308a47ff22ad92286f4c3c54425d'/>
<id>c8262e1f40c8308a47ff22ad92286f4c3c54425d</id>
<content type='text'>
* Alter meson for Android cross builds.

* Handle liblog linking on Termux as well as the Android NDK.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Alter meson for Android cross builds.

* Handle liblog linking on Termux as well as the Android NDK.</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #2785 from jpalus/optional-reproducible-build</title>
<updated>2023-12-28T20:20:41+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-12-28T20:20:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=08bdd43fcd8987c922c26a32e690bffc78d3c463'/>
<id>08bdd43fcd8987c922c26a32e690bffc78d3c463</id>
<content type='text'>
Make compiler flags for reproducible builds optional</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make compiler flags for reproducible builds optional</pre>
</div>
</content>
</entry>
<entry>
<title>Make compiler flags for reproducible builds optional</title>
<updated>2023-12-27T23:41:54+00:00</updated>
<author>
<name>Jan Palus</name>
</author>
<published>2023-12-27T23:41:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=1512dac7e4c2fddadcc15f7ab316ce3d5b67e7f3'/>
<id>1512dac7e4c2fddadcc15f7ab316ce3d5b67e7f3</id>
<content type='text'>
no change in default behavior: -ffile-prefix-map is still added if
supported by compiler but add option for disabling it as it breaks
generic tools for extracting debuginfo/debugsource from build artifacts
like: https://sourceware.org/git/?p=debugedit.git;a=blob;f=scripts/find-debuginfo.in
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
no change in default behavior: -ffile-prefix-map is still added if
supported by compiler but add option for disabling it as it breaks
generic tools for extracting debuginfo/debugsource from build artifacts
like: https://sourceware.org/git/?p=debugedit.git;a=blob;f=scripts/find-debuginfo.in
</pre>
</div>
</content>
</entry>
<entry>
<title>Move-enable various parts of TextFlow</title>
<updated>2023-12-27T20:43:49+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-12-27T20:43:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=b52d97855d794175e69abc6f0eceee9ec3c1bd0e'/>
<id>b52d97855d794175e69abc6f0eceee9ec3c1bd0e</id>
<content type='text'>
This removes about 200 pointless copies from printing the help
message (the original motivation for the change), and also nicely
improves performance of the various reporters that depend on
TextFlow.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This removes about 200 pointless copies from printing the help
message (the original motivation for the change), and also nicely
improves performance of the various reporters that depend on
TextFlow.
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid copying TokenStreams while parsing</title>
<updated>2023-12-27T20:14:12+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-12-27T20:11:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=eaafd076743407e930a11297425f33c1f78220b0'/>
<id>eaafd076743407e930a11297425f33c1f78220b0</id>
<content type='text'>
The code is now even worse mess than before, due to the ad-hoc
implementation of Result-ish type based on virtual functions in
Clara, but it has dropped the allocations for empty binary down
to 151.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The code is now even worse mess than before, due to the ad-hoc
implementation of Result-ish type based on virtual functions in
Clara, but it has dropped the allocations for empty binary down
to 151.
</pre>
</div>
</content>
</entry>
<entry>
<title>Args and TokenStream use StringRefs instead of std::strings</title>
<updated>2023-12-27T15:24:33+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-12-27T15:19:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=5d637d4c6b72dc21e2e198894ba0527729fba535'/>
<id>5d637d4c6b72dc21e2e198894ba0527729fba535</id>
<content type='text'>
Because TokenStream is copied around a lot, moving it to use
`StringRef` removes _a lot_ of allocations per `Opt` in the parser.
Args are not copied around much, but changing them as well makes it
obvious that they do not participate in the ownership.

The changes add up to removing ~180 allocations for "empty"
invocation of the test binary.
(`./tests/ExtraTests/NoTests --allow-running-no-tests -o /dev/null`
is down to 317 allocs)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Because TokenStream is copied around a lot, moving it to use
`StringRef` removes _a lot_ of allocations per `Opt` in the parser.
Args are not copied around much, but changing them as well makes it
obvious that they do not participate in the ownership.

The changes add up to removing ~180 allocations for "empty"
invocation of the test binary.
(`./tests/ExtraTests/NoTests --allow-running-no-tests -o /dev/null`
is down to 317 allocs)
</pre>
</div>
</content>
</entry>
<entry>
<title>Use StringRef for Opt's optNames</title>
<updated>2023-12-26T15:03:22+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-12-26T13:01:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=cd3c7ebe873c3da91ce57c6b2221ba95ee7f93e6'/>
<id>cd3c7ebe873c3da91ce57c6b2221ba95ee7f93e6</id>
<content type='text'>
Removes another ~70 allocations.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Removes another ~70 allocations.
</pre>
</div>
</content>
</entry>
<entry>
<title>Enable moving Opts into Parser</title>
<updated>2023-12-26T14:41:07+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-12-26T10:57:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=5d5f42f99b7409b6b051182fae69fd22f8877a6d'/>
<id>5d5f42f99b7409b6b051182fae69fd22f8877a6d</id>
<content type='text'>
This also required keeping the reference type in the fluent interface
for Opts.

Removes another ~40 allocations.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This also required keeping the reference type in the fluent interface
for Opts.

Removes another ~40 allocations.
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid copying Clara::Parser for every inserted Opt</title>
<updated>2023-12-26T14:11:48+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-12-26T10:55:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=c57e349d1d62fcdf96aef576a5c200ae2078daad'/>
<id>c57e349d1d62fcdf96aef576a5c200ae2078daad</id>
<content type='text'>
This prevents the full construction from being O(N^2) in number
of `Opt`s, and also reduces the number of allocations for running
no tests significantly:

`tests/SelfTest`: 7705 -&gt; 6095
`tests/ExtraTests/NoTests` 2215 -&gt; 605
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This prevents the full construction from being O(N^2) in number
of `Opt`s, and also reduces the number of allocations for running
no tests significantly:

`tests/SelfTest`: 7705 -&gt; 6095
`tests/ExtraTests/NoTests` 2215 -&gt; 605
</pre>
</div>
</content>
</entry>
</feed>
