$npx @buildinternet/releases get rel_4h-UtI_YgGaMo2qgoqSDD
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.