2025-10-05 Franklin "Snaipe" Mathieu * criterion: version 2.4.3 * Fix: fixed C23 compilation (Petr Gajdos) * Fix: fixed compilation on FreeBSD 14.2 * Misc: CMake FindCriterion improvements (Peter Kokot). * Misc: various documentation fixes (Yohann Boniface, Christopher Sahnwaldt, Jurriaan H. Spaaks, Jonatan Schroeder, Benjamin Linskey, Sebastian Certuche). * Misc: various build system fixes (Arthur Skowronek). * Misc: various updates to dependencies. The full git changelog may be accessed with `git log v2.4.2..v2.4.3`. 2023-04-29 Franklin "Snaipe" Mathieu * criterion: version 2.4.2 * Fix: fixed crash in assert failure reporting when there was no diff. If the user-provided function to stringify an object was bugged and produced equal output for non-equal objects, thus producing an empty diff, Criterion crashed trying to access an unset parameter list. * Fix: fixed crashing tests when Criterion was compiled with nanopb>=0.4.7 (Balazs Scheidler). * Fix: fixed deadlock when test timeout was specified and the system was overloaded. * Fix: fixed segfault if map_shdr fails (David Gloe). * Fix: fixed memory leak on test failure (Jookia). * Fix: fixed gt() and ge(). * Fix: escape XML/JSON reports. * Misc: converted klib and debugbreak submodules to subprojects (Cristian Prieto). * Misc: various documentation fixes (Yuri Victorovich, Jonas Schulze). * Misc: various updates to dependencies. The full git changelog may be accessed with `git log v2.4.1..v2.4.2`. 2022-04-13 Franklin "Snaipe" Mathieu * criterion: version 2.4.1 * Fix: compiling tests with link-time-optimization no longer causes the tests to not get detected and run. * Fix: theories now correctly iterate through the argument matrix. This manifested as theories running the expected number of times, but always using the first possible combination of parameters. * Fix: fixed leak due to not calling git_libgit2_shutdown. This should appease valgrind and the address sanitizer. * Misc: added suggestion to run ldconfig in installation documentation (Gerald Senarclens de Grancy). The full git changelog may be accessed with `git log v2.4.0..v2.4.1`. 2022-01-03 Franklin "Snaipe" Mathieu * criterion: version 2.4.0 * Addition: added new experimental assertion API. The API brings a more generic approach for comparing values of arbitrary types, alongside value diffing on error. * Addition: added --color= CLI switch to explicitly add or strip colors from the test runner output. * Addition: added --encoding CLI switch to control the use of unicode in the test runner output. * Addition: added ARM (v6/v7) and ARM64 support. Huge kudos to László Várady (MrAnno) for fixing most of the issues and testing on real hardware. * Addition: added directory support to write test reports via --output. If the provided path is an existing directory, the report will be created in that directory, and the report file is named after the binary (László Várady). * Addition: added support for setting RPATH for pkg-config users (-Drpath-in-pkgconfig=enabled). * Breaking: the runner now exits with a non-zero exit status on warning by default. --ignore-warnings has been added to restore the old behaviour. * Breaking: changed '-' to mean stdout rather than stderr. /dev/stderr can instead be used to signify stderr, even on Windows. * Breaking: switched build system from CMake to Meson. * Deprecation: --ascii and CRITERION_USE_ASCII are deprecated in favor of passing --encoding=C or setting LC_ALL=C. * Fix: fixed c++ allocator to work with older compiler versions. * Fix: fixed CRITERION_DISABLE_TIME_MEASUREMENTS=1 not being picked up. * Fix: allow log functions to be called from runner-side report hooks. * Fix: allow assertions to execute in fixtures (init/fini). * Fix: test std{out,err} is now discarded when operating in quiet mode. They are also discarded when the runner output is redirected via --output. * Fix: cr_file_match_str now fails if the input is longer than the expected value (Ethiraric). * Fix: cr_file_match_str passes when both the input and expected value are empty (Ethiraric). * Fix: fixed throw assertion not failing when nothing throws. * Fix: fixed major slowdowns from running criterion in container environments with a high open file descriptor limit. * Fix: fixed libcriterion.so not being loadable on WSL due to the stack not being executable. * Fix: worked around msync not properly working on WSL and causing the runner to break. * Fix: fixed use-after-free in fprintf_locale. * Fix: fixed cr_file_match_file matching only the last block (Ethiraric). * Fix: fixed TAP test description format. TAP mandates that details must use a YAML format, while Criterion directly dumped the description string in the detail section. * Fix: fixed TAP output to comment out blank lines, since the TAP spec doesn't say anything about blank lines, and some parsers have trouble with them. * Fix: fixed c++20 incompatibility with the criterion allocator (Ersikan). * Fix: fixed escape of special characters in XML output (Paul Khuat-Duy). * Fix: fixed crash when passing an empty string to cr_log_info (Ersikan). * Fix: fixed compilation errors on macOS (Kare Nuorteva, László Várady). * Fix: fixed --debug flag aborting runner with gdbserver >= 8.3. * Fix: fixed gdb stepping issue with '--debug' on macOS (Apple silicon). * Misc: various documentation fixes (Oleksii Vilchanskyi, Sam Zaydel, Karim Dridi, Florent Poinsard, Tim Gates, László Várady, Japroz Saini). * Misc: various updates to dependencies (László Várady). * Misc: various build system fixes (Tomasz Sieprawski, László Várady). * Misc: various fixes to the autotools example (Bruno Belany). * Misc: from now on, --debug will fall back to the idle method in case no debugger can be found. The full git changelog may be accessed with `git log v2.3.3..v2.4.0`. 2018-11-05 Franklin "Snaipe" Mathieu * criterion: version 2.3.3 * Fix: Clang 5.0.x was producing test executables that caused Criterion to fork-bomb the host system. The issue has been fixed, and Criterion now pro-actively aborts itself if it detects a fork-bomb loop to avoid similar issues in the future. The full git changelog may be accessed with `git log v2.3.2..v2.3.3`. 2017-04-08 Franklin "Snaipe" Mathieu * criterion: version 2.3.2 * Fix: timings were always reporting `0`; they are now working as expected. The full git changelog may be accessed with `git log v2.3.1..v2.3.2`. 2017-02-07 Franklin "Snaipe" Mathieu * criterion: version 2.3.1 * Fix: correctly handle malformed --debug parameter * Fix: replaced the cryptic message when the debugger is not present with a more explicit one. * Fix: cache section limits on report hooks for significantly better performance. * Fix: don't report passing assertions by default for significantly better performance. * Addition: added --full-stats CLI switch to report passing assertions for compatibility purposes. The full git changelog may be accessed with `git log v2.3.0-1..v2.3.1`. 2016-12-07 Franklin "Snaipe" Mathieu * criterion: version 2.3.0-1 This is a re-release of v2.3.0. There are no substantial changes in the release, only fixes in the build system. If you are not building criterion from source, you can ignore this changelog. * Fix: Updated version strings in messages * Fix: The build system now searches for local installations of non-criterion-specific dependencies. 2016-09-18 Franklin "Snaipe" Mathieu * criterion: version 2.3.0 * Addition: added German translation files (Matthias "ailu" Günzel). * Addition: added a pkg-config file. * Addition: allow tests to be skipped with cr_skip_test() (Matthias "ailu" Günzel). * Addition: assertions on wide-strings are now available (Kevin "kevinoid" Locke). * Addition: crash-mode with --crash to raise a trap when an assertion fails for debugging purposes (Matthias "ailu" Günzel). * Addition: debugging mode with --debug. * Addition: global test timeout with --timeout. * Addition: header files in the public API now have doxygen documentation (Matthias "ailu" Günzel). * Addition: test filtering now works on windows. * Addition: user logging API with cr_log, cr_log_info, cr_log_warning, and cr_log_error. * Breaking: dropped support for MinGW, use MinGW-w64. * Breaking: dropped support for Windows XP, use Windows 7 and later. * Breaking: log_pre_init and log_pre_test in the internal logger API now takes an additional parameter. * Breaking: the SOVERSION now follows the SONAME major independently of the project version. * Change: --pattern has been renamed to --filter. * Change: removed dependency on PCRE for filtering (Matthias "ailu" Günzel). * Change: sections of all loaded shared modules are now inspected for tests and hooks. * Change: setting .exit_code = 0 now enforces the exit code of the test to be 0. * Change: string assertions now print the contents of string parameters ("kaidowei"). * Change: xml reports now includes elapsed times ("kaidowei"). * Deprecation: --no-early-exit is now a no-op and should no longer be used. * Deprecation: internal logging API is no longer public, fallbacks to the new logging API. * Fix: fail-fast now works correctly. * Fix: fixed FindCriterion.cmake with the correct package name (László "MrAnno" Várady). * Fix: position-independent executables now work. * Fix: string assertions no longer crash with a NULL parameter ("kaidowei"). * Fix: the data pipe no longer gets corrupted when running a large quantity of assertions in parallel. * Fix: using dmalloc on tests now works. * Fix: using the GOLD linker rather than BFD now works. * Fix: using the musl C library now works. 2016-06-20 Franklin "Snaipe" Mathieu * criterion: version 2.2.2 * Fix: fixed deadlocks when tests are terminated too fast * Fix: fixed crash during test teardown if spawning new threads in the test * Fix: fixed memory leak in disabled tests 2016-02-06 Franklin "Snaipe" Mathieu * criterion: version 2.2.1 * Fix: fixed criterion not being embeddable with CMake's `add_directory` * Fix: fixed resource leaks in the child pump thread * Fix: fixed redirected standard streams being leaked by cr_(assert|expect)_std(out|err) * Fix: fixed out of bounds during assert message sending * Fix: fixed naming convention conflicts for internal variables used by the implementation of cr_assert * Fix: fixed empty format string warning with GCC 4.8 * Fix: fixed file-to-file comparison assert message being corrupted 2015-12-08 Franklin "Snaipe" Mathieu * criterion: version 2.2.0 * Breaking: Renamed all unprefixed internal macros and functions that were exposed in the API, and moved them to criterion/internal. This shouldn't break your code if you did not use these in the first place. * Change: Added language-specific wrapping logic to decouple the language the tests are written in from the test runner. * Change: Rewrote the reporting logic to allow multiple test reports to be written using any format. * Addition: Added parallel jobs for the test runner. * Addition: Added C++ allocator for STL collections based on cr_malloc/cr_free. * Addition: Added criterion::parameters in C++ for simpler parameter list generation. * Addition: Added saner defaults when the tests detect they run under valgrind. * Addition: Added basic Objective-C language support. * Addition: Added JUnit XML reporting. * Addition: Added JSON reporting. * Addition: Added dynamic reporter registration. * Addition: Added back support for GCC 4.6 when compiling C tests. * Addition: Added single test execution mode. * Removal: Removed all deprecated 1.x unprefixed assertion macros. * Fix: Fixed some memory corruption happening on rare occasions on assert messages. * Fix: Fixed deadlocks happening at random when a large quantity of assert is present. * Fix: Fixed the library not compiling with the intel compiler collection. * Deprecation: All cr_assume_strings_* macros are deprecated in favor of cr_assume_str_*. * Deprecation: All cr_assume_arrays_* macros are deprecated in favor of cr_assume_arr_*. 2015-11-25 Franklin "Snaipe" Mathieu * criterion: version 2.1.1 * Fix: Fixed bug where the TAP output access the assert message after it has been freed, causing it to print garbage. 2015-09-21 Franklin "Snaipe" Mathieu * criterion: version 2.1.0 * Addition: Added file mocking utilities * Addition: Added parameterized tests 2015-09-20 Franklin "Snaipe" Mathieu * criterion: version 2.0.2 * Fix: Fixed rare bug where tests from only one compilation unit would run. 2015-09-19 Franklin "Snaipe" Mathieu * criterion: version 2.0.1 * Fix: Fixed wrong setjmp() usage making tests compiled with optimisations crash. 2015-09-14 Franklin "Snaipe" Mathieu * criterion: version 2.0.0 * Breaking: ABI incompatibility with prior versions of criterion. You **must** recompile your tests. * Breaking: cr_abort_test(NULL) does not compile anymore. * Change: Changed all assertion macros to accept a printf format string as a message. * Change: Made the API C++11-compatible. * Change: Made the library ISO C compliant. You can now compile the library with VC 14+. * Addition: Added support for theories. * Addition: Added ability to test the exit status of a test. * Addition: Added C++11 throw assertions. * Addition: Added assert message localization. * Addition: Added test timeouts. * Addition: Added test standard i/o redirection & file comparison assertions. * Removal: Removed the deprecated prefixless assertion macros * Deprecation: Deprecated cr_abort_test. * Deprecation: cr_{assert,expect}_strings_* and cr_{assert,expect}_arrays_* are deprecated in favor of cr_{assert,expect}_str_* and cr_{assert,expect}_arr_* respectively. 2015-08-20 Franklin "Snaipe" Mathieu * criterion: version 1.3.1 * Fixed OS X and Windows section iterations * Fixed report hooks not working on OS X and Windows * Fixed duplicated output when writing in PRE_ALL to a redirected stdout/err * Added -S switch to display filenames in their short version 2015-08-05 Franklin "Snaipe" Mathieu * criterion: version 1.3.0 * Turned the library into a shared library. * Added extended globbing for --pattern (requires PCRE) * Switched to a CMake build system * Fixed windows builds & output * Added basic windows SEH-to-signal translator 2015-04-26 Franklin "Snaipe" Mathieu * criterion: version 1.2.1 * Added a cr_ prefix to all assertion macros. Old macros are deprecated and will be removed in a future version. 2015-04-15 Franklin "Snaipe" Mathieu * criterion: version 1.2.0 * Added native Windows support through MinGW * Fixed inaccurate statistics on disabled and crashing tests * Fixed asserts not aborting the test when used in functions * Fixed programs not compiling when no tests are declared * Added assert_null to test for pointer nullity * Added assert_arrays_eq_cmp for padded struct arrays equality * Added i18n support * Added fr_FR localization 2015-03-24 Franklin "Snaipe" Mathieu * criterion: version 1.1.0 * Refactored logging system * Changed output format to a better-looking one * Added Syntactic coloration * Added test suite separation * Added test suite statistics * Added --list option * Added --fail-fast option * Added --pattern option 2015-03-18 Franklin "Snaipe" Mathieu * criterion: version 1.0.0 * Added test timings * Changed assert prototypes * ANSI compliance over header files * Windows + FreeBSD compatibility 2015-03-11 Franklin "Snaipe" Mathieu * criterion: version 0.3.0 * A logging interface * Various readme and documentation changes * Default CLI options & environment variables * Mac OS X compatibility * Comparison assertions, floating-point equality assertions 2015-02-06 Franklin "Snaipe" Mathieu * criterion: version 0.2.0 * Added criterion internals. * Added Test, ReportHook, assert and expect macros.