|
2 | 2 |
|
3 | 3 | # Release notes |
4 | 4 | **Contents**<br> |
| 5 | +[3.9.0](#390)<br> |
5 | 6 | [3.8.1](#381)<br> |
6 | 7 | [3.8.0](#380)<br> |
7 | 8 | [3.7.1](#371)<br> |
|
67 | 68 | [Even Older versions](#even-older-versions)<br> |
68 | 69 |
|
69 | 70 |
|
| 71 | +## 3.9.0 |
| 72 | + |
| 73 | +### Improvements |
| 74 | +* **Added experimental opt-in support for thread safe assertions** |
| 75 | + * Read the documentation for full details |
| 76 | +* **The default test run order has been changed to random** |
| 77 | +* Passing assertions are significantly faster when the reporter does not ask for `assertionEnded` events on passing assertions. |
| 78 | + * This is the default behaviour of e.g. Console or Compact reporter |
| 79 | + * Simple `REQUIRE(true)` is 60% faster in Release and 80% faster in Debug build configuration |
| 80 | + * Simple `REQUIRE_NOTHROW` is 230% faster in Release and 430% faster in Debug build configuration |
| 81 | + * 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) |
| 82 | +* Small (2-5%) improvement if the reporter asks for `assertionEnded` events for passing assertions. |
| 83 | +* The exit code constants are part of the Session API. (#2955, #2976) |
| 84 | +* Suppressed unsigned integer overflow checking in locations with intended overflow (#2965) |
| 85 | +* Reporters flush output after writing metadata, e.g. rng seed (#2964) |
| 86 | +* Added unreachable after `FAIL` and `SKIP` macros (#2941) |
| 87 | + * This allows the compiler to understand that the execution does not continue past the macro, and avoids warnings. |
| 88 | +* Added fast path for `assertionStarting` event when no reporter requires it |
| 89 | + * For backwards compatibility, this fast path is opt-in |
| 90 | + * A reporter can opt in by changing its `ReporterPreferences::shouldReportAllAssertionStarts` |
| 91 | +* Improved last seen source location tracking to be more precise |
| 92 | + * This is used when reporting unexpected exceptions from tests |
| 93 | + |
| 94 | +### Fixes |
| 95 | +* Fixed formatting of tags with more than 100 tests in the default `--list-tags` output (#2963) |
| 96 | +* Fixed Clang-Tidy's `readability-static-accessed-through-instance` in tests |
| 97 | +* Fixed most of Clang-Tidy's `cppcoreguidelines-avoid-non-const-global-variables` (#2582) |
| 98 | +* The lifetime of scoped messages now strictly obeys their scope (#1759, #2019, #2959) |
| 99 | + * Previously Catch2 would try to keep them around during unexpected exception, to provide helpful context. |
| 100 | + * The amount of surprises the irregularities caused was not worth the occasional utility provided. |
| 101 | +* `TEMPLATE_TEST_CASE_SIG` can handle signatures consisting of only types (#2680, #2995) |
| 102 | +* Moved `catch_test_run_info.hpp` up from `internal/` subfolder into the main one (#2972) |
| 103 | + |
| 104 | +### Miscellaneous |
| 105 | +* pkg-config files are now generated at install time (#2979) |
| 106 | + * This fixes missing debug suffix in library names |
| 107 | + * This fixes install prefix mismatch between build config and actuall installation |
| 108 | + |
| 109 | + |
70 | 110 | ## 3.8.1 |
71 | 111 |
|
72 | 112 | ### Fixes |
|
0 commit comments