=== mwrap 3.0.0-pre1 / 2023-01-09 07:06 UTC This contains many changes from the Perl port @ https://80x24.org/mwrap-perl.git * Built-in RCU-friendly version of dlmalloc, no more fragile dlsym(3m) resolution of malloc-family functions in the constructor * Allocations are now backed by O_TMPFILE on $TMPDIR on modern Linux. Since mwrap increases memory usage greatly and I needed to use it on a system where I needed more VM space but lacked the ability to add swap. * Configurable C backtrace level via MWRAP=bt:$DEPTH where $DEPTH is a non-negative integer. Be careful about increasing it, even a depth of 3-4 can be orders-of-magnitude more expensive in time and space. This can be changed dynamically at runtime via local HTTP (see below). * Embedded per-process local-socket-only HTTP server obsoletes MwrapRack when combined with mwrap-rproxy from the Perl dist (set `MWRAP=socket_dir:/dir/of/sockets') See https://80x24.org/mwrap-perl/20221210015518.272576-4-e@80x24.org/ and the new mwrap(1) man page for more info It now supports downloading CSV (suitable for importing into sqlite 3.32.0+) * License switched to GPL-3+ to be compatible with GNU binutils since we may take code from addr2line in the future. * libxxhash supported if XXH3_64bits is available (minor speedup). - Mwrap::HeapPageBody no longer supported since Ruby 3.1+ uses mmap(2) - Ruby files longer than 16.7 million lines are no longer supported :P === mwrap 2.3.0 / 2022-09-03 09:58 UTC This release now supports --enable-shared builds of Ruby which is the common setting for GNU/Linux distros. FreeBSD 12.3 support remains broken, but the code is somewhat revised so it can be more easily fixed and maintained in the future. `mwrap --help' and and `mwrap --version' are now supported, and an RDoc error which only happens during `gem install' is fixed. * support --enabled-shared builds of Ruby * extconf.rb: avoid RDoc errors during gem install * add --version and --help args * cleanup some FreeBSD-related workarounds === mwrap 2.2.0 / 2022-08-22 18:14 UTC This release adds Ruby 2.7, 3.0, and 3.1 support. This also fixes breakage in urcu v0.11.4, v0.12.3, and v0.13.1. While urcu v0.12.4 and v0.13.2 were released 2022-08-18, old versions will continue to be in distros for a while (and urcu v0.11.x won't be updated). There are also several updates ported from the Perl version. 7 changes since v2.1.0 in 2018: memalign: perform rcu_read_unlock on ENOMEM workaround breakage from urcu v0.11.4 constify arg for totals_add_rcu support Ruby 3.0.x disable HeapPageBody count test for Ruby 3.1 quiet uninitialized and unused variable warnings various doc updates === mwrap 2.1.0 - heap_page_body struct tracking / 2018-08-11 04:17 UTC This release enables tracking of memalign allocations for "struct heap_page_body" in the Ruby GC. This can be useful for tracking deathspans (time between free and re-allocation) of heap page bodies which can cause fragmentation in some malloc implementations, including glibc. The documentation for it is available at: https://80x24.org/mwrap/Mwrap/HeapPageBody.html And a live demo runs at: https://80x24.org/MWRAP/heap_pages This release also includes global counters for Mwrap.total_bytes_allocated and Mwrap.total_bytes_freed 10 changes since v2.0.0 (2018-07-20): add olddoc.yml to generate links in page footers add .olddoc.yml to MANIFEST gemspec: use "git describe" output for prereleases add global counters for total bytes allocated/freed keep stats for memalign-ed heap_page_body in Ruby remove "memalign:" MWRAP option allow dump_heap: mask via MWRAP env tweak hpb stats destructor output struct acc: use 64-bit counters doc: 2.1 pre-release updates === mwrap 2.0.0 / 2018-07-20 09:19 UTC This release includes significant changes to track live allocations and frees. It can find memory leaks from malloc with less overhead than valgrind's leakchecker and there is a new Rack endpoint (MwrapRack) which can display live allocation stats. API additions: * Mwrap#[] - https://80x24.org/mwrap/Mwrap.html#method-c-5B-5D * Mwrap::SourceLocation - https://80x24.org/mwrap/Mwrap/SourceLocation.html * MwrapRack - https://80x24.org/mwrap/MwrapRack.html Incompatible changes: * Mwrap.clear now an alias to Mwrap.reset; as it's unsafe to implement the new Mwrap#[] API otherwise: https://80x24.org/mwrap-public/20180716211933.5835-12-e@80x24.org/ 26 changes since v1.0.0: README: improve usage example MANIFEST: add .document add benchmark use __attribute__((weak)) instead of dlsym Mwrap.dump: do not segfault on invalid IO arg bin/mwrap: support LISTEN_FDS env from systemd support per-allocation headers for per-alloc tracking mwrap: use malloc to do our own memalign hold RCU read lock to insert each allocation realloc: do not copy if allocation failed internal_memalign: do not assume real_malloc succeeds ensure ENOMEM is preserved in errno when appropriate memalign: check alignment on all public functions reduce stack usage from file names resolve real_malloc earlier for C++ programs allow analyzing live allocations via Mwrap[location] alias Mwrap.clear to Mwrap.reset implement accessors for SourceLocation mwrap_aref: quiet -Wshorten-64-to-32 warning fixes for FreeBSD 11.1... use memrchr to extract address under glibc do not track allocations for constructor and Init_ disable memalign tracking by default support Mwrap.quiet to temporarily disable allocation tracking mwrap_rack: Rack app to track live allocations documentation updates for 2.0.0 release === mwrap 1.0.0 - initial release / 2018-07-02 09:30 UTC initial