Blame jemalloc/ChangeLog

Packit Service 724aca
Following are change highlights associated with official releases.  Important
Packit Service 724aca
bug fixes are all mentioned, but some internal enhancements are omitted here for
Packit Service 724aca
brevity.  Much more detail can be found in the git revision history:
Packit Service 724aca
Packit Service 724aca
    https://github.com/jemalloc/jemalloc
Packit Service 724aca
Packit Service 724aca
* 5.2.1 (August 5, 2019)
Packit Service 724aca
Packit Service 724aca
  This release is primarily about Windows.  A critical virtual memory leak is
Packit Service 724aca
  resolved on all Windows platforms.  The regression was present in all releases
Packit Service 724aca
  since 5.0.0.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix a severe virtual memory leak on Windows.  This regression was first
Packit Service 724aca
    released in 5.0.0.  (@Ignition, @j0t, @frederik-h, @davidtgoldblatt,
Packit Service 724aca
    @interwq)
Packit Service 724aca
  - Fix size 0 handling in posix_memalign().  This regression was first released
Packit Service 724aca
    in 5.2.0.  (@interwq)
Packit Service 724aca
  - Fix the prof_log unit test which may observe unexpected backtraces from
Packit Service 724aca
    compiler optimizations.  The test was first added in 5.2.0.  (@marxin,
Packit Service 724aca
    @gnzlbg, @interwq)
Packit Service 724aca
  - Fix the declaration of the extent_avail tree.  This regression was first
Packit Service 724aca
    released in 5.1.0.  (@zoulasc)
Packit Service 724aca
  - Fix an incorrect reference in jeprof.  This functionality was first released
Packit Service 724aca
    in 3.0.0.  (@prehistoric-penguin)
Packit Service 724aca
  - Fix an assertion on the deallocation fast-path.  This regression was first
Packit Service 724aca
    released in 5.2.0.  (@yinan1048576)
Packit Service 724aca
  - Fix the TLS_MODEL attribute in headers.  This regression was first released
Packit Service 724aca
    in 5.0.0.  (@zoulasc, @interwq)
Packit Service 724aca
Packit Service 724aca
  Optimizations and refactors:
Packit Service 724aca
  - Implement opt.retain on Windows and enable by default on 64-bit.  (@interwq,
Packit Service 724aca
    @davidtgoldblatt)
Packit Service 724aca
  - Optimize away a branch on the operator delete[] path.  (@mgrice)
Packit Service 724aca
  - Add format annotation to the format generator function.  (@zoulasc)
Packit Service 724aca
  - Refactor and improve the size class header generation.  (@yinan1048576)
Packit Service 724aca
  - Remove best fit.  (@djwatson)
Packit Service 724aca
  - Avoid blocking on background thread locks for stats.  (@oranagra, @interwq)
Packit Service 724aca
Packit Service 724aca
* 5.2.0 (April 2, 2019)
Packit Service 724aca
Packit Service 724aca
  This release includes a few notable improvements, which are summarized below:
Packit Service 724aca
  1) improved fast-path performance from the optimizations by @djwatson; 2)
Packit Service 724aca
  reduced virtual memory fragmentation and metadata usage; and 3) bug fixes on
Packit Service 724aca
  setting the number of background threads.  In addition, peak / spike memory
Packit Service 724aca
  usage is improved with certain allocation patterns.  As usual, the release and
Packit Service 724aca
  prior dev versions have gone through large-scale production testing.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Implement oversize_threshold, which uses a dedicated arena for allocations
Packit Service 724aca
    crossing the specified threshold to reduce fragmentation.  (@interwq)
Packit Service 724aca
  - Add extents usage information to stats.  (@tyleretzel)
Packit Service 724aca
  - Log time information for sampled allocations.  (@tyleretzel)
Packit Service 724aca
  - Support 0 size in sdallocx.  (@djwatson)
Packit Service 724aca
  - Output rate for certain counters in malloc_stats.  (@zinoale)
Packit Service 724aca
  - Add configure option --enable-readlinkat, which allows the use of readlinkat
Packit Service 724aca
    over readlink.  (@davidtgoldblatt)
Packit Service 724aca
  - Add configure options --{enable,disable}-{static,shared} to allow not
Packit Service 724aca
    building unwanted libraries.  (@Ericson2314)
Packit Service 724aca
  - Add configure option --disable-libdl to enable fully static builds.
Packit Service 724aca
    (@interwq)
Packit Service 724aca
  - Add mallctl interfaces:
Packit Service 724aca
	+ opt.oversize_threshold (@interwq)
Packit Service 724aca
	+ stats.arenas..extent_avail (@tyleretzel)
Packit Service 724aca
	+ stats.arenas..extents.<j>.n{dirty,muzzy,retained} (@tyleretzel)
Packit Service 724aca
	+ stats.arenas..extents.<j>.{dirty,muzzy,retained}_bytes
Packit Service 724aca
	  (@tyleretzel)
Packit Service 724aca
Packit Service 724aca
  Portability improvements:
Packit Service 724aca
  - Update MSVC builds.  (@maksqwe, @rustyx)
Packit Service 724aca
  - Workaround a compiler optimizer bug on s390x.  (@rkmisra)
Packit Service 724aca
  - Make use of pthread_set_name_np(3) on FreeBSD.  (@trasz)
Packit Service 724aca
  - Implement malloc_getcpu() to enable percpu_arena for windows.  (@santagada)
Packit Service 724aca
  - Link against -pthread instead of -lpthread.  (@paravoid)
Packit Service 724aca
  - Make background_thread not dependent on libdl.  (@interwq)
Packit Service 724aca
  - Add stringify to fix a linker directive issue on MSVC.  (@daverigby)
Packit Service 724aca
  - Detect and fall back when 8-bit atomics are unavailable.  (@interwq)
Packit Service 724aca
  - Fall back to the default pthread_create if dlsym(3) fails.  (@interwq)
Packit Service 724aca
Packit Service 724aca
  Optimizations and refactors:
Packit Service 724aca
  - Refactor the TSD module.  (@davidtgoldblatt)
Packit Service 724aca
  - Avoid taking extents_muzzy mutex when muzzy is disabled.  (@interwq)
Packit Service 724aca
  - Avoid taking large_mtx for auto arenas on the tcache flush path.  (@interwq)
Packit Service 724aca
  - Optimize ixalloc by avoiding a size lookup.  (@interwq)
Packit Service 724aca
  - Implement opt.oversize_threshold which uses a dedicated arena for requests
Packit Service 724aca
    crossing the threshold, also eagerly purges the oversize extents.  Default
Packit Service 724aca
    the threshold to 8 MiB.  (@interwq)
Packit Service 724aca
  - Clean compilation with -Wextra.  (@gnzlbg, @jasone)
Packit Service 724aca
  - Refactor the size class module.  (@davidtgoldblatt)
Packit Service 724aca
  - Refactor the stats emitter.  (@tyleretzel)
Packit Service 724aca
  - Optimize pow2_ceil.  (@rkmisra)
Packit Service 724aca
  - Avoid runtime detection of lazy purging on FreeBSD.  (@trasz)
Packit Service 724aca
  - Optimize mmap(2) alignment handling on FreeBSD.  (@trasz)
Packit Service 724aca
  - Improve error handling for THP state initialization.  (@jsteemann)
Packit Service 724aca
  - Rework the malloc() fast path.  (@djwatson)
Packit Service 724aca
  - Rework the free() fast path.  (@djwatson)
Packit Service 724aca
  - Refactor and optimize the tcache fill / flush paths.  (@djwatson)
Packit Service 724aca
  - Optimize sync / lwsync on PowerPC.  (@chmeeedalf)
Packit Service 724aca
  - Bypass extent_dalloc() when retain is enabled.  (@interwq)
Packit Service 724aca
  - Optimize the locking on large deallocation.  (@interwq)
Packit Service 724aca
  - Reduce the number of pages committed from sanity checking in debug build.
Packit Service 724aca
    (@trasz, @interwq)
Packit Service 724aca
  - Deprecate OSSpinLock.  (@interwq)
Packit Service 724aca
  - Lower the default number of background threads to 4 (when the feature
Packit Service 724aca
    is enabled).  (@interwq)
Packit Service 724aca
  - Optimize the trylock spin wait.  (@djwatson)
Packit Service 724aca
  - Use arena index for arena-matching checks.  (@interwq)
Packit Service 724aca
  - Avoid forced decay on thread termination when using background threads.
Packit Service 724aca
    (@interwq)
Packit Service 724aca
  - Disable muzzy decay by default.  (@djwatson, @interwq)
Packit Service 724aca
  - Only initialize libgcc unwinder when profiling is enabled.  (@paravoid,
Packit Service 724aca
    @interwq)
Packit Service 724aca
Packit Service 724aca
  Bug fixes (all only relevant to jemalloc 5.x):
Packit Service 724aca
  - Fix background thread index issues with max_background_threads.  (@djwatson,
Packit Service 724aca
    @interwq)
Packit Service 724aca
  - Fix stats output for opt.lg_extent_max_active_fit.  (@interwq)
Packit Service 724aca
  - Fix opt.prof_prefix initialization.  (@davidtgoldblatt)
Packit Service 724aca
  - Properly trigger decay on tcache destroy.  (@interwq, @amosbird)
Packit Service 724aca
  - Fix tcache.flush.  (@interwq)
Packit Service 724aca
  - Detect whether explicit extent zero out is necessary with huge pages or
Packit Service 724aca
    custom extent hooks, which may change the purge semantics.  (@interwq)
Packit Service 724aca
  - Fix a side effect caused by extent_max_active_fit combined with decay-based
Packit Service 724aca
    purging, where freed extents can accumulate and not be reused for an
Packit Service 724aca
    extended period of time.  (@interwq, @mpghf)
Packit Service 724aca
  - Fix a missing unlock on extent register error handling.  (@zoulasc)
Packit Service 724aca
Packit Service 724aca
  Testing:
Packit Service 724aca
  - Simplify the Travis script output.  (@gnzlbg)
Packit Service 724aca
  - Update the test scripts for FreeBSD.  (@devnexen)
Packit Service 724aca
  - Add unit tests for the producer-consumer pattern.  (@interwq)
Packit Service 724aca
  - Add Cirrus-CI config for FreeBSD builds.  (@jasone)
Packit Service 724aca
  - Add size-matching sanity checks on tcache flush.  (@davidtgoldblatt,
Packit Service 724aca
    @interwq)
Packit Service 724aca
Packit Service 724aca
  Incompatible changes:
Packit Service 724aca
  - Remove --with-lg-page-sizes.  (@davidtgoldblatt)
Packit Service 724aca
Packit Service 724aca
  Documentation:
Packit Service 724aca
  - Attempt to build docs by default, however skip doc building when xsltproc
Packit Service 724aca
    is missing. (@interwq, @cmuellner)
Packit Service 724aca
Packit Service 724aca
* 5.1.0 (May 4, 2018)
Packit Service 724aca
Packit Service 724aca
  This release is primarily about fine-tuning, ranging from several new features
Packit Service 724aca
  to numerous notable performance and portability enhancements.  The release and
Packit Service 724aca
  prior dev versions have been running in multiple large scale applications for
Packit Service 724aca
  months, and the cumulative improvements are substantial in many cases.
Packit Service 724aca
Packit Service 724aca
  Given the long and successful production runs, this release is likely a good
Packit Service 724aca
  candidate for applications to upgrade, from both jemalloc 5.0 and before.  For
Packit Service 724aca
  performance-critical applications, the newly added TUNING.md provides
Packit Service 724aca
  guidelines on jemalloc tuning.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Implement transparent huge page support for internal metadata.  (@interwq)
Packit Service 724aca
  - Add opt.thp to allow enabling / disabling transparent huge pages for all
Packit Service 724aca
    mappings.  (@interwq)
Packit Service 724aca
  - Add maximum background thread count option.  (@djwatson)
Packit Service 724aca
  - Allow prof_active to control opt.lg_prof_interval and prof.gdump.
Packit Service 724aca
    (@interwq)
Packit Service 724aca
  - Allow arena index lookup based on allocation addresses via mallctl.
Packit Service 724aca
    (@lionkov)
Packit Service 724aca
  - Allow disabling initial-exec TLS model.  (@davidtgoldblatt, @KenMacD)
Packit Service 724aca
  - Add opt.lg_extent_max_active_fit to set the max ratio between the size of
Packit Service 724aca
    the active extent selected (to split off from) and the size of the requested
Packit Service 724aca
    allocation.  (@interwq, @davidtgoldblatt)
Packit Service 724aca
  - Add retain_grow_limit to set the max size when growing virtual address
Packit Service 724aca
    space.  (@interwq)
Packit Service 724aca
  - Add mallctl interfaces:
Packit Service 724aca
    + arena..retain_grow_limit  (@interwq)
Packit Service 724aca
    + arenas.lookup  (@lionkov)
Packit Service 724aca
    + max_background_threads  (@djwatson)
Packit Service 724aca
    + opt.lg_extent_max_active_fit  (@interwq)
Packit Service 724aca
    + opt.max_background_threads  (@djwatson)
Packit Service 724aca
    + opt.metadata_thp  (@interwq)
Packit Service 724aca
    + opt.thp  (@interwq)
Packit Service 724aca
    + stats.metadata_thp  (@interwq)
Packit Service 724aca
Packit Service 724aca
  Portability improvements:
Packit Service 724aca
  - Support GNU/kFreeBSD configuration.  (@paravoid)
Packit Service 724aca
  - Support m68k, nios2 and SH3 architectures.  (@paravoid)
Packit Service 724aca
  - Fall back to FD_CLOEXEC when O_CLOEXEC is unavailable.  (@zonyitoo)
Packit Service 724aca
  - Fix symbol listing for cross-compiling.  (@tamird)
Packit Service 724aca
  - Fix high bits computation on ARM.  (@davidtgoldblatt, @paravoid)
Packit Service 724aca
  - Disable the CPU_SPINWAIT macro for Power.  (@davidtgoldblatt, @marxin)
Packit Service 724aca
  - Fix MSVC 2015 & 2017 builds.  (@rustyx)
Packit Service 724aca
  - Improve RISC-V support.  (@EdSchouten)
Packit Service 724aca
  - Set name mangling script in strict mode.  (@nicolov)
Packit Service 724aca
  - Avoid MADV_HUGEPAGE on ARM.  (@marxin)
Packit Service 724aca
  - Modify configure to determine return value of strerror_r.
Packit Service 724aca
    (@davidtgoldblatt, @cferris1000)
Packit Service 724aca
  - Make sure CXXFLAGS is tested with CPP compiler.  (@nehaljwani)
Packit Service 724aca
  - Fix 32-bit build on MSVC.  (@rustyx)
Packit Service 724aca
  - Fix external symbol on MSVC.  (@maksqwe)
Packit Service 724aca
  - Avoid a printf format specifier warning.  (@jasone)
Packit Service 724aca
  - Add configure option --disable-initial-exec-tls which can allow jemalloc to
Packit Service 724aca
    be dynamically loaded after program startup.  (@davidtgoldblatt, @KenMacD)
Packit Service 724aca
  - AArch64: Add ILP32 support.  (@cmuellner)
Packit Service 724aca
  - Add --with-lg-vaddr configure option to support cross compiling.
Packit Service 724aca
    (@cmuellner, @davidtgoldblatt)
Packit Service 724aca
Packit Service 724aca
  Optimizations and refactors:
Packit Service 724aca
  - Improve active extent fit with extent_max_active_fit.  This considerably
Packit Service 724aca
    reduces fragmentation over time and improves virtual memory and metadata
Packit Service 724aca
    usage.  (@davidtgoldblatt, @interwq)
Packit Service 724aca
  - Eagerly coalesce large extents to reduce fragmentation.  (@interwq)
Packit Service 724aca
  - sdallocx: only read size info when page aligned (i.e. possibly sampled),
Packit Service 724aca
    which speeds up the sized deallocation path significantly.  (@interwq)
Packit Service 724aca
  - Avoid attempting new mappings for in place expansion with retain, since
Packit Service 724aca
    it rarely succeeds in practice and causes high overhead.  (@interwq)
Packit Service 724aca
  - Refactor OOM handling in newImpl.  (@wqfish)
Packit Service 724aca
  - Add internal fine-grained logging functionality for debugging use.
Packit Service 724aca
    (@davidtgoldblatt)
Packit Service 724aca
  - Refactor arena / tcache interactions.  (@davidtgoldblatt)
Packit Service 724aca
  - Refactor extent management with dumpable flag.  (@davidtgoldblatt)
Packit Service 724aca
  - Add runtime detection of lazy purging.  (@interwq)
Packit Service 724aca
  - Use pairing heap instead of red-black tree for extents_avail.  (@djwatson)
Packit Service 724aca
  - Use sysctl on startup in FreeBSD.  (@trasz)
Packit Service 724aca
  - Use thread local prng state instead of atomic.  (@djwatson)
Packit Service 724aca
  - Make decay to always purge one more extent than before, because in
Packit Service 724aca
    practice large extents are usually the ones that cross the decay threshold.
Packit Service 724aca
    Purging the additional extent helps save memory as well as reduce VM
Packit Service 724aca
    fragmentation.  (@interwq)
Packit Service 724aca
  - Fast division by dynamic values.  (@davidtgoldblatt)
Packit Service 724aca
  - Improve the fit for aligned allocation.  (@interwq, @edwinsmith)
Packit Service 724aca
  - Refactor extent_t bitpacking.  (@rkmisra)
Packit Service 724aca
  - Optimize the generated assembly for ticker operations.  (@davidtgoldblatt)
Packit Service 724aca
  - Convert stats printing to use a structured text emitter.  (@davidtgoldblatt)
Packit Service 724aca
  - Remove preserve_lru feature for extents management.  (@djwatson)
Packit Service 724aca
  - Consolidate two memory loads into one on the fast deallocation path.
Packit Service 724aca
    (@davidtgoldblatt, @interwq)
Packit Service 724aca
Packit Service 724aca
  Bug fixes (most of the issues are only relevant to jemalloc 5.0):
Packit Service 724aca
  - Fix deadlock with multithreaded fork in OS X.  (@davidtgoldblatt)
Packit Service 724aca
  - Validate returned file descriptor before use.  (@zonyitoo)
Packit Service 724aca
  - Fix a few background thread initialization and shutdown issues.  (@interwq)
Packit Service 724aca
  - Fix an extent coalesce + decay race by taking both coalescing extents off
Packit Service 724aca
    the LRU list.  (@interwq)
Packit Service 724aca
  - Fix potentially unbound increase during decay, caused by one thread keep
Packit Service 724aca
    stashing memory to purge while other threads generating new pages.  The
Packit Service 724aca
    number of pages to purge is checked to prevent this.  (@interwq)
Packit Service 724aca
  - Fix a FreeBSD bootstrap assertion.  (@strejda, @interwq)
Packit Service 724aca
  - Handle 32 bit mutex counters.  (@rkmisra)
Packit Service 724aca
  - Fix a indexing bug when creating background threads.  (@davidtgoldblatt,
Packit Service 724aca
    @binliu19)
Packit Service 724aca
  - Fix arguments passed to extent_init.  (@yuleniwo, @interwq)
Packit Service 724aca
  - Fix addresses used for ordering mutexes.  (@rkmisra)
Packit Service 724aca
  - Fix abort_conf processing during bootstrap.  (@interwq)
Packit Service 724aca
  - Fix include path order for out-of-tree builds.  (@cmuellner)
Packit Service 724aca
Packit Service 724aca
  Incompatible changes:
Packit Service 724aca
  - Remove --disable-thp.  (@interwq)
Packit Service 724aca
  - Remove mallctl interfaces:
Packit Service 724aca
    + config.thp  (@interwq)
Packit Service 724aca
Packit Service 724aca
  Documentation:
Packit Service 724aca
  - Add TUNING.md.  (@interwq, @davidtgoldblatt, @djwatson)
Packit Service 724aca
Packit Service 724aca
* 5.0.1 (July 1, 2017)
Packit Service 724aca
Packit Service 724aca
  This bugfix release fixes several issues, most of which are obscure enough
Packit Service 724aca
  that typical applications are not impacted.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Update decay->nunpurged before purging, in order to avoid potential update
Packit Service 724aca
    races and subsequent incorrect purging volume.  (@interwq)
Packit Service 724aca
  - Only abort on dlsym(3) error if the failure impacts an enabled feature (lazy
Packit Service 724aca
    locking and/or background threads).  This mitigates an initialization
Packit Service 724aca
    failure bug for which we still do not have a clear reproduction test case.
Packit Service 724aca
    (@interwq)
Packit Service 724aca
  - Modify tsd management so that it neither crashes nor leaks if a thread's
Packit Service 724aca
    only allocation activity is to call free() after TLS destructors have been
Packit Service 724aca
    executed.  This behavior was observed when operating with GNU libc, and is
Packit Service 724aca
    unlikely to be an issue with other libc implementations.  (@interwq)
Packit Service 724aca
  - Mask signals during background thread creation.  This prevents signals from
Packit Service 724aca
    being inadvertently delivered to background threads.  (@jasone,
Packit Service 724aca
    @davidtgoldblatt, @interwq)
Packit Service 724aca
  - Avoid inactivity checks within background threads, in order to prevent
Packit Service 724aca
    recursive mutex acquisition.  (@interwq)
Packit Service 724aca
  - Fix extent_grow_retained() to use the specified hooks when the
Packit Service 724aca
    arena..extent_hooks mallctl is used to override the default hooks.
Packit Service 724aca
    (@interwq)
Packit Service 724aca
  - Add missing reentrancy support for custom extent hooks which allocate.
Packit Service 724aca
    (@interwq)
Packit Service 724aca
  - Post-fork(2), re-initialize the list of tcaches associated with each arena
Packit Service 724aca
    to contain no tcaches except the forking thread's.  (@interwq)
Packit Service 724aca
  - Add missing post-fork(2) mutex reinitialization for extent_grow_mtx.  This
Packit Service 724aca
    fixes potential deadlocks after fork(2).  (@interwq)
Packit Service 724aca
  - Enforce minimum autoconf version (currently 2.68), since 2.63 is known to
Packit Service 724aca
    generate corrupt configure scripts.  (@jasone)
Packit Service 724aca
  - Ensure that the configured page size (--with-lg-page) is no larger than the
Packit Service 724aca
    configured huge page size (--with-lg-hugepage).  (@jasone)
Packit Service 724aca
Packit Service 724aca
* 5.0.0 (June 13, 2017)
Packit Service 724aca
Packit Service 724aca
  Unlike all previous jemalloc releases, this release does not use naturally
Packit Service 724aca
  aligned "chunks" for virtual memory management, and instead uses page-aligned
Packit Service 724aca
  "extents".  This change has few externally visible effects, but the internal
Packit Service 724aca
  impacts are... extensive.  Many other internal changes combine to make this
Packit Service 724aca
  the most cohesively designed version of jemalloc so far, with ample
Packit Service 724aca
  opportunity for further enhancements.
Packit Service 724aca
Packit Service 724aca
  Continuous integration is now an integral aspect of development thanks to the
Packit Service 724aca
  efforts of @davidtgoldblatt, and the dev branch tends to remain reasonably
Packit Service 724aca
  stable on the tested platforms (Linux, FreeBSD, macOS, and Windows).  As a
Packit Service 724aca
  side effect the official release frequency may decrease over time.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Implement optional per-CPU arena support; threads choose which arena to use
Packit Service 724aca
    based on current CPU rather than on fixed thread-->arena associations.
Packit Service 724aca
    (@interwq)
Packit Service 724aca
  - Implement two-phase decay of unused dirty pages.  Pages transition from
Packit Service 724aca
    dirty-->muzzy-->clean, where the first phase transition relies on
Packit Service 724aca
    madvise(... MADV_FREE) semantics, and the second phase transition discards
Packit Service 724aca
    pages such that they are replaced with demand-zeroed pages on next access.
Packit Service 724aca
    (@jasone)
Packit Service 724aca
  - Increase decay time resolution from seconds to milliseconds.  (@jasone)
Packit Service 724aca
  - Implement opt-in per CPU background threads, and use them for asynchronous
Packit Service 724aca
    decay-driven unused dirty page purging.  (@interwq)
Packit Service 724aca
  - Add mutex profiling, which collects a variety of statistics useful for
Packit Service 724aca
    diagnosing overhead/contention issues.  (@interwq)
Packit Service 724aca
  - Add C++ new/delete operator bindings.  (@djwatson)
Packit Service 724aca
  - Support manually created arena destruction, such that all data and metadata
Packit Service 724aca
    are discarded.  Add MALLCTL_ARENAS_DESTROYED for accessing merged stats
Packit Service 724aca
    associated with destroyed arenas.  (@jasone)
Packit Service 724aca
  - Add MALLCTL_ARENAS_ALL as a fixed index for use in accessing
Packit Service 724aca
    merged/destroyed arena statistics via mallctl.  (@jasone)
Packit Service 724aca
  - Add opt.abort_conf to optionally abort if invalid configuration options are
Packit Service 724aca
    detected during initialization.  (@interwq)
Packit Service 724aca
  - Add opt.stats_print_opts, so that e.g. JSON output can be selected for the
Packit Service 724aca
    stats dumped during exit if opt.stats_print is true.  (@jasone)
Packit Service 724aca
  - Add --with-version=VERSION for use when embedding jemalloc into another
Packit Service 724aca
    project's git repository.  (@jasone)
Packit Service 724aca
  - Add --disable-thp to support cross compiling.  (@jasone)
Packit Service 724aca
  - Add --with-lg-hugepage to support cross compiling.  (@jasone)
Packit Service 724aca
  - Add mallctl interfaces (various authors):
Packit Service 724aca
    + background_thread
Packit Service 724aca
    + opt.abort_conf
Packit Service 724aca
    + opt.retain
Packit Service 724aca
    + opt.percpu_arena
Packit Service 724aca
    + opt.background_thread
Packit Service 724aca
    + opt.{dirty,muzzy}_decay_ms
Packit Service 724aca
    + opt.stats_print_opts
Packit Service 724aca
    + arena..initialized
Packit Service 724aca
    + arena..destroy
Packit Service 724aca
    + arena..{dirty,muzzy}_decay_ms
Packit Service 724aca
    + arena..extent_hooks
Packit Service 724aca
    + arenas.{dirty,muzzy}_decay_ms
Packit Service 724aca
    + arenas.bin..slab_size
Packit Service 724aca
    + arenas.nlextents
Packit Service 724aca
    + arenas.lextent..size
Packit Service 724aca
    + arenas.create
Packit Service 724aca
    + stats.background_thread.{num_threads,num_runs,run_interval}
Packit Service 724aca
    + stats.mutexes.{ctl,background_thread,prof,reset}.
Packit Service 724aca
      {num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds,
Packit Service 724aca
      num_owner_switch}
Packit Service 724aca
    + stats.arenas..{dirty,muzzy}_decay_ms
Packit Service 724aca
    + stats.arenas..uptime
Packit Service 724aca
    + stats.arenas..{pmuzzy,base,internal,resident}
Packit Service 724aca
    + stats.arenas..{dirty,muzzy}_{npurge,nmadvise,purged}
Packit Service 724aca
    + stats.arenas..bins.<j>.{nslabs,reslabs,curslabs}
Packit Service 724aca
    + stats.arenas..bins.<j>.mutex.
Packit Service 724aca
      {num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds,
Packit Service 724aca
      num_owner_switch}
Packit Service 724aca
    + stats.arenas..lextents.<j>.{nmalloc,ndalloc,nrequests,curlextents}
Packit Service 724aca
    + stats.arenas.i.mutexes.{large,extent_avail,extents_dirty,extents_muzzy,
Packit Service 724aca
      extents_retained,decay_dirty,decay_muzzy,base,tcache_list}.
Packit Service 724aca
      {num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds,
Packit Service 724aca
      num_owner_switch}
Packit Service 724aca
Packit Service 724aca
  Portability improvements:
Packit Service 724aca
  - Improve reentrant allocation support, such that deadlock is less likely if
Packit Service 724aca
    e.g. a system library call in turn allocates memory.  (@davidtgoldblatt,
Packit Service 724aca
    @interwq)
Packit Service 724aca
  - Support static linking of jemalloc with glibc.  (@djwatson)
Packit Service 724aca
Packit Service 724aca
  Optimizations and refactors:
Packit Service 724aca
  - Organize virtual memory as "extents" of virtual memory pages, rather than as
Packit Service 724aca
    naturally aligned "chunks", and store all metadata in arbitrarily distant
Packit Service 724aca
    locations.  This reduces virtual memory external fragmentation, and will
Packit Service 724aca
    interact better with huge pages (not yet explicitly supported).  (@jasone)
Packit Service 724aca
  - Fold large and huge size classes together; only small and large size classes
Packit Service 724aca
    remain.  (@jasone)
Packit Service 724aca
  - Unify the allocation paths, and merge most fast-path branching decisions.
Packit Service 724aca
    (@davidtgoldblatt, @interwq)
Packit Service 724aca
  - Embed per thread automatic tcache into thread-specific data, which reduces
Packit Service 724aca
    conditional branches and dereferences.  Also reorganize tcache to increase
Packit Service 724aca
    fast-path data locality.  (@interwq)
Packit Service 724aca
  - Rewrite atomics to closely model the C11 API, convert various
Packit Service 724aca
    synchronization from mutex-based to atomic, and use the explicit memory
Packit Service 724aca
    ordering control to resolve various hypothetical races without increasing
Packit Service 724aca
    synchronization overhead.  (@davidtgoldblatt)
Packit Service 724aca
  - Extensively optimize rtree via various methods:
Packit Service 724aca
    + Add multiple layers of rtree lookup caching, since rtree lookups are now
Packit Service 724aca
      part of fast-path deallocation.  (@interwq)
Packit Service 724aca
    + Determine rtree layout at compile time.  (@jasone)
Packit Service 724aca
    + Make the tree shallower for common configurations.  (@jasone)
Packit Service 724aca
    + Embed the root node in the top-level rtree data structure, thus avoiding
Packit Service 724aca
      one level of indirection.  (@jasone)
Packit Service 724aca
    + Further specialize leaf elements as compared to internal node elements,
Packit Service 724aca
      and directly embed extent metadata needed for fast-path deallocation.
Packit Service 724aca
      (@jasone)
Packit Service 724aca
    + Ignore leading always-zero address bits (architecture-specific).
Packit Service 724aca
      (@jasone)
Packit Service 724aca
  - Reorganize headers (ongoing work) to make them hermetic, and disentangle
Packit Service 724aca
    various module dependencies.  (@davidtgoldblatt)
Packit Service 724aca
  - Convert various internal data structures such as size class metadata from
Packit Service 724aca
    boot-time-initialized to compile-time-initialized.  Propagate resulting data
Packit Service 724aca
    structure simplifications, such as making arena metadata fixed-size.
Packit Service 724aca
    (@jasone)
Packit Service 724aca
  - Simplify size class lookups when constrained to size classes that are
Packit Service 724aca
    multiples of the page size.  This speeds lookups, but the primary benefit is
Packit Service 724aca
    complexity reduction in code that was the source of numerous regressions.
Packit Service 724aca
    (@jasone)
Packit Service 724aca
  - Lock individual extents when possible for localized extent operations,
Packit Service 724aca
    rather than relying on a top-level arena lock.  (@davidtgoldblatt, @jasone)
Packit Service 724aca
  - Use first fit layout policy instead of best fit, in order to improve
Packit Service 724aca
    packing.  (@jasone)
Packit Service 724aca
  - If munmap(2) is not in use, use an exponential series to grow each arena's
Packit Service 724aca
    virtual memory, so that the number of disjoint virtual memory mappings
Packit Service 724aca
    remains low.  (@jasone)
Packit Service 724aca
  - Implement per arena base allocators, so that arenas never share any virtual
Packit Service 724aca
    memory pages.  (@jasone)
Packit Service 724aca
  - Automatically generate private symbol name mangling macros.  (@jasone)
Packit Service 724aca
Packit Service 724aca
  Incompatible changes:
Packit Service 724aca
  - Replace chunk hooks with an expanded/normalized set of extent hooks.
Packit Service 724aca
    (@jasone)
Packit Service 724aca
  - Remove ratio-based purging.  (@jasone)
Packit Service 724aca
  - Remove --disable-tcache.  (@jasone)
Packit Service 724aca
  - Remove --disable-tls.  (@jasone)
Packit Service 724aca
  - Remove --enable-ivsalloc.  (@jasone)
Packit Service 724aca
  - Remove --with-lg-size-class-group.  (@jasone)
Packit Service 724aca
  - Remove --with-lg-tiny-min.  (@jasone)
Packit Service 724aca
  - Remove --disable-cc-silence.  (@jasone)
Packit Service 724aca
  - Remove --enable-code-coverage.  (@jasone)
Packit Service 724aca
  - Remove --disable-munmap (replaced by opt.retain).  (@jasone)
Packit Service 724aca
  - Remove Valgrind support.  (@jasone)
Packit Service 724aca
  - Remove quarantine support.  (@jasone)
Packit Service 724aca
  - Remove redzone support.  (@jasone)
Packit Service 724aca
  - Remove mallctl interfaces (various authors):
Packit Service 724aca
    + config.munmap
Packit Service 724aca
    + config.tcache
Packit Service 724aca
    + config.tls
Packit Service 724aca
    + config.valgrind
Packit Service 724aca
    + opt.lg_chunk
Packit Service 724aca
    + opt.purge
Packit Service 724aca
    + opt.lg_dirty_mult
Packit Service 724aca
    + opt.decay_time
Packit Service 724aca
    + opt.quarantine
Packit Service 724aca
    + opt.redzone
Packit Service 724aca
    + opt.thp
Packit Service 724aca
    + arena..lg_dirty_mult
Packit Service 724aca
    + arena..decay_time
Packit Service 724aca
    + arena..chunk_hooks
Packit Service 724aca
    + arenas.initialized
Packit Service 724aca
    + arenas.lg_dirty_mult
Packit Service 724aca
    + arenas.decay_time
Packit Service 724aca
    + arenas.bin..run_size
Packit Service 724aca
    + arenas.nlruns
Packit Service 724aca
    + arenas.lrun..size
Packit Service 724aca
    + arenas.nhchunks
Packit Service 724aca
    + arenas.hchunk..size
Packit Service 724aca
    + arenas.extend
Packit Service 724aca
    + stats.cactive
Packit Service 724aca
    + stats.arenas..lg_dirty_mult
Packit Service 724aca
    + stats.arenas..decay_time
Packit Service 724aca
    + stats.arenas..metadata.{mapped,allocated}
Packit Service 724aca
    + stats.arenas..{npurge,nmadvise,purged}
Packit Service 724aca
    + stats.arenas..huge.{allocated,nmalloc,ndalloc,nrequests}
Packit Service 724aca
    + stats.arenas..bins.<j>.{nruns,reruns,curruns}
Packit Service 724aca
    + stats.arenas..lruns.<j>.{nmalloc,ndalloc,nrequests,curruns}
Packit Service 724aca
    + stats.arenas..hchunks.<j>.{nmalloc,ndalloc,nrequests,curhchunks}
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Improve interval-based profile dump triggering to dump only one profile when
Packit Service 724aca
    a single allocation's size exceeds the interval.  (@jasone)
Packit Service 724aca
  - Use prefixed function names (as controlled by --with-jemalloc-prefix) when
Packit Service 724aca
    pruning backtrace frames in jeprof.  (@jasone)
Packit Service 724aca
Packit Service 724aca
* 4.5.0 (February 28, 2017)
Packit Service 724aca
Packit Service 724aca
  This is the first release to benefit from much broader continuous integration
Packit Service 724aca
  testing, thanks to @davidtgoldblatt.  Had we had this testing infrastructure
Packit Service 724aca
  in place for prior releases, it would have caught all of the most serious
Packit Service 724aca
  regressions fixed by this release.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Add --disable-thp and the opt.thp mallctl to provide opt-out mechanisms for
Packit Service 724aca
    transparent huge page integration.  (@jasone)
Packit Service 724aca
  - Update zone allocator integration to work with macOS 10.12.  (@glandium)
Packit Service 724aca
  - Restructure *CFLAGS configuration, so that CFLAGS behaves typically, and
Packit Service 724aca
    EXTRA_CFLAGS provides a way to specify e.g. -Werror during building, but not
Packit Service 724aca
    during configuration.  (@jasone, @ronawho)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix DSS (sbrk(2)-based) allocation.  This regression was first released in
Packit Service 724aca
    4.3.0.  (@jasone)
Packit Service 724aca
  - Handle race in per size class utilization computation.  This functionality
Packit Service 724aca
    was first released in 4.0.0.  (@interwq)
Packit Service 724aca
  - Fix lock order reversal during gdump.  (@jasone)
Packit Service 724aca
  - Fix/refactor tcache synchronization.  This regression was first released in
Packit Service 724aca
    4.0.0.  (@jasone)
Packit Service 724aca
  - Fix various JSON-formatted malloc_stats_print() bugs.  This functionality
Packit Service 724aca
    was first released in 4.3.0.  (@jasone)
Packit Service 724aca
  - Fix huge-aligned allocation.  This regression was first released in 4.4.0.
Packit Service 724aca
    (@jasone)
Packit Service 724aca
  - When transparent huge page integration is enabled, detect what state pages
Packit Service 724aca
    start in according to the kernel's current operating mode, and only convert
Packit Service 724aca
    arena chunks to non-huge during purging if that is not their initial state.
Packit Service 724aca
    This functionality was first released in 4.4.0.  (@jasone)
Packit Service 724aca
  - Fix lg_chunk clamping for the --enable-cache-oblivious --disable-fill case.
Packit Service 724aca
    This regression was first released in 4.0.0.  (@jasone, @428desmo)
Packit Service 724aca
  - Properly detect sparc64 when building for Linux.  (@glaubitz)
Packit Service 724aca
Packit Service 724aca
* 4.4.0 (December 3, 2016)
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Add configure support for *-*-linux-android.  (@cferris1000, @jasone)
Packit Service 724aca
  - Add the --disable-syscall configure option, for use on systems that place
Packit Service 724aca
    security-motivated limitations on syscall(2).  (@jasone)
Packit Service 724aca
  - Add support for Debian GNU/kFreeBSD.  (@thesam)
Packit Service 724aca
Packit Service 724aca
  Optimizations:
Packit Service 724aca
  - Add extent serial numbers and use them where appropriate as a sort key that
Packit Service 724aca
    is higher priority than address, so that the allocation policy prefers older
Packit Service 724aca
    extents.  This tends to improve locality (decrease fragmentation) when
Packit Service 724aca
    memory grows downward.  (@jasone)
Packit Service 724aca
  - Refactor madvise(2) configuration so that MADV_FREE is detected and utilized
Packit Service 724aca
    on Linux 4.5 and newer.  (@jasone)
Packit Service 724aca
  - Mark partially purged arena chunks as non-huge-page.  This improves
Packit Service 724aca
    interaction with Linux's transparent huge page functionality.  (@jasone)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix size class computations for edge conditions involving extremely large
Packit Service 724aca
    allocations.  This regression was first released in 4.0.0.  (@jasone,
Packit Service 724aca
    @ingvarha)
Packit Service 724aca
  - Remove overly restrictive assertions related to the cactive statistic.  This
Packit Service 724aca
    regression was first released in 4.1.0.  (@jasone)
Packit Service 724aca
  - Implement a more reliable detection scheme for os_unfair_lock on macOS.
Packit Service 724aca
    (@jszakmeister)
Packit Service 724aca
Packit Service 724aca
* 4.3.1 (November 7, 2016)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix a severe virtual memory leak.  This regression was first released in
Packit Service 724aca
    4.3.0.  (@interwq, @jasone)
Packit Service 724aca
  - Refactor atomic and prng APIs to restore support for 32-bit platforms that
Packit Service 724aca
    use pre-C11 toolchains, e.g. FreeBSD's mips.  (@jasone)
Packit Service 724aca
Packit Service 724aca
* 4.3.0 (November 4, 2016)
Packit Service 724aca
Packit Service 724aca
  This is the first release that passes the test suite for multiple Windows
Packit Service 724aca
  configurations, thanks in large part to @glandium setting up continuous
Packit Service 724aca
  integration via AppVeyor (and Travis CI for Linux and OS X).
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Add "J" (JSON) support to malloc_stats_print().  (@jasone)
Packit Service 724aca
  - Add Cray compiler support.  (@ronawho)
Packit Service 724aca
Packit Service 724aca
  Optimizations:
Packit Service 724aca
  - Add/use adaptive spinning for bootstrapping and radix tree node
Packit Service 724aca
    initialization.  (@jasone)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix large allocation to search starting in the optimal size class heap,
Packit Service 724aca
    which can substantially reduce virtual memory churn and fragmentation.  This
Packit Service 724aca
    regression was first released in 4.0.0.  (@mjp41, @jasone)
Packit Service 724aca
  - Fix stats.arenas..nthreads accounting.  (@interwq)
Packit Service 724aca
  - Fix and simplify decay-based purging.  (@jasone)
Packit Service 724aca
  - Make DSS (sbrk(2)-related) operations lockless, which resolves potential
Packit Service 724aca
    deadlocks during thread exit.  (@jasone)
Packit Service 724aca
  - Fix over-sized allocation of radix tree leaf nodes.  (@mjp41, @ogaun,
Packit Service 724aca
    @jasone)
Packit Service 724aca
  - Fix over-sized allocation of arena_t (plus associated stats) data
Packit Service 724aca
    structures.  (@jasone, @interwq)
Packit Service 724aca
  - Fix EXTRA_CFLAGS to not affect configuration.  (@jasone)
Packit Service 724aca
  - Fix a Valgrind integration bug.  (@ronawho)
Packit Service 724aca
  - Disallow 0x5a junk filling when running in Valgrind.  (@jasone)
Packit Service 724aca
  - Fix a file descriptor leak on Linux.  This regression was first released in
Packit Service 724aca
    4.2.0.  (@vsarunas, @jasone)
Packit Service 724aca
  - Fix static linking of jemalloc with glibc.  (@djwatson)
Packit Service 724aca
  - Use syscall(2) rather than {open,read,close}(2) during boot on Linux.  This
Packit Service 724aca
    works around other libraries' system call wrappers performing reentrant
Packit Service 724aca
    allocation.  (@kspinka, @Whissi, @jasone)
Packit Service 724aca
  - Fix OS X default zone replacement to work with OS X 10.12.  (@glandium,
Packit Service 724aca
    @jasone)
Packit Service 724aca
  - Fix cached memory management to avoid needless commit/decommit operations
Packit Service 724aca
    during purging, which resolves permanent virtual memory map fragmentation
Packit Service 724aca
    issues on Windows.  (@mjp41, @jasone)
Packit Service 724aca
  - Fix TSD fetches to avoid (recursive) allocation.  This is relevant to
Packit Service 724aca
    non-TLS and Windows configurations.  (@jasone)
Packit Service 724aca
  - Fix malloc_conf overriding to work on Windows.  (@jasone)
Packit Service 724aca
  - Forcibly disable lazy-lock on Windows (was forcibly *enabled*).  (@jasone)
Packit Service 724aca
Packit Service 724aca
* 4.2.1 (June 8, 2016)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix bootstrapping issues for configurations that require allocation during
Packit Service 724aca
    tsd initialization (e.g. --disable-tls).  (@cferris1000, @jasone)
Packit Service 724aca
  - Fix gettimeofday() version of nstime_update().  (@ronawho)
Packit Service 724aca
  - Fix Valgrind regressions in calloc() and chunk_alloc_wrapper().  (@ronawho)
Packit Service 724aca
  - Fix potential VM map fragmentation regression.  (@jasone)
Packit Service 724aca
  - Fix opt_zero-triggered in-place huge reallocation zeroing.  (@jasone)
Packit Service 724aca
  - Fix heap profiling context leaks in reallocation edge cases.  (@jasone)
Packit Service 724aca
Packit Service 724aca
* 4.2.0 (May 12, 2016)
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Add the arena..reset mallctl, which makes it possible to discard all of
Packit Service 724aca
    an arena's allocations in a single operation.  (@jasone)
Packit Service 724aca
  - Add the stats.retained and stats.arenas..retained statistics.  (@jasone)
Packit Service 724aca
  - Add the --with-version configure option.  (@jasone)
Packit Service 724aca
  - Support --with-lg-page values larger than actual page size.  (@jasone)
Packit Service 724aca
Packit Service 724aca
  Optimizations:
Packit Service 724aca
  - Use pairing heaps rather than red-black trees for various hot data
Packit Service 724aca
    structures.  (@djwatson, @jasone)
Packit Service 724aca
  - Streamline fast paths of rtree operations.  (@jasone)
Packit Service 724aca
  - Optimize the fast paths of calloc() and [m,d,sd]allocx().  (@jasone)
Packit Service 724aca
  - Decommit unused virtual memory if the OS does not overcommit.  (@jasone)
Packit Service 724aca
  - Specify MAP_NORESERVE on Linux if [heuristic] overcommit is active, in order
Packit Service 724aca
    to avoid unfortunate interactions during fork(2).  (@jasone)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix chunk accounting related to triggering gdump profiles.  (@jasone)
Packit Service 724aca
  - Link against librt for clock_gettime(2) if glibc < 2.17.  (@jasone)
Packit Service 724aca
  - Scale leak report summary according to sampling probability.  (@jasone)
Packit Service 724aca
Packit Service 724aca
* 4.1.1 (May 3, 2016)
Packit Service 724aca
Packit Service 724aca
  This bugfix release resolves a variety of mostly minor issues, though the
Packit Service 724aca
  bitmap fix is critical for 64-bit Windows.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix the linear scan version of bitmap_sfu() to shift by the proper amount
Packit Service 724aca
    even when sizeof(long) is not the same as sizeof(void *), as on 64-bit
Packit Service 724aca
    Windows.  (@jasone)
Packit Service 724aca
  - Fix hashing functions to avoid unaligned memory accesses (and resulting
Packit Service 724aca
    crashes).  This is relevant at least to some ARM-based platforms.
Packit Service 724aca
    (@rkmisra)
Packit Service 724aca
  - Fix fork()-related lock rank ordering reversals.  These reversals were
Packit Service 724aca
    unlikely to cause deadlocks in practice except when heap profiling was
Packit Service 724aca
    enabled and active.  (@jasone)
Packit Service 724aca
  - Fix various chunk leaks in OOM code paths.  (@jasone)
Packit Service 724aca
  - Fix malloc_stats_print() to print opt.narenas correctly.  (@jasone)
Packit Service 724aca
  - Fix MSVC-specific build/test issues.  (@rustyx, @yuslepukhin)
Packit Service 724aca
  - Fix a variety of test failures that were due to test fragility rather than
Packit Service 724aca
    core bugs.  (@jasone)
Packit Service 724aca
Packit Service 724aca
* 4.1.0 (February 28, 2016)
Packit Service 724aca
Packit Service 724aca
  This release is primarily about optimizations, but it also incorporates a lot
Packit Service 724aca
  of portability-motivated refactoring and enhancements.  Many people worked on
Packit Service 724aca
  this release, to an extent that even with the omission here of minor changes
Packit Service 724aca
  (see git revision history), and of the people who reported and diagnosed
Packit Service 724aca
  issues, so much of the work was contributed that starting with this release,
Packit Service 724aca
  changes are annotated with author credits to help reflect the collaborative
Packit Service 724aca
  effort involved.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Implement decay-based unused dirty page purging, a major optimization with
Packit Service 724aca
    mallctl API impact.  This is an alternative to the existing ratio-based
Packit Service 724aca
    unused dirty page purging, and is intended to eventually become the sole
Packit Service 724aca
    purging mechanism.  New mallctls:
Packit Service 724aca
    + opt.purge
Packit Service 724aca
    + opt.decay_time
Packit Service 724aca
    + arena..decay
Packit Service 724aca
    + arena..decay_time
Packit Service 724aca
    + arenas.decay_time
Packit Service 724aca
    + stats.arenas..decay_time
Packit Service 724aca
    (@jasone, @cevans87)
Packit Service 724aca
  - Add --with-malloc-conf, which makes it possible to embed a default
Packit Service 724aca
    options string during configuration.  This was motivated by the desire to
Packit Service 724aca
    specify --with-malloc-conf=purge:decay , since the default must remain
Packit Service 724aca
    purge:ratio until the 5.0.0 release.  (@jasone)
Packit Service 724aca
  - Add MS Visual Studio 2015 support.  (@rustyx, @yuslepukhin)
Packit Service 724aca
  - Make *allocx() size class overflow behavior defined.  The maximum
Packit Service 724aca
    size class is now less than PTRDIFF_MAX to protect applications against
Packit Service 724aca
    numerical overflow, and all allocation functions are guaranteed to indicate
Packit Service 724aca
    errors rather than potentially crashing if the request size exceeds the
Packit Service 724aca
    maximum size class.  (@jasone)
Packit Service 724aca
  - jeprof:
Packit Service 724aca
    + Add raw heap profile support.  (@jasone)
Packit Service 724aca
    + Add --retain and --exclude for backtrace symbol filtering.  (@jasone)
Packit Service 724aca
Packit Service 724aca
  Optimizations:
Packit Service 724aca
  - Optimize the fast path to combine various bootstrapping and configuration
Packit Service 724aca
    checks and execute more streamlined code in the common case.  (@interwq)
Packit Service 724aca
  - Use linear scan for small bitmaps (used for small object tracking).  In
Packit Service 724aca
    addition to speeding up bitmap operations on 64-bit systems, this reduces
Packit Service 724aca
    allocator metadata overhead by approximately 0.2%.  (@djwatson)
Packit Service 724aca
  - Separate arena_avail trees, which substantially speeds up run tree
Packit Service 724aca
    operations.  (@djwatson)
Packit Service 724aca
  - Use memoization (boot-time-computed table) for run quantization.  Separate
Packit Service 724aca
    arena_avail trees reduced the importance of this optimization.  (@jasone)
Packit Service 724aca
  - Attempt mmap-based in-place huge reallocation.  This can dramatically speed
Packit Service 724aca
    up incremental huge reallocation.  (@jasone)
Packit Service 724aca
Packit Service 724aca
  Incompatible changes:
Packit Service 724aca
  - Make opt.narenas unsigned rather than size_t.  (@jasone)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix stats.cactive accounting regression.  (@rustyx, @jasone)
Packit Service 724aca
  - Handle unaligned keys in hash().  This caused problems for some ARM systems.
Packit Service 724aca
    (@jasone, @cferris1000)
Packit Service 724aca
  - Refactor arenas array.  In addition to fixing a fork-related deadlock, this
Packit Service 724aca
    makes arena lookups faster and simpler.  (@jasone)
Packit Service 724aca
  - Move retained memory allocation out of the default chunk allocation
Packit Service 724aca
    function, to a location that gets executed even if the application installs
Packit Service 724aca
    a custom chunk allocation function.  This resolves a virtual memory leak.
Packit Service 724aca
    (@buchgr)
Packit Service 724aca
  - Fix a potential tsd cleanup leak.  (@cferris1000, @jasone)
Packit Service 724aca
  - Fix run quantization.  In practice this bug had no impact unless
Packit Service 724aca
    applications requested memory with alignment exceeding one page.
Packit Service 724aca
    (@jasone, @djwatson)
Packit Service 724aca
  - Fix LinuxThreads-specific bootstrapping deadlock.  (Cosmin Paraschiv)
Packit Service 724aca
  - jeprof:
Packit Service 724aca
    + Don't discard curl options if timeout is not defined.  (@djwatson)
Packit Service 724aca
    + Detect failed profile fetches.  (@djwatson)
Packit Service 724aca
  - Fix stats.arenas..{dss,lg_dirty_mult,decay_time,pactive,pdirty} for
Packit Service 724aca
    --disable-stats case.  (@jasone)
Packit Service 724aca
Packit Service 724aca
* 4.0.4 (October 24, 2015)
Packit Service 724aca
Packit Service 724aca
  This bugfix release fixes another xallocx() regression.  No other regressions
Packit Service 724aca
  have come to light in over a month, so this is likely a good starting point
Packit Service 724aca
  for people who prefer to wait for "dot one" releases with all the major issues
Packit Service 724aca
  shaken out.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix xallocx(..., MALLOCX_ZERO to zero the last full trailing page of large
Packit Service 724aca
    allocations that have been randomly assigned an offset of 0 when
Packit Service 724aca
    --enable-cache-oblivious configure option is enabled.
Packit Service 724aca
Packit Service 724aca
* 4.0.3 (September 24, 2015)
Packit Service 724aca
Packit Service 724aca
  This bugfix release continues the trend of xallocx() and heap profiling fixes.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix xallocx(..., MALLOCX_ZERO) to zero all trailing bytes of large
Packit Service 724aca
    allocations when --enable-cache-oblivious configure option is enabled.
Packit Service 724aca
  - Fix xallocx(..., MALLOCX_ZERO) to zero trailing bytes of huge allocations
Packit Service 724aca
    when resizing from/to a size class that is not a multiple of the chunk size.
Packit Service 724aca
  - Fix prof_tctx_dump_iter() to filter out nodes that were created after heap
Packit Service 724aca
    profile dumping started.
Packit Service 724aca
  - Work around a potentially bad thread-specific data initialization
Packit Service 724aca
    interaction with NPTL (glibc's pthreads implementation).
Packit Service 724aca
Packit Service 724aca
* 4.0.2 (September 21, 2015)
Packit Service 724aca
Packit Service 724aca
  This bugfix release addresses a few bugs specific to heap profiling.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix ixallocx_prof_sample() to never modify nor create sampled small
Packit Service 724aca
    allocations.  xallocx() is in general incapable of moving small allocations,
Packit Service 724aca
    so this fix removes buggy code without loss of generality.
Packit Service 724aca
  - Fix irallocx_prof_sample() to always allocate large regions, even when
Packit Service 724aca
    alignment is non-zero.
Packit Service 724aca
  - Fix prof_alloc_rollback() to read tdata from thread-specific data rather
Packit Service 724aca
    than dereferencing a potentially invalid tctx.
Packit Service 724aca
Packit Service 724aca
* 4.0.1 (September 15, 2015)
Packit Service 724aca
Packit Service 724aca
  This is a bugfix release that is somewhat high risk due to the amount of
Packit Service 724aca
  refactoring required to address deep xallocx() problems.  As a side effect of
Packit Service 724aca
  these fixes, xallocx() now tries harder to partially fulfill requests for
Packit Service 724aca
  optional extra space.  Note that a couple of minor heap profiling
Packit Service 724aca
  optimizations are included, but these are better thought of as performance
Packit Service 724aca
  fixes that were integral to discovering most of the other bugs.
Packit Service 724aca
Packit Service 724aca
  Optimizations:
Packit Service 724aca
  - Avoid a chunk metadata read in arena_prof_tctx_set(), since it is in the
Packit Service 724aca
    fast path when heap profiling is enabled.  Additionally, split a special
Packit Service 724aca
    case out into arena_prof_tctx_reset(), which also avoids chunk metadata
Packit Service 724aca
    reads.
Packit Service 724aca
  - Optimize irallocx_prof() to optimistically update the sampler state.  The
Packit Service 724aca
    prior implementation appears to have been a holdover from when
Packit Service 724aca
    rallocx()/xallocx() functionality was combined as rallocm().
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix TLS configuration such that it is enabled by default for platforms on
Packit Service 724aca
    which it works correctly.
Packit Service 724aca
  - Fix arenas_cache_cleanup() and arena_get_hard() to handle
Packit Service 724aca
    allocation/deallocation within the application's thread-specific data
Packit Service 724aca
    cleanup functions even after arenas_cache is torn down.
Packit Service 724aca
  - Fix xallocx() bugs related to size+extra exceeding HUGE_MAXCLASS.
Packit Service 724aca
  - Fix chunk purge hook calls for in-place huge shrinking reallocation to
Packit Service 724aca
    specify the old chunk size rather than the new chunk size.  This bug caused
Packit Service 724aca
    no correctness issues for the default chunk purge function, but was
Packit Service 724aca
    visible to custom functions set via the "arena..chunk_hooks" mallctl.
Packit Service 724aca
  - Fix heap profiling bugs:
Packit Service 724aca
    + Fix heap profiling to distinguish among otherwise identical sample sites
Packit Service 724aca
      with interposed resets (triggered via the "prof.reset" mallctl).  This bug
Packit Service 724aca
      could cause data structure corruption that would most likely result in a
Packit Service 724aca
      segfault.
Packit Service 724aca
    + Fix irealloc_prof() to prof_alloc_rollback() on OOM.
Packit Service 724aca
    + Make one call to prof_active_get_unlocked() per allocation event, and use
Packit Service 724aca
      the result throughout the relevant functions that handle an allocation
Packit Service 724aca
      event.  Also add a missing check in prof_realloc().  These fixes protect
Packit Service 724aca
      allocation events against concurrent prof_active changes.
Packit Service 724aca
    + Fix ixallocx_prof() to pass usize_max and zero to ixallocx_prof_sample()
Packit Service 724aca
      in the correct order.
Packit Service 724aca
    + Fix prof_realloc() to call prof_free_sampled_object() after calling
Packit Service 724aca
      prof_malloc_sample_object().  Prior to this fix, if tctx and old_tctx were
Packit Service 724aca
      the same, the tctx could have been prematurely destroyed.
Packit Service 724aca
  - Fix portability bugs:
Packit Service 724aca
    + Don't bitshift by negative amounts when encoding/decoding run sizes in
Packit Service 724aca
      chunk header maps.  This affected systems with page sizes greater than 8
Packit Service 724aca
      KiB.
Packit Service 724aca
    + Rename index_t to szind_t to avoid an existing type on Solaris.
Packit Service 724aca
    + Add JEMALLOC_CXX_THROW to the memalign() function prototype, in order to
Packit Service 724aca
      match glibc and avoid compilation errors when including both
Packit Service 724aca
      jemalloc/jemalloc.h and malloc.h in C++ code.
Packit Service 724aca
    + Don't assume that /bin/sh is appropriate when running size_classes.sh
Packit Service 724aca
      during configuration.
Packit Service 724aca
    + Consider __sparcv9 a synonym for __sparc64__ when defining LG_QUANTUM.
Packit Service 724aca
    + Link tests to librt if it contains clock_gettime(2).
Packit Service 724aca
Packit Service 724aca
* 4.0.0 (August 17, 2015)
Packit Service 724aca
Packit Service 724aca
  This version contains many speed and space optimizations, both minor and
Packit Service 724aca
  major.  The major themes are generalization, unification, and simplification.
Packit Service 724aca
  Although many of these optimizations cause no visible behavior change, their
Packit Service 724aca
  cumulative effect is substantial.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Normalize size class spacing to be consistent across the complete size
Packit Service 724aca
    range.  By default there are four size classes per size doubling, but this
Packit Service 724aca
    is now configurable via the --with-lg-size-class-group option.  Also add the
Packit Service 724aca
    --with-lg-page, --with-lg-page-sizes, --with-lg-quantum, and
Packit Service 724aca
    --with-lg-tiny-min options, which can be used to tweak page and size class
Packit Service 724aca
    settings.  Impacts:
Packit Service 724aca
    + Worst case performance for incrementally growing/shrinking reallocation
Packit Service 724aca
      is improved because there are far fewer size classes, and therefore
Packit Service 724aca
      copying happens less often.
Packit Service 724aca
    + Internal fragmentation is limited to 20% for all but the smallest size
Packit Service 724aca
      classes (those less than four times the quantum).  (1B + 4 KiB)
Packit Service 724aca
      and (1B + 4 MiB) previously suffered nearly 50% internal fragmentation.
Packit Service 724aca
    + Chunk fragmentation tends to be lower because there are fewer distinct run
Packit Service 724aca
      sizes to pack.
Packit Service 724aca
  - Add support for explicit tcaches.  The "tcache.create", "tcache.flush", and
Packit Service 724aca
    "tcache.destroy" mallctls control tcache lifetime and flushing, and the
Packit Service 724aca
    MALLOCX_TCACHE(tc) and MALLOCX_TCACHE_NONE flags to the *allocx() API
Packit Service 724aca
    control which tcache is used for each operation.
Packit Service 724aca
  - Implement per thread heap profiling, as well as the ability to
Packit Service 724aca
    enable/disable heap profiling on a per thread basis.  Add the "prof.reset",
Packit Service 724aca
    "prof.lg_sample", "thread.prof.name", "thread.prof.active",
Packit Service 724aca
    "opt.prof_thread_active_init", "prof.thread_active_init", and
Packit Service 724aca
    "thread.prof.active" mallctls.
Packit Service 724aca
  - Add support for per arena application-specified chunk allocators, configured
Packit Service 724aca
    via the "arena..chunk_hooks" mallctl.
Packit Service 724aca
  - Refactor huge allocation to be managed by arenas, so that arenas now
Packit Service 724aca
    function as general purpose independent allocators.  This is important in
Packit Service 724aca
    the context of user-specified chunk allocators, aside from the scalability
Packit Service 724aca
    benefits.  Related new statistics:
Packit Service 724aca
    + The "stats.arenas..huge.allocated", "stats.arenas..huge.nmalloc",
Packit Service 724aca
      "stats.arenas..huge.ndalloc", and "stats.arenas..huge.nrequests"
Packit Service 724aca
      mallctls provide high level per arena huge allocation statistics.
Packit Service 724aca
    + The "arenas.nhchunks", "arenas.hchunk..size",
Packit Service 724aca
      "stats.arenas..hchunks.<j>.nmalloc",
Packit Service 724aca
      "stats.arenas..hchunks.<j>.ndalloc",
Packit Service 724aca
      "stats.arenas..hchunks.<j>.nrequests", and
Packit Service 724aca
      "stats.arenas..hchunks.<j>.curhchunks" mallctls provide per size class
Packit Service 724aca
      statistics.
Packit Service 724aca
  - Add the 'util' column to malloc_stats_print() output, which reports the
Packit Service 724aca
    proportion of available regions that are currently in use for each small
Packit Service 724aca
    size class.
Packit Service 724aca
  - Add "alloc" and "free" modes for for junk filling (see the "opt.junk"
Packit Service 724aca
    mallctl), so that it is possible to separately enable junk filling for
Packit Service 724aca
    allocation versus deallocation.
Packit Service 724aca
  - Add the jemalloc-config script, which provides information about how
Packit Service 724aca
    jemalloc was configured, and how to integrate it into application builds.
Packit Service 724aca
  - Add metadata statistics, which are accessible via the "stats.metadata",
Packit Service 724aca
    "stats.arenas..metadata.mapped", and
Packit Service 724aca
    "stats.arenas..metadata.allocated" mallctls.
Packit Service 724aca
  - Add the "stats.resident" mallctl, which reports the upper limit of
Packit Service 724aca
    physically resident memory mapped by the allocator.
Packit Service 724aca
  - Add per arena control over unused dirty page purging, via the
Packit Service 724aca
    "arenas.lg_dirty_mult", "arena..lg_dirty_mult", and
Packit Service 724aca
    "stats.arenas..lg_dirty_mult" mallctls.
Packit Service 724aca
  - Add the "prof.gdump" mallctl, which makes it possible to toggle the gdump
Packit Service 724aca
    feature on/off during program execution.
Packit Service 724aca
  - Add sdallocx(), which implements sized deallocation.  The primary
Packit Service 724aca
    optimization over dallocx() is the removal of a metadata read, which often
Packit Service 724aca
    suffers an L1 cache miss.
Packit Service 724aca
  - Add missing header includes in jemalloc/jemalloc.h, so that applications
Packit Service 724aca
    only have to #include <jemalloc/jemalloc.h>.
Packit Service 724aca
  - Add support for additional platforms:
Packit Service 724aca
    + Bitrig
Packit Service 724aca
    + Cygwin
Packit Service 724aca
    + DragonFlyBSD
Packit Service 724aca
    + iOS
Packit Service 724aca
    + OpenBSD
Packit Service 724aca
    + OpenRISC/or1k
Packit Service 724aca
Packit Service 724aca
  Optimizations:
Packit Service 724aca
  - Maintain dirty runs in per arena LRUs rather than in per arena trees of
Packit Service 724aca
    dirty-run-containing chunks.  In practice this change significantly reduces
Packit Service 724aca
    dirty page purging volume.
Packit Service 724aca
  - Integrate whole chunks into the unused dirty page purging machinery.  This
Packit Service 724aca
    reduces the cost of repeated huge allocation/deallocation, because it
Packit Service 724aca
    effectively introduces a cache of chunks.
Packit Service 724aca
  - Split the arena chunk map into two separate arrays, in order to increase
Packit Service 724aca
    cache locality for the frequently accessed bits.
Packit Service 724aca
  - Move small run metadata out of runs, into arena chunk headers.  This reduces
Packit Service 724aca
    run fragmentation, smaller runs reduce external fragmentation for small size
Packit Service 724aca
    classes, and packed (less uniformly aligned) metadata layout improves CPU
Packit Service 724aca
    cache set distribution.
Packit Service 724aca
  - Randomly distribute large allocation base pointer alignment relative to page
Packit Service 724aca
    boundaries in order to more uniformly utilize CPU cache sets.  This can be
Packit Service 724aca
    disabled via the --disable-cache-oblivious configure option, and queried via
Packit Service 724aca
    the "config.cache_oblivious" mallctl.
Packit Service 724aca
  - Micro-optimize the fast paths for the public API functions.
Packit Service 724aca
  - Refactor thread-specific data to reside in a single structure.  This assures
Packit Service 724aca
    that only a single TLS read is necessary per call into the public API.
Packit Service 724aca
  - Implement in-place huge allocation growing and shrinking.
Packit Service 724aca
  - Refactor rtree (radix tree for chunk lookups) to be lock-free, and make
Packit Service 724aca
    additional optimizations that reduce maximum lookup depth to one or two
Packit Service 724aca
    levels.  This resolves what was a concurrency bottleneck for per arena huge
Packit Service 724aca
    allocation, because a global data structure is critical for determining
Packit Service 724aca
    which arenas own which huge allocations.
Packit Service 724aca
Packit Service 724aca
  Incompatible changes:
Packit Service 724aca
  - Replace --enable-cc-silence with --disable-cc-silence to suppress spurious
Packit Service 724aca
    warnings by default.
Packit Service 724aca
  - Assure that the constness of malloc_usable_size()'s return type matches that
Packit Service 724aca
    of the system implementation.
Packit Service 724aca
  - Change the heap profile dump format to support per thread heap profiling,
Packit Service 724aca
    rename pprof to jeprof, and enhance it with the --thread=<n> option.  As a
Packit Service 724aca
    result, the bundled jeprof must now be used rather than the upstream
Packit Service 724aca
    (gperftools) pprof.
Packit Service 724aca
  - Disable "opt.prof_final" by default, in order to avoid atexit(3), which can
Packit Service 724aca
    internally deadlock on some platforms.
Packit Service 724aca
  - Change the "arenas.nlruns" mallctl type from size_t to unsigned.
Packit Service 724aca
  - Replace the "stats.arenas..bins.<j>.allocated" mallctl with
Packit Service 724aca
    "stats.arenas..bins.<j>.curregs".
Packit Service 724aca
  - Ignore MALLOC_CONF in set{uid,gid,cap} binaries.
Packit Service 724aca
  - Ignore MALLOCX_ARENA(a) in dallocx(), in favor of using the
Packit Service 724aca
    MALLOCX_TCACHE(tc) and MALLOCX_TCACHE_NONE flags to control tcache usage.
Packit Service 724aca
Packit Service 724aca
  Removed features:
Packit Service 724aca
  - Remove the *allocm() API, which is superseded by the *allocx() API.
Packit Service 724aca
  - Remove the --enable-dss options, and make dss non-optional on all platforms
Packit Service 724aca
    which support sbrk(2).
Packit Service 724aca
  - Remove the "arenas.purge" mallctl, which was obsoleted by the
Packit Service 724aca
    "arena..purge" mallctl in 3.1.0.
Packit Service 724aca
  - Remove the unnecessary "opt.valgrind" mallctl; jemalloc automatically
Packit Service 724aca
    detects whether it is running inside Valgrind.
Packit Service 724aca
  - Remove the "stats.huge.allocated", "stats.huge.nmalloc", and
Packit Service 724aca
    "stats.huge.ndalloc" mallctls.
Packit Service 724aca
  - Remove the --enable-mremap option.
Packit Service 724aca
  - Remove the "stats.chunks.current", "stats.chunks.total", and
Packit Service 724aca
    "stats.chunks.high" mallctls.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix the cactive statistic to decrease (rather than increase) when active
Packit Service 724aca
    memory decreases.  This regression was first released in 3.5.0.
Packit Service 724aca
  - Fix OOM handling in memalign() and valloc().  A variant of this bug existed
Packit Service 724aca
    in all releases since 2.0.0, which introduced these functions.
Packit Service 724aca
  - Fix an OOM-related regression in arena_tcache_fill_small(), which could
Packit Service 724aca
    cause cache corruption on OOM.  This regression was present in all releases
Packit Service 724aca
    from 2.2.0 through 3.6.0.
Packit Service 724aca
  - Fix size class overflow handling for malloc(), posix_memalign(), memalign(),
Packit Service 724aca
    calloc(), and realloc() when profiling is enabled.
Packit Service 724aca
  - Fix the "arena..dss" mallctl to return an error if "primary" or
Packit Service 724aca
    "secondary" precedence is specified, but sbrk(2) is not supported.
Packit Service 724aca
  - Fix fallback lg_floor() implementations to handle extremely large inputs.
Packit Service 724aca
  - Ensure the default purgeable zone is after the default zone on OS X.
Packit Service 724aca
  - Fix latent bugs in atomic_*().
Packit Service 724aca
  - Fix the "arena..dss" mallctl to handle read-only calls.
Packit Service 724aca
  - Fix tls_model configuration to enable the initial-exec model when possible.
Packit Service 724aca
  - Mark malloc_conf as a weak symbol so that the application can override it.
Packit Service 724aca
  - Correctly detect glibc's adaptive pthread mutexes.
Packit Service 724aca
  - Fix the --without-export configure option.
Packit Service 724aca
Packit Service 724aca
* 3.6.0 (March 31, 2014)
Packit Service 724aca
Packit Service 724aca
  This version contains a critical bug fix for a regression present in 3.5.0 and
Packit Service 724aca
  3.5.1.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix a regression in arena_chunk_alloc() that caused crashes during
Packit Service 724aca
    small/large allocation if chunk allocation failed.  In the absence of this
Packit Service 724aca
    bug, chunk allocation failure would result in allocation failure, e.g.  NULL
Packit Service 724aca
    return from malloc().  This regression was introduced in 3.5.0.
Packit Service 724aca
  - Fix backtracing for gcc intrinsics-based backtracing by specifying
Packit Service 724aca
    -fno-omit-frame-pointer to gcc.  Note that the application (and all the
Packit Service 724aca
    libraries it links to) must also be compiled with this option for
Packit Service 724aca
    backtracing to be reliable.
Packit Service 724aca
  - Use dss allocation precedence for huge allocations as well as small/large
Packit Service 724aca
    allocations.
Packit Service 724aca
  - Fix test assertion failure message formatting.  This bug did not manifest on
Packit Service 724aca
    x86_64 systems because of implementation subtleties in va_list.
Packit Service 724aca
  - Fix inconsequential test failures for hash and SFMT code.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Support heap profiling on FreeBSD.  This feature depends on the proc
Packit Service 724aca
    filesystem being mounted during heap profile dumping.
Packit Service 724aca
Packit Service 724aca
* 3.5.1 (February 25, 2014)
Packit Service 724aca
Packit Service 724aca
  This version primarily addresses minor bugs in test code.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Configure Solaris/Illumos to use MADV_FREE.
Packit Service 724aca
  - Fix junk filling for mremap(2)-based huge reallocation.  This is only
Packit Service 724aca
    relevant if configuring with the --enable-mremap option specified.
Packit Service 724aca
  - Avoid compilation failure if 'restrict' C99 keyword is not supported by the
Packit Service 724aca
    compiler.
Packit Service 724aca
  - Add a configure test for SSE2 rather than assuming it is usable on i686
Packit Service 724aca
    systems.  This fixes test compilation errors, especially on 32-bit Linux
Packit Service 724aca
    systems.
Packit Service 724aca
  - Fix mallctl argument size mismatches (size_t vs. uint64_t) in the stats unit
Packit Service 724aca
    test.
Packit Service 724aca
  - Fix/remove flawed alignment-related overflow tests.
Packit Service 724aca
  - Prevent compiler optimizations that could change backtraces in the
Packit Service 724aca
    prof_accum unit test.
Packit Service 724aca
Packit Service 724aca
* 3.5.0 (January 22, 2014)
Packit Service 724aca
Packit Service 724aca
  This version focuses on refactoring and automated testing, though it also
Packit Service 724aca
  includes some non-trivial heap profiling optimizations not mentioned below.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Add the *allocx() API, which is a successor to the experimental *allocm()
Packit Service 724aca
    API.  The *allocx() functions are slightly simpler to use because they have
Packit Service 724aca
    fewer parameters, they directly return the results of primary interest, and
Packit Service 724aca
    mallocx()/rallocx() avoid the strict aliasing pitfall that
Packit Service 724aca
    allocm()/rallocm() share with posix_memalign().  Note that *allocm() is
Packit Service 724aca
    slated for removal in the next non-bugfix release.
Packit Service 724aca
  - Add support for LinuxThreads.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Unless heap profiling is enabled, disable floating point code and don't link
Packit Service 724aca
    with libm.  This, in combination with e.g. EXTRA_CFLAGS=-mno-sse on x64
Packit Service 724aca
    systems, makes it possible to completely disable floating point register
Packit Service 724aca
    use.  Some versions of glibc neglect to save/restore caller-saved floating
Packit Service 724aca
    point registers during dynamic lazy symbol loading, and the symbol loading
Packit Service 724aca
    code uses whatever malloc the application happens to have linked/loaded
Packit Service 724aca
    with, the result being potential floating point register corruption.
Packit Service 724aca
  - Report ENOMEM rather than EINVAL if an OOM occurs during heap profiling
Packit Service 724aca
    backtrace creation in imemalign().  This bug impacted posix_memalign() and
Packit Service 724aca
    aligned_alloc().
Packit Service 724aca
  - Fix a file descriptor leak in a prof_dump_maps() error path.
Packit Service 724aca
  - Fix prof_dump() to close the dump file descriptor for all relevant error
Packit Service 724aca
    paths.
Packit Service 724aca
  - Fix rallocm() to use the arena specified by the ALLOCM_ARENA(s) flag for
Packit Service 724aca
    allocation, not just deallocation.
Packit Service 724aca
  - Fix a data race for large allocation stats counters.
Packit Service 724aca
  - Fix a potential infinite loop during thread exit.  This bug occurred on
Packit Service 724aca
    Solaris, and could affect other platforms with similar pthreads TSD
Packit Service 724aca
    implementations.
Packit Service 724aca
  - Don't junk-fill reallocations unless usable size changes.  This fixes a
Packit Service 724aca
    violation of the *allocx()/*allocm() semantics.
Packit Service 724aca
  - Fix growing large reallocation to junk fill new space.
Packit Service 724aca
  - Fix huge deallocation to junk fill when munmap is disabled.
Packit Service 724aca
  - Change the default private namespace prefix from empty to je_, and change
Packit Service 724aca
    --with-private-namespace-prefix so that it prepends an additional prefix
Packit Service 724aca
    rather than replacing je_.  This reduces the likelihood of applications
Packit Service 724aca
    which statically link jemalloc experiencing symbol name collisions.
Packit Service 724aca
  - Add missing private namespace mangling (relevant when
Packit Service 724aca
    --with-private-namespace is specified).
Packit Service 724aca
  - Add and use JEMALLOC_INLINE_C so that static inline functions are marked as
Packit Service 724aca
    static even for debug builds.
Packit Service 724aca
  - Add a missing mutex unlock in a malloc_init_hard() error path.  In practice
Packit Service 724aca
    this error path is never executed.
Packit Service 724aca
  - Fix numerous bugs in malloc_strotumax() error handling/reporting.  These
Packit Service 724aca
    bugs had no impact except for malformed inputs.
Packit Service 724aca
  - Fix numerous bugs in malloc_snprintf().  These bugs were not exercised by
Packit Service 724aca
    existing calls, so they had no impact.
Packit Service 724aca
Packit Service 724aca
* 3.4.1 (October 20, 2013)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix a race in the "arenas.extend" mallctl that could cause memory corruption
Packit Service 724aca
    of internal data structures and subsequent crashes.
Packit Service 724aca
  - Fix Valgrind integration flaws that caused Valgrind warnings about reads of
Packit Service 724aca
    uninitialized memory in:
Packit Service 724aca
    + arena chunk headers
Packit Service 724aca
    + internal zero-initialized data structures (relevant to tcache and prof
Packit Service 724aca
      code)
Packit Service 724aca
  - Preserve errno during the first allocation.  A readlink(2) call during
Packit Service 724aca
    initialization fails unless /etc/malloc.conf exists, so errno was typically
Packit Service 724aca
    set during the first allocation prior to this fix.
Packit Service 724aca
  - Fix compilation warnings reported by gcc 4.8.1.
Packit Service 724aca
Packit Service 724aca
* 3.4.0 (June 2, 2013)
Packit Service 724aca
Packit Service 724aca
  This version is essentially a small bugfix release, but the addition of
Packit Service 724aca
  aarch64 support requires that the minor version be incremented.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix race-triggered deadlocks in chunk_record().  These deadlocks were
Packit Service 724aca
    typically triggered by multiple threads concurrently deallocating huge
Packit Service 724aca
    objects.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Add support for the aarch64 architecture.
Packit Service 724aca
Packit Service 724aca
* 3.3.1 (March 6, 2013)
Packit Service 724aca
Packit Service 724aca
  This version fixes bugs that are typically encountered only when utilizing
Packit Service 724aca
  custom run-time options.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix a locking order bug that could cause deadlock during fork if heap
Packit Service 724aca
    profiling were enabled.
Packit Service 724aca
  - Fix a chunk recycling bug that could cause the allocator to lose track of
Packit Service 724aca
    whether a chunk was zeroed.  On FreeBSD, NetBSD, and OS X, it could cause
Packit Service 724aca
    corruption if allocating via sbrk(2) (unlikely unless running with the
Packit Service 724aca
    "dss:primary" option specified).  This was completely harmless on Linux
Packit Service 724aca
    unless using mlockall(2) (and unlikely even then, unless the
Packit Service 724aca
    --disable-munmap configure option or the "dss:primary" option was
Packit Service 724aca
    specified).  This regression was introduced in 3.1.0 by the
Packit Service 724aca
    mlockall(2)/madvise(2) interaction fix.
Packit Service 724aca
  - Fix TLS-related memory corruption that could occur during thread exit if the
Packit Service 724aca
    thread never allocated memory.  Only the quarantine and prof facilities were
Packit Service 724aca
    susceptible.
Packit Service 724aca
  - Fix two quarantine bugs:
Packit Service 724aca
    + Internal reallocation of the quarantined object array leaked the old
Packit Service 724aca
      array.
Packit Service 724aca
    + Reallocation failure for internal reallocation of the quarantined object
Packit Service 724aca
      array (very unlikely) resulted in memory corruption.
Packit Service 724aca
  - Fix Valgrind integration to annotate all internally allocated memory in a
Packit Service 724aca
    way that keeps Valgrind happy about internal data structure access.
Packit Service 724aca
  - Fix building for s390 systems.
Packit Service 724aca
Packit Service 724aca
* 3.3.0 (January 23, 2013)
Packit Service 724aca
Packit Service 724aca
  This version includes a few minor performance improvements in addition to the
Packit Service 724aca
  listed new features and bug fixes.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Add clipping support to lg_chunk option processing.
Packit Service 724aca
  - Add the --enable-ivsalloc option.
Packit Service 724aca
  - Add the --without-export option.
Packit Service 724aca
  - Add the --disable-zone-allocator option.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix "arenas.extend" mallctl to output the number of arenas.
Packit Service 724aca
  - Fix chunk_recycle() to unconditionally inform Valgrind that returned memory
Packit Service 724aca
    is undefined.
Packit Service 724aca
  - Fix build break on FreeBSD related to alloca.h.
Packit Service 724aca
Packit Service 724aca
* 3.2.0 (November 9, 2012)
Packit Service 724aca
Packit Service 724aca
  In addition to a couple of bug fixes, this version modifies page run
Packit Service 724aca
  allocation and dirty page purging algorithms in order to better control
Packit Service 724aca
  page-level virtual memory fragmentation.
Packit Service 724aca
Packit Service 724aca
  Incompatible changes:
Packit Service 724aca
  - Change the "opt.lg_dirty_mult" default from 5 to 3 (32:1 to 8:1).
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix dss/mmap allocation precedence code to use recyclable mmap memory only
Packit Service 724aca
    after primary dss allocation fails.
Packit Service 724aca
  - Fix deadlock in the "arenas.purge" mallctl.  This regression was introduced
Packit Service 724aca
    in 3.1.0 by the addition of the "arena..purge" mallctl.
Packit Service 724aca
Packit Service 724aca
* 3.1.0 (October 16, 2012)
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Auto-detect whether running inside Valgrind, thus removing the need to
Packit Service 724aca
    manually specify MALLOC_CONF=valgrind:true.
Packit Service 724aca
  - Add the "arenas.extend" mallctl, which allows applications to create
Packit Service 724aca
    manually managed arenas.
Packit Service 724aca
  - Add the ALLOCM_ARENA() flag for {,r,d}allocm().
Packit Service 724aca
  - Add the "opt.dss", "arena..dss", and "stats.arenas..dss" mallctls,
Packit Service 724aca
    which provide control over dss/mmap precedence.
Packit Service 724aca
  - Add the "arena..purge" mallctl, which obsoletes "arenas.purge".
Packit Service 724aca
  - Define LG_QUANTUM for hppa.
Packit Service 724aca
Packit Service 724aca
  Incompatible changes:
Packit Service 724aca
  - Disable tcache by default if running inside Valgrind, in order to avoid
Packit Service 724aca
    making unallocated objects appear reachable to Valgrind.
Packit Service 724aca
  - Drop const from malloc_usable_size() argument on Linux.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix heap profiling crash if sampled object is freed via realloc(p, 0).
Packit Service 724aca
  - Remove const from __*_hook variable declarations, so that glibc can modify
Packit Service 724aca
    them during process forking.
Packit Service 724aca
  - Fix mlockall(2)/madvise(2) interaction.
Packit Service 724aca
  - Fix fork(2)-related deadlocks.
Packit Service 724aca
  - Fix error return value for "thread.tcache.enabled" mallctl.
Packit Service 724aca
Packit Service 724aca
* 3.0.0 (May 11, 2012)
Packit Service 724aca
Packit Service 724aca
  Although this version adds some major new features, the primary focus is on
Packit Service 724aca
  internal code cleanup that facilitates maintainability and portability, most
Packit Service 724aca
  of which is not reflected in the ChangeLog.  This is the first release to
Packit Service 724aca
  incorporate substantial contributions from numerous other developers, and the
Packit Service 724aca
  result is a more broadly useful allocator (see the git revision history for
Packit Service 724aca
  contribution details).  Note that the license has been unified, thanks to
Packit Service 724aca
  Facebook granting a license under the same terms as the other copyright
Packit Service 724aca
  holders (see COPYING).
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Implement Valgrind support, redzones, and quarantine.
Packit Service 724aca
  - Add support for additional platforms:
Packit Service 724aca
    + FreeBSD
Packit Service 724aca
    + Mac OS X Lion
Packit Service 724aca
    + MinGW
Packit Service 724aca
    + Windows (no support yet for replacing the system malloc)
Packit Service 724aca
  - Add support for additional architectures:
Packit Service 724aca
    + MIPS
Packit Service 724aca
    + SH4
Packit Service 724aca
    + Tilera
Packit Service 724aca
  - Add support for cross compiling.
Packit Service 724aca
  - Add nallocm(), which rounds a request size up to the nearest size class
Packit Service 724aca
    without actually allocating.
Packit Service 724aca
  - Implement aligned_alloc() (blame C11).
Packit Service 724aca
  - Add the "thread.tcache.enabled" mallctl.
Packit Service 724aca
  - Add the "opt.prof_final" mallctl.
Packit Service 724aca
  - Update pprof (from gperftools 2.0).
Packit Service 724aca
  - Add the --with-mangling option.
Packit Service 724aca
  - Add the --disable-experimental option.
Packit Service 724aca
  - Add the --disable-munmap option, and make it the default on Linux.
Packit Service 724aca
  - Add the --enable-mremap option, which disables use of mremap(2) by default.
Packit Service 724aca
Packit Service 724aca
  Incompatible changes:
Packit Service 724aca
  - Enable stats by default.
Packit Service 724aca
  - Enable fill by default.
Packit Service 724aca
  - Disable lazy locking by default.
Packit Service 724aca
  - Rename the "tcache.flush" mallctl to "thread.tcache.flush".
Packit Service 724aca
  - Rename the "arenas.pagesize" mallctl to "arenas.page".
Packit Service 724aca
  - Change the "opt.lg_prof_sample" default from 0 to 19 (1 B to 512 KiB).
Packit Service 724aca
  - Change the "opt.prof_accum" default from true to false.
Packit Service 724aca
Packit Service 724aca
  Removed features:
Packit Service 724aca
  - Remove the swap feature, including the "config.swap", "swap.avail",
Packit Service 724aca
    "swap.prezeroed", "swap.nfds", and "swap.fds" mallctls.
Packit Service 724aca
  - Remove highruns statistics, including the
Packit Service 724aca
    "stats.arenas..bins.<j>.highruns" and
Packit Service 724aca
    "stats.arenas..lruns.<j>.highruns" mallctls.
Packit Service 724aca
  - As part of small size class refactoring, remove the "opt.lg_[qc]space_max",
Packit Service 724aca
    "arenas.cacheline", "arenas.subpage", "arenas.[tqcs]space_{min,max}", and
Packit Service 724aca
    "arenas.[tqcs]bins" mallctls.
Packit Service 724aca
  - Remove the "arenas.chunksize" mallctl.
Packit Service 724aca
  - Remove the "opt.lg_prof_tcmax" option.
Packit Service 724aca
  - Remove the "opt.lg_prof_bt_max" option.
Packit Service 724aca
  - Remove the "opt.lg_tcache_gc_sweep" option.
Packit Service 724aca
  - Remove the --disable-tiny option, including the "config.tiny" mallctl.
Packit Service 724aca
  - Remove the --enable-dynamic-page-shift configure option.
Packit Service 724aca
  - Remove the --enable-sysv configure option.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix a statistics-related bug in the "thread.arena" mallctl that could cause
Packit Service 724aca
    invalid statistics and crashes.
Packit Service 724aca
  - Work around TLS deallocation via free() on Linux.  This bug could cause
Packit Service 724aca
    write-after-free memory corruption.
Packit Service 724aca
  - Fix a potential deadlock that could occur during interval- and
Packit Service 724aca
    growth-triggered heap profile dumps.
Packit Service 724aca
  - Fix large calloc() zeroing bugs due to dropping chunk map unzeroed flags.
Packit Service 724aca
  - Fix chunk_alloc_dss() to stop claiming memory is zeroed.  This bug could
Packit Service 724aca
    cause memory corruption and crashes with --enable-dss specified.
Packit Service 724aca
  - Fix fork-related bugs that could cause deadlock in children between fork
Packit Service 724aca
    and exec.
Packit Service 724aca
  - Fix malloc_stats_print() to honor 'b' and 'l' in the opts parameter.
Packit Service 724aca
  - Fix realloc(p, 0) to act like free(p).
Packit Service 724aca
  - Do not enforce minimum alignment in memalign().
Packit Service 724aca
  - Check for NULL pointer in malloc_usable_size().
Packit Service 724aca
  - Fix an off-by-one heap profile statistics bug that could be observed in
Packit Service 724aca
    interval- and growth-triggered heap profiles.
Packit Service 724aca
  - Fix the "epoch" mallctl to update cached stats even if the passed in epoch
Packit Service 724aca
    is 0.
Packit Service 724aca
  - Fix bin->runcur management to fix a layout policy bug.  This bug did not
Packit Service 724aca
    affect correctness.
Packit Service 724aca
  - Fix a bug in choose_arena_hard() that potentially caused more arenas to be
Packit Service 724aca
    initialized than necessary.
Packit Service 724aca
  - Add missing "opt.lg_tcache_max" mallctl implementation.
Packit Service 724aca
  - Use glibc allocator hooks to make mixed allocator usage less likely.
Packit Service 724aca
  - Fix build issues for --disable-tcache.
Packit Service 724aca
  - Don't mangle pthread_create() when --with-private-namespace is specified.
Packit Service 724aca
Packit Service 724aca
* 2.2.5 (November 14, 2011)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix huge_ralloc() race when using mremap(2).  This is a serious bug that
Packit Service 724aca
    could cause memory corruption and/or crashes.
Packit Service 724aca
  - Fix huge_ralloc() to maintain chunk statistics.
Packit Service 724aca
  - Fix malloc_stats_print(..., "a") output.
Packit Service 724aca
Packit Service 724aca
* 2.2.4 (November 5, 2011)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Initialize arenas_tsd before using it.  This bug existed for 2.2.[0-3], as
Packit Service 724aca
    well as for --disable-tls builds in earlier releases.
Packit Service 724aca
  - Do not assume a 4 KiB page size in test/rallocm.c.
Packit Service 724aca
Packit Service 724aca
* 2.2.3 (August 31, 2011)
Packit Service 724aca
Packit Service 724aca
  This version fixes numerous bugs related to heap profiling.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix a prof-related race condition.  This bug could cause memory corruption,
Packit Service 724aca
    but only occurred in non-default configurations (prof_accum:false).
Packit Service 724aca
  - Fix off-by-one backtracing issues (make sure that prof_alloc_prep() is
Packit Service 724aca
    excluded from backtraces).
Packit Service 724aca
  - Fix a prof-related bug in realloc() (only triggered by OOM errors).
Packit Service 724aca
  - Fix prof-related bugs in allocm() and rallocm().
Packit Service 724aca
  - Fix prof_tdata_cleanup() for --disable-tls builds.
Packit Service 724aca
  - Fix a relative include path, to fix objdir builds.
Packit Service 724aca
Packit Service 724aca
* 2.2.2 (July 30, 2011)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix a build error for --disable-tcache.
Packit Service 724aca
  - Fix assertions in arena_purge() (for real this time).
Packit Service 724aca
  - Add the --with-private-namespace option.  This is a workaround for symbol
Packit Service 724aca
    conflicts that can inadvertently arise when using static libraries.
Packit Service 724aca
Packit Service 724aca
* 2.2.1 (March 30, 2011)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Implement atomic operations for x86/x64.  This fixes compilation failures
Packit Service 724aca
    for versions of gcc that are still in wide use.
Packit Service 724aca
  - Fix an assertion in arena_purge().
Packit Service 724aca
Packit Service 724aca
* 2.2.0 (March 22, 2011)
Packit Service 724aca
Packit Service 724aca
  This version incorporates several improvements to algorithms and data
Packit Service 724aca
  structures that tend to reduce fragmentation and increase speed.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Add the "stats.cactive" mallctl.
Packit Service 724aca
  - Update pprof (from google-perftools 1.7).
Packit Service 724aca
  - Improve backtracing-related configuration logic, and add the
Packit Service 724aca
    --disable-prof-libgcc option.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Change default symbol visibility from "internal", to "hidden", which
Packit Service 724aca
    decreases the overhead of library-internal function calls.
Packit Service 724aca
  - Fix symbol visibility so that it is also set on OS X.
Packit Service 724aca
  - Fix a build dependency regression caused by the introduction of the .pic.o
Packit Service 724aca
    suffix for PIC object files.
Packit Service 724aca
  - Add missing checks for mutex initialization failures.
Packit Service 724aca
  - Don't use libgcc-based backtracing except on x64, where it is known to work.
Packit Service 724aca
  - Fix deadlocks on OS X that were due to memory allocation in
Packit Service 724aca
    pthread_mutex_lock().
Packit Service 724aca
  - Heap profiling-specific fixes:
Packit Service 724aca
    + Fix memory corruption due to integer overflow in small region index
Packit Service 724aca
      computation, when using a small enough sample interval that profiling
Packit Service 724aca
      context pointers are stored in small run headers.
Packit Service 724aca
    + Fix a bootstrap ordering bug that only occurred with TLS disabled.
Packit Service 724aca
    + Fix a rallocm() rsize bug.
Packit Service 724aca
    + Fix error detection bugs for aligned memory allocation.
Packit Service 724aca
Packit Service 724aca
* 2.1.3 (March 14, 2011)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix
Packit Service 724aca
    for OS X in 2.1.2).
Packit Service 724aca
  - Fix a "thread.arena" mallctl bug.
Packit Service 724aca
  - Fix a thread cache stats merging bug.
Packit Service 724aca
Packit Service 724aca
* 2.1.2 (March 2, 2011)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix "thread.{de,}allocatedp" mallctl for OS X.
Packit Service 724aca
  - Add missing jemalloc.a to build system.
Packit Service 724aca
Packit Service 724aca
* 2.1.1 (January 31, 2011)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix aligned huge reallocation (affected allocm()).
Packit Service 724aca
  - Fix the ALLOCM_LG_ALIGN macro definition.
Packit Service 724aca
  - Fix a heap dumping deadlock.
Packit Service 724aca
  - Fix a "thread.arena" mallctl bug.
Packit Service 724aca
Packit Service 724aca
* 2.1.0 (December 3, 2010)
Packit Service 724aca
Packit Service 724aca
  This version incorporates some optimizations that can't quite be considered
Packit Service 724aca
  bug fixes.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Use Linux's mremap(2) for huge object reallocation when possible.
Packit Service 724aca
  - Avoid locking in mallctl*() when possible.
Packit Service 724aca
  - Add the "thread.[de]allocatedp" mallctl's.
Packit Service 724aca
  - Convert the manual page source from roff to DocBook, and generate both roff
Packit Service 724aca
    and HTML manuals.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix a crash due to incorrect bootstrap ordering.  This only impacted
Packit Service 724aca
    --enable-debug --enable-dss configurations.
Packit Service 724aca
  - Fix a minor statistics bug for mallctl("swap.avail", ...).
Packit Service 724aca
Packit Service 724aca
* 2.0.1 (October 29, 2010)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix a race condition in heap profiling that could cause undefined behavior
Packit Service 724aca
    if "opt.prof_accum" were disabled.
Packit Service 724aca
  - Add missing mutex unlocks for some OOM error paths in the heap profiling
Packit Service 724aca
    code.
Packit Service 724aca
  - Fix a compilation error for non-C99 builds.
Packit Service 724aca
Packit Service 724aca
* 2.0.0 (October 24, 2010)
Packit Service 724aca
Packit Service 724aca
  This version focuses on the experimental *allocm() API, and on improved
Packit Service 724aca
  run-time configuration/introspection.  Nonetheless, numerous performance
Packit Service 724aca
  improvements are also included.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Implement the experimental {,r,s,d}allocm() API, which provides a superset
Packit Service 724aca
    of the functionality available via malloc(), calloc(), posix_memalign(),
Packit Service 724aca
    realloc(), malloc_usable_size(), and free().  These functions can be used to
Packit Service 724aca
    allocate/reallocate aligned zeroed memory, ask for optional extra memory
Packit Service 724aca
    during reallocation, prevent object movement during reallocation, etc.
Packit Service 724aca
  - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is
Packit Service 724aca
    more human-readable, and more flexible.  For example:
Packit Service 724aca
      JEMALLOC_OPTIONS=AJP
Packit Service 724aca
    is now:
Packit Service 724aca
      MALLOC_CONF=abort:true,fill:true,stats_print:true
Packit Service 724aca
  - Port to Apple OS X.  Sponsored by Mozilla.
Packit Service 724aca
  - Make it possible for the application to control thread-->arena mappings via
Packit Service 724aca
    the "thread.arena" mallctl.
Packit Service 724aca
  - Add compile-time support for all TLS-related functionality via pthreads TSD.
Packit Service 724aca
    This is mainly of interest for OS X, which does not support TLS, but has a
Packit Service 724aca
    TSD implementation with similar performance.
Packit Service 724aca
  - Override memalign() and valloc() if they are provided by the system.
Packit Service 724aca
  - Add the "arenas.purge" mallctl, which can be used to synchronously purge all
Packit Service 724aca
    dirty unused pages.
Packit Service 724aca
  - Make cumulative heap profiling data optional, so that it is possible to
Packit Service 724aca
    limit the amount of memory consumed by heap profiling data structures.
Packit Service 724aca
  - Add per thread allocation counters that can be accessed via the
Packit Service 724aca
    "thread.allocated" and "thread.deallocated" mallctls.
Packit Service 724aca
Packit Service 724aca
  Incompatible changes:
Packit Service 724aca
  - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above).
Packit Service 724aca
  - Increase default backtrace depth from 4 to 128 for heap profiling.
Packit Service 724aca
  - Disable interval-based profile dumps by default.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Remove bad assertions in fork handler functions.  These assertions could
Packit Service 724aca
    cause aborts for some combinations of configure settings.
Packit Service 724aca
  - Fix strerror_r() usage to deal with non-standard semantics in GNU libc.
Packit Service 724aca
  - Fix leak context reporting.  This bug tended to cause the number of contexts
Packit Service 724aca
    to be underreported (though the reported number of objects and bytes were
Packit Service 724aca
    correct).
Packit Service 724aca
  - Fix a realloc() bug for large in-place growing reallocation.  This bug could
Packit Service 724aca
    cause memory corruption, but it was hard to trigger.
Packit Service 724aca
  - Fix an allocation bug for small allocations that could be triggered if
Packit Service 724aca
    multiple threads raced to create a new run of backing pages.
Packit Service 724aca
  - Enhance the heap profiler to trigger samples based on usable size, rather
Packit Service 724aca
    than request size.
Packit Service 724aca
  - Fix a heap profiling bug due to sometimes losing track of requested object
Packit Service 724aca
    size for sampled objects.
Packit Service 724aca
Packit Service 724aca
* 1.0.3 (August 12, 2010)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix the libunwind-based implementation of stack backtracing (used for heap
Packit Service 724aca
    profiling).  This bug could cause zero-length backtraces to be reported.
Packit Service 724aca
  - Add a missing mutex unlock in library initialization code.  If multiple
Packit Service 724aca
    threads raced to initialize malloc, some of them could end up permanently
Packit Service 724aca
    blocked.
Packit Service 724aca
Packit Service 724aca
* 1.0.2 (May 11, 2010)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix junk filling of large objects, which could cause memory corruption.
Packit Service 724aca
  - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual
Packit Service 724aca
    memory limits could cause swap file configuration to fail.  Contributed by
Packit Service 724aca
    Jordan DeLong.
Packit Service 724aca
Packit Service 724aca
* 1.0.1 (April 14, 2010)
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Fix compilation when --enable-fill is specified.
Packit Service 724aca
  - Fix threads-related profiling bugs that affected accuracy and caused memory
Packit Service 724aca
    to be leaked during thread exit.
Packit Service 724aca
  - Fix dirty page purging race conditions that could cause crashes.
Packit Service 724aca
  - Fix crash in tcache flushing code during thread destruction.
Packit Service 724aca
Packit Service 724aca
* 1.0.0 (April 11, 2010)
Packit Service 724aca
Packit Service 724aca
  This release focuses on speed and run-time introspection.  Numerous
Packit Service 724aca
  algorithmic improvements make this release substantially faster than its
Packit Service 724aca
  predecessors.
Packit Service 724aca
Packit Service 724aca
  New features:
Packit Service 724aca
  - Implement autoconf-based configuration system.
Packit Service 724aca
  - Add mallctl*(), for the purposes of introspection and run-time
Packit Service 724aca
    configuration.
Packit Service 724aca
  - Make it possible for the application to manually flush a thread's cache, via
Packit Service 724aca
    the "tcache.flush" mallctl.
Packit Service 724aca
  - Base maximum dirty page count on proportion of active memory.
Packit Service 724aca
  - Compute various additional run-time statistics, including per size class
Packit Service 724aca
    statistics for large objects.
Packit Service 724aca
  - Expose malloc_stats_print(), which can be called repeatedly by the
Packit Service 724aca
    application.
Packit Service 724aca
  - Simplify the malloc_message() signature to only take one string argument,
Packit Service 724aca
    and incorporate an opaque data pointer argument for use by the application
Packit Service 724aca
    in combination with malloc_stats_print().
Packit Service 724aca
  - Add support for allocation backed by one or more swap files, and allow the
Packit Service 724aca
    application to disable over-commit if swap files are in use.
Packit Service 724aca
  - Implement allocation profiling and leak checking.
Packit Service 724aca
Packit Service 724aca
  Removed features:
Packit Service 724aca
  - Remove the dynamic arena rebalancing code, since thread-specific caching
Packit Service 724aca
    reduces its utility.
Packit Service 724aca
Packit Service 724aca
  Bug fixes:
Packit Service 724aca
  - Modify chunk allocation to work when address space layout randomization
Packit Service 724aca
    (ASLR) is in use.
Packit Service 724aca
  - Fix thread cleanup bugs related to TLS destruction.
Packit Service 724aca
  - Handle 0-size allocation requests in posix_memalign().
Packit Service 724aca
  - Fix a chunk leak.  The leaked chunks were never touched, so this impacted
Packit Service 724aca
    virtual memory usage, but not physical memory usage.
Packit Service 724aca
Packit Service 724aca
* linux_2008082[78]a (August 27/28, 2008)
Packit Service 724aca
Packit Service 724aca
  These snapshot releases are the simple result of incorporating Linux-specific
Packit Service 724aca
  support into the FreeBSD malloc sources.
Packit Service 724aca
Packit Service 724aca
--------------------------------------------------------------------------------
Packit Service 724aca
vim:filetype=text:textwidth=80