Download Latest Version v3.9.0 source code.tar.gz (1.1 MB)
Email in envelope

Get an email when there's a new version of Catch2

Home / v3.9.0
Name Modified Size InfoDownloads / Week
Parent folder
catch_amalgamated.hpp.asc 2025-07-24 833 Bytes
catch_amalgamated.cpp.asc 2025-07-24 833 Bytes
catch_amalgamated.hpp 2025-07-24 531.5 kB
catch_amalgamated.cpp 2025-07-24 429.5 kB
README.md 2025-07-24 2.7 kB
v3.9.0 source code.tar.gz 2025-07-24 1.1 MB
v3.9.0 source code.zip 2025-07-24 1.4 MB
Totals: 7 Items   3.6 MB 1

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
Source: README.md, updated 2025-07-24