|
| 1 | +- [libassert 1.1](#libassert-11) |
| 2 | +- [libassert 1.0 🎉](#libassert-10-) |
| 3 | + |
| 4 | +## libassert 1.1 |
| 5 | + |
| 6 | +Changelog: |
| 7 | ++ Added `-DNO_ASSERT_RELEASE_EVAL` to make `ASSERT` behave more like traditional C assert |
| 8 | ++ Renamed library's namespace to `libassert::` |
| 9 | ++ Added customization point for `libassert::detail::stringify` |
| 10 | ++ Added support for assertions in constexpr functions |
| 11 | ++ Some internal refactoring, bug fixes, and typo corrections |
| 12 | ++ Better cmake, big thanks to @qdewaghe! |
| 13 | + |
| 14 | +## libassert 1.0 🎉 |
| 15 | + |
| 16 | +Changelog: |
| 17 | + |
| 18 | ++ Renamed: `CHECK` to `DEBUG_ASSERT` and `ASSERT` no longer provides an optimizer hint in release. For the hint use |
| 19 | + `ASSUME` - I gave the naming a lot of thought and decided on making naming state intent clearly |
| 20 | ++ Overhauled assertion handling to produce better codegen and only compute extra diagnostic expressions in the failure |
| 21 | + path |
| 22 | ++ Library options: |
| 23 | + + No longer automatically decompose `&&` and `||` expressions because of short-circuiting (decided this behavior was |
| 24 | + too surprising), this can be re-enabled if desired with `-DASSERT_DECOMPOSE_BINARY_LOGICAL` |
| 25 | + + It's no longer the default to `#define` the lowercase `assert` alias, this alias can be enabled with |
| 26 | + `-DASSERT_LOWERCASE` |
| 27 | + + Removed `-DNCOLOR` in favor of `asserts::config::set_color_output` and `asserts::utils::strip_colors`. This allows |
| 28 | + easiest customization of the color printing behavior and making string replacements in this code path is not a |
| 29 | + performance concern |
| 30 | ++ Assertions are printed only in color by the default handler when the output destination is a tty |
| 31 | ++ Custom assert failure handlers |
| 32 | + + Overhauled assertion printing to allow custom assertion failure handlers to print for desired widths |
| 33 | + + Added interface for custom assertion handlers to get a filename, line number, function signature, and assertion |
| 34 | + message from the assertion printer |
| 35 | ++ Improved handling for extra diagnostics and optional assertion messages |
| 36 | ++ Ensuring clean compilation under strictest possible warning flags (everything short of -pedantic and /W4, including |
| 37 | + -Wshadow) |
| 38 | ++ Support for MSVC compilers |
| 39 | ++ Fixed windows dbghelp stack trace bugs 🎉 |
| 40 | ++ Improved windows stack trace symbol resolution (skip the `this` parameter) |
| 41 | ++ The library now makes a few internal utilities public as they are immensely useful |
| 42 | + + The library now exposes the internal stack trace generator, pretty type name generator, and stringification |
| 43 | + utilities as bonuses (also exposes internal utilities to get the terminal width and strip colors for use in a |
| 44 | + custom failure handler) |
| 45 | ++ Refactoring and cleanup |
| 46 | + + Continued moving as much logic as possible out of the .hpp and into the .cpp. Notably, nothing related to syntax |
| 47 | + highlighting is in the .hpp anymore, a lot of stringification logic has been moved out, much of the printing logic |
| 48 | + has also been moved out) |
| 49 | + + "Macro Hygiene" |
| 50 | + + Namespace reorganization |
| 51 | ++ Improved handling of forwarding in the expression decomposer |
| 52 | ++ CMake configuration |
| 53 | ++ Improved documentation |
| 54 | ++ Improvements to trace printing |
| 55 | ++ Improved type name generation |
| 56 | ++ Added cleaning for type names from the compiler |
| 57 | + + Example from MSVC:<br/>Before type cleaning: `class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>>,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>>>,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>> const ,int>>>`<br/>After type cleaning: `std::map<std::string, int, std::less<std::string>>` |
| 58 | ++ Improved value printing and stringification: |
| 59 | + + Pointers are printed with their data type, function pointers are now supported |
| 60 | + + Better display of char values in conjunction with ints |
| 61 | + + Added printing for container types |
| 62 | + + Added printing for tuple-like types |
| 63 | + + Added optional support for magic enum for better stringification of enum class values (enabled with |
| 64 | + `-DASSERT_USE_MAGIC_ENUM`) |
| 65 | ++ Added spaceship operator support |
| 66 | ++ Added Velociraptors |
| 67 | + |
| 68 | +Internal Development: |
| 69 | ++ Improved build setup |
| 70 | ++ Lots of work to setup automated unit and integration testing for the library |
| 71 | ++ Automated static analysis |
0 commit comments