]> git.saurik.com Git - redis.git/blob - deps/jemalloc/ChangeLog
Whitespace
[redis.git] / deps / jemalloc / ChangeLog
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:
5
6 http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git
7 git://canonware.com/jemalloc.git
8
9 * 2.2.5 (November 14, 2011)
10
11 Bug fixes:
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.
16
17 * 2.2.4 (November 5, 2011)
18
19 Bug fixes:
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.
23
24 * 2.2.3 (August 31, 2011)
25
26 This version fixes numerous bugs related to heap profiling.
27
28 Bug fixes:
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.
37
38 * 2.2.2 (July 30, 2011)
39
40 Bug fixes:
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.
45
46 * 2.2.1 (March 30, 2011)
47
48 Bug fixes:
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().
52
53 * 2.2.0 (March 22, 2011)
54
55 This version incorporates several improvements to algorithms and data
56 structures that tend to reduce fragmentation and increase speed.
57
58 New features:
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.
63
64 Bug fixes:
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
73 pthread_mutex_lock().
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.
81
82 * 2.1.3 (March 14, 2011)
83
84 Bug fixes:
85 - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix
86 for OS X in 2.1.2).
87 - Fix a "thread.arena" mallctl bug.
88 - Fix a thread cache stats merging bug.
89
90 * 2.1.2 (March 2, 2011)
91
92 Bug fixes:
93 - Fix "thread.{de,}allocatedp" mallctl for OS X.
94 - Add missing jemalloc.a to build system.
95
96 * 2.1.1 (January 31, 2011)
97
98 Bug fixes:
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.
103
104 * 2.1.0 (December 3, 2010)
105
106 This version incorporates some optimizations that can't quite be considered
107 bug fixes.
108
109 New features:
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
114 and HTML manuals.
115
116 Bug fixes:
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", ...).
120
121 * 2.0.1 (October 29, 2010)
122
123 Bug fixes:
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
127 code.
128 - Fix a compilation error for non-C99 builds.
129
130 * 2.0.0 (October 24, 2010)
131
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.
135
136 New features:
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:
144 JEMALLOC_OPTIONS=AJP
145 is now:
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
155 dirty unused pages.
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.
160
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.
165
166 Bug fixes:
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
172 correct).
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
178 than request size.
179 - Fix a heap profiling bug due to sometimes losing track of requested object
180 size for sampled objects.
181
182 * 1.0.3 (August 12, 2010)
183
184 Bug fixes:
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
189 blocked.
190
191 * 1.0.2 (May 11, 2010)
192
193 Bug fixes:
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
197 Jordan DeLong.
198
199 * 1.0.1 (April 14, 2010)
200
201 Bug fixes:
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.
207
208 * 1.0.0 (April 11, 2010)
209
210 This release focuses on speed and run-time introspection. Numerous
211 algorithmic improvements make this release substantially faster than its
212 predecessors.
213
214 New features:
215 - Implement autoconf-based configuration system.
216 - Add mallctl*(), for the purposes of introspection and run-time
217 configuration.
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
224 application.
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.
231
232 Removed features:
233 - Remove the dynamic arena rebalancing code, since thread-specific caching
234 reduces its utility.
235
236 Bug fixes:
237 - Modify chunk allocation to work when address space layout randomization
238 (ASLR) is in use.
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.
243
244 * linux_2008082[78]a (August 27/28, 2008)
245
246 These snapshot releases are the simple result of incorporating Linux-specific
247 support into the FreeBSD malloc sources.
248
249 --------------------------------------------------------------------------------
250 vim:filetype=text:textwidth=80