CARVIEW |
Select Language
HTTP/2 301
date: Wed, 30 Jul 2025 23:31:05 GMT
content-type: text/html; charset=utf-8
content-length: 0
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
location: https://github.com/catchorg/Catch2/releases
cache-control: no-cache
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
set-cookie: _gh_sess=i8qj2s878RZuSXH3gt9DhkHp%2FzppW1RW4XzTfM0bkxD4V5scgxI%2F7WfPg1ZjUYlfipI7bz2POfe39qnybVdvFK3VZkt3ltmV6CBG%2FNVYQRf4WmtPn6WJtiCdg1RWD16qdYl6z5wmixmNH2Q%2FgT%2BYTGo8lPAiHZeBI73KPxwJagHcVm9%2ByR2aSsqOZCb9CbOjJeCDeAD69MsowZF4rvZJloDWM%2BbNTmi9g5zZ1RdTpdxtj%2Fv7HNuzHAkh2HxAGuNcgbnUmxgXLpYurUpsikCcNA%3D%3D--OGysZlQGUjcfydur--LsCNRUC3R3OYhBFnUTwbMQ%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.960001254.1753918265; Path=/; Domain=github.com; Expires=Thu, 30 Jul 2026 23:31:05 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 30 Jul 2026 23:31:05 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: 8800:3BDB3D:C27E6:122051:688AAB39
HTTP/2 200
date: Wed, 30 Jul 2025 23:31:06 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"91eba885fea547f8a253dc6a24595116"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
x-github-request-id: 8800:3BDB3D:C27F5:12206A:688AAB39
Releases · catchorg/Catch2 · GitHub
24 Jul 20:04
horenmar
Martin Hořeňovský
horenmar
Martin Hořeňovský
Loading
09 Apr 18:52
ChrisThrasher
Chris Thrasher
ChrisThrasher
Chris Thrasher
Loading
05 Jan 23:43
horenmar
Martin Hořeňovský
horenmar
Martin Hořeňovský
Loading
17 Sep 08:50
horenmar
Martin Hořeňovský
horenmar
Martin Hořeňovský
Loading
14 Aug 10:11
horenmar
Martin Hořeňovský
horenmar
Martin Hořeňovský
Loading
05 May 19:10
horenmar
Martin Hořeňovský
horenmar
Martin Hořeňovský
Loading
10 Apr 10:23
horenmar
Martin Hořeňovský
horenmar
Martin Hořeňovský
Loading
01 Mar 21:16
horenmar
Martin Hořeňovský
horenmar
Martin Hořeňovský
Loading
31 Dec 14:18
horenmar
Martin Hořeňovský
horenmar
Martin Hořeňovský
Loading
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Releases: catchorg/Catch2
Releases · catchorg/Catch2
v3.9.0
v3.9.0
This tag was signed with the committer’s verified signature.
The key has expired.
fee8162
This commit was signed with the committer’s verified signature.
The key has expired.
Compare
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
andSKIP
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 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
Assets 6
9 people reacted
v3.8.1
v3.8.1
This tag was signed with the committer’s verified signature.
2b60af8
This commit was signed with the committer’s verified signature.
Compare
Assets 6
13 people reacted
v3.8.0
v3.8.0
This tag was signed with the committer’s verified signature.
The key has expired.
914aeec
This commit was signed with the committer’s verified signature.
The key has expired.
Compare
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 withvalue_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.
- This is not correct
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 forPRE_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
- This means that
- Added
ADD_TAGS_AS_LABELS
option. If specified, each CTest test will be labeled with corrensponding Catch2's test tag
- Removed redundant
- 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.
Assets 6
10 people reacted
v3.7.1
v3.7.1
This tag was signed with the committer’s verified signature.
The key has expired.
fa43b77
This commit was signed with the committer’s verified signature.
The key has expired.
Compare
Improvements
- Applied the JUnit reporter's optimization from last release to the SonarQube reporter
- Suppressed
-Wuseless-cast
inCHECK_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
- Running no tests is now guaranteed to exit with 2 (without the
Fixes
- Fixed out-of-bounds access when the arg parser encounters single
-
as an argument (#2905)
Miscellaneous
Assets 6
17 people reacted
v3.7.0
v3.7.0
This tag was signed with the committer’s verified signature.
The key has expired.
31588bb
This commit was signed with the committer’s verified signature.
The key has expired.
Compare
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
- Unlike
- 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
orDYLD_FRAMEWORK_PATHS
args - It won't overwrite the environment paths for test discovery
- It won't reorder paths in
Assets 6
25 people reacted
v3.6.0
v3.6.0
This tag was signed with the committer’s verified signature.
The key has expired.
4e8d92b
This commit was signed with the committer’s verified signature.
The key has expired.
Compare
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 tomax_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
SelfTest
target can be built through Bazel (#2857)
Assets 6
15 people reacted
v3.5.4
v3.5.4
This tag was signed with the committer’s verified signature.
The key has expired.
b5373da
This commit was signed with the committer’s verified signature.
The key has expired.
Compare
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
- This manifested itself when generating random
- 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 targetting 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
incatch_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)
Assets 6
11 people reacted
v3.5.3
v3.5.3
This tag was signed with the committer’s verified signature.
The key has expired.
8ac8190
This commit was signed with the committer’s verified signature.
The key has expired.
Compare
Fixes
- Fixed OOB access when computing filename tag (from the
-#
flag) for file without extension (#2798) - Fixed the linking against
log
on Android to bePRIVATE
(#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
andSECTION
(#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
, and0787132fc82a75e3fb255aa9484ca1dc1eff2a30
.
- This is required for compiling
Miscellaneous
Assets 6
6 people reacted
v3.5.2
v3.5.1
v3.5.1
This tag was signed with the committer’s verified signature.
The key has expired.
f981c9c
This commit was signed with the committer’s verified signature.
The key has expired.
Compare
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
Assets 6
12 people reacted
Previous Next
You can’t perform that action at this time.