2025-10-05  Franklin "Snaipe" Mathieu  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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=<always|never|auto> 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * criterion: version 2.1.0
    * Addition: Added file mocking utilities
    * Addition: Added parameterized tests

2015-09-20  Franklin "Snaipe" Mathieu  <franklinmathieu@gmail.com>

    * criterion: version 2.0.2
    * Fix: Fixed rare bug where tests from only one compilation unit would run.

2015-09-19  Franklin "Snaipe" Mathieu  <franklinmathieu@gmail.com>

    * criterion: version 2.0.1
    * Fix: Fixed wrong setjmp() usage making tests compiled with optimisations
      crash.

2015-09-14  Franklin "Snaipe" Mathieu  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * 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  <franklinmathieu@gmail.com>

    * criterion: version 0.2.0
    * Added criterion internals.
    * Added Test, ReportHook, assert and expect macros.
