Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/docs
diff options
context:
space:
mode:
authorLeitwolf2026-10-11 10:09:19 +0300
committerGitHub2026-10-11 10:09:19 +0300
commitce6fa1996a8e358efdcff53a7628584077d9855c (patch)
treed76f5945311828511e3ea55712487f21fbf8f70f /docs
parent5633c5c98ec073ae938253bcfc72430d5d9aee89 (diff)
parent1f78d8903c2fb18afea8c3055f8df83d8c60d9b5 (diff)
downloadcatch3-ce6fa1996a8e358efdcff53a7628584077d9855c.tar.gz
Merge pull request #4 from Progmasoft/backport/upstream-3.16.1
Backport Catch2 3.16.1
Diffstat (limited to 'docs')
-rw-r--r--docs/deprecations.md10
-rw-r--r--docs/release-notes.md35
-rw-r--r--docs/upstream-status.md27
-rw-r--r--docs/why-catch3.md4
4 files changed, 74 insertions, 2 deletions
diff --git a/docs/deprecations.md b/docs/deprecations.md
index 3915ddbc..82f044cc 100644
--- a/docs/deprecations.md
+++ b/docs/deprecations.md
@@ -62,6 +62,16 @@ specified the filters through the new `-p/--path-filter` parameter, which
means that generators are taken into account.
+### Reporter event handling functions without noexcept
+
+> Deprecated in Catch2 3.16.1
+
+Catch2 does not try to support reporters throwing from arbitrary
+`fooStarting` or `fooEnded` test running event. For legacy reasons, the
+event listener interface is declared without `noexcept`, but in the future
+it will be changed to use `noexcept` to make this limitation explicit.
+
+
### Generator interfaces
#### Defaulted `UntypedGeneratorBase::isFinite()`
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 3a2c7734..2ba3b663 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -5,6 +5,7 @@
# Release notes
**Contents**<br>
+[3.16.1](#3161)<br>
[3.16.0](#3160)<br>
[3.15.3](#3153)<br>
[3.15.2](#3152)<br>
@@ -82,6 +83,40 @@
[Even Older versions](#even-older-versions)<br>
+## 3.16.1
+
+### Fixes
+* Fixed optimizations being disabled after including benchmarking headers under MSVC. (#3212)
+ * This was introduced in 3.16.0's fix for the deopt implementation for MSVC never being used.
+* Fixed Console reporter replacing `\0xFF`s in user-provided strings.
+* Added missing `<cassert>` include to `catch_generators_range.hpp`. (#3205)
+
+### Improvements
+* Workaround for GCC's quadratic scaling for release builds with number of test cases.
+ * In practice the improvement is only noticeable with unity builds and/or template product tests.
+* Changed how decomposer operators are defined for better compilation times.
+ * For Catch2's `SelfTest` binary, this provides ~2% build time improvement.
+* Changed how decomposer handles stringification for smaller binary sizes.
+ * For the `SelfTest` binary this is about ~8%.
+* Improved compilation costs of multiple assertions in one test cases for release builds.
+* Optimized initial test registration at process start:
+ * Fewer allocations for test cases with many tags.
+ * Faster processing for test cases with <=2 tags.
+ * Faster tag validation.
+ * Faster checking for duplicated test cases.
+* Optimized test selection and filtering:
+* Optimized filtering tests by test name.
+ * Running `SelfTest` with `abc*` as the filter pattern is ~10% faster.
+
+### Miscellaneous
+* `catch_discover_tests` registers individual tests with `--order decl` for faster startup.
+ * For `SelfTest`, this provides 20% improvement in Debug and 5% in Release builds.
+* `CMakeConfig::` family of tests use the main build's toolchain file. (#3202)
+* Deprecated throwing exceptions from the reporter interface functions.
+ * Previously, throwing from e.g. `assertionEnded` might, or might not, have worked depending on which assertion has ended. As it is not practical for Catch2 to guard against the reporters failing randomly, and marking so with `noexcept` can provide compilation throughput improvements, I decided to fully forbid it.
+ * Reporter constructors are allowed to throw and the test binary will report the error nicely before exiting.
+ * Due to C++ limitations, this deprecation cannot be marked inside the code, only in docs.
+
## 3.16.0
diff --git a/docs/upstream-status.md b/docs/upstream-status.md
index 99182ad7..ac87b654 100644
--- a/docs/upstream-status.md
+++ b/docs/upstream-status.md
@@ -13,6 +13,33 @@ licenses or compiler options:
- `222e233903d287cda4713fb08e1a959e8d71fd6d`: isolate Clang's pointer-to-bool
diagnostic at the upstream reusable-string-stream compatibility boundary.
+The branch was reviewed again through
+`08092139210881f01a34e60c5f2fd6afa0ea4024`, the commit of Catch2 3.16.1, on
+2026-10-11. The eleven changes since the previous reviewed revision were all
+backported, in upstream order, and the compatibility engine is now 3.16.1:
+
+- `d7683484`: a better message when a reporter cannot be initialized.
+- `ea5020f0`: every first-party reporter validates its custom arguments.
+- `aa01559e`: the throwing-reporter test also throws in `assertionEnded`.
+- `45cd3987`: `handleUnexpectedInflightException` is `noexcept`.
+- `6adbd539`: MSVC optimizations are enabled again after the benchmark
+ headers (upstream issue 3212).
+- `e87f2882`: test registration with non-type template parameters no longer
+ scales quadratically.
+- `73d546cd`: `REQUIRE` expands its arguments fewer times under GCC and
+ Clang.
+- `b710039a`: the decomposer operators are plain functions and no longer
+ hidden friends.
+- `f899467b`: streaming of reconstructed expressions is type-erased.
+- `8f0e70ca`: the retired `macos-14` runner is dropped from the macOS builds.
+- `08092139`: version 3.16.1, with its release notes.
+
+Each applied without a conflict in the sources. The amalgamated distribution
+under `extras/` did conflict, because it is generated; it was generated again
+from the sources of this repository with `generateAmalgamatedFiles.py`, which
+also brought it up to date with fork changes it had not yet picked up. No
+fork-owned file under `src/Progmasoft` needed a change.
+
These are compatibility fixes, not a claim that every future upstream change
is automatically incorporated. The existing Windows/macOS build and test
workflows remain the verification gate for the fork.
diff --git a/docs/why-catch3.md b/docs/why-catch3.md
index 7fbeef44..8c900ac7 100644
--- a/docs/why-catch3.md
+++ b/docs/why-catch3.md
@@ -7,7 +7,7 @@ namespace, build-target, and licensing boundary.
The name does **not** mean that this is an official Catch2 v3 release, a new
upstream version, or a project endorsed by Catch2's maintainers. The current
-compatibility engine is based on Catch2's 3.16.0 development line. The project
+compatibility engine is based on Catch2's 3.16.1 development line. The project
is still early-stage and does not yet replace or independently reimplement the
Catch2 runner.
@@ -35,7 +35,7 @@ Catch2's `Catch` namespace, established headers, macros, command-line behavior,
reporters, and coding style remain the compatibility surface. Progmasoft
features should be added under `Progmasoft::Catch3` and must not require users
to rename existing Catch2 tests. The first compatibility goal is source-level
-continuity with the included Catch2 3.16.0 base; this is not a promise that every
+continuity with the included Catch2 3.16.1 base; this is not a promise that every
future Catch2 upstream change will be adopted unchanged or that all downstream
projects have already been validated.