Published July 24, 2025
| Version v3.9.0
Software
Open
catchorg/Catch2: v3.9.0
Authors/Creators
- Martin Hořeňovský
- Phil Nash1
- Chris Thrasher
- Clare Macrae
- Jozef Grajciar
- Martin Moene2
- Kosta3
- PureAbstract
- Martin Jeřábek
- Vertexwahn
- Baruch
- offa
- Axel Huebl4
- coombez
- dvirtz
- NeroBurner
- David Seifert5
- Dimitrij Mijoski
- Pfiffikus
- Uilian Ries6
- VZ7
- Daniele E. Domenichelli
- Mickey Rose
- Maciej Patro
- Alan Jowett8
- Alexandr Timofeev
- Billy O'Neal8
- Eisuke Kawashima
- Steven Franzen
- Tim Blechmann
- 1. Shaved Yaks
- 2. Leiden University
- 3. Autodesk
- 4. LBNL, previously HZDR
- 5. Gentoo Linux
- 6. @conan-io
- 7. TT-Solutions
- 8. Microsoft
Description
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
assertionEndedevents 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_NOTHROWis 230% faster in Release and 430% faster in Debug build configuration - Simple
REQUIRE_THROWSis ~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
assertionEndedevents 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
FAILandSKIPmacros (#2941)- This allows the compiler to understand that the execution does not continue past the macro, and avoids warnings.
- Added fast path for
assertionStartingevent 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-tagsoutput (#2963) - Fixed Clang-Tidy's
readability-static-accessed-through-instancein 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_SIGcan handle signatures consisting of only types (#2680, #2995)- Moved
catch_test_run_info.hppup frominternal/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
Files
catchorg/Catch2-v3.9.0.zip
Files
(1.4 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:4d2e4ee5409cf3ebbac23c3708cb8559
|
1.4 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/catchorg/Catch2/tree/v3.9.0 (URL)
Software
- Repository URL
- https://github.com/catchorg/Catch2