]>
Commit | Line | Data |
---|---|---|
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 |