xref: /freebsd/contrib/jemalloc/ChangeLog (revision 2fff27f84c439ebfbcbab0e3987ee28f0e1f7e60)
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
6706d9bd1SJason Evans    https://github.com/jemalloc/jemalloc
7706d9bd1SJason Evans
8*2fff27f8SJason Evans* 3.6.0 (March 31, 2014)
9*2fff27f8SJason Evans
10*2fff27f8SJason Evans  This version contains a critical bug fix for a regression present in 3.5.0 and
11*2fff27f8SJason Evans  3.5.1.
12*2fff27f8SJason Evans
13*2fff27f8SJason Evans  Bug fixes:
14*2fff27f8SJason Evans  - Fix a regression in arena_chunk_alloc() that caused crashes during
15*2fff27f8SJason Evans    small/large allocation if chunk allocation failed.  In the absence of this
16*2fff27f8SJason Evans    bug, chunk allocation failure would result in allocation failure, e.g.  NULL
17*2fff27f8SJason Evans    return from malloc().  This regression was introduced in 3.5.0.
18*2fff27f8SJason Evans  - Fix backtracing for gcc intrinsics-based backtracing by specifying
19*2fff27f8SJason Evans    -fno-omit-frame-pointer to gcc.  Note that the application (and all the
20*2fff27f8SJason Evans    libraries it links to) must also be compiled with this option for
21*2fff27f8SJason Evans    backtracing to be reliable.
22*2fff27f8SJason Evans  - Use dss allocation precedence for huge allocations as well as small/large
23*2fff27f8SJason Evans    allocations.
24*2fff27f8SJason Evans  - Fix test assertion failure message formatting.  This bug did not manifect on
25*2fff27f8SJason Evans    x86_64 systems because of implementation subtleties in va_list.
26*2fff27f8SJason Evans  - Fix inconsequential test failures for hash and SFMT code.
27*2fff27f8SJason Evans
28*2fff27f8SJason Evans  New features:
29*2fff27f8SJason Evans  - Support heap profiling on FreeBSD.  This feature depends on the proc
30*2fff27f8SJason Evans    filesystem being mounted during heap profile dumping.
31*2fff27f8SJason Evans
32706d9bd1SJason Evans* 3.5.1 (February 25, 2014)
33706d9bd1SJason Evans
34706d9bd1SJason Evans  This version primarily addresses minor bugs in test code.
35706d9bd1SJason Evans
36706d9bd1SJason Evans  Bug fixes:
37706d9bd1SJason Evans  - Configure Solaris/Illumos to use MADV_FREE.
38706d9bd1SJason Evans  - Fix junk filling for mremap(2)-based huge reallocation.  This is only
39706d9bd1SJason Evans    relevant if configuring with the --enable-mremap option specified.
40706d9bd1SJason Evans  - Avoid compilation failure if 'restrict' C99 keyword is not supported by the
41706d9bd1SJason Evans    compiler.
42706d9bd1SJason Evans  - Add a configure test for SSE2 rather than assuming it is usable on i686
43706d9bd1SJason Evans    systems.  This fixes test compilation errors, especially on 32-bit Linux
44706d9bd1SJason Evans    systems.
45706d9bd1SJason Evans  - Fix mallctl argument size mismatches (size_t vs. uint64_t) in the stats unit
46706d9bd1SJason Evans    test.
47706d9bd1SJason Evans  - Fix/remove flawed alignment-related overflow tests.
48706d9bd1SJason Evans  - Prevent compiler optimizations that could change backtraces in the
49706d9bd1SJason Evans    prof_accum unit test.
50a4bd5210SJason Evans
51f921d10fSJason Evans* 3.5.0 (January 22, 2014)
52f921d10fSJason Evans
53f921d10fSJason Evans  This version focuses on refactoring and automated testing, though it also
54f921d10fSJason Evans  includes some non-trivial heap profiling optimizations not mentioned below.
55f921d10fSJason Evans
56f921d10fSJason Evans  New features:
57f921d10fSJason Evans  - Add the *allocx() API, which is a successor to the experimental *allocm()
58f921d10fSJason Evans    API.  The *allocx() functions are slightly simpler to use because they have
59f921d10fSJason Evans    fewer parameters, they directly return the results of primary interest, and
60f921d10fSJason Evans    mallocx()/rallocx() avoid the strict aliasing pitfall that
61706d9bd1SJason Evans    allocm()/rallocm() share with posix_memalign().  Note that *allocm() is
62f921d10fSJason Evans    slated for removal in the next non-bugfix release.
63f921d10fSJason Evans  - Add support for LinuxThreads.
64f921d10fSJason Evans
65f921d10fSJason Evans  Bug fixes:
66f921d10fSJason Evans  - Unless heap profiling is enabled, disable floating point code and don't link
67f921d10fSJason Evans    with libm.  This, in combination with e.g. EXTRA_CFLAGS=-mno-sse on x64
68f921d10fSJason Evans    systems, makes it possible to completely disable floating point register
69f921d10fSJason Evans    use.  Some versions of glibc neglect to save/restore caller-saved floating
70f921d10fSJason Evans    point registers during dynamic lazy symbol loading, and the symbol loading
71f921d10fSJason Evans    code uses whatever malloc the application happens to have linked/loaded
72f921d10fSJason Evans    with, the result being potential floating point register corruption.
73f921d10fSJason Evans  - Report ENOMEM rather than EINVAL if an OOM occurs during heap profiling
74f921d10fSJason Evans    backtrace creation in imemalign().  This bug impacted posix_memalign() and
75f921d10fSJason Evans    aligned_alloc().
76f921d10fSJason Evans  - Fix a file descriptor leak in a prof_dump_maps() error path.
77f921d10fSJason Evans  - Fix prof_dump() to close the dump file descriptor for all relevant error
78f921d10fSJason Evans    paths.
79f921d10fSJason Evans  - Fix rallocm() to use the arena specified by the ALLOCM_ARENA(s) flag for
80f921d10fSJason Evans    allocation, not just deallocation.
81f921d10fSJason Evans  - Fix a data race for large allocation stats counters.
82f921d10fSJason Evans  - Fix a potential infinite loop during thread exit.  This bug occurred on
83f921d10fSJason Evans    Solaris, and could affect other platforms with similar pthreads TSD
84f921d10fSJason Evans    implementations.
85f921d10fSJason Evans  - Don't junk-fill reallocations unless usable size changes.  This fixes a
86f921d10fSJason Evans    violation of the *allocx()/*allocm() semantics.
87f921d10fSJason Evans  - Fix growing large reallocation to junk fill new space.
88f921d10fSJason Evans  - Fix huge deallocation to junk fill when munmap is disabled.
89f921d10fSJason Evans  - Change the default private namespace prefix from empty to je_, and change
90f921d10fSJason Evans    --with-private-namespace-prefix so that it prepends an additional prefix
91f921d10fSJason Evans    rather than replacing je_.  This reduces the likelihood of applications
92f921d10fSJason Evans    which statically link jemalloc experiencing symbol name collisions.
93f921d10fSJason Evans  - Add missing private namespace mangling (relevant when
94f921d10fSJason Evans    --with-private-namespace is specified).
95f921d10fSJason Evans  - Add and use JEMALLOC_INLINE_C so that static inline functions are marked as
96f921d10fSJason Evans    static even for debug builds.
97f921d10fSJason Evans  - Add a missing mutex unlock in a malloc_init_hard() error path.  In practice
98f921d10fSJason Evans    this error path is never executed.
99f921d10fSJason Evans  - Fix numerous bugs in malloc_strotumax() error handling/reporting.  These
100f921d10fSJason Evans    bugs had no impact except for malformed inputs.
101f921d10fSJason Evans  - Fix numerous bugs in malloc_snprintf().  These bugs were not exercised by
102f921d10fSJason Evans    existing calls, so they had no impact.
103f921d10fSJason Evans
1042b06b201SJason Evans* 3.4.1 (October 20, 2013)
1052b06b201SJason Evans
1062b06b201SJason Evans  Bug fixes:
1072b06b201SJason Evans  - Fix a race in the "arenas.extend" mallctl that could cause memory corruption
1082b06b201SJason Evans    of internal data structures and subsequent crashes.
1092b06b201SJason Evans  - Fix Valgrind integration flaws that caused Valgrind warnings about reads of
1102b06b201SJason Evans    uninitialized memory in:
1112b06b201SJason Evans    + arena chunk headers
1122b06b201SJason Evans    + internal zero-initialized data structures (relevant to tcache and prof
1132b06b201SJason Evans      code)
1142b06b201SJason Evans  - Preserve errno during the first allocation.  A readlink(2) call during
1152b06b201SJason Evans    initialization fails unless /etc/malloc.conf exists, so errno was typically
1162b06b201SJason Evans    set during the first allocation prior to this fix.
1172b06b201SJason Evans  - Fix compilation warnings reported by gcc 4.8.1.
1182b06b201SJason Evans
119f8ca2db1SJason Evans* 3.4.0 (June 2, 2013)
120f8ca2db1SJason Evans
121f8ca2db1SJason Evans  This version is essentially a small bugfix release, but the addition of
122f8ca2db1SJason Evans  aarch64 support requires that the minor version be incremented.
123f8ca2db1SJason Evans
124f8ca2db1SJason Evans  Bug fixes:
125f8ca2db1SJason Evans  - Fix race-triggered deadlocks in chunk_record().  These deadlocks were
126f8ca2db1SJason Evans    typically triggered by multiple threads concurrently deallocating huge
127f8ca2db1SJason Evans    objects.
128f8ca2db1SJason Evans
129f8ca2db1SJason Evans  New features:
130f8ca2db1SJason Evans  - Add support for the aarch64 architecture.
131f8ca2db1SJason Evans
132f8ca2db1SJason Evans* 3.3.1 (March 6, 2013)
133f8ca2db1SJason Evans
134f8ca2db1SJason Evans  This version fixes bugs that are typically encountered only when utilizing
135f8ca2db1SJason Evans  custom run-time options.
136f8ca2db1SJason Evans
137f8ca2db1SJason Evans  Bug fixes:
138f8ca2db1SJason Evans  - Fix a locking order bug that could cause deadlock during fork if heap
139f8ca2db1SJason Evans    profiling were enabled.
140f8ca2db1SJason Evans  - Fix a chunk recycling bug that could cause the allocator to lose track of
141f8ca2db1SJason Evans    whether a chunk was zeroed.  On FreeBSD, NetBSD, and OS X, it could cause
142f8ca2db1SJason Evans    corruption if allocating via sbrk(2) (unlikely unless running with the
143f8ca2db1SJason Evans    "dss:primary" option specified).  This was completely harmless on Linux
144f8ca2db1SJason Evans    unless using mlockall(2) (and unlikely even then, unless the
145f8ca2db1SJason Evans    --disable-munmap configure option or the "dss:primary" option was
146f8ca2db1SJason Evans    specified).  This regression was introduced in 3.1.0 by the
147f8ca2db1SJason Evans    mlockall(2)/madvise(2) interaction fix.
148f8ca2db1SJason Evans  - Fix TLS-related memory corruption that could occur during thread exit if the
149f8ca2db1SJason Evans    thread never allocated memory.  Only the quarantine and prof facilities were
150f8ca2db1SJason Evans    susceptible.
151f8ca2db1SJason Evans  - Fix two quarantine bugs:
152f8ca2db1SJason Evans    + Internal reallocation of the quarantined object array leaked the old
153f8ca2db1SJason Evans      array.
154f8ca2db1SJason Evans    + Reallocation failure for internal reallocation of the quarantined object
155f8ca2db1SJason Evans      array (very unlikely) resulted in memory corruption.
156f8ca2db1SJason Evans  - Fix Valgrind integration to annotate all internally allocated memory in a
157f8ca2db1SJason Evans    way that keeps Valgrind happy about internal data structure access.
158f8ca2db1SJason Evans  - Fix building for s390 systems.
159f8ca2db1SJason Evans
16088ad2f8dSJason Evans* 3.3.0 (January 23, 2013)
16188ad2f8dSJason Evans
16288ad2f8dSJason Evans  This version includes a few minor performance improvements in addition to the
16388ad2f8dSJason Evans  listed new features and bug fixes.
16488ad2f8dSJason Evans
16588ad2f8dSJason Evans  New features:
16688ad2f8dSJason Evans  - Add clipping support to lg_chunk option processing.
16788ad2f8dSJason Evans  - Add the --enable-ivsalloc option.
16888ad2f8dSJason Evans  - Add the --without-export option.
16988ad2f8dSJason Evans  - Add the --disable-zone-allocator option.
17088ad2f8dSJason Evans
17188ad2f8dSJason Evans  Bug fixes:
17288ad2f8dSJason Evans  - Fix "arenas.extend" mallctl to output the number of arenas.
1732b06b201SJason Evans  - Fix chunk_recycle() to unconditionally inform Valgrind that returned memory
17488ad2f8dSJason Evans    is undefined.
17588ad2f8dSJason Evans  - Fix build break on FreeBSD related to alloca.h.
17688ad2f8dSJason Evans
17782872ac0SJason Evans* 3.2.0 (November 9, 2012)
17882872ac0SJason Evans
17982872ac0SJason Evans  In addition to a couple of bug fixes, this version modifies page run
18082872ac0SJason Evans  allocation and dirty page purging algorithms in order to better control
18182872ac0SJason Evans  page-level virtual memory fragmentation.
18282872ac0SJason Evans
18382872ac0SJason Evans  Incompatible changes:
18482872ac0SJason Evans  - Change the "opt.lg_dirty_mult" default from 5 to 3 (32:1 to 8:1).
18582872ac0SJason Evans
18682872ac0SJason Evans  Bug fixes:
18782872ac0SJason Evans  - Fix dss/mmap allocation precedence code to use recyclable mmap memory only
18882872ac0SJason Evans    after primary dss allocation fails.
18982872ac0SJason Evans  - Fix deadlock in the "arenas.purge" mallctl.  This regression was introduced
19082872ac0SJason Evans    in 3.1.0 by the addition of the "arena.<i>.purge" mallctl.
19182872ac0SJason Evans
19282872ac0SJason Evans* 3.1.0 (October 16, 2012)
19382872ac0SJason Evans
19482872ac0SJason Evans  New features:
19582872ac0SJason Evans  - Auto-detect whether running inside Valgrind, thus removing the need to
19682872ac0SJason Evans    manually specify MALLOC_CONF=valgrind:true.
19782872ac0SJason Evans  - Add the "arenas.extend" mallctl, which allows applications to create
19882872ac0SJason Evans    manually managed arenas.
19982872ac0SJason Evans  - Add the ALLOCM_ARENA() flag for {,r,d}allocm().
20082872ac0SJason Evans  - Add the "opt.dss", "arena.<i>.dss", and "stats.arenas.<i>.dss" mallctls,
20182872ac0SJason Evans    which provide control over dss/mmap precedence.
20282872ac0SJason Evans  - Add the "arena.<i>.purge" mallctl, which obsoletes "arenas.purge".
20382872ac0SJason Evans  - Define LG_QUANTUM for hppa.
20482872ac0SJason Evans
20582872ac0SJason Evans  Incompatible changes:
20682872ac0SJason Evans  - Disable tcache by default if running inside Valgrind, in order to avoid
20782872ac0SJason Evans    making unallocated objects appear reachable to Valgrind.
20882872ac0SJason Evans  - Drop const from malloc_usable_size() argument on Linux.
20982872ac0SJason Evans
21082872ac0SJason Evans  Bug fixes:
21182872ac0SJason Evans  - Fix heap profiling crash if sampled object is freed via realloc(p, 0).
21282872ac0SJason Evans  - Remove const from __*_hook variable declarations, so that glibc can modify
21382872ac0SJason Evans    them during process forking.
21482872ac0SJason Evans  - Fix mlockall(2)/madvise(2) interaction.
21582872ac0SJason Evans  - Fix fork(2)-related deadlocks.
21682872ac0SJason Evans  - Fix error return value for "thread.tcache.enabled" mallctl.
21782872ac0SJason Evans
21835dad073SJason Evans* 3.0.0 (May 11, 2012)
219a4bd5210SJason Evans
220a4bd5210SJason Evans  Although this version adds some major new features, the primary focus is on
221a4bd5210SJason Evans  internal code cleanup that facilitates maintainability and portability, most
222a4bd5210SJason Evans  of which is not reflected in the ChangeLog.  This is the first release to
223a4bd5210SJason Evans  incorporate substantial contributions from numerous other developers, and the
224a4bd5210SJason Evans  result is a more broadly useful allocator (see the git revision history for
225a4bd5210SJason Evans  contribution details).  Note that the license has been unified, thanks to
226a4bd5210SJason Evans  Facebook granting a license under the same terms as the other copyright
227a4bd5210SJason Evans  holders (see COPYING).
228a4bd5210SJason Evans
229a4bd5210SJason Evans  New features:
230a4bd5210SJason Evans  - Implement Valgrind support, redzones, and quarantine.
231e722f8f8SJason Evans  - Add support for additional platforms:
232a4bd5210SJason Evans    + FreeBSD
233a4bd5210SJason Evans    + Mac OS X Lion
234e722f8f8SJason Evans    + MinGW
23535dad073SJason Evans    + Windows (no support yet for replacing the system malloc)
236a4bd5210SJason Evans  - Add support for additional architectures:
237a4bd5210SJason Evans    + MIPS
238a4bd5210SJason Evans    + SH4
239a4bd5210SJason Evans    + Tilera
240a4bd5210SJason Evans  - Add support for cross compiling.
241a4bd5210SJason Evans  - Add nallocm(), which rounds a request size up to the nearest size class
242a4bd5210SJason Evans    without actually allocating.
243a4bd5210SJason Evans  - Implement aligned_alloc() (blame C11).
244a4bd5210SJason Evans  - Add the "thread.tcache.enabled" mallctl.
2458ed34ab0SJason Evans  - Add the "opt.prof_final" mallctl.
2468ed34ab0SJason Evans  - Update pprof (from gperftools 2.0).
24735dad073SJason Evans  - Add the --with-mangling option.
24835dad073SJason Evans  - Add the --disable-experimental option.
24935dad073SJason Evans  - Add the --disable-munmap option, and make it the default on Linux.
25035dad073SJason Evans  - Add the --enable-mremap option, which disables use of mremap(2) by default.
251a4bd5210SJason Evans
252a4bd5210SJason Evans  Incompatible changes:
253a4bd5210SJason Evans  - Enable stats by default.
254a4bd5210SJason Evans  - Enable fill by default.
255a4bd5210SJason Evans  - Disable lazy locking by default.
256a4bd5210SJason Evans  - Rename the "tcache.flush" mallctl to "thread.tcache.flush".
257a4bd5210SJason Evans  - Rename the "arenas.pagesize" mallctl to "arenas.page".
2588ed34ab0SJason Evans  - Change the "opt.lg_prof_sample" default from 0 to 19 (1 B to 512 KiB).
2598ed34ab0SJason Evans  - Change the "opt.prof_accum" default from true to false.
260a4bd5210SJason Evans
261a4bd5210SJason Evans  Removed features:
262a4bd5210SJason Evans  - Remove the swap feature, including the "config.swap", "swap.avail",
263a4bd5210SJason Evans    "swap.prezeroed", "swap.nfds", and "swap.fds" mallctls.
264a4bd5210SJason Evans  - Remove highruns statistics, including the
265a4bd5210SJason Evans    "stats.arenas.<i>.bins.<j>.highruns" and
266a4bd5210SJason Evans    "stats.arenas.<i>.lruns.<j>.highruns" mallctls.
267a4bd5210SJason Evans  - As part of small size class refactoring, remove the "opt.lg_[qc]space_max",
268a4bd5210SJason Evans    "arenas.cacheline", "arenas.subpage", "arenas.[tqcs]space_{min,max}", and
269a4bd5210SJason Evans    "arenas.[tqcs]bins" mallctls.
270a4bd5210SJason Evans  - Remove the "arenas.chunksize" mallctl.
271a4bd5210SJason Evans  - Remove the "opt.lg_prof_tcmax" option.
272a4bd5210SJason Evans  - Remove the "opt.lg_prof_bt_max" option.
273a4bd5210SJason Evans  - Remove the "opt.lg_tcache_gc_sweep" option.
274a4bd5210SJason Evans  - Remove the --disable-tiny option, including the "config.tiny" mallctl.
275a4bd5210SJason Evans  - Remove the --enable-dynamic-page-shift configure option.
276a4bd5210SJason Evans  - Remove the --enable-sysv configure option.
277a4bd5210SJason Evans
278a4bd5210SJason Evans  Bug fixes:
279a4bd5210SJason Evans  - Fix a statistics-related bug in the "thread.arena" mallctl that could cause
280a4bd5210SJason Evans    invalid statistics and crashes.
281e722f8f8SJason Evans  - Work around TLS deallocation via free() on Linux.  This bug could cause
282a4bd5210SJason Evans    write-after-free memory corruption.
283e722f8f8SJason Evans  - Fix a potential deadlock that could occur during interval- and
284e722f8f8SJason Evans    growth-triggered heap profile dumps.
28535dad073SJason Evans  - Fix large calloc() zeroing bugs due to dropping chunk map unzeroed flags.
2864bcb1430SJason Evans  - Fix chunk_alloc_dss() to stop claiming memory is zeroed.  This bug could
2874bcb1430SJason Evans    cause memory corruption and crashes with --enable-dss specified.
288e722f8f8SJason Evans  - Fix fork-related bugs that could cause deadlock in children between fork
289e722f8f8SJason Evans    and exec.
290a4bd5210SJason Evans  - Fix malloc_stats_print() to honor 'b' and 'l' in the opts parameter.
291a4bd5210SJason Evans  - Fix realloc(p, 0) to act like free(p).
292a4bd5210SJason Evans  - Do not enforce minimum alignment in memalign().
293a4bd5210SJason Evans  - Check for NULL pointer in malloc_usable_size().
294e722f8f8SJason Evans  - Fix an off-by-one heap profile statistics bug that could be observed in
295e722f8f8SJason Evans    interval- and growth-triggered heap profiles.
296e722f8f8SJason Evans  - Fix the "epoch" mallctl to update cached stats even if the passed in epoch
297e722f8f8SJason Evans    is 0.
298a4bd5210SJason Evans  - Fix bin->runcur management to fix a layout policy bug.  This bug did not
299a4bd5210SJason Evans    affect correctness.
300a4bd5210SJason Evans  - Fix a bug in choose_arena_hard() that potentially caused more arenas to be
301a4bd5210SJason Evans    initialized than necessary.
302a4bd5210SJason Evans  - Add missing "opt.lg_tcache_max" mallctl implementation.
303a4bd5210SJason Evans  - Use glibc allocator hooks to make mixed allocator usage less likely.
304a4bd5210SJason Evans  - Fix build issues for --disable-tcache.
3058ed34ab0SJason Evans  - Don't mangle pthread_create() when --with-private-namespace is specified.
306a4bd5210SJason Evans
307a4bd5210SJason Evans* 2.2.5 (November 14, 2011)
308a4bd5210SJason Evans
309a4bd5210SJason Evans  Bug fixes:
310a4bd5210SJason Evans  - Fix huge_ralloc() race when using mremap(2).  This is a serious bug that
311a4bd5210SJason Evans    could cause memory corruption and/or crashes.
312a4bd5210SJason Evans  - Fix huge_ralloc() to maintain chunk statistics.
313a4bd5210SJason Evans  - Fix malloc_stats_print(..., "a") output.
314a4bd5210SJason Evans
315a4bd5210SJason Evans* 2.2.4 (November 5, 2011)
316a4bd5210SJason Evans
317a4bd5210SJason Evans  Bug fixes:
318a4bd5210SJason Evans  - Initialize arenas_tsd before using it.  This bug existed for 2.2.[0-3], as
319a4bd5210SJason Evans    well as for --disable-tls builds in earlier releases.
320a4bd5210SJason Evans  - Do not assume a 4 KiB page size in test/rallocm.c.
321a4bd5210SJason Evans
322a4bd5210SJason Evans* 2.2.3 (August 31, 2011)
323a4bd5210SJason Evans
324a4bd5210SJason Evans  This version fixes numerous bugs related to heap profiling.
325a4bd5210SJason Evans
326a4bd5210SJason Evans  Bug fixes:
327a4bd5210SJason Evans  - Fix a prof-related race condition.  This bug could cause memory corruption,
328a4bd5210SJason Evans    but only occurred in non-default configurations (prof_accum:false).
329a4bd5210SJason Evans  - Fix off-by-one backtracing issues (make sure that prof_alloc_prep() is
330a4bd5210SJason Evans    excluded from backtraces).
331a4bd5210SJason Evans  - Fix a prof-related bug in realloc() (only triggered by OOM errors).
332a4bd5210SJason Evans  - Fix prof-related bugs in allocm() and rallocm().
333a4bd5210SJason Evans  - Fix prof_tdata_cleanup() for --disable-tls builds.
334a4bd5210SJason Evans  - Fix a relative include path, to fix objdir builds.
335a4bd5210SJason Evans
336a4bd5210SJason Evans* 2.2.2 (July 30, 2011)
337a4bd5210SJason Evans
338a4bd5210SJason Evans  Bug fixes:
339a4bd5210SJason Evans  - Fix a build error for --disable-tcache.
340a4bd5210SJason Evans  - Fix assertions in arena_purge() (for real this time).
341a4bd5210SJason Evans  - Add the --with-private-namespace option.  This is a workaround for symbol
342a4bd5210SJason Evans    conflicts that can inadvertently arise when using static libraries.
343a4bd5210SJason Evans
344a4bd5210SJason Evans* 2.2.1 (March 30, 2011)
345a4bd5210SJason Evans
346a4bd5210SJason Evans  Bug fixes:
347a4bd5210SJason Evans  - Implement atomic operations for x86/x64.  This fixes compilation failures
348a4bd5210SJason Evans    for versions of gcc that are still in wide use.
349a4bd5210SJason Evans  - Fix an assertion in arena_purge().
350a4bd5210SJason Evans
351a4bd5210SJason Evans* 2.2.0 (March 22, 2011)
352a4bd5210SJason Evans
353a4bd5210SJason Evans  This version incorporates several improvements to algorithms and data
354a4bd5210SJason Evans  structures that tend to reduce fragmentation and increase speed.
355a4bd5210SJason Evans
356a4bd5210SJason Evans  New features:
357a4bd5210SJason Evans  - Add the "stats.cactive" mallctl.
358a4bd5210SJason Evans  - Update pprof (from google-perftools 1.7).
359a4bd5210SJason Evans  - Improve backtracing-related configuration logic, and add the
360a4bd5210SJason Evans    --disable-prof-libgcc option.
361a4bd5210SJason Evans
362a4bd5210SJason Evans  Bug fixes:
363a4bd5210SJason Evans  - Change default symbol visibility from "internal", to "hidden", which
364a4bd5210SJason Evans    decreases the overhead of library-internal function calls.
365a4bd5210SJason Evans  - Fix symbol visibility so that it is also set on OS X.
366a4bd5210SJason Evans  - Fix a build dependency regression caused by the introduction of the .pic.o
367a4bd5210SJason Evans    suffix for PIC object files.
368a4bd5210SJason Evans  - Add missing checks for mutex initialization failures.
369a4bd5210SJason Evans  - Don't use libgcc-based backtracing except on x64, where it is known to work.
370a4bd5210SJason Evans  - Fix deadlocks on OS X that were due to memory allocation in
371a4bd5210SJason Evans    pthread_mutex_lock().
372a4bd5210SJason Evans  - Heap profiling-specific fixes:
373a4bd5210SJason Evans    + Fix memory corruption due to integer overflow in small region index
374a4bd5210SJason Evans      computation, when using a small enough sample interval that profiling
375a4bd5210SJason Evans      context pointers are stored in small run headers.
376a4bd5210SJason Evans    + Fix a bootstrap ordering bug that only occurred with TLS disabled.
377a4bd5210SJason Evans    + Fix a rallocm() rsize bug.
378a4bd5210SJason Evans    + Fix error detection bugs for aligned memory allocation.
379a4bd5210SJason Evans
380a4bd5210SJason Evans* 2.1.3 (March 14, 2011)
381a4bd5210SJason Evans
382a4bd5210SJason Evans  Bug fixes:
383a4bd5210SJason Evans  - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix
384a4bd5210SJason Evans    for OS X in 2.1.2).
385a4bd5210SJason Evans  - Fix a "thread.arena" mallctl bug.
386a4bd5210SJason Evans  - Fix a thread cache stats merging bug.
387a4bd5210SJason Evans
388a4bd5210SJason Evans* 2.1.2 (March 2, 2011)
389a4bd5210SJason Evans
390a4bd5210SJason Evans  Bug fixes:
391a4bd5210SJason Evans  - Fix "thread.{de,}allocatedp" mallctl for OS X.
392a4bd5210SJason Evans  - Add missing jemalloc.a to build system.
393a4bd5210SJason Evans
394a4bd5210SJason Evans* 2.1.1 (January 31, 2011)
395a4bd5210SJason Evans
396a4bd5210SJason Evans  Bug fixes:
397a4bd5210SJason Evans  - Fix aligned huge reallocation (affected allocm()).
398a4bd5210SJason Evans  - Fix the ALLOCM_LG_ALIGN macro definition.
399a4bd5210SJason Evans  - Fix a heap dumping deadlock.
400a4bd5210SJason Evans  - Fix a "thread.arena" mallctl bug.
401a4bd5210SJason Evans
402a4bd5210SJason Evans* 2.1.0 (December 3, 2010)
403a4bd5210SJason Evans
404a4bd5210SJason Evans  This version incorporates some optimizations that can't quite be considered
405a4bd5210SJason Evans  bug fixes.
406a4bd5210SJason Evans
407a4bd5210SJason Evans  New features:
408a4bd5210SJason Evans  - Use Linux's mremap(2) for huge object reallocation when possible.
409a4bd5210SJason Evans  - Avoid locking in mallctl*() when possible.
410a4bd5210SJason Evans  - Add the "thread.[de]allocatedp" mallctl's.
411a4bd5210SJason Evans  - Convert the manual page source from roff to DocBook, and generate both roff
412a4bd5210SJason Evans    and HTML manuals.
413a4bd5210SJason Evans
414a4bd5210SJason Evans  Bug fixes:
415a4bd5210SJason Evans  - Fix a crash due to incorrect bootstrap ordering.  This only impacted
416a4bd5210SJason Evans    --enable-debug --enable-dss configurations.
417a4bd5210SJason Evans  - Fix a minor statistics bug for mallctl("swap.avail", ...).
418a4bd5210SJason Evans
419a4bd5210SJason Evans* 2.0.1 (October 29, 2010)
420a4bd5210SJason Evans
421a4bd5210SJason Evans  Bug fixes:
422a4bd5210SJason Evans  - Fix a race condition in heap profiling that could cause undefined behavior
423a4bd5210SJason Evans    if "opt.prof_accum" were disabled.
424a4bd5210SJason Evans  - Add missing mutex unlocks for some OOM error paths in the heap profiling
425a4bd5210SJason Evans    code.
426a4bd5210SJason Evans  - Fix a compilation error for non-C99 builds.
427a4bd5210SJason Evans
428a4bd5210SJason Evans* 2.0.0 (October 24, 2010)
429a4bd5210SJason Evans
430a4bd5210SJason Evans  This version focuses on the experimental *allocm() API, and on improved
431a4bd5210SJason Evans  run-time configuration/introspection.  Nonetheless, numerous performance
432a4bd5210SJason Evans  improvements are also included.
433a4bd5210SJason Evans
434a4bd5210SJason Evans  New features:
435a4bd5210SJason Evans  - Implement the experimental {,r,s,d}allocm() API, which provides a superset
436a4bd5210SJason Evans    of the functionality available via malloc(), calloc(), posix_memalign(),
437a4bd5210SJason Evans    realloc(), malloc_usable_size(), and free().  These functions can be used to
438a4bd5210SJason Evans    allocate/reallocate aligned zeroed memory, ask for optional extra memory
439a4bd5210SJason Evans    during reallocation, prevent object movement during reallocation, etc.
440a4bd5210SJason Evans  - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is
441a4bd5210SJason Evans    more human-readable, and more flexible.  For example:
442a4bd5210SJason Evans      JEMALLOC_OPTIONS=AJP
443a4bd5210SJason Evans    is now:
444a4bd5210SJason Evans      MALLOC_CONF=abort:true,fill:true,stats_print:true
445a4bd5210SJason Evans  - Port to Apple OS X.  Sponsored by Mozilla.
446a4bd5210SJason Evans  - Make it possible for the application to control thread-->arena mappings via
447a4bd5210SJason Evans    the "thread.arena" mallctl.
448a4bd5210SJason Evans  - Add compile-time support for all TLS-related functionality via pthreads TSD.
449a4bd5210SJason Evans    This is mainly of interest for OS X, which does not support TLS, but has a
450a4bd5210SJason Evans    TSD implementation with similar performance.
451a4bd5210SJason Evans  - Override memalign() and valloc() if they are provided by the system.
452a4bd5210SJason Evans  - Add the "arenas.purge" mallctl, which can be used to synchronously purge all
453a4bd5210SJason Evans    dirty unused pages.
454a4bd5210SJason Evans  - Make cumulative heap profiling data optional, so that it is possible to
455a4bd5210SJason Evans    limit the amount of memory consumed by heap profiling data structures.
456a4bd5210SJason Evans  - Add per thread allocation counters that can be accessed via the
457a4bd5210SJason Evans    "thread.allocated" and "thread.deallocated" mallctls.
458a4bd5210SJason Evans
459a4bd5210SJason Evans  Incompatible changes:
460a4bd5210SJason Evans  - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above).
461a4bd5210SJason Evans  - Increase default backtrace depth from 4 to 128 for heap profiling.
462a4bd5210SJason Evans  - Disable interval-based profile dumps by default.
463a4bd5210SJason Evans
464a4bd5210SJason Evans  Bug fixes:
465a4bd5210SJason Evans  - Remove bad assertions in fork handler functions.  These assertions could
466a4bd5210SJason Evans    cause aborts for some combinations of configure settings.
467a4bd5210SJason Evans  - Fix strerror_r() usage to deal with non-standard semantics in GNU libc.
468a4bd5210SJason Evans  - Fix leak context reporting.  This bug tended to cause the number of contexts
469a4bd5210SJason Evans    to be underreported (though the reported number of objects and bytes were
470a4bd5210SJason Evans    correct).
471a4bd5210SJason Evans  - Fix a realloc() bug for large in-place growing reallocation.  This bug could
472a4bd5210SJason Evans    cause memory corruption, but it was hard to trigger.
473a4bd5210SJason Evans  - Fix an allocation bug for small allocations that could be triggered if
474a4bd5210SJason Evans    multiple threads raced to create a new run of backing pages.
475a4bd5210SJason Evans  - Enhance the heap profiler to trigger samples based on usable size, rather
476a4bd5210SJason Evans    than request size.
477a4bd5210SJason Evans  - Fix a heap profiling bug due to sometimes losing track of requested object
478a4bd5210SJason Evans    size for sampled objects.
479a4bd5210SJason Evans
480a4bd5210SJason Evans* 1.0.3 (August 12, 2010)
481a4bd5210SJason Evans
482a4bd5210SJason Evans  Bug fixes:
483a4bd5210SJason Evans  - Fix the libunwind-based implementation of stack backtracing (used for heap
484a4bd5210SJason Evans    profiling).  This bug could cause zero-length backtraces to be reported.
485a4bd5210SJason Evans  - Add a missing mutex unlock in library initialization code.  If multiple
486a4bd5210SJason Evans    threads raced to initialize malloc, some of them could end up permanently
487a4bd5210SJason Evans    blocked.
488a4bd5210SJason Evans
489a4bd5210SJason Evans* 1.0.2 (May 11, 2010)
490a4bd5210SJason Evans
491a4bd5210SJason Evans  Bug fixes:
492a4bd5210SJason Evans  - Fix junk filling of large objects, which could cause memory corruption.
493a4bd5210SJason Evans  - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual
494a4bd5210SJason Evans    memory limits could cause swap file configuration to fail.  Contributed by
495a4bd5210SJason Evans    Jordan DeLong.
496a4bd5210SJason Evans
497a4bd5210SJason Evans* 1.0.1 (April 14, 2010)
498a4bd5210SJason Evans
499a4bd5210SJason Evans  Bug fixes:
500a4bd5210SJason Evans  - Fix compilation when --enable-fill is specified.
501a4bd5210SJason Evans  - Fix threads-related profiling bugs that affected accuracy and caused memory
502a4bd5210SJason Evans    to be leaked during thread exit.
503a4bd5210SJason Evans  - Fix dirty page purging race conditions that could cause crashes.
504a4bd5210SJason Evans  - Fix crash in tcache flushing code during thread destruction.
505a4bd5210SJason Evans
506a4bd5210SJason Evans* 1.0.0 (April 11, 2010)
507a4bd5210SJason Evans
508a4bd5210SJason Evans  This release focuses on speed and run-time introspection.  Numerous
509a4bd5210SJason Evans  algorithmic improvements make this release substantially faster than its
510a4bd5210SJason Evans  predecessors.
511a4bd5210SJason Evans
512a4bd5210SJason Evans  New features:
513a4bd5210SJason Evans  - Implement autoconf-based configuration system.
514a4bd5210SJason Evans  - Add mallctl*(), for the purposes of introspection and run-time
515a4bd5210SJason Evans    configuration.
516a4bd5210SJason Evans  - Make it possible for the application to manually flush a thread's cache, via
517a4bd5210SJason Evans    the "tcache.flush" mallctl.
518a4bd5210SJason Evans  - Base maximum dirty page count on proportion of active memory.
519a4bd5210SJason Evans  - Compute various addtional run-time statistics, including per size class
520a4bd5210SJason Evans    statistics for large objects.
521a4bd5210SJason Evans  - Expose malloc_stats_print(), which can be called repeatedly by the
522a4bd5210SJason Evans    application.
523a4bd5210SJason Evans  - Simplify the malloc_message() signature to only take one string argument,
524a4bd5210SJason Evans    and incorporate an opaque data pointer argument for use by the application
525a4bd5210SJason Evans    in combination with malloc_stats_print().
526a4bd5210SJason Evans  - Add support for allocation backed by one or more swap files, and allow the
527a4bd5210SJason Evans    application to disable over-commit if swap files are in use.
528a4bd5210SJason Evans  - Implement allocation profiling and leak checking.
529a4bd5210SJason Evans
530a4bd5210SJason Evans  Removed features:
531a4bd5210SJason Evans  - Remove the dynamic arena rebalancing code, since thread-specific caching
532a4bd5210SJason Evans    reduces its utility.
533a4bd5210SJason Evans
534a4bd5210SJason Evans  Bug fixes:
535a4bd5210SJason Evans  - Modify chunk allocation to work when address space layout randomization
536a4bd5210SJason Evans    (ASLR) is in use.
537a4bd5210SJason Evans  - Fix thread cleanup bugs related to TLS destruction.
538a4bd5210SJason Evans  - Handle 0-size allocation requests in posix_memalign().
539a4bd5210SJason Evans  - Fix a chunk leak.  The leaked chunks were never touched, so this impacted
540a4bd5210SJason Evans    virtual memory usage, but not physical memory usage.
541a4bd5210SJason Evans
542a4bd5210SJason Evans* linux_2008082[78]a (August 27/28, 2008)
543a4bd5210SJason Evans
544a4bd5210SJason Evans  These snapshot releases are the simple result of incorporating Linux-specific
545a4bd5210SJason Evans  support into the FreeBSD malloc sources.
546a4bd5210SJason Evans
547a4bd5210SJason Evans--------------------------------------------------------------------------------
548a4bd5210SJason Evansvim:filetype=text:textwidth=80
549