1 Following are change highlights associated with official releases. Important
2 bug fixes are all mentioned, but internal enhancements are omitted here for
3 brevity (even though they are more fun to write about). Much more detail can be
4 found in the git revision history:
6 http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git
7 git://canonware.com/jemalloc.git
9 * 2.2.5 (November 14, 2011)
12 - Fix huge_ralloc() race when using mremap(2). This is a serious bug that
13 could cause memory corruption and/or crashes.
14 - Fix huge_ralloc() to maintain chunk statistics.
15 - Fix malloc_stats_print(..., "a") output.
17 * 2.2.4 (November 5, 2011)
20 - Initialize arenas_tsd before using it. This bug existed for 2.2.[0-3], as
21 well as for --disable-tls builds in earlier releases.
22 - Do not assume a 4 KiB page size in test/rallocm.c.
24 * 2.2.3 (August 31, 2011)
26 This version fixes numerous bugs related to heap profiling.
29 - Fix a prof-related race condition. This bug could cause memory corruption,
30 but only occurred in non-default configurations (prof_accum:false).
31 - Fix off-by-one backtracing issues (make sure that prof_alloc_prep() is
32 excluded from backtraces).
33 - Fix a prof-related bug in realloc() (only triggered by OOM errors).
34 - Fix prof-related bugs in allocm() and rallocm().
35 - Fix prof_tdata_cleanup() for --disable-tls builds.
36 - Fix a relative include path, to fix objdir builds.
38 * 2.2.2 (July 30, 2011)
41 - Fix a build error for --disable-tcache.
42 - Fix assertions in arena_purge() (for real this time).
43 - Add the --with-private-namespace option. This is a workaround for symbol
44 conflicts that can inadvertently arise when using static libraries.
46 * 2.2.1 (March 30, 2011)
49 - Implement atomic operations for x86/x64. This fixes compilation failures
50 for versions of gcc that are still in wide use.
51 - Fix an assertion in arena_purge().
53 * 2.2.0 (March 22, 2011)
55 This version incorporates several improvements to algorithms and data
56 structures that tend to reduce fragmentation and increase speed.
59 - Add the "stats.cactive" mallctl.
60 - Update pprof (from google-perftools 1.7).
61 - Improve backtracing-related configuration logic, and add the
62 --disable-prof-libgcc option.
65 - Change default symbol visibility from "internal", to "hidden", which
66 decreases the overhead of library-internal function calls.
67 - Fix symbol visibility so that it is also set on OS X.
68 - Fix a build dependency regression caused by the introduction of the .pic.o
69 suffix for PIC object files.
70 - Add missing checks for mutex initialization failures.
71 - Don't use libgcc-based backtracing except on x64, where it is known to work.
72 - Fix deadlocks on OS X that were due to memory allocation in
74 - Heap profiling-specific fixes:
75 + Fix memory corruption due to integer overflow in small region index
76 computation, when using a small enough sample interval that profiling
77 context pointers are stored in small run headers.
78 + Fix a bootstrap ordering bug that only occurred with TLS disabled.
79 + Fix a rallocm() rsize bug.
80 + Fix error detection bugs for aligned memory allocation.
82 * 2.1.3 (March 14, 2011)
85 - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix
87 - Fix a "thread.arena" mallctl bug.
88 - Fix a thread cache stats merging bug.
90 * 2.1.2 (March 2, 2011)
93 - Fix "thread.{de,}allocatedp" mallctl for OS X.
94 - Add missing jemalloc.a to build system.
96 * 2.1.1 (January 31, 2011)
99 - Fix aligned huge reallocation (affected allocm()).
100 - Fix the ALLOCM_LG_ALIGN macro definition.
101 - Fix a heap dumping deadlock.
102 - Fix a "thread.arena" mallctl bug.
104 * 2.1.0 (December 3, 2010)
106 This version incorporates some optimizations that can't quite be considered
110 - Use Linux's mremap(2) for huge object reallocation when possible.
111 - Avoid locking in mallctl*() when possible.
112 - Add the "thread.[de]allocatedp" mallctl's.
113 - Convert the manual page source from roff to DocBook, and generate both roff
117 - Fix a crash due to incorrect bootstrap ordering. This only impacted
118 --enable-debug --enable-dss configurations.
119 - Fix a minor statistics bug for mallctl("swap.avail", ...).
121 * 2.0.1 (October 29, 2010)
124 - Fix a race condition in heap profiling that could cause undefined behavior
125 if "opt.prof_accum" were disabled.
126 - Add missing mutex unlocks for some OOM error paths in the heap profiling
128 - Fix a compilation error for non-C99 builds.
130 * 2.0.0 (October 24, 2010)
132 This version focuses on the experimental *allocm() API, and on improved
133 run-time configuration/introspection. Nonetheless, numerous performance
134 improvements are also included.
137 - Implement the experimental {,r,s,d}allocm() API, which provides a superset
138 of the functionality available via malloc(), calloc(), posix_memalign(),
139 realloc(), malloc_usable_size(), and free(). These functions can be used to
140 allocate/reallocate aligned zeroed memory, ask for optional extra memory
141 during reallocation, prevent object movement during reallocation, etc.
142 - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is
143 more human-readable, and more flexible. For example:
146 MALLOC_CONF=abort:true,fill:true,stats_print:true
147 - Port to Apple OS X. Sponsored by Mozilla.
148 - Make it possible for the application to control thread-->arena mappings via
149 the "thread.arena" mallctl.
150 - Add compile-time support for all TLS-related functionality via pthreads TSD.
151 This is mainly of interest for OS X, which does not support TLS, but has a
152 TSD implementation with similar performance.
153 - Override memalign() and valloc() if they are provided by the system.
154 - Add the "arenas.purge" mallctl, which can be used to synchronously purge all
156 - Make cumulative heap profiling data optional, so that it is possible to
157 limit the amount of memory consumed by heap profiling data structures.
158 - Add per thread allocation counters that can be accessed via the
159 "thread.allocated" and "thread.deallocated" mallctls.
161 Incompatible changes:
162 - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above).
163 - Increase default backtrace depth from 4 to 128 for heap profiling.
164 - Disable interval-based profile dumps by default.
167 - Remove bad assertions in fork handler functions. These assertions could
168 cause aborts for some combinations of configure settings.
169 - Fix strerror_r() usage to deal with non-standard semantics in GNU libc.
170 - Fix leak context reporting. This bug tended to cause the number of contexts
171 to be underreported (though the reported number of objects and bytes were
173 - Fix a realloc() bug for large in-place growing reallocation. This bug could
174 cause memory corruption, but it was hard to trigger.
175 - Fix an allocation bug for small allocations that could be triggered if
176 multiple threads raced to create a new run of backing pages.
177 - Enhance the heap profiler to trigger samples based on usable size, rather
179 - Fix a heap profiling bug due to sometimes losing track of requested object
180 size for sampled objects.
182 * 1.0.3 (August 12, 2010)
185 - Fix the libunwind-based implementation of stack backtracing (used for heap
186 profiling). This bug could cause zero-length backtraces to be reported.
187 - Add a missing mutex unlock in library initialization code. If multiple
188 threads raced to initialize malloc, some of them could end up permanently
191 * 1.0.2 (May 11, 2010)
194 - Fix junk filling of large objects, which could cause memory corruption.
195 - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual
196 memory limits could cause swap file configuration to fail. Contributed by
199 * 1.0.1 (April 14, 2010)
202 - Fix compilation when --enable-fill is specified.
203 - Fix threads-related profiling bugs that affected accuracy and caused memory
204 to be leaked during thread exit.
205 - Fix dirty page purging race conditions that could cause crashes.
206 - Fix crash in tcache flushing code during thread destruction.
208 * 1.0.0 (April 11, 2010)
210 This release focuses on speed and run-time introspection. Numerous
211 algorithmic improvements make this release substantially faster than its
215 - Implement autoconf-based configuration system.
216 - Add mallctl*(), for the purposes of introspection and run-time
218 - Make it possible for the application to manually flush a thread's cache, via
219 the "tcache.flush" mallctl.
220 - Base maximum dirty page count on proportion of active memory.
221 - Compute various addtional run-time statistics, including per size class
222 statistics for large objects.
223 - Expose malloc_stats_print(), which can be called repeatedly by the
225 - Simplify the malloc_message() signature to only take one string argument,
226 and incorporate an opaque data pointer argument for use by the application
227 in combination with malloc_stats_print().
228 - Add support for allocation backed by one or more swap files, and allow the
229 application to disable over-commit if swap files are in use.
230 - Implement allocation profiling and leak checking.
233 - Remove the dynamic arena rebalancing code, since thread-specific caching
237 - Modify chunk allocation to work when address space layout randomization
239 - Fix thread cleanup bugs related to TLS destruction.
240 - Handle 0-size allocation requests in posix_memalign().
241 - Fix a chunk leak. The leaked chunks were never touched, so this impacted
242 virtual memory usage, but not physical memory usage.
244 * linux_2008082[78]a (August 27/28, 2008)
246 These snapshot releases are the simple result of incorporating Linux-specific
247 support into the FreeBSD malloc sources.
249 --------------------------------------------------------------------------------
250 vim:filetype=text:textwidth=80