1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
<a id="top"></a>
# Release notes
These are the releases of Progmasoft Catch3. Its compatibility engine is
based on Catch2 3.16.1; Catch2's own history is in
[its release notes](https://github.com/catchorg/Catch2/blob/devel/docs/release-notes.md).
**Contents**<br>
[0.3.0 (unreleased)](#030-unreleased)<br>
[0.2.0](#020)<br>
[0.1.0](#010)<br>
## 0.3.0 (unreleased)
### Language and license
Catch3 is C++17, and its headers work in C++17 and later. Progmasoft-authored
files move to the Progmasoft Linking Exception, Version 2.0; Catch2-derived code
keeps the Boost Software License.
### The Catch3 runner
Catch3 keeps Catch2's API for writing tests and replaces its session, command
line and reporters with [a runner of its own](progmasoft-runner.md#top):
* Tests run in parallel worker processes; a crash, an exit or a hang ends one
test, not the run.
* Failures are retried alone to tell deterministic, flaky and order-dependent
failures apart; the test that leaves state behind is found by bisection.
* A history of verdicts and durations drives quarantine, learned time limits,
predictive ordering, incremental runs, replay and analytics.
* Tests are selected by change, by past failure or by prediction, and sharded
by a stable hash or by recorded duration.
* Tags declare serial and isolated tests, shared resources, dependencies,
time limits and retries.
* Every failure gets a category, a signature, an analysis and a replay command.
* Reports are console, JUnit XML, JSON and a Chrome trace; `--list=json` is a
versioned discovery format.
* Every test gets a temporary directory of its own.
* A project keeps its options in a
[`catch3.json`](progmasoft-runner.md#project-configuration), found up to
the root of the repository; the command line wins over it, and
`--config=FILE` and `--no-config` choose another file or none.
* JSON is read and written with [yyjson](https://github.com/ibireme/yyjson)
and JUnit XML is written with [pugixml](https://github.com/zeux/pugixml),
both MIT and vendored in `third_party/`. They are compiled into Catch3's
own translation units with internal linkage or a renamed namespace, so a
project that links its own copy of either library is not affected. The
amalgamated sources include them from a third file,
`extras/catch_amalgamated_third_party.hpp`.
### Breaking changes
* Catch3 has its own build and header names, so that it is never mistaken
for Catch2 and both can be used in one project:
* CMake: `find_package(Catch3)` with `Catch3::Catch3` and
`Catch3::Catch3WithMain`, options `CATCH3_*`, and the scripts
`Catch3.cmake` (`catch3_discover_tests`) and `Catch3ShardTests.cmake`
(`catch3_add_sharded_tests`). The `Progmasoft::Catch3` target is gone:
its code is part of `Catch3::Catch3`.
* Bazel `//:catch3` and `//:catch3_main`, Meson `catch3` and
`catch3-with-main`, pkg-config `catch3.pc` and `catch3-with-main.pc`.
* Headers moved from `catch2/` to `Progmasoft/Catch3/` with Progmasoft
names: `<catch2/catch_test_macros.hpp>` is
`<Progmasoft/Catch3/TestMacros.hpp>`, `<catch2/matchers/catch_matchers_string.hpp>`
is `<Progmasoft/Catch3/Matchers/String.hpp>`, and so on. Test bodies do
not change: the macros and the `Catch::` namespace keep their names.
* `ParseAndAddCatchTests.cmake`, deprecated upstream, was removed.
* Catch2's command line, reporters, `CATCH_REGISTER_REPORTER` and listing
were removed; see [the command line](command-line.md#top) and
[reports](reporters.md#top). Listeners keep working.
* C++17 is the minimum, for the library and for the code that uses it.
* The results model in `Progmasoft/Catch3/Results.hpp` was rewritten around
tests and attempts.
* Conan packaging was dropped.
### Fixes
* The property engine's example database can be written by several
processes at once.
## 0.2.0
Released 2026-09-24.
* Snapshot comparison and update APIs.
* Framework-neutral test result summaries and deterministic JUnit XML.
* The Progmasoft additions are a static library in every supported build
system.
## 0.1.0
Released 2026-09-24.
* The first release: a deterministic property-testing API next to the
Catch2-compatible engine.
* Bazel module metadata, and CMake, Meson, Xmake and Premake builds.
---
[Home](Readme.md#top)
|