Skip to content

0.6.0

Compare
Choose a tag to compare
@koute koute released this 09 Jun 08:47
· 318 commits to master since this release
c103773

Major changes:

  • Added a runtime backtrace cache; backtraces are now deduplicated when profiling, which results in less data being generated.
  • Added automatic culling of temporary allocations when running with MEMORY_PROFILER_CULL_TEMPORARY_ALLOCATIONS set to 1.
  • Added support for reallocarray.
  • Added support for unwinding through JITed code, provided the JIT compiler registers its unwinding tables through __register_frame.
  • Added support for unwinding through frames which require arbitrary DWARF expressions to be evaluated when resolving register values.
  • Added support for DWARF expressions that fetch memory.
  • Allocations are not tracked by their addresses anymore; they're now tracked by unique IDs, which fixes a race condition when multiple threads are simultaneously allocating and deallocating memory in quick succession.
  • mmap calls are now not gathered by default.
  • Rewrote TLS state management; some deallocations from TLS destructors which were previously missed by the profiler are now gathered.
  • When profiling is disabled at runtime the profiler doesn't completely shutdown anymore, and will keep on gathering data for those allocations which were made before it was disabled; when reenabled it won't create a new file anymore and instead it will keep on writing to the same file as it did before it was disabled.
  • The profiler now requires Rust nightly to compile.