Releases: jeremy-rifkin/libassert
Releases · jeremy-rifkin/libassert
Version 2.1.3
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
Version 2.1.1
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
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
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
Version 2.0.0
Changes since v1:
Assertion macros:
- Replaced the previous
ASSERT
/VERIFY
nomenclature withDEBUG_ASSERT
andASSERT
- Updated assertion macros to no longer return a value by default
- Added
DEBUG_ASSERT_VAL
,ASSERT_VAL
, andASSUME_VAL
variants that return values - Added
PANIC
andUNREACHABLE
- Added
LIBASSERT_PREFIX_ASSERTIONS
option to only add assertion macros with aLIBASSERT_
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
andlibassert::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
andlibassert::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 tostd::
- Added normalization for msvc
`anonymous namespace'
to(anonymous namespace)
- Added normalization for
- 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
, andassertion_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
vsLIBASSERT
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
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
tolibassert::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 aLIBASSERT_
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
, andassertion_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
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 withDEBUG_ASSERT
andASSERT
- 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
- Debug-only assertions no longer have to evaluate the assertion expression, and removed
- Added
DEBUG_ASSERT_VAL
,ASSERT_VAL
, andASSUME_VAL
variants that return values - Added
PANIC
andUNREACHABLE
- 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
toassertion_info
- Made more information available in the
assertion_info
struct - Removed lifetime funniness with the
assertion_info
struct
- Cleaned up
- Type prettifying
std::__cxx11::
is simplified tostd::
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
vsLIBASSERT
for the library's macro prefix - Fixed inconsistent use of
assert
vslibassert
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
Small patch release that bumps the stack tracing back-end, part of getting vcpkg issues ironed out.
- Bumped cpptrace to version 0.3.0