diff options
| author | Leitwolf | 2026-10-11 10:09:19 +0300 |
|---|---|---|
| committer | GitHub | 2026-10-11 10:09:19 +0300 |
| commit | ce6fa1996a8e358efdcff53a7628584077d9855c (patch) | |
| tree | d76f5945311828511e3ea55712487f21fbf8f70f /docs | |
| parent | 5633c5c98ec073ae938253bcfc72430d5d9aee89 (diff) | |
| parent | 1f78d8903c2fb18afea8c3055f8df83d8c60d9b5 (diff) | |
| download | catch3-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.md | 10 | ||||
| -rw-r--r-- | docs/release-notes.md | 35 | ||||
| -rw-r--r-- | docs/upstream-status.md | 27 | ||||
| -rw-r--r-- | docs/why-catch3.md | 4 |
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. |