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

summaryrefslogtreecommitdiffhomepage
path: root/docs/release-notes.md
diff options
context:
space:
mode:
authorLeitwolf112026-10-24 19:07:10 +0300
committerLeitwolf112026-10-24 19:07:10 +0300
commita2edf60b9f410d26485ac7c0492870a0905f9545 (patch)
treecd2055cb2eeb0bdef1d5bed1d39d9569df6f5b97 /docs/release-notes.md
parent4f1c759cffcb14bd6511e1d7c5fbace682e24f2d (diff)
downloadcatch3-a2edf60b9f410d26485ac7c0492870a0905f9545.tar.gz
Remove what Catch2's maintainers left that is not ours
Catch3 is maintained by Progmasoft, but the repository still carried Catch2's funding links, its maintainer list and GPG keys, a Code of Conduct contact at a Catch2 maintainer's address, its lists of users, its release process and release scripts, its AppVeyor configuration and its logos. - Removed FUNDING.yml, MAINTAINERS.md, appveyor.yml with the AppVeyor and OpenCppCoverage helpers, Catch2's user lists, why-catch, release process and deprecations pages, its two logos and the major/minor/patch release scripts. releaseCommon.py keeps only what the amalgamation reads. - The Code of Conduct sends reports to support@progmasoft.com. - contributing.md and release-notes.md are written for Catch3; Catch2's release history is linked upstream. - CMake, pkg-config and Doxygen name Catch3 and its repository; the amalgamated files say which Catch3 version and which Catch2 engine they come from.
Diffstat (limited to 'docs/release-notes.md')
-rw-r--r--docs/release-notes.md2206
1 files changed, 46 insertions, 2160 deletions
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 2ba3b663..9f5a1b31 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -1,2187 +1,73 @@
<a id="top"></a>
-> **Upstream history:** This page is retained from Catch2 for provenance and compatibility. It does not describe Catch3 release policy or Progmasoft support. See [Catch3 documentation](Readme.md#top) for current guidance.
-
-
# Release notes
-**Contents**<br>
-[3.16.1](#3161)<br>
-[3.16.0](#3160)<br>
-[3.15.3](#3153)<br>
-[3.15.2](#3152)<br>
-[3.15.1](#3151)<br>
-[3.15.0](#3150)<br>
-[3.14.0](#3140)<br>
-[3.13.0](#3130)<br>
-[3.12.0](#3120)<br>
-[3.11.0](#3110)<br>
-[3.10.0](#3100)<br>
-[3.9.1](#391)<br>
-[3.9.0](#390)<br>
-[3.8.1](#381)<br>
-[3.8.0](#380)<br>
-[3.7.1](#371)<br>
-[3.7.0](#370)<br>
-[3.6.0](#360)<br>
-[3.5.4](#354)<br>
-[3.5.3](#353)<br>
-[3.5.2](#352)<br>
-[3.5.1](#351)<br>
-[3.5.0](#350)<br>
-[3.4.0](#340)<br>
-[3.3.2](#332)<br>
-[3.3.1](#331)<br>
-[3.3.0](#330)<br>
-[3.2.1](#321)<br>
-[3.2.0](#320)<br>
-[3.1.1](#311)<br>
-[3.1.0](#310)<br>
-[3.0.1](#301)<br>
-[2.13.7](#2137)<br>
-[2.13.6](#2136)<br>
-[2.13.5](#2135)<br>
-[2.13.4](#2134)<br>
-[2.13.3](#2133)<br>
-[2.13.2](#2132)<br>
-[2.13.1](#2131)<br>
-[2.13.0](#2130)<br>
-[2.12.4](#2124)<br>
-[2.12.3](#2123)<br>
-[2.12.2](#2122)<br>
-[2.12.1](#2121)<br>
-[2.12.0](#2120)<br>
-[2.11.3](#2113)<br>
-[2.11.2](#2112)<br>
-[2.11.1](#2111)<br>
-[2.11.0](#2110)<br>
-[2.10.2](#2102)<br>
-[2.10.1](#2101)<br>
-[2.10.0](#2100)<br>
-[2.9.2](#292)<br>
-[2.9.1](#291)<br>
-[2.9.0](#290)<br>
-[2.8.0](#280)<br>
-[2.7.2](#272)<br>
-[2.7.1](#271)<br>
-[2.7.0](#270)<br>
-[2.6.1](#261)<br>
-[2.6.0](#260)<br>
-[2.5.0](#250)<br>
-[2.4.2](#242)<br>
-[2.4.1](#241)<br>
-[2.4.0](#240)<br>
-[2.3.0](#230)<br>
-[2.2.3](#223)<br>
-[2.2.2](#222)<br>
-[2.2.1](#221)<br>
-[2.2.0](#220)<br>
-[2.1.2](#212)<br>
-[2.1.1](#211)<br>
-[2.1.0](#210)<br>
-[2.0.1](#201)<br>
-[Older versions](#older-versions)<br>
-[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
-
-### Fixes
-* Multiple fixes in `catch_discover_tests`:
- * Fixed `<target>_TESTS` variable accumulating JSON fragments alongside test names.
- * This was introduced during the refactoring in last release.
- * Fixed `<target>_TESTS` variable from `catch_discover_tests` not escaping test names to be properly parsed by CMake.
- * This means that e.g. test names with semicolons will not be split into multiple partial test names.
- * This bug has existed since the first version of the script.
- * Fixed `TEST_PREFIX`/`TEST_SUFFIX` args having leading/trailing whitespace stripped.
-* Added workaround for Clang 20-21 compile error with `TEMPLATE_PRODUCT_TEST_CASE` (#3115, #3173)
-
-### Improvements
-* Verbosity option is now handled per reporter.
- * The standalone `--verbosity` flag is propagated to all reporters as default, just like `--colour-mode`.
-* The JSON reporter considers verbosity when listing tests.
-* Another set of performance improvements for `catch_discover_tests` performance
- * The newest version can register about 3k tests in 1 second, up from 1k previously.
-* The initial `TEST_CASE` registration is slightly faster.
-* Reduced overhead from first instantiating `BENCHMARK` machinery in a TU.
-* Improved compilation speed when multiple templated test case macros use the same types.
-* Rewrote implementation of the string matchers
- * Case-sensitive matching (the default) is significantly faster.
- * Case-insensitive matching is faster in most cases.
-* Added optimizer barrier to calls into benchmarks without return values
- * This limits the optimizations compiler can perform **between calls** into the benchmarked function, improving the accuracy.
-* Added warning that checks for using sharding without deterministic test order (#3186)
-
-
-## 3.15.3
-
-### Fixes
-* The JSON reporter's number handling is locale-independent. (#3176)
-* Removed leftover debug message from `catch_discover_tests` (#3177)
-* Fixed typo in the "Could not jump to the Nth element" exception message (#3181)
-
-### Improvements
-* `catch_discover_tests` registers tests in deterministic (alphabetical) order.
-* `catch_discover_tests` has been rewritten to be massively faster.
- * Preparing the actual CTest script is significantly faster.
- * Parsing the JSON test array is significantly faster.
- * Running without `ADD_TAGS_AS_LABELS` set is 10-15% faster (as opposed to being the same speed) (#3169)
- * The new implementation is about 4x-5x faster, so registering 500 tests now takes ~350ms (down from 1.1s).
-* JSON writing is faster
- * Small improvement in writing non-string values
- * ~6-40% improvement in writing string values that do not need escaping
- * ~1-6% improvement in writing string values that do need escaping
-* Better support for infs and NaNs in JSON output
-
-
-## 3.15.2
-
-### Fixes
-* Fixed `--warn InfiniteGenerators` triggering even if the generator was limited to specific element via path filtering.
-* Fixed `-Wunused-parameter` triggering in `-fnoexceptions` builds.
-
-### Improvements
-* `catch_discover_tests` can handle cases where the binary prints out non-Catch2 output due to global constructors (#3162)
-
-
-## 3.15.1
-
-### Fixes
-* Fixed potential OOB access when looking for start of broken UTF-8 sequence during linebreaking (#3096)
-* Fixed `TEMPLATE_LIST_TEST_CASE_METHOD` and `CATCH_TEMPLATE_PRODUCT_TEST_CASE` potentially causing ODR violations (#3161)
-
-
-## 3.15.0
-
-### Fixes
-* Fixed ambiguous overload issue with `std::optional<T>` in C++26. (#3095)
- * Since `std::optional` was turned into a range, the partial specialization of `StringMaker` for range-like types and for `std::optional<T>` were in conflict.
-
-### Improvements
-* Simplified `CATCH_REGISTER_ENUM` internals for faster compilation and retrieval.
-* Successful assertion are slightly (1-2%) faster.
-* Generic (new-style) matchers support constexpr matching in C++20.
- * Combining matchers requires C++26.
- * Catch2-provided generic matchers are all constexpr enabled.
-* Added `STATIC_REQUIRE_THAT` for compile-time matcher assertions.
- * This requires the compiler to support enough `constexpr` for matchers, see above.
-
-
-## 3.14.0
-
-### Fixes
-* Added missing `<cstdint>` includes. (#3078)
-* Fixed suppression of empty variadic macro arguments warning on Clang <19. (#3085)
-* Fixed `catch_discover_tests` failing during `PRE_TEST` discovery if a target does not have discoverable tests. (#3075)
-* Fixed build of the main library failing with `CATCH_CONFIG_PREFIX_ALL` defined. (#3087)
-* JUnit reporter outputs single failed (errored/skipped) assertion per test case. (#1919)
-
-### Improvements
-* The default implementation of `--list-tags` and `--list-listeners` has a quiet variant.
-* Suppressed the new Clang warning about `__COUNTER__` usage. (#3076)
-* Line-wrapping counts utf-8 codepoints instead of bytes. (#1022, #3086)
- * Combining character sequences are still miscounted, but Catch2 does not aim to fully support Unicode.
-
-
-## 3.13.0
-
-### Fixes
-* `--benchmark-samples 0` no longer hard crashes (#3056)
- * The CLI validation fails instead.
-* Fixed warning suppression macros being doubly defined when using Clang on Windows (#3060)
-
-### Improvements
-* Suppressed static analysis 26426 diagnostic for MSVC (#3057)
-* Renamed the internal deprecation macro from `DEPRECATED` to `CATCH_DEPRECATED` to avoid conflicts (#3058)
-* Added `UNSCOPED_CAPTURE` macro (#2954)
-* Added `ConcatGenerator` to combine multiple separate generator into one
- * The short form is `cat`
-* Generators can now jump forward to nth element efficiently
- * Custom generators that can jump forward efficiently should override `skipToNthElementImpl`
-* Generators can declare themselves infinite
- * The generator base defaults to declaring itself finite for backwards compatibility
- * Custom generators should override `isFinite()` to return the proper value
-* Added `--warn InfiniteGenerators` to error out on `GENERATE` being given an infinite generator
-* Extended options for section filtering from CLI to include generators
- * The user can specify which element from the generator to use in the test case
- * See documentation for how the new filters work and how they can be specified
-* `MapGenerator` only calls the mapping function if the output will be used
-
-
-## 3.12.0
-
-### Fixes
-* Fixed unscoped messages after a passing fast-pathed assertion being lost.
-* Fixed the help string for `--order` to mention random order as the default. (#3045)
-* Fixed small documentation typos. (#3039)
-* Fixed compilation with `CATCH_CONFIG_THREAD_SAFE_ASSERTIONS` for older C++ standards.
-* Fixed a thread-safety issue with message macros being used too early after the process starts.
-* Fixed automatic configuration to properly handle PlayStation platform. (#3054)
-* **Fixed the _weird_ behaviour of section filtering when specifying multiple filters.** (#3038)
- * See #3038 for more details.
-
-### Improvements
-* Added `lifetimebound` attribute to various places.
- * As an example, compiler that supports lifetime analysis will now diagnose invalid use of Matcher combinators.
-* Minor compile-time improvements to stringification. (#3028)
- * `std::tuple` printer does not recurse.
- * Some implementation details were outlined into the cpp file.
-* Global variables will only be marked with `thread_local` in thread-safe builds. (#3044)
-
-### Miscellaneous
-* The thread safety support is no longer experimental.
- * The new CMake option and C++ define is now `CATCH_CONFIG_THREAD_SAFE_ASSERTIONS`.
-
-
-## 3.11.0
-
-### Fixes
-* Fixed building on non-desktop GDK platforms (#3029)
-* Fixed message macros being susceptible to race in specific scenario (#3031)
-* Catch2's SEH filter will call the previously installed filter after reporting the error (#3033)
-
-### Improvements
-* Handling of scoped messages (e.g. `CAPTURE`) is a bit faster.
-* Better out-of-the-box support for QNX (#2953)
-* Improved performance of assertions by up-to 10%
- * Release mode assertion fast-path sees the biggest improvement.
-* Faster processing of non-escaped strings in `--invisibles` mode.
-* Added support for Bazel's `TEST_RANDOM_SEED` env var (#3021)
-* Added support for Bazel's `TEST_PREMATURE_EXIT_FILE` env var (#3020)
- * This creates a file that is deleted if the tests exit normally, but stays around if the process dies unexpectedly.
- * This functionality is also exposed through CLI as `--premature-exit-guard-file`
-
-### Miscellaneous
-* **[Tuple.app](https://tuple.app/catch2) has sponsored Catch2**
-
-
-## 3.10.0
-
-### Fixes
-* pkg-config files will take `DESTDIR` env var into account when selecting install destination (#3006, #3019)
-* Changed `filter` to store the provided predicate by value (#3002, #3005)
- * This is done to avoid dangling-by-default behaviour when `filter` is used inside `GENERATE_COPY`/`GENERATE_REF`.
-
-### Improvements
-* Escaping XML and JSON output is faster when the strings do not need escaping.
- * The improvement starts at about 3x throughput, up to 10x for long strings.
-* Message macros (`INFO`, `CAPTURE`, `WARN`, `SUCCEED`, etc) are now thread safe.
-
-
-## 3.9.1
-
-### Fixes
-* Fixed bad error reporting for multiple nested assertions (#1292)
-* Fixed W4702 (unreachable code) in the polyfill for std::unreachable (#3007)
-* Fixed decomposition of assertions comparing enum-backed bitfields (#3001)
-* Fixed StringMaker specialization for `time_point<system_clock>` with non-default duration type (#2685)
-
-### Improvements
-* Exceptions thrown during stringification of decomposed expression no longer fail the assertion (#2980)
-* The selection logic for `CATCH_TRAP` prefers `__builtin_debugtrap` on all platforms when Catch2 is compiled with Clang
-
-
-## 3.9.0
-
-### Improvements
-* **Added experimental opt-in support for thread safe assertions**
- * Read the documentation for full details
-* **The default test run order has been changed to random**
-* Passing assertions are significantly faster when the reporter does not ask for `assertionEnded` events on passing assertions.
- * This is the default behaviour of e.g. Console or Compact reporter
- * Simple `REQUIRE(true)` is 60% faster in Release and 80% faster in Debug build configuration
- * Simple `REQUIRE_NOTHROW` is 230% faster in Release and 430% faster in Debug build configuration
- * Simple `REQUIRE_THROWS` is ~3% faster in Release and 20% faster in Debug build configuration (throwing introduces enough overhead that the optimizations inside Catch2 are mostly irrelevant)
-* Small (2-5%) improvement if the reporter asks for `assertionEnded` events for passing assertions.
-* The exit code constants are part of the Session API. (#2955, #2976)
-* Suppressed unsigned integer overflow checking in locations with intended overflow (#2965)
-* Reporters flush output after writing metadata, e.g. rng seed (#2964)
-* Added unreachable after `FAIL` and `SKIP` macros (#2941)
- * This allows the compiler to understand that the execution does not continue past the macro, and avoids warnings.
-* Added fast path for `assertionStarting` event when no reporter requires it
- * For backwards compatibility, this fast path is opt-in
- * A reporter can opt in by changing its `ReporterPreferences::shouldReportAllAssertionStarts`
-* Improved last seen source location tracking to be more precise
- * This is used when reporting unexpected exceptions from tests
-
-### Fixes
-* Fixed formatting of tags with more than 100 tests in the default `--list-tags` output (#2963)
-* Fixed Clang-Tidy's `readability-static-accessed-through-instance` in tests
-* Fixed most of Clang-Tidy's `cppcoreguidelines-avoid-non-const-global-variables` (#2582)
-* The lifetime of scoped messages now strictly obeys their scope (#1759, #2019, #2959)
- * Previously Catch2 would try to keep them around during unexpected exception, to provide helpful context.
- * The amount of surprises the irregularities caused was not worth the occasional utility provided.
-* `TEMPLATE_TEST_CASE_SIG` can handle signatures consisting of only types (#2680, #2995)
-* Moved `catch_test_run_info.hpp` up from `internal/` subfolder into the main one (#2972)
-
-### Miscellaneous
-* pkg-config files are now generated at install time (#2979)
- * This fixes missing debug suffix in library names
- * This fixes install prefix mismatch between build config and actuall installation
-
-
-## 3.8.1
-
-### Fixes
-* Fixed bug where catch_discover_tests fails when no TEST_CASEs are present (#2962)
-* Fixed Clang 19 -Wc++20-extensions warning (#2968)
-
-
-## 3.8.0
-
-### Improvements
-* Added `std::initializer_list` overloads for `(Unordered)RangeEquals` matcher (#2915, #2919)
-* Added explicit casts to silence GCC's `Wconversion` (#2875)
-* Made the use of `builtin_constant_p` tricks in assertion macros configurable (#2925)
- * It is used to prod GCC-like compilers into providing warnings for the asserted expressions, but the compilers miscompile it annoyingly often.
-* Cleaned out Clang-Tidy's `performance-enum-size` warnings
-* Added support for using `from_range` generator with iterators with `value_type = const T` (#2926)
- * This is not correct `value_type` typedef, but it is used in the wild and the change does not make the code meaningfully worse.
-
-### Fixes
-* Fixed crash when stringifying pre-1970 (epoch) dates on Windows (#2944)
-
-### Miscellaneous
-* Fixes and improvements for `catch_discover_tests` CMake helper
- * Removed redundant `CTEST_FILE` param when creating the indirection file for `PRE_TEST` discovery mode (#2936)
- * Rewrote the test discovery logic to use output from the JSON reporter
- * This means that `catch_discover_tests` now requires CMake 3.19 or newer
- * Added `ADD_TAGS_AS_LABELS` option. If specified, each CTest test will be labeled with corresponding Catch2's test tag
-* Bumped up the minimum required CMake version to build Catch2 to 3.16
-* Meson build now provides option to avoid installing Catch2
-* Bazel build is moved to Bzlmod.
-
-
-## 3.7.1
-
-### Improvements
-* Applied the JUnit reporter's optimization from last release to the SonarQube reporter
-* Suppressed `-Wuseless-cast` in `CHECK_THROWS_MATCHES` (#2904)
-* Standardize exit codes for various failures
- * Running no tests is now guaranteed to exit with 2 (without the `--allow-running-no-tests` flag)
- * All tests skipped is now always 4 (...)
- * Assertion failures are now always 42
- * and so on
-
-### Fixes
-* Fixed out-of-bounds access when the arg parser encounters single `-` as an argument (#2905)
-
-### Miscellaneous
-* Added `catch_config_prefix_messages.hpp` to meson build (#2903)
-* `catch_discover_tests` now supports skipped tests (#2873)
- * You can get the old behaviour by calling `catch_discover_tests` with `SKIP_IS_FAILURE` option.
-
-
-## 3.7.0
-
-### Improvements
-* Slightly improved compile times of benchmarks
-* Made the resolution estimation in benchmarks slightly more precise
-* Added new test case macro, `TEST_CASE_PERSISTENT_FIXTURE` (#2885, #1602)
- * Unlike `TEST_CASE_METHOD`, the same underlying instance is used for all partial runs of that test case
-* **MASSIVELY** improved performance of the JUnit reporter when handling successful assertions (#2897)
- * For 1 test case and 10M assertions, the new reporter runs 3x faster and uses up only 8 MB of memory, while the old one needs 7 GB of memory.
-* Reworked how output redirects works.
- * Combining a reporter writing to stdout with capturing reporter no longer leads to the capturing reporter seeing all of the other reporter's output.
- * The file based redirect no longer opens up a new temporary file for each partial test case run, so it will not run out of temporary files when running many tests in single process.
-
-### Miscellaneous
-* Better documentation for matchers on thrown exceptions (`REQUIRE_THROWS_MATCHES`)
-* Improved `catch_discover_tests`'s handling of environment paths (#2878)
- * It won't reorder paths in `DL_PATHS` or `DYLD_FRAMEWORK_PATHS` args
- * It won't overwrite the environment paths for test discovery
-
-
-## 3.6.0
-
-### Fixes
-* Fixed Windows ARM64 build by fixing the preprocessor condition guarding use `_umul128` intrinsic.
-* Fixed Windows ARM64EC build by removing intrinsic pragma it does not understand. (#2858)
- * Why doesn't the x64-emulation build mode understand x64 pragmas? Don't ask me, ask the MSVC guys.
-* Fixed the JUnit reporter sometimes crashing when reporting a fatal error. (#1210, #2855)
- * The binary will still exit, but through the original error, rather than secondary error inside the reporter.
- * The underlying fix applies to all reporters, not just the JUnit one, but only JUnit was currently causing troubles.
-
-### Improvements
-* Disable `-Wnon-virtual-dtor` in Decomposer and Matchers (#2854)
-* `precision` in floating point stringmakers defaults to `max_digits10`.
- * This means that floating point values will be printed with enough precision to disambiguate any two floats.
-* Column wrapping ignores ansi colour codes when calculating string width (#2833, #2849)
- * This makes the output much more readable when the provided messages contain colour codes.
-
-### Miscellaneous
-* Conan support improvements
- * `compatibility_cppstr` is set to False. (#2860)
- * This means that Conan won't let you mix library and project with different C++ standard settings.
- * The implementation library CMake target name through Conan is properly set to `Catch2::Catch2` (#2861)
-* `SelfTest` target can be built through Bazel (#2857)
-
-
-## 3.5.4
-
-### Fixes
-* Fixed potential compilation error when asked to generate random integers whose type did not match `std::(u)int*_t`.
- * This manifested itself when generating random `size_t`s on MacOS
-* Added missing outlined destructor causing `Wdelete-incomplete` when compiling against libstdc++ in C++23 mode (#2852)
-* Fixed regression where decomposing assertion with const instance of `std::foo_ordering` would not compile
-
-### Improvements
-* Reintroduced support for GCC 5 and 6 (#2836)
- * As with VS2017, if they start causing trouble again, they will be dropped again.
-* Added workaround for targeting newest MacOS (Sonoma) using GCC (#2837, #2839)
-* `CATCH_CONFIG_DEFAULT_REPORTER` can now be an arbitrary reporter spec
- * Previously it could only be a plain reporter name, so it was impossible to compile in custom arguments to the reporter.
-* Improved performance of generating 64bit random integers by 20+%
-
-### Miscellaneous
-* Significantly improved Conan in-tree recipe (#2831)
-* `DL_PATHS` in `catch_discover_tests` now supports multiple arguments (#2852, #2736)
-* Fixed preprocessor logic for checking whether we expect reproducible floating point results in tests.
-* Improved the floating point tests structure to avoid `Wunused` when the reproducibility tests are disabled (#2845)
-
-
-## 3.5.3
-
-### Fixes
-* Fixed OOB access when computing filename tag (from the `-#` flag) for file without extension (#2798)
-* Fixed the linking against `log` on Android to be `PRIVATE` (#2815)
-* Fixed `Wuseless-cast` in benchmarking internals (#2823)
-
-### Improvements
-* Restored compatibility with VS2017 (#2792, #2822)
- * The baseline for Catch2 is still C++14 with some reasonable workarounds for specific compilers, so if VS2017 starts acting up again, the support will be dropped again.
-* Suppressed clang-tidy's `bugprone-chained-comparison` in assertions (#2801)
-* Improved the static analysis mode to evaluate arguments to `TEST_CASE` and `SECTION` (#2817)
- * Clang-tidy should no longer warn about runtime arguments to these macros being unused in static analysis mode.
- * Clang-tidy can warn on issues involved arguments to these macros.
-* Added support for literal-zero detectors based on `consteval` constructors
- * This is required for compiling `REQUIRE((a <=> b) == 0)` against MSVC's stdlib.
- * Sadly, MSVC still cannot compile this assertion as it does not implement C++20 correctly.
- * You can use `clang-cl` with MSVC's stdlib instead.
- * If for some godforsaken reasons you want to understand this better, read the two relevant commits: [`dc51386b9fd61f99ea9c660d01867e6ad489b403`](https://github.com/catchorg/Catch2/commit/dc51386b9fd61f99ea9c660d01867e6ad489b403), and [`0787132fc82a75e3fb255aa9484ca1dc1eff2a30`](https://github.com/catchorg/Catch2/commit/0787132fc82a75e3fb255aa9484ca1dc1eff2a30).
-
-### Miscellaneous
-* Disabled tests for FP random generator reproducibility on non-SSE2 x86 targets (#2796)
-* Modified the in-tree Conan recipe to support Conan 2 (#2805)
-
-
-## 3.5.2
-
-### Fixes
-* Fixed `-Wsubobject-linkage` in the Console reporter (#2794)
-* Fixed adding new CLI Options to lvalue parser using `|` (#2787)
-
-
-## 3.5.1
-
-### Improvements
-* Significantly improved performance of the CLI parsing.
- * This includes the cost of preparing the CLI parser, so Catch2's binaries start much faster.
-
-### Miscellaneous
-* Added support for Bazel modules (#2781)
-* Added CMake option to disable the build reproducibility settings (#2785)
-* Added `log` library linking to the Meson build (#2784)
-
-
-## 3.5.0
-
-### Improvements
-* Introduced `CATCH_CONFIG_PREFIX_MESSAGES` to prefix only logging macros (#2544)
- * This means `INFO`, `UNSCOPED_INFO`, `WARN` and `CAPTURE`.
-* Section hints in static analysis mode are now `const`
- * This prevents Clang-Tidy from complaining about `misc-const-correctness`.
-* `from_range` generator supports C arrays and ranges that require ADL (#2737)
-* Stringification support for `std::optional` now also includes `std::nullopt` (#2740)
-* The Console reporter flushes output after writing benchmark runtime estimate.
- * This means that you can immediately see for how long the benchmark is expected to run.
-* Added workaround to enable compilation with ICC 19.1 (#2551, #2766)
-* Compiling Catch2 for XBox should work out of the box (#2772)
- * Catch2 should automatically disable getenv when compiled for XBox.
-* Compiling Catch2 with exceptions disabled no longer triggers `Wunused-function` (#2726)
-* **`random` Generators for integral types are now reproducible across different platforms**
- * Unlike `<random>`, Catch2's generators also support 1 byte integral types (`char`, `bool`, ...)
-* **`random` Generators for `float` and `double` are now reproducible across different platforms**
- * `long double` varies across different platforms too much to be reproducible
- * This guarantee applies only to platforms with IEEE 754 floats.
-
-### Fixes
-* UDL declaration inside Catch2 are now strictly conforming to the standard
- * `operator "" _a` is UB, `operator ""_a` is fine. Seriously.
-* Fixed `CAPTURE` tests failing to compile in C++23 mode (#2744)
-* Fixed missing include in `catch_message.hpp` (#2758)
-* Fixed `CHECK_ELSE` suppressing failure from uncaught exceptions(#2723)
-
-### Miscellaneous
-* The documentation for specifying which tests to run through commandline has been completely rewritten (#2738)
-* Fixed installation when building Catch2 with meson (#2722, #2742)
-* Fixed `catch_discover_tests` when using custom reporter and `PRE_TEST` discovery mode (#2747)
-* `catch_discover_tests` supports multi-config CMake generator in `PRE_TEST` discovery mode (#2739, #2746)
-
-
-## 3.4.0
-
-### Improvements
-* `VectorEquals` supports elements that provide only `==` and not `!=` (#2648)
-* Catch2 supports compiling with IAR compiler (#2651)
-* Various small internal performance improvements
-* Various small internal compilation time improvements
-* XMLReporter now reports location info for INFO and WARN (#1251)
- * This bumps up the xml format version to 3
-* Documented that `SKIP` in generator constructor can be used to handle empty generator (#1593)
-* Added experimental static analysis support to `TEST_CASE` and `SECTION` macros (#2681)
- * The two macros are redefined in a way that helps the SA tools reason about the possible paths through a test case with sections.
- * The support is controlled by the `CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT` option and autodetects clang-tidy and Coverity.
-* `*_THROWS`, `*_THROWS_AS`, etc now suppress warning coming from `__attribute__((warn_unused_result))` on GCC (#2691)
- * Unlike plain `[[nodiscard]]`, this warning is not silenced by void cast. WTF GCC?
-
-### Fixes
-* Fixed `assertionStarting` events being sent after the expr is evaluated (#2678)
-* Errors in `TEST_CASE` tags are now reported nicely (#2650)
-
-### Miscellaneous
-* Bunch of improvements to `catch_discover_tests`
- * Added DISCOVERY_MODE option, so the discovery can happen either post build or pre-run.
- * Fixed handling of semicolons and backslashes in test names (#2674, #2676)
-* meson build can disable building tests (#2693)
-* meson build properly sets meson version 0.54.1 as the minimal supported version (#2688)
-
-
-## 3.3.2
-
-### Improvements
-* Further reduced allocations
- * The compact, console, TAP and XML reporters perform less allocations in various cases
- * Removed 1 allocation per entered `SECTION`/`TEST_CASE`.
- * Removed 2 allocations per test case exit, if stdout/stderr is captured
-* Improved performance
- * Section tracking is 10%-25% faster than in v3.3.0
- * Assertion handling is 5%-10% faster than in v3.3.0
- * Test case registration is 1%-2% faster than in v3.3.0
- * Tiny speedup for registering listeners
- * Tiny speedup for `CAPTURE`, `TEST_CASE_METHOD`, `METHOD_AS_TEST_CASE`, and `TEMPLATE_LIST_TEST_*` macros.
-* `Contains`, `RangeEquals` and `UnorderedRangeEquals` matchers now support ranges with iterator + sentinel pair
-* Added `IsNaN` matcher
- * Unlike `REQUIRE(isnan(x))`, `REQUIRE_THAT(x, IsNaN())` shows you the value of `x`.
-* Suppressed `declared_but_not_referenced` warning for NVHPC (#2637)
-
-### Fixes
-* Fixed performance regression in section tracking introduced in v3.3.1
- * Extreme cases would cause the tracking to run about 4x slower than in 3.3.0
-
-
-## 3.3.1
-
-### Improvements
-* Reduced allocations and improved performance
- * The exact improvements are dependent on your usage of Catch2.
- * For example running Catch2's SelfTest binary performs 8k less allocations.
- * The main improvement comes from smarter handling of `SECTION`s, especially sibling `SECTION`s
-
-
-## 3.3.0
-
-### Improvements
-
-* Added `MessageMatches` exception matcher (#2570)
-* Added `RangeEquals` and `UnorderedRangeEquals` generic range matchers (#2377)
-* Added `SKIP` macro for skipping tests from within the test body (#2360)
- * All built-in reporters have been extended to handle it properly, whether your custom reporter needs changes depends on how it was written
- * `skipTest` reporter event **is unrelated** to this, and has been deprecated since it has practically no uses
-* Restored support for PPC Macs in the break-into-debugger functionality (#2619)
-* Made our warning suppression compatible with CUDA toolkit pre 11.5 (#2626)
-* Cleaned out some static analysis complaints
-
-
-### Fixes
-
-* Fixed macro redefinition warning when NVCC was reporting as MSVC (#2603)
-* Fixed throws in generator constructor causing the whole binary to abort (#2615)
- * Now it just fails the test
-* Fixed missing transitive include with libstdc++13 (#2611)
-
-
-### Miscellaneous
-
-* Improved support for dynamic library build with non-MSVC compilers on Windows (#2630)
-* When used as a subproject, Catch2 keeps its generated header in a separate directory from the main project (#2604)
-
-
-
-## 3.2.1
-
-### Improvements
-* Fix the reworked decomposer to work with older (pre 9) GCC versions (#2571)
- * **This required more significant changes to properly support C++20, there might be bugs.**
-
-
-## 3.2.0
-
-### Improvements
-* Catch2 now compiles on PlayStation (#2562)
-* Added `CATCH_CONFIG_GETENV` compile-time toggle (#2562)
- * This toggle guards whether Catch2 calls `std::getenv` when reading env variables
-* Added support for more Bazel test environment variables
- * `TESTBRIDGE_TEST_ONLY` is now supported (#2490)
- * Sharding variables, `TEST_SHARD_INDEX`, `TEST_TOTAL_SHARDS`, `TEST_SHARD_STATUS_FILE`, are now all supported (#2491)
-* Bunch of small tweaks and improvements in reporters
- * The TAP and SonarQube reporters output the used test filters
- * The XML reporter now also reports the version of its output format
- * The compact reporter now uses the same summary output as the console reporter (#878, #2554)
-* Added support for asserting on types that can only be compared with literal 0 (#2555)
- * A canonical example is C++20's `std::*_ordering` types, which cannot be compared with an `int` variable, only `0`
- * The support extends to any type with this property, not just the ones in stdlib
- * This change imposes 2-3% slowdown on compiling files that are heavy on `REQUIRE` and friends
- * **This required significant rewrite of decomposition, there might be bugs**
-* Simplified internals of matcher related macros
- * This provides about ~2% speed up compiling files that are heavy on `REQUIRE_THAT` and friends
-
-
-### Fixes
-* Cleaned out some warnings and static analysis issues
- * Suppressed `-Wcomma` warning rarely occurring in templated test cases (#2543)
- * Constified implementation details in `INFO` (#2564)
- * Made `MatcherGenericBase` copy constructor const (#2566)
-* Fixed serialization of test filters so the output roundtrips
- * This means that e.g. `./tests/SelfTest "aaa bbb", [approx]` outputs `Filters: "aaa bbb",[approx]`
-
-
-### Miscellaneous
-* Catch2's build no longer leaks `-ffile-prefix-map` setting to dependees (#2533)
-
-
-
-## 3.1.1
-
-### Improvements
-* Added `Catch::getSeed` function that user code can call to retrieve current rng-seed
-* Better detection of compiler support for `-ffile-prefix-map` (#2517)
-* Catch2's shared libraries now have `SOVERSION` set (#2516)
-* `catch2/catch_all.hpp` convenience header no longer transitively includes `windows.h` (#2432, #2526)
-
-
-### Fixes
-* Fixed compilation on Universal Windows Platform
-* Fixed compilation on VxWorks (#2515)
-* Fixed compilation on Cygwin (#2540)
-* Remove unused variable in reporter registration (#2538)
-* Fixed some symbol visibility issues with dynamic library on Windows (#2527)
-* Suppressed `-Wuseless-cast` warnings in `REQUIRE_THROWS*` macros (#2520, #2521)
- * This was triggered when the potentially throwing expression evaluates to `void`
-* Fixed "warning: storage class is not first" with `nvc++` (#2533)
-* Fixed handling of `DL_PATHS` argument to `catch_discover_tests` on MacOS (#2483)
-* Suppressed `*-avoid-c-arrays` clang-tidy warning in `TEMPLATE_TEST_CASE` (#2095, #2536)
-
-
-### Miscellaneous
-* Fixed CMake install step for Catch2 build as dynamic library (#2485)
-* Raised minimum CMake version to 3.10 (#2523)
- * Expect the minimum CMake version to increase once more in next few releases.
-* Whole bunch of doc updates and fixes
- * #1444, #2497, #2547, #2549, and more
-* Added support for building Catch2 with Meson (#2530, #2539)
-
-
-
-## 3.1.0
-
-### Improvements
-* Improved suppression of `-Wparentheses` for older GCCs
- * Turns out that even GCC 9 does not properly handle `_Pragma`s in the C++ frontend.
-* Added type constraints onto `random` generator (#2433)
- * These constraints copy what the standard says for the underlying `std::uniform_int_distribution`
-* Suppressed -Wunused-variable from nvcc (#2306, #2427)
-* Suppressed -Wunused-variable from MinGW (#2132)
-* Added All/Any/NoneTrue range matchers (#2319)
- * These check that all/any/none of boolean values in a range are true.
-* The JUnit reporter now normalizes classnames from C++ namespaces to Java-like namespaces (#2468)
- * This provides better support for other JUnit based tools.
-* The Bazel support now understands `BAZEL_TEST` environment variable (#2459)
- * The `CATCH_CONFIG_BAZEL_SUPPORT` configuration option is also still supported.
-* Returned support for compiling Catch2 with GCC 5 (#2448)
- * This required removing inherited constructors from Catch2's internals.
- * I recommend updating to a newer GCC anyway.
-* `catch_discover_tests` now has a new options for setting library load path(s) when running the Catch2 binary (#2467)
-
-
-### Fixes
-* Fixed crash when listing listeners without any registered listeners (#2442)
-* Fixed nvcc compilation error in constructor benchmarking helper (#2477)
-* Catch2's CMakeList supports pre-3.12 CMake again (#2428)
- * The gain from requiring CMake 3.12 was very minor, but y'all should really update to newer CMake
-
-
-### Miscellaneous