diff options
| author | Leitwolf11 | 2026-10-11 02:56:25 +0300 |
|---|---|---|
| committer | Leitwolf11 | 2026-10-11 02:56:25 +0300 |
| commit | 1f78d8903c2fb18afea8c3055f8df83d8c60d9b5 (patch) | |
| tree | d76f5945311828511e3ea55712487f21fbf8f70f /docs/release-notes.md | |
| parent | 5633c5c98ec073ae938253bcfc72430d5d9aee89 (diff) | |
| download | catch3-1f78d8903c2fb18afea8c3055f8df83d8c60d9b5.tar.gz | |
Backport Catch2 3.16.1
Review Catch2 devel through 08092139210881f01a34e60c5f2fd6afa0ea4024,
the commit of 3.16.1, and apply the eleven changes since the last
reviewed revision in upstream order:
d7683484 better message when a reporter cannot be initialized
ea5020f0 custom argument validation in every first-party reporter
aa01559e throwing-reporter test also throws in assertionEnded
45cd3987 noexcept on handleUnexpectedInflightException
6adbd539 MSVC optimizations enabled again after the benchmark headers
e87f2882 no quadratic scaling for NTTP test registration
73d546cd REQUIRE expands its arguments fewer times under GCC and Clang
b710039a decomposer operators as plain functions
f899467b type-erased streaming of reconstructed expressions
8f0e70ca retired macos-14 runner dropped
08092139 version 3.16.1 and its release notes
All of them applied to the sources without a conflict. The amalgamated
distribution under extras/ conflicted because it is generated; it is
generated again from the sources of this repository, which also brings
it up to date with fork changes it had not picked up: the list-based
stream pool, the Clang diagnostic boundary and the cassert include.
No file under src/Progmasoft changes. The fork-owned texts that name
the engine version say 3.16.1, and docs/upstream-status.md records the
review. Upstream files keep their names, licenses and compiler options.
Built with Clang 22 on Windows and tested: 148 of 149 tests pass. The
one that fails, Reporters::CrashInJunitReporter, fails the same way on
devel without this change with that compiler.
Diffstat (limited to 'docs/release-notes.md')
| -rw-r--r-- | docs/release-notes.md | 35 |
1 files changed, 35 insertions, 0 deletions
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 |