xref: /freebsd/contrib/jemalloc/ChangeLog (revision f921d10f4871e24cf637772c2ea9b83dc8e2cf93)
1a4bd5210SJason EvansFollowing are change highlights associated with official releases.  Important
2a4bd5210SJason Evansbug fixes are all mentioned, but internal enhancements are omitted here for
3a4bd5210SJason Evansbrevity (even though they are more fun to write about).  Much more detail can be
4a4bd5210SJason Evansfound in the git revision history:
5a4bd5210SJason Evans
6a4bd5210SJason Evans    http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git
7a4bd5210SJason Evans    git://canonware.com/jemalloc.git
8a4bd5210SJason Evans
9*f921d10fSJason Evans* 3.5.0 (January 22, 2014)
10*f921d10fSJason Evans
11*f921d10fSJason Evans  This version focuses on refactoring and automated testing, though it also
12*f921d10fSJason Evans  includes some non-trivial heap profiling optimizations not mentioned below.
13*f921d10fSJason Evans
14*f921d10fSJason Evans  New features:
15*f921d10fSJason Evans  - Add the *allocx() API, which is a successor to the experimental *allocm()
16*f921d10fSJason Evans    API.  The *allocx() functions are slightly simpler to use because they have
17*f921d10fSJason Evans    fewer parameters, they directly return the results of primary interest, and
18*f921d10fSJason Evans    mallocx()/rallocx() avoid the strict aliasing pitfall that
19*f921d10fSJason Evans    allocm()/rallocx() share with posix_memalign().  Note that *allocm() is
20*f921d10fSJason Evans    slated for removal in the next non-bugfix release.
21*f921d10fSJason Evans  - Add support for LinuxThreads.
22*f921d10fSJason Evans
23*f921d10fSJason Evans  Bug fixes:
24*f921d10fSJason Evans  - Unless heap profiling is enabled, disable floating point code and don't link
25*f921d10fSJason Evans    with libm.  This, in combination with e.g. EXTRA_CFLAGS=-mno-sse on x64
26*f921d10fSJason Evans    systems, makes it possible to completely disable floating point register
27*f921d10fSJason Evans    use.  Some versions of glibc neglect to save/restore caller-saved floating
28*f921d10fSJason Evans    point registers during dynamic lazy symbol loading, and the symbol loading
29*f921d10fSJason Evans    code uses whatever malloc the application happens to have linked/loaded
30*f921d10fSJason Evans    with, the result being potential floating point register corruption.
31*f921d10fSJason Evans  - Report ENOMEM rather than EINVAL if an OOM occurs during heap profiling
32*f921d10fSJason Evans    backtrace creation in imemalign().  This bug impacted posix_memalign() and
33*f921d10fSJason Evans    aligned_alloc().
34*f921d10fSJason Evans  - Fix a file descriptor leak in a prof_dump_maps() error path.
35*f921d10fSJason Evans  - Fix prof_dump() to close the dump file descriptor for all relevant error
36*f921d10fSJason Evans    paths.
37*f921d10fSJason Evans  - Fix rallocm() to use the arena specified by the ALLOCM_ARENA(s) flag for
38*f921d10fSJason Evans    allocation, not just deallocation.
39*f921d10fSJason Evans  - Fix a data race for large allocation stats counters.
40*f921d10fSJason Evans  - Fix a potential infinite loop during thread exit.  This bug occurred on
41*f921d10fSJason Evans    Solaris, and could affect other platforms with similar pthreads TSD
42*f921d10fSJason Evans    implementations.
43*f921d10fSJason Evans  - Don't junk-fill reallocations unless usable size changes.  This fixes a
44*f921d10fSJason Evans    violation of the *allocx()/*allocm() semantics.
45*f921d10fSJason Evans  - Fix growing large reallocation to junk fill new space.
46*f921d10fSJason Evans  - Fix huge deallocation to junk fill when munmap is disabled.
47*f921d10fSJason Evans  - Change the default private namespace prefix from empty to je_, and change
48*f921d10fSJason Evans    --with-private-namespace-prefix so that it prepends an additional prefix
49*f921d10fSJason Evans    rather than replacing je_.  This reduces the likelihood of applications
50*f921d10fSJason Evans    which statically link jemalloc experiencing symbol name collisions.
51*f921d10fSJason Evans  - Add missing private namespace mangling (relevant when
52*f921d10fSJason Evans    --with-private-namespace is specified).
53*f921d10fSJason Evans  - Add and use JEMALLOC_INLINE_C so that static inline functions are marked as
54*f921d10fSJason Evans    static even for debug builds.
55*f921d10fSJason Evans  - Add a missing mutex unlock in a malloc_init_hard() error path.  In practice
56*f921d10fSJason Evans    this error path is never executed.
57*f921d10fSJason Evans  - Fix numerous bugs in malloc_strotumax() error handling/reporting.  These
58*f921d10fSJason Evans    bugs had no impact except for malformed inputs.
59*f921d10fSJason Evans  - Fix numerous bugs in malloc_snprintf().  These bugs were not exercised by
60*f921d10fSJason Evans    existing calls, so they had no impact.
61*f921d10fSJason Evans
622b06b201SJason Evans* 3.4.1 (October 20, 2013)
632b06b201SJason Evans
642b06b201SJason Evans  Bug fixes:
652b06b201SJason Evans  - Fix a race in the "arenas.extend" mallctl that could cause memory corruption
662b06b201SJason Evans    of internal data structures and subsequent crashes.
672b06b201SJason Evans  - Fix Valgrind integration flaws that caused Valgrind warnings about reads of
682b06b201SJason Evans    uninitialized memory in:
692b06b201SJason Evans    + arena chunk headers
702b06b201SJason Evans    + internal zero-initialized data structures (relevant to tcache and prof
712b06b201SJason Evans      code)
722b06b201SJason Evans  - Preserve errno during the first allocation.  A readlink(2) call during
732b06b201SJason Evans    initialization fails unless /etc/malloc.conf exists, so errno was typically
742b06b201SJason Evans    set during the first allocation prior to this fix.
752b06b201SJason Evans  - Fix compilation warnings reported by gcc 4.8.1.
762b06b201SJason Evans
77f8ca2db1SJason Evans* 3.4.0 (June 2, 2013)
78f8ca2db1SJason Evans
79f8ca2db1SJason Evans  This version is essentially a small bugfix release, but the addition of
80f8ca2db1SJason Evans  aarch64 support requires that the minor version be incremented.
81f8ca2db1SJason Evans
82f8ca2db1SJason Evans  Bug fixes:
83f8ca2db1SJason Evans  - Fix race-triggered deadlocks in chunk_record().  These deadlocks were
84f8ca2db1SJason Evans    typically triggered by multiple threads concurrently deallocating huge
85f8ca2db1SJason Evans    objects.
86f8ca2db1SJason Evans
87f8ca2db1SJason Evans  New features:
88f8ca2db1SJason Evans  - Add support for the aarch64 architecture.
89f8ca2db1SJason Evans
90f8ca2db1SJason Evans* 3.3.1 (March 6, 2013)
91f8ca2db1SJason Evans
92f8ca2db1SJason Evans  This version fixes bugs that are typically encountered only when utilizing
93f8ca2db1SJason Evans  custom run-time options.
94f8ca2db1SJason Evans
95f8ca2db1SJason Evans  Bug fixes:
96f8ca2db1SJason Evans  - Fix a locking order bug that could cause deadlock during fork if heap
97f8ca2db1SJason Evans    profiling were enabled.
98f8ca2db1SJason Evans  - Fix a chunk recycling bug that could cause the allocator to lose track of
99f8ca2db1SJason Evans    whether a chunk was zeroed.  On FreeBSD, NetBSD, and OS X, it could cause
100f8ca2db1SJason Evans    corruption if allocating via sbrk(2) (unlikely unless running with the
101f8ca2db1SJason Evans    "dss:primary" option specified).  This was completely harmless on Linux
102f8ca2db1SJason Evans    unless using mlockall(2) (and unlikely even then, unless the
103f8ca2db1SJason Evans    --disable-munmap configure option or the "dss:primary" option was
104f8ca2db1SJason Evans    specified).  This regression was introduced in 3.1.0 by the
105f8ca2db1SJason Evans    mlockall(2)/madvise(2) interaction fix.
106f8ca2db1SJason Evans  - Fix TLS-related memory corruption that could occur during thread exit if the
107f8ca2db1SJason Evans    thread never allocated memory.  Only the quarantine and prof facilities were
108f8ca2db1SJason Evans    susceptible.
109f8ca2db1SJason Evans  - Fix two quarantine bugs:
110f8ca2db1SJason Evans    + Internal reallocation of the quarantined object array leaked the old
111f8ca2db1SJason Evans      array.
112f8ca2db1SJason Evans    + Reallocation failure for internal reallocation of the quarantined object
113f8ca2db1SJason Evans      array (very unlikely) resulted in memory corruption.
114f8ca2db1SJason Evans  - Fix Valgrind integration to annotate all internally allocated memory in a
115f8ca2db1SJason Evans    way that keeps Valgrind happy about internal data structure access.
116f8ca2db1SJason Evans  - Fix building for s390 systems.
117f8ca2db1SJason Evans
11888ad2f8dSJason Evans* 3.3.0 (January 23, 2013)
11988ad2f8dSJason Evans
12088ad2f8dSJason Evans  This version includes a few minor performance improvements in addition to the
12188ad2f8dSJason Evans  listed new features and bug fixes.
12288ad2f8dSJason Evans
12388ad2f8dSJason Evans  New features:
12488ad2f8dSJason Evans  - Add clipping support to lg_chunk option processing.
12588ad2f8dSJason Evans  - Add the --enable-ivsalloc option.
12688ad2f8dSJason Evans  - Add the --without-export option.
12788ad2f8dSJason Evans  - Add the --disable-zone-allocator option.
12888ad2f8dSJason Evans
12988ad2f8dSJason Evans  Bug fixes:
13088ad2f8dSJason Evans  - Fix "arenas.extend" mallctl to output the number of arenas.
1312b06b201SJason Evans  - Fix chunk_recycle() to unconditionally inform Valgrind that returned memory
13288ad2f8dSJason Evans    is undefined.
13388ad2f8dSJason Evans  - Fix build break on FreeBSD related to alloca.h.
13488ad2f8dSJason Evans
13582872ac0SJason Evans* 3.2.0 (November 9, 2012)
13682872ac0SJason Evans
13782872ac0SJason Evans  In addition to a couple of bug fixes, this version modifies page run
13882872ac0SJason Evans  allocation and dirty page purging algorithms in order to better control
13982872ac0SJason Evans  page-level virtual memory fragmentation.
14082872ac0SJason Evans
14182872ac0SJason Evans  Incompatible changes:
14282872ac0SJason Evans  - Change the "opt.lg_dirty_mult" default from 5 to 3 (32:1 to 8:1).
14382872ac0SJason Evans
14482872ac0SJason Evans  Bug fixes:
14582872ac0SJason Evans  - Fix dss/mmap allocation precedence code to use recyclable mmap memory only
14682872ac0SJason Evans    after primary dss allocation fails.
14782872ac0SJason Evans  - Fix deadlock in the "arenas.purge" mallctl.  This regression was introduced
14882872ac0SJason Evans    in 3.1.0 by the addition of the "arena.<i>.purge" mallctl.
14982872ac0SJason Evans
15082872ac0SJason Evans* 3.1.0 (October 16, 2012)
15182872ac0SJason Evans
15282872ac0SJason Evans  New features:
15382872ac0SJason Evans  - Auto-detect whether running inside Valgrind, thus removing the need to
15482872ac0SJason Evans    manually specify MALLOC_CONF=valgrind:true.
15582872ac0SJason Evans  - Add the "arenas.extend" mallctl, which allows applications to create
15682872ac0SJason Evans    manually managed arenas.
15782872ac0SJason Evans  - Add the ALLOCM_ARENA() flag for {,r,d}allocm().
15882872ac0SJason Evans  - Add the "opt.dss", "arena.<i>.dss", and "stats.arenas.<i>.dss" mallctls,
15982872ac0SJason Evans    which provide control over dss/mmap precedence.
16082872ac0SJason Evans  - Add the "arena.<i>.purge" mallctl, which obsoletes "arenas.purge".
16182872ac0SJason Evans  - Define LG_QUANTUM for hppa.
16282872ac0SJason Evans
16382872ac0SJason Evans  Incompatible changes:
16482872ac0SJason Evans  - Disable tcache by default if running inside Valgrind, in order to avoid
16582872ac0SJason Evans    making unallocated objects appear reachable to Valgrind.
16682872ac0SJason Evans  - Drop const from malloc_usable_size() argument on Linux.
16782872ac0SJason Evans
16882872ac0SJason Evans  Bug fixes:
16982872ac0SJason Evans  - Fix heap profiling crash if sampled object is freed via realloc(p, 0).
17082872ac0SJason Evans  - Remove const from __*_hook variable declarations, so that glibc can modify
17182872ac0SJason Evans    them during process forking.
17282872ac0SJason Evans  - Fix mlockall(2)/madvise(2) interaction.
17382872ac0SJason Evans  - Fix fork(2)-related deadlocks.
17482872ac0SJason Evans  - Fix error return value for "thread.tcache.enabled" mallctl.
17582872ac0SJason Evans
17635dad073SJason Evans* 3.0.0 (May 11, 2012)
177a4bd5210SJason Evans
178a4bd5210SJason Evans  Although this version adds some major new features, the primary focus is on
179a4bd5210SJason Evans  internal code cleanup that facilitates maintainability and portability, most
180a4bd5210SJason Evans  of which is not reflected in the ChangeLog.  This is the first release to
181a4bd5210SJason Evans  incorporate substantial contributions from numerous other developers, and the
182a4bd5210SJason Evans  result is a more broadly useful allocator (see the git revision history for
183a4bd5210SJason Evans  contribution details).  Note that the license has been unified, thanks to
184a4bd5210SJason Evans  Facebook granting a license under the same terms as the other copyright
185a4bd5210SJason Evans  holders (see COPYING).
186a4bd5210SJason Evans
187a4bd5210SJason Evans  New features:
188a4bd5210SJason Evans  - Implement Valgrind support, redzones, and quarantine.
189e722f8f8SJason Evans  - Add support for additional platforms:
190a4bd5210SJason Evans    + FreeBSD
191a4bd5210SJason Evans    + Mac OS X Lion
192e722f8f8SJason Evans    + MinGW
19335dad073SJason Evans    + Windows (no support yet for replacing the system malloc)
194a4bd5210SJason Evans  - Add support for additional architectures:
195a4bd5210SJason Evans    + MIPS
196a4bd5210SJason Evans    + SH4
197a4bd5210SJason Evans    + Tilera
198a4bd5210SJason Evans  - Add support for cross compiling.
199a4bd5210SJason Evans  - Add nallocm(), which rounds a request size up to the nearest size class
200a4bd5210SJason Evans    without actually allocating.
201a4bd5210SJason Evans  - Implement aligned_alloc() (blame C11).
202a4bd5210SJason Evans  - Add the "thread.tcache.enabled" mallctl.
2038ed34ab0SJason Evans  - Add the "opt.prof_final" mallctl.
2048ed34ab0SJason Evans  - Update pprof (from gperftools 2.0).
20535dad073SJason Evans  - Add the --with-mangling option.
20635dad073SJason Evans  - Add the --disable-experimental option.
20735dad073SJason Evans  - Add the --disable-munmap option, and make it the default on Linux.
20835dad073SJason Evans  - Add the --enable-mremap option, which disables use of mremap(2) by default.
209a4bd5210SJason Evans
210a4bd5210SJason Evans  Incompatible changes:
211a4bd5210SJason Evans  - Enable stats by default.
212a4bd5210SJason Evans  - Enable fill by default.
213a4bd5210SJason Evans  - Disable lazy locking by default.
214a4bd5210SJason Evans  - Rename the "tcache.flush" mallctl to "thread.tcache.flush".
215a4bd5210SJason Evans  - Rename the "arenas.pagesize" mallctl to "arenas.page".
2168ed34ab0SJason Evans  - Change the "opt.lg_prof_sample" default from 0 to 19 (1 B to 512 KiB).
2178ed34ab0SJason Evans  - Change the "opt.prof_accum" default from true to false.
218a4bd5210SJason Evans
219a4bd5210SJason Evans  Removed features:
220a4bd5210SJason Evans  - Remove the swap feature, including the "config.swap", "swap.avail",
221a4bd5210SJason Evans    "swap.prezeroed", "swap.nfds", and "swap.fds" mallctls.
222a4bd5210SJason Evans  - Remove highruns statistics, including the
223a4bd5210SJason Evans    "stats.arenas.<i>.bins.<j>.highruns" and
224a4bd5210SJason Evans    "stats.arenas.<i>.lruns.<j>.highruns" mallctls.
225a4bd5210SJason Evans  - As part of small size class refactoring, remove the "opt.lg_[qc]space_max",
226a4bd5210SJason Evans    "arenas.cacheline", "arenas.subpage", "arenas.[tqcs]space_{min,max}", and
227a4bd5210SJason Evans    "arenas.[tqcs]bins" mallctls.
228a4bd5210SJason Evans  - Remove the "arenas.chunksize" mallctl.
229a4bd5210SJason Evans  - Remove the "opt.lg_prof_tcmax" option.
230a4bd5210SJason Evans  - Remove the "opt.lg_prof_bt_max" option.
231a4bd5210SJason Evans  - Remove the "opt.lg_tcache_gc_sweep" option.
232a4bd5210SJason Evans  - Remove the --disable-tiny option, including the "config.tiny" mallctl.
233a4bd5210SJason Evans  - Remove the --enable-dynamic-page-shift configure option.
234a4bd5210SJason Evans  - Remove the --enable-sysv configure option.
235a4bd5210SJason Evans
236a4bd5210SJason Evans  Bug fixes:
237a4bd5210SJason Evans  - Fix a statistics-related bug in the "thread.arena" mallctl that could cause
238a4bd5210SJason Evans    invalid statistics and crashes.
239e722f8f8SJason Evans  - Work around TLS deallocation via free() on Linux.  This bug could cause
240a4bd5210SJason Evans    write-after-free memory corruption.
241e722f8f8SJason Evans  - Fix a potential deadlock that could occur during interval- and
242e722f8f8SJason Evans    growth-triggered heap profile dumps.
24335dad073SJason Evans  - Fix large calloc() zeroing bugs due to dropping chunk map unzeroed flags.
2444bcb1430SJason Evans  - Fix chunk_alloc_dss() to stop claiming memory is zeroed.  This bug could
2454bcb1430SJason Evans    cause memory corruption and crashes with --enable-dss specified.
246e722f8f8SJason Evans  - Fix fork-related bugs that could cause deadlock in children between fork
247e722f8f8SJason Evans    and exec.
248a4bd5210SJason Evans  - Fix malloc_stats_print() to honor 'b' and 'l' in the opts parameter.
249a4bd5210SJason Evans  - Fix realloc(p, 0) to act like free(p).
250a4bd5210SJason Evans  - Do not enforce minimum alignment in memalign().
251a4bd5210SJason Evans  - Check for NULL pointer in malloc_usable_size().
252e722f8f8SJason Evans  - Fix an off-by-one heap profile statistics bug that could be observed in
253e722f8f8SJason Evans    interval- and growth-triggered heap profiles.
254e722f8f8SJason Evans  - Fix the "epoch" mallctl to update cached stats even if the passed in epoch
255e722f8f8SJason Evans    is 0.
256a4bd5210SJason Evans  - Fix bin->runcur management to fix a layout policy bug.  This bug did not
257a4bd5210SJason Evans    affect correctness.
258a4bd5210SJason Evans  - Fix a bug in choose_arena_hard() that potentially caused more arenas to be
259a4bd5210SJason Evans    initialized than necessary.
260a4bd5210SJason Evans  - Add missing "opt.lg_tcache_max" mallctl implementation.
261a4bd5210SJason Evans  - Use glibc allocator hooks to make mixed allocator usage less likely.
262a4bd5210SJason Evans  - Fix build issues for --disable-tcache.
2638ed34ab0SJason Evans  - Don't mangle pthread_create() when --with-private-namespace is specified.
264a4bd5210SJason Evans
265a4bd5210SJason Evans* 2.2.5 (November 14, 2011)
266a4bd5210SJason Evans
267a4bd5210SJason Evans  Bug fixes:
268a4bd5210SJason Evans  - Fix huge_ralloc() race when using mremap(2).  This is a serious bug that
269a4bd5210SJason Evans    could cause memory corruption and/or crashes.
270a4bd5210SJason Evans  - Fix huge_ralloc() to maintain chunk statistics.
271a4bd5210SJason Evans  - Fix malloc_stats_print(..., "a") output.
272a4bd5210SJason Evans
273a4bd5210SJason Evans* 2.2.4 (November 5, 2011)
274a4bd5210SJason Evans
275a4bd5210SJason Evans  Bug fixes:
276a4bd5210SJason Evans  - Initialize arenas_tsd before using it.  This bug existed for 2.2.[0-3], as
277a4bd5210SJason Evans    well as for --disable-tls builds in earlier releases.
278a4bd5210SJason Evans  - Do not assume a 4 KiB page size in test/rallocm.c.
279a4bd5210SJason Evans
280a4bd5210SJason Evans* 2.2.3 (August 31, 2011)
281a4bd5210SJason Evans
282a4bd5210SJason Evans  This version fixes numerous bugs related to heap profiling.
283a4bd5210SJason Evans
284a4bd5210SJason Evans  Bug fixes:
285a4bd5210SJason Evans  - Fix a prof-related race condition.  This bug could cause memory corruption,
286a4bd5210SJason Evans    but only occurred in non-default configurations (prof_accum:false).
287a4bd5210SJason Evans  - Fix off-by-one backtracing issues (make sure that prof_alloc_prep() is
288a4bd5210SJason Evans    excluded from backtraces).
289a4bd5210SJason Evans  - Fix a prof-related bug in realloc() (only triggered by OOM errors).
290a4bd5210SJason Evans  - Fix prof-related bugs in allocm() and rallocm().
291a4bd5210SJason Evans  - Fix prof_tdata_cleanup() for --disable-tls builds.
292a4bd5210SJason Evans  - Fix a relative include path, to fix objdir builds.
293a4bd5210SJason Evans
294a4bd5210SJason Evans* 2.2.2 (July 30, 2011)
295a4bd5210SJason Evans
296a4bd5210SJason Evans  Bug fixes:
297a4bd5210SJason Evans  - Fix a build error for --disable-tcache.
298a4bd5210SJason Evans  - Fix assertions in arena_purge() (for real this time).
299a4bd5210SJason Evans  - Add the --with-private-namespace option.  This is a workaround for symbol
300a4bd5210SJason Evans    conflicts that can inadvertently arise when using static libraries.
301a4bd5210SJason Evans
302a4bd5210SJason Evans* 2.2.1 (March 30, 2011)
303a4bd5210SJason Evans
304a4bd5210SJason Evans  Bug fixes:
305a4bd5210SJason Evans  - Implement atomic operations for x86/x64.  This fixes compilation failures
306a4bd5210SJason Evans    for versions of gcc that are still in wide use.
307a4bd5210SJason Evans  - Fix an assertion in arena_purge().
308a4bd5210SJason Evans
309a4bd5210SJason Evans* 2.2.0 (March 22, 2011)
310a4bd5210SJason Evans
311a4bd5210SJason Evans  This version incorporates several improvements to algorithms and data
312a4bd5210SJason Evans  structures that tend to reduce fragmentation and increase speed.
313a4bd5210SJason Evans
314a4bd5210SJason Evans  New features:
315a4bd5210SJason Evans  - Add the "stats.cactive" mallctl.
316a4bd5210SJason Evans  - Update pprof (from google-perftools 1.7).
317a4bd5210SJason Evans  - Improve backtracing-related configuration logic, and add the
318a4bd5210SJason Evans    --disable-prof-libgcc option.
319a4bd5210SJason Evans
320a4bd5210SJason Evans  Bug fixes:
321a4bd5210SJason Evans  - Change default symbol visibility from "internal", to "hidden", which
322a4bd5210SJason Evans    decreases the overhead of library-internal function calls.
323a4bd5210SJason Evans  - Fix symbol visibility so that it is also set on OS X.
324a4bd5210SJason Evans  - Fix a build dependency regression caused by the introduction of the .pic.o
325a4bd5210SJason Evans    suffix for PIC object files.
326a4bd5210SJason Evans  - Add missing checks for mutex initialization failures.
327a4bd5210SJason Evans  - Don't use libgcc-based backtracing except on x64, where it is known to work.
328a4bd5210SJason Evans  - Fix deadlocks on OS X that were due to memory allocation in
329a4bd5210SJason Evans    pthread_mutex_lock().
330a4bd5210SJason Evans  - Heap profiling-specific fixes:
331a4bd5210SJason Evans    + Fix memory corruption due to integer overflow in small region index
332a4bd5210SJason Evans      computation, when using a small enough sample interval that profiling
333a4bd5210SJason Evans      context pointers are stored in small run headers.
334a4bd5210SJason Evans    + Fix a bootstrap ordering bug that only occurred with TLS disabled.
335a4bd5210SJason Evans    + Fix a rallocm() rsize bug.
336a4bd5210SJason Evans    + Fix error detection bugs for aligned memory allocation.
337a4bd5210SJason Evans
338a4bd5210SJason Evans* 2.1.3 (March 14, 2011)
339a4bd5210SJason Evans
340a4bd5210SJason Evans  Bug fixes:
341a4bd5210SJason Evans  - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix
342a4bd5210SJason Evans    for OS X in 2.1.2).
343a4bd5210SJason Evans  - Fix a "thread.arena" mallctl bug.
344a4bd5210SJason Evans  - Fix a thread cache stats merging bug.
345a4bd5210SJason Evans
346a4bd5210SJason Evans* 2.1.2 (March 2, 2011)
347a4bd5210SJason Evans
348a4bd5210SJason Evans  Bug fixes:
349a4bd5210SJason Evans  - Fix "thread.{de,}allocatedp" mallctl for OS X.
350a4bd5210SJason Evans  - Add missing jemalloc.a to build system.
351a4bd5210SJason Evans
352a4bd5210SJason Evans* 2.1.1 (January 31, 2011)
353a4bd5210SJason Evans
354a4bd5210SJason Evans  Bug fixes:
355a4bd5210SJason Evans  - Fix aligned huge reallocation (affected allocm()).
356a4bd5210SJason Evans  - Fix the ALLOCM_LG_ALIGN macro definition.
357a4bd5210SJason Evans  - Fix a heap dumping deadlock.
358a4bd5210SJason Evans  - Fix a "thread.arena" mallctl bug.
359a4bd5210SJason Evans
360a4bd5210SJason Evans* 2.1.0 (December 3, 2010)
361a4bd5210SJason Evans
362a4bd5210SJason Evans  This version incorporates some optimizations that can't quite be considered
363a4bd5210SJason Evans  bug fixes.
364a4bd5210SJason Evans
365a4bd5210SJason Evans  New features:
366a4bd5210SJason Evans  - Use Linux's mremap(2) for huge object reallocation when possible.
367a4bd5210SJason Evans  - Avoid locking in mallctl*() when possible.
368a4bd5210SJason Evans  - Add the "thread.[de]allocatedp" mallctl's.
369a4bd5210SJason Evans  - Convert the manual page source from roff to DocBook, and generate both roff
370a4bd5210SJason Evans    and HTML manuals.
371a4bd5210SJason Evans
372a4bd5210SJason Evans  Bug fixes:
373a4bd5210SJason Evans  - Fix a crash due to incorrect bootstrap ordering.  This only impacted
374a4bd5210SJason Evans    --enable-debug --enable-dss configurations.
375a4bd5210SJason Evans  - Fix a minor statistics bug for mallctl("swap.avail", ...).
376a4bd5210SJason Evans
377a4bd5210SJason Evans* 2.0.1 (October 29, 2010)
378a4bd5210SJason Evans
379a4bd5210SJason Evans  Bug fixes:
380a4bd5210SJason Evans  - Fix a race condition in heap profiling that could cause undefined behavior
381a4bd5210SJason Evans    if "opt.prof_accum" were disabled.
382a4bd5210SJason Evans  - Add missing mutex unlocks for some OOM error paths in the heap profiling
383a4bd5210SJason Evans    code.
384a4bd5210SJason Evans  - Fix a compilation error for non-C99 builds.
385a4bd5210SJason Evans
386a4bd5210SJason Evans* 2.0.0 (October 24, 2010)
387a4bd5210SJason Evans
388a4bd5210SJason Evans  This version focuses on the experimental *allocm() API, and on improved
389a4bd5210SJason Evans  run-time configuration/introspection.  Nonetheless, numerous performance
390a4bd5210SJason Evans  improvements are also included.
391a4bd5210SJason Evans
392a4bd5210SJason Evans  New features:
393a4bd5210SJason Evans  - Implement the experimental {,r,s,d}allocm() API, which provides a superset
394a4bd5210SJason Evans    of the functionality available via malloc(), calloc(), posix_memalign(),
395a4bd5210SJason Evans    realloc(), malloc_usable_size(), and free().  These functions can be used to
396a4bd5210SJason Evans    allocate/reallocate aligned zeroed memory, ask for optional extra memory
397a4bd5210SJason Evans    during reallocation, prevent object movement during reallocation, etc.
398a4bd5210SJason Evans  - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is
399a4bd5210SJason Evans    more human-readable, and more flexible.  For example:
400a4bd5210SJason Evans      JEMALLOC_OPTIONS=AJP
401a4bd5210SJason Evans    is now:
402a4bd5210SJason Evans      MALLOC_CONF=abort:true,fill:true,stats_print:true
403a4bd5210SJason Evans  - Port to Apple OS X.  Sponsored by Mozilla.
404a4bd5210SJason Evans  - Make it possible for the application to control thread-->arena mappings via
405a4bd5210SJason Evans    the "thread.arena" mallctl.
406a4bd5210SJason Evans  - Add compile-time support for all TLS-related functionality via pthreads TSD.
407a4bd5210SJason Evans    This is mainly of interest for OS X, which does not support TLS, but has a
408a4bd5210SJason Evans    TSD implementation with similar performance.
409a4bd5210SJason Evans  - Override memalign() and valloc() if they are provided by the system.
410a4bd5210SJason Evans  - Add the "arenas.purge" mallctl, which can be used to synchronously purge all
411a4bd5210SJason Evans    dirty unused pages.
412a4bd5210SJason Evans  - Make cumulative heap profiling data optional, so that it is possible to
413a4bd5210SJason Evans    limit the amount of memory consumed by heap profiling data structures.
414a4bd5210SJason Evans  - Add per thread allocation counters that can be accessed via the
415a4bd5210SJason Evans    "thread.allocated" and "thread.deallocated" mallctls.
416a4bd5210SJason Evans
417a4bd5210SJason Evans  Incompatible changes:
418a4bd5210SJason Evans  - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above).
419a4bd5210SJason Evans  - Increase default backtrace depth from 4 to 128 for heap profiling.
420a4bd5210SJason Evans  - Disable interval-based profile dumps by default.
421a4bd5210SJason Evans
422a4bd5210SJason Evans  Bug fixes:
423a4bd5210SJason Evans  - Remove bad assertions in fork handler functions.  These assertions could
424a4bd5210SJason Evans    cause aborts for some combinations of configure settings.
425a4bd5210SJason Evans  - Fix strerror_r() usage to deal with non-standard semantics in GNU libc.
426a4bd5210SJason Evans  - Fix leak context reporting.  This bug tended to cause the number of contexts
427a4bd5210SJason Evans    to be underreported (though the reported number of objects and bytes were
428a4bd5210SJason Evans    correct).
429a4bd5210SJason Evans  - Fix a realloc() bug for large in-place growing reallocation.  This bug could
430a4bd5210SJason Evans    cause memory corruption, but it was hard to trigger.
431a4bd5210SJason Evans  - Fix an allocation bug for small allocations that could be triggered if
432a4bd5210SJason Evans    multiple threads raced to create a new run of backing pages.
433a4bd5210SJason Evans  - Enhance the heap profiler to trigger samples based on usable size, rather
434a4bd5210SJason Evans    than request size.
435a4bd5210SJason Evans  - Fix a heap profiling bug due to sometimes losing track of requested object
436a4bd5210SJason Evans    size for sampled objects.
437a4bd5210SJason Evans
438a4bd5210SJason Evans* 1.0.3 (August 12, 2010)
439a4bd5210SJason Evans
440a4bd5210SJason Evans  Bug fixes:
441a4bd5210SJason Evans  - Fix the libunwind-based implementation of stack backtracing (used for heap
442a4bd5210SJason Evans    profiling).  This bug could cause zero-length backtraces to be reported.
443a4bd5210SJason Evans  - Add a missing mutex unlock in library initialization code.  If multiple
444a4bd5210SJason Evans    threads raced to initialize malloc, some of them could end up permanently
445a4bd5210SJason Evans    blocked.
446a4bd5210SJason Evans
447a4bd5210SJason Evans* 1.0.2 (May 11, 2010)
448a4bd5210SJason Evans
449a4bd5210SJason Evans  Bug fixes:
450a4bd5210SJason Evans  - Fix junk filling of large objects, which could cause memory corruption.
451a4bd5210SJason Evans  - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual
452a4bd5210SJason Evans    memory limits could cause swap file configuration to fail.  Contributed by
453a4bd5210SJason Evans    Jordan DeLong.
454a4bd5210SJason Evans
455a4bd5210SJason Evans* 1.0.1 (April 14, 2010)
456a4bd5210SJason Evans
457a4bd5210SJason Evans  Bug fixes:
458a4bd5210SJason Evans  - Fix compilation when --enable-fill is specified.
459a4bd5210SJason Evans  - Fix threads-related profiling bugs that affected accuracy and caused memory
460a4bd5210SJason Evans    to be leaked during thread exit.
461a4bd5210SJason Evans  - Fix dirty page purging race conditions that could cause crashes.
462a4bd5210SJason Evans  - Fix crash in tcache flushing code during thread destruction.
463a4bd5210SJason Evans
464a4bd5210SJason Evans* 1.0.0 (April 11, 2010)
465a4bd5210SJason Evans
466a4bd5210SJason Evans  This release focuses on speed and run-time introspection.  Numerous
467a4bd5210SJason Evans  algorithmic improvements make this release substantially faster than its
468a4bd5210SJason Evans  predecessors.
469a4bd5210SJason Evans
470a4bd5210SJason Evans  New features:
471a4bd5210SJason Evans  - Implement autoconf-based configuration system.
472a4bd5210SJason Evans  - Add mallctl*(), for the purposes of introspection and run-time
473a4bd5210SJason Evans    configuration.
474a4bd5210SJason Evans  - Make it possible for the application to manually flush a thread's cache, via
475a4bd5210SJason Evans    the "tcache.flush" mallctl.
476a4bd5210SJason Evans  - Base maximum dirty page count on proportion of active memory.
477a4bd5210SJason Evans  - Compute various addtional run-time statistics, including per size class
478a4bd5210SJason Evans    statistics for large objects.
479a4bd5210SJason Evans  - Expose malloc_stats_print(), which can be called repeatedly by the
480a4bd5210SJason Evans    application.
481a4bd5210SJason Evans  - Simplify the malloc_message() signature to only take one string argument,
482a4bd5210SJason Evans    and incorporate an opaque data pointer argument for use by the application
483a4bd5210SJason Evans    in combination with malloc_stats_print().
484a4bd5210SJason Evans  - Add support for allocation backed by one or more swap files, and allow the
485a4bd5210SJason Evans    application to disable over-commit if swap files are in use.
486a4bd5210SJason Evans  - Implement allocation profiling and leak checking.
487a4bd5210SJason Evans
488a4bd5210SJason Evans  Removed features:
489a4bd5210SJason Evans  - Remove the dynamic arena rebalancing code, since thread-specific caching
490a4bd5210SJason Evans    reduces its utility.
491a4bd5210SJason Evans
492a4bd5210SJason Evans  Bug fixes:
493a4bd5210SJason Evans  - Modify chunk allocation to work when address space layout randomization
494a4bd5210SJason Evans    (ASLR) is in use.
495a4bd5210SJason Evans  - Fix thread cleanup bugs related to TLS destruction.
496a4bd5210SJason Evans  - Handle 0-size allocation requests in posix_memalign().
497a4bd5210SJason Evans  - Fix a chunk leak.  The leaked chunks were never touched, so this impacted
498a4bd5210SJason Evans    virtual memory usage, but not physical memory usage.
499a4bd5210SJason Evans
500a4bd5210SJason Evans* linux_2008082[78]a (August 27/28, 2008)
501a4bd5210SJason Evans
502a4bd5210SJason Evans  These snapshot releases are the simple result of incorporating Linux-specific
503a4bd5210SJason Evans  support into the FreeBSD malloc sources.
504a4bd5210SJason Evans
505a4bd5210SJason Evans--------------------------------------------------------------------------------
506a4bd5210SJason Evansvim:filetype=text:textwidth=80
507