diff --git a/CHANGELOG.md b/CHANGELOG.md index b94223d..c985f2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog - [Changelog](#changelog) +- [v0.8.0](#v080) - [v0.7.5](#v075) - [v0.7.4](#v074) - [v0.7.3](#v073) @@ -25,6 +26,40 @@ - [v0.1.1](#v011) - [v0.1](#v01) +# v0.8.0 + +Added: +- Added support for resolving symbols from elf and mach-o symbol tables, allowing function names to be resolved even in + a build that doesn't include debug information https://github.com/jeremy-rifkin/cpptrace/issues/201 +- Added a configurable stack trace formatter https://github.com/jeremy-rifkin/cpptrace/issues/164 +- Added configuration options for the libdwarf back-end that can be used to lower memory usage on memory-constrained + systems https://github.com/jeremy-rifkin/cpptrace/issues/193 +- Added `cpptrace::nullable::null_value` +- Made `cpptrace::nullable` member functions conditionally `constexpr` where possible + +Fixed: +- Fixed handling of `SymInitialize` when other code has already called `SymInitialize`. `SymInitialize` must only be + called once per handle and cpptrace now attempts to duplicate the current process handle to avoid conflicts. + https://github.com/jeremy-rifkin/cpptrace/issues/204 +- Fixed a couple of locking edge cases surrounding dbghelp functions +- Fixed improper deallocation of `dwarf_errmsg` in the libdwarf back-end + +Breaking changes: +- `cpptrace::get_snippet` previously included a newline at the end but it now does not. This also affects the behavior + of trace formatting with snippets enabled. + +Other: +- Significantly improved memory usage and performance of the libdwarf back-end +- Improved implementation and organization of internal utility types, such as `optional` and `Result` +- Improved trace printing and formatting implementation +- Added unit tests for library internal utilities +- Added logic to the cxxabi demangler to ensure external names begin with `_Z` or `__Z` before attempting to demangle +- Added various internal tools and abstractions to improve maintainability and clarity +- Various internal improvements for robustness +- Added a small handful of utility tool programs that are useful for continued development, maintenance, and debugging +- Improved library CI setup +- Marked the `CPPTRACE_BUILD_BENCHMARK` option as advanced + # v0.7.5 Fixed: diff --git a/CMakeLists.txt b/CMakeLists.txt index fb19634..b2eb49f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ set(package_name "cpptrace") project( cpptrace - VERSION 0.7.5 + VERSION 0.8.0 DESCRIPTION "Simple, portable, and self-contained stacktrace library for C++11 and newer " HOMEPAGE_URL "https://github.com/jeremy-rifkin/cpptrace" LANGUAGES C CXX diff --git a/README.md b/README.md index 913345b..cec5053 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ include(FetchContent) FetchContent_Declare( cpptrace GIT_REPOSITORY https://github.com/jeremy-rifkin/cpptrace.git - GIT_TAG v0.7.5 # + GIT_TAG v0.8.0 # ) FetchContent_MakeAvailable(cpptrace) target_link_libraries(your_target cpptrace::cpptrace) @@ -928,7 +928,7 @@ include(FetchContent) FetchContent_Declare( cpptrace GIT_REPOSITORY https://github.com/jeremy-rifkin/cpptrace.git - GIT_TAG v0.7.5 # + GIT_TAG v0.8.0 # ) FetchContent_MakeAvailable(cpptrace) target_link_libraries(your_target cpptrace::cpptrace) @@ -944,7 +944,7 @@ information. ```sh git clone https://github.com/jeremy-rifkin/cpptrace.git -git checkout v0.7.5 +git checkout v0.8.0 mkdir cpptrace/build cd cpptrace/build cmake .. -DCMAKE_BUILD_TYPE=Release @@ -987,7 +987,7 @@ you when installing new libraries. ```ps1 git clone https://github.com/jeremy-rifkin/cpptrace.git -git checkout v0.7.5 +git checkout v0.8.0 mkdir cpptrace/build cd cpptrace/build cmake .. -DCMAKE_BUILD_TYPE=Release @@ -1005,7 +1005,7 @@ To install just for the local user (or any custom prefix): ```sh git clone https://github.com/jeremy-rifkin/cpptrace.git -git checkout v0.7.5 +git checkout v0.8.0 mkdir cpptrace/build cd cpptrace/build cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/wherever @@ -1088,7 +1088,7 @@ make install cd ~/scratch/cpptrace-test git clone https://github.com/jeremy-rifkin/cpptrace.git cd cpptrace -git checkout v0.7.5 +git checkout v0.8.0 mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=On -DCPPTRACE_USE_EXTERNAL_LIBDWARF=On -DCMAKE_PREFIX_PATH=~/scratch/cpptrace-test/resources -DCMAKE_INSTALL_PREFIX=~/scratch/cpptrace-test/resources @@ -1108,7 +1108,7 @@ cpptrace and its dependencies. Cpptrace is available through conan at https://conan.io/center/recipes/cpptrace. ``` [requires] -cpptrace/0.7.5 +cpptrace/0.8.0 [generators] CMakeDeps CMakeToolchain