Skip to content

Releases: jeremy-rifkin/libassert

Version 2.1.3

22 Dec 00:55
bee90cb
Compare
Choose a tag to compare

Added:

  • Added <libassert/version.hpp> header with version macros
  • Added export set definition
  • Made the default failure handler callback public, updated docs on custom failure handlers

Fixes:

  • Added a flag to control -Werror instead of having it on unconditionally by default
  • Added fallback for older cpptrace versions where <cpptrace/basic.hpp> didn't exist
  • Added safeguard to ensure static init order issues can never bite

Other:

  • Some internal refactoring
  • Bumped to cpptrace 0.7.4

Version 2.1.2

06 Oct 21:56
df3a4bd
Compare
Choose a tag to compare

Changes:

  • Fixed an issue with clang vs MSVC detection on windows #104
  • Bumped default cpptrace to v0.7.2 to better support older CMake versions #105
  • Updated to use new cpptrace headers for better build times

Version 2.1.1

13 Sep 13:42
b90077a
Compare
Choose a tag to compare

Fixed:

  • ODR issue due to libassert and cpptrace both using the same formatting code #103
  • Worked around old MSVC ICE
  • False-positive warnings on gcc about null pointers

Other changes:

  • Bumped default cpptrace to v0.7.1

Version 2.1.0

02 Jun 17:50
8cede19
Compare
Choose a tag to compare

Added:

  • Added software breakpoints to make assertion failures more debugger-friendly
  • Added ANSI color support for catch2 integration now that it is supported in catch v3.6.0

Fixed:

  • Fixed checking of stringifiable containers for types with operator<< overloads and fmt specializations

Other:

  • Added support for gcc 8
  • Improved testing

Version 2.0.2

30 Apr 04:40
425beca
Compare
Choose a tag to compare

Fixed:

  • Fixed minor issue with LIBASSERT_USE_MAGIC_ENUM handling in libassert-config.cmake
  • Fixed handling of edge case for internal string trimming utility

Other:

  • Bumped cpptrace to 0.5.3

Version 2.0.1

03 Apr 02:54
e64e4dd
Compare
Choose a tag to compare

Fixed:

  • Fixed issue with determining stringifiability when T::value_type is a class named value_type with a constructor #90
  • Fixed issue with an incorrect header being imported in assert-gtest.hpp #87

Other:

  • Improved internal string formatting
  • Improved Catch2 support

Version 2.0.0

17 Mar 01:23
9386c86
Compare
Choose a tag to compare

Changes since v1:

Assertion macros:

  • Replaced the previous ASSERT/VERIFY nomenclature with DEBUG_ASSERT and ASSERT
  • Updated assertion macros to no longer return a value by default
  • Added DEBUG_ASSERT_VAL, ASSERT_VAL, and ASSUME_VAL variants that return values
  • Added PANIC and UNREACHABLE
  • Added LIBASSERT_PREFIX_ASSERTIONS option to only add assertion macros with a LIBASSERT_ prefix

Assertion behavior:

  • Removed default throwing behavior for some assertion failures, all assertions now abort by default
  • Removed libassert::verification_failure
  • Removed non-fatal assertions

Custom failure handlers:

  • Removed macro-based custom assertion failure handler system
  • Added libassert::set_failure_handler
  • Removed default safe signed-unsigned comparison behavior
  • Added LIBASSERT_SAFE_COMPARISONS to opt into safe signed-unsigned comparisons
  • Simplified assertion failure handler signatures

Assertion information:

  • Removed libassert::assertion_printer
  • Added libassert::assertion_info with much more comprehensive information and methods for working with assertion
    information

Testing library support:

  • Added Catch2 and GoogleTest integrations

Library structure:

  • Removed libassert::utility and libassert::config namespaces
  • Updated the library's cmake target name to libassert::assert
  • Updated the library's header to <libasssert/assert.hpp>

Configuration:

  • Added configuration for literal formatting
  • Added configuration for path shortening modes
  • Added setting for output separator with libassert::set_separator
  • Removed libassert::set_color_output and libassert::set_rgb_output
  • Added libassert::set_color_scheme

Stringification:

  • Improved stringification generation to handle more types and better decide when there is useful information to print
  • Added stringification customization point instead of relying on operator<<(std::ostream, const T&)
  • Added LIBASSERT_NO_STRINGIFY_SMART_POINTER_OBJECTS option
  • Added limit to the number of items stringified for containers
  • Added {fmt} support with LIBASSERT_USE_FMT

Utilities:

  • Added libassert::enable_virtual_terminal_processing_if_needed() to the public interface
  • Added libassert::isatty to the public interface as well as stdin/stdout/stderr constants
  • Updated libassert::stacktrace to take color scheme and skip parameters
  • Removed libassert::replace_rgb
  • Removed libassert::strip_colors

Output:

  • Improved stacktrace format to make "click to jump to source" possible in some IDEs

Analysis:

  • Type prettifying
    • Added normalization for std::__cxx11:: to to std::
    • Added normalization for msvc ​`anonymous namespace' to (anonymous namespace)
  • Overhauled C++ tokenizer to use a much better implementation

Bug fixes:

  • Resolved long-standing crash caused by libc++'s std::regex implementation

Internal improvements:

  • Improved how data is stored in binary_diagnostics_descriptor, assert_static_parameters, and assertion_info
  • Improved internal argument processing
  • Improved assertion macro expansion
  • Added C++23 specialization for how static assertion information is stored which is hopefully faster for compile times
  • Improved handling of literal formatting
  • Removed the global lock used while processing assertions
  • Improved assertion processing logic
  • Lots of internal refactoring, cleanup, and changes to improve maintainability
  • Overhauled CMake thanks to a contributor, fixing a lot of issues and greatly improving the setup
  • Removed need for user to manually specify LIBASSERT_STATIC if using the project with cmake and a static build
  • Magic enum is now grabbed with FetchContent or externally from an existing install or package manager
  • Resolved inconsistent use of ASSERT vs LIBASSERT for the library's macro prefix
  • Updated internal error handling to use cpptrace exceptions
  • Added cmake integration testing on mingw to CI
  • General CI improvements
  • General testing improvements

Version 2.0.0-beta

16 Mar 14:59
c4035f8
Compare
Choose a tag to compare

Changes:

  • Catch2 and GoogleTest integrations
  • Implemented alternative path modes
  • {fmt} support with LIBASSERT_USE_FMT
  • Reworked stringification again
  • Overhauled C++ tokenizer to use a much better implementation
  • Added libassert::enable_virtual_terminal_processing_if_needed() to the public interface
  • Added libassert::isatty to the public interface as well as stdin/stdout/stderr constants
  • Renamed libassert::generate_stringification to libassert::stringify
  • Added setting for output separator with libassert::set_separator
  • Updated parameter passing for libassert::set_color_scheme
  • Updated libassert::stacktrace to take color scheme and skip parameters
  • Added C++23 specialization for how static assertion information is stored which is hopefully faster for compile times
  • Added LIBASSERT_PREFIX_ASSERTIONS option to only add assertion macros with a LIBASSERT_ prefix
  • Added normalization for msvc ​`anonymous namespace'
  • Added LIBASSERT_NO_STRINGIFY_SMART_POINTER_OBJECTS option
  • Improved how data is stored in binary_diagnostics_descriptor, assert_static_parameters, and assertion_info
  • Simplified up failure handler signature
  • Added limit to the number of items stringified for containers
  • Resolved long-standing bug related to libc++'s std::regex implementation
  • Added methods for getting parts of assertion info outputs for easier custom failure handler implementation
  • Improved internal argument processing
  • Cmake fixes and improvements

Version 2.0.0-alpha

28 Feb 04:26
7fb5d07
Compare
Choose a tag to compare

This is the first pre-release for version 2. Version 2 is an overhaul of the library taking lessons learned.

Major changes:

  • Replaced the previous ASSERT/VERIFY nomenclature with DEBUG_ASSERT and ASSERT
  • Updated assertion macros to no longer return a value by default
    • Debug-only assertions no longer have to evaluate the assertion expression, and removed NO_ASSERT_RELEASE_EVAL
  • Added DEBUG_ASSERT_VAL, ASSERT_VAL, and ASSUME_VAL variants that return values
  • Added PANIC and UNREACHABLE
  • Removed default throwing behavior for some assertion failures, all assertions now abort by default
  • Removed non-fatal assertions
  • Improved stringification generation to handle more types and better decide when there is useful information to print
  • Added stringification customization point instead of relying on operator<<(std::ostream, const T&)
  • Removed macro-based custom assertion failure handler system
  • Added libassert::set_failure_handler
  • Removed default safe signed-unsigned comparison behavior
  • Added LIBASSERT_SAFE_COMPARISONS to opt into safe signed-unsigned comparisons
  • Added color palette configuration
  • Added configuration for literal formatting
  • Reworked structures used to represent assertion information
    • Cleaned up binary_diagnostics_descriptor
    • Removed up extra_diagnostics struct trying to do too much
    • Renamed assertion_printer to assertion_info
    • Made more information available in the assertion_info struct
    • Removed lifetime funniness with the assertion_info struct
  • Type prettifying
    • std::__cxx11:: is simplified to std::

Core changes:

  • Cleaned up assertion macro expansion
  • Cleaned up handling of literal formatting
  • Cleaned up stringification generation
  • Cleaned up assertion processing logic
  • Removed the global lock used while processing assertions
  • Lots of internal refactoring, cleanup, and changes to improve maintainability
  • Overhauled CMake thanks to a contributor, fixing a lot of issues
  • Removed need for user to manually specify ASSERT_STATIC if using the project with cmake and a static build
  • Magic enum is now grabbed with FetchContent or externally from an existing install or package manager
  • Reworked README.md
  • Added CONTRIBUTING.md
  • Resolved inconsistent use of ASSERT vs LIBASSERT for the library's macro prefix
  • Fixed inconsistent use of assert vs libassert for referring to the library
  • Updated the library's cmake target name to libassert::assert
  • Updated the library's header to <libasssert/assert.hpp>
  • Updated internal error handling to use cpptrace exceptions
  • Added cmake integration testing on mingw to CI
  • General CI improvements
  • General testing improvements

Version 1.2.2

23 Nov 05:26
cc7e7f4
Compare
Choose a tag to compare

Small patch release that bumps the stack tracing back-end, part of getting vcpkg issues ironed out.

  • Bumped cpptrace to version 0.3.0