]> git.saurik.com Git - redis.git/blob - deps/jemalloc/ChangeLog
merge conflicts resolved
[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.1 (March 30, 2011)
10
11 Bug fixes:
12 - Implement atomic operations for x86/x64. This fixes compilation failures
13 for versions of gcc that are still in wide use.
14 - Fix an assertion in arena_purge().
15
16 * 2.2.0 (March 22, 2011)
17
18 This version incorporates several improvements to algorithms and data
19 structures that tend to reduce fragmentation and increase speed.
20
21 New features:
22 - Add the "stats.cactive" mallctl.
23 - Update pprof (from google-perftools 1.7).
24 - Improve backtracing-related configuration logic, and add the
25 --disable-prof-libgcc option.
26
27 Bug fixes:
28 - Change default symbol visibility from "internal", to "hidden", which
29 decreases the overhead of library-internal function calls.
30 - Fix symbol visibility so that it is also set on OS X.
31 - Fix a build dependency regression caused by the introduction of the .pic.o
32 suffix for PIC object files.
33 - Add missing checks for mutex initialization failures.
34 - Don't use libgcc-based backtracing except on x64, where it is known to work.
35 - Fix deadlocks on OS X that were due to memory allocation in
36 pthread_mutex_lock().
37 - Heap profiling-specific fixes:
38 + Fix memory corruption due to integer overflow in small region index
39 computation, when using a small enough sample interval that profiling
40 context pointers are stored in small run headers.
41 + Fix a bootstrap ordering bug that only occurred with TLS disabled.
42 + Fix a rallocm() rsize bug.
43 + Fix error detection bugs for aligned memory allocation.
44
45 * 2.1.3 (March 14, 2011)
46
47 Bug fixes:
48 - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix
49 for OS X in 2.1.2).
50 - Fix a "thread.arena" mallctl bug.
51 - Fix a thread cache stats merging bug.
52
53 * 2.1.2 (March 2, 2011)
54
55 Bug fixes:
56 - Fix "thread.{de,}allocatedp" mallctl for OS X.
57 - Add missing jemalloc.a to build system.
58
59 * 2.1.1 (January 31, 2011)
60
61 Bug fixes:
62 - Fix aligned huge reallocation (affected allocm()).
63 - Fix the ALLOCM_LG_ALIGN macro definition.
64 - Fix a heap dumping deadlock.
65 - Fix a "thread.arena" mallctl bug.
66
67 * 2.1.0 (December 3, 2010)
68
69 This version incorporates some optimizations that can't quite be considered
70 bug fixes.
71
72 New features:
73 - Use Linux's mremap(2) for huge object reallocation when possible.
74 - Avoid locking in mallctl*() when possible.
75 - Add the "thread.[de]allocatedp" mallctl's.
76 - Convert the manual page source from roff to DocBook, and generate both roff
77 and HTML manuals.
78
79 Bug fixes:
80 - Fix a crash due to incorrect bootstrap ordering. This only impacted
81 --enable-debug --enable-dss configurations.
82 - Fix a minor statistics bug for mallctl("swap.avail", ...).
83
84 * 2.0.1 (October 29, 2010)
85
86 Bug fixes:
87 - Fix a race condition in heap profiling that could cause undefined behavior
88 if "opt.prof_accum" were disabled.
89 - Add missing mutex unlocks for some OOM error paths in the heap profiling
90 code.
91 - Fix a compilation error for non-C99 builds.
92
93 * 2.0.0 (October 24, 2010)
94
95 This version focuses on the experimental *allocm() API, and on improved
96 run-time configuration/introspection. Nonetheless, numerous performance
97 improvements are also included.
98
99 New features:
100 - Implement the experimental {,r,s,d}allocm() API, which provides a superset
101 of the functionality available via malloc(), calloc(), posix_memalign(),
102 realloc(), malloc_usable_size(), and free(). These functions can be used to
103 allocate/reallocate aligned zeroed memory, ask for optional extra memory
104 during reallocation, prevent object movement during reallocation, etc.
105 - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is
106 more human-readable, and more flexible. For example:
107 JEMALLOC_OPTIONS=AJP
108 is now:
109 MALLOC_CONF=abort:true,fill:true,stats_print:true
110 - Port to Apple OS X. Sponsored by Mozilla.
111 - Make it possible for the application to control thread-->arena mappings via
112 the "thread.arena" mallctl.
113 - Add compile-time support for all TLS-related functionality via pthreads TSD.
114 This is mainly of interest for OS X, which does not support TLS, but has a
115 TSD implementation with similar performance.
116 - Override memalign() and valloc() if they are provided by the system.
117 - Add the "arenas.purge" mallctl, which can be used to synchronously purge all
118 dirty unused pages.
119 - Make cumulative heap profiling data optional, so that it is possible to
120 limit the amount of memory consumed by heap profiling data structures.
121 - Add per thread allocation counters that can be accessed via the
122 "thread.allocated" and "thread.deallocated" mallctls.
123
124 Incompatible changes:
125 - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above).
126 - Increase default backtrace depth from 4 to 128 for heap profiling.
127 - Disable interval-based profile dumps by default.
128
129 Bug fixes:
130 - Remove bad assertions in fork handler functions. These assertions could
131 cause aborts for some combinations of configure settings.
132 - Fix strerror_r() usage to deal with non-standard semantics in GNU libc.
133 - Fix leak context reporting. This bug tended to cause the number of contexts
134 to be underreported (though the reported number of objects and bytes were
135 correct).
136 - Fix a realloc() bug for large in-place growing reallocation. This bug could
137 cause memory corruption, but it was hard to trigger.
138 - Fix an allocation bug for small allocations that could be triggered if
139 multiple threads raced to create a new run of backing pages.
140 - Enhance the heap profiler to trigger samples based on usable size, rather
141 than request size.
142 - Fix a heap profiling bug due to sometimes losing track of requested object
143 size for sampled objects.
144
145 * 1.0.3 (August 12, 2010)
146
147 Bug fixes:
148 - Fix the libunwind-based implementation of stack backtracing (used for heap
149 profiling). This bug could cause zero-length backtraces to be reported.
150 - Add a missing mutex unlock in library initialization code. If multiple
151 threads raced to initialize malloc, some of them could end up permanently
152 blocked.
153
154 * 1.0.2 (May 11, 2010)
155
156 Bug fixes:
157 - Fix junk filling of large objects, which could cause memory corruption.
158 - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual
159 memory limits could cause swap file configuration to fail. Contributed by
160 Jordan DeLong.
161
162 * 1.0.1 (April 14, 2010)
163
164 Bug fixes:
165 - Fix compilation when --enable-fill is specified.
166 - Fix threads-related profiling bugs that affected accuracy and caused memory
167 to be leaked during thread exit.
168 - Fix dirty page purging race conditions that could cause crashes.
169 - Fix crash in tcache flushing code during thread destruction.
170
171 * 1.0.0 (April 11, 2010)
172
173 This release focuses on speed and run-time introspection. Numerous
174 algorithmic improvements make this release substantially faster than its
175 predecessors.
176
177 New features:
178 - Implement autoconf-based configuration system.
179 - Add mallctl*(), for the purposes of introspection and run-time
180 configuration.
181 - Make it possible for the application to manually flush a thread's cache, via
182 the "tcache.flush" mallctl.
183 - Base maximum dirty page count on proportion of active memory.
184 - Compute various addtional run-time statistics, including per size class
185 statistics for large objects.
186 - Expose malloc_stats_print(), which can be called repeatedly by the
187 application.
188 - Simplify the malloc_message() signature to only take one string argument,
189 and incorporate an opaque data pointer argument for use by the application
190 in combination with malloc_stats_print().
191 - Add support for allocation backed by one or more swap files, and allow the
192 application to disable over-commit if swap files are in use.
193 - Implement allocation profiling and leak checking.
194
195 Removed features:
196 - Remove the dynamic arena rebalancing code, since thread-specific caching
197 reduces its utility.
198
199 Bug fixes:
200 - Modify chunk allocation to work when address space layout randomization
201 (ASLR) is in use.
202 - Fix thread cleanup bugs related to TLS destruction.
203 - Handle 0-size allocation requests in posix_memalign().
204 - Fix a chunk leak. The leaked chunks were never touched, so this impacted
205 virtual memory usage, but not physical memory usage.
206
207 * linux_2008082[78]a (August 27/28, 2008)
208
209 These snapshot releases are the simple result of incorporating Linux-specific
210 support into the FreeBSD malloc sources.
211
212 --------------------------------------------------------------------------------
213 vim:filetype=text:textwidth=80