Jason Evans | 379f847 | 2010-10-24 16:18:29 -0700 | [diff] [blame] | 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 | |
Jason Evans | 765cc2b | 2013-06-02 20:58:00 -0700 | [diff] [blame] | 9 | * 3.4.0 (June 2, 2013) |
| 10 | |
| 11 | This version is essentially a small bugfix release, but the addition of |
| 12 | aarch64 support requires that the minor version be incremented. |
| 13 | |
| 14 | Bug fixes: |
| 15 | - Fix race-triggered deadlocks in chunk_record(). These deadlocks were |
| 16 | typically triggered by multiple threads concurrently deallocating huge |
| 17 | objects. |
| 18 | |
| 19 | New features: |
| 20 | - Add support for the aarch64 architecture. |
| 21 | |
Jason Evans | 2298835 | 2013-03-06 11:11:17 -0800 | [diff] [blame] | 22 | * 3.3.1 (March 6, 2013) |
| 23 | |
| 24 | This version fixes bugs that are typically encountered only when utilizing |
| 25 | custom run-time options. |
Jason Evans | bbe29d3 | 2013-01-30 15:03:11 -0800 | [diff] [blame] | 26 | |
| 27 | Bug fixes: |
Jason Evans | 88c222c | 2013-02-06 11:59:30 -0800 | [diff] [blame] | 28 | - Fix a locking order bug that could cause deadlock during fork if heap |
| 29 | profiling were enabled. |
Jason Evans | a7a28c3 | 2013-01-31 16:53:58 -0800 | [diff] [blame] | 30 | - Fix a chunk recycling bug that could cause the allocator to lose track of |
Jason Evans | 765cc2b | 2013-06-02 20:58:00 -0700 | [diff] [blame] | 31 | whether a chunk was zeroed. On FreeBSD, NetBSD, and OS X, it could cause |
Jason Evans | a7a28c3 | 2013-01-31 16:53:58 -0800 | [diff] [blame] | 32 | corruption if allocating via sbrk(2) (unlikely unless running with the |
| 33 | "dss:primary" option specified). This was completely harmless on Linux |
| 34 | unless using mlockall(2) (and unlikely even then, unless the |
| 35 | --disable-munmap configure option or the "dss:primary" option was |
| 36 | specified). This regression was introduced in 3.1.0 by the |
| 37 | mlockall(2)/madvise(2) interaction fix. |
Jason Evans | bbe29d3 | 2013-01-30 15:03:11 -0800 | [diff] [blame] | 38 | - Fix TLS-related memory corruption that could occur during thread exit if the |
| 39 | thread never allocated memory. Only the quarantine and prof facilities were |
| 40 | susceptible. |
Jason Evans | d0e942e | 2013-01-31 14:42:41 -0800 | [diff] [blame] | 41 | - Fix two quarantine bugs: |
| 42 | + Internal reallocation of the quarantined object array leaked the old |
| 43 | array. |
| 44 | + Reallocation failure for internal reallocation of the quarantined object |
| 45 | array (very unlikely) resulted in memory corruption. |
Jason Evans | 0691275 | 2013-01-31 17:02:53 -0800 | [diff] [blame] | 46 | - Fix Valgrind integration to annotate all internally allocated memory in a |
| 47 | way that keeps Valgrind happy about internal data structure access. |
Jason Evans | 2298835 | 2013-03-06 11:11:17 -0800 | [diff] [blame] | 48 | - Fix building for s390 systems. |
Jason Evans | bbe29d3 | 2013-01-30 15:03:11 -0800 | [diff] [blame] | 49 | |
Jason Evans | b5681fb | 2013-01-22 22:45:09 -0800 | [diff] [blame] | 50 | * 3.3.0 (January 23, 2013) |
| 51 | |
| 52 | This version includes a few minor performance improvements in addition to the |
| 53 | listed new features and bug fixes. |
| 54 | |
| 55 | New features: |
| 56 | - Add clipping support to lg_chunk option processing. |
| 57 | - Add the --enable-ivsalloc option. |
| 58 | - Add the --without-export option. |
| 59 | - Add the --disable-zone-allocator option. |
Jason Evans | 6eb84fb | 2012-11-29 22:13:04 -0800 | [diff] [blame] | 60 | |
| 61 | Bug fixes: |
| 62 | - Fix "arenas.extend" mallctl to output the number of arenas. |
Jason Evans | a33488d | 2013-10-03 14:38:39 -0700 | [diff] [blame^] | 63 | - Fix chunk_recycle() to unconditionally inform Valgrind that returned memory |
Jason Evans | 1271185 | 2012-12-12 10:12:18 -0800 | [diff] [blame] | 64 | is undefined. |
Jason Evans | b5681fb | 2013-01-22 22:45:09 -0800 | [diff] [blame] | 65 | - Fix build break on FreeBSD related to alloca.h. |
Jason Evans | 6eb84fb | 2012-11-29 22:13:04 -0800 | [diff] [blame] | 66 | |
Jason Evans | 556ddc7 | 2012-11-07 15:16:29 -0800 | [diff] [blame] | 67 | * 3.2.0 (November 9, 2012) |
| 68 | |
| 69 | In addition to a couple of bug fixes, this version modifies page run |
| 70 | allocation and dirty page purging algorithms in order to better control |
| 71 | page-level virtual memory fragmentation. |
Jason Evans | 12efefb | 2012-10-16 22:06:56 -0700 | [diff] [blame] | 72 | |
Jason Evans | e3d1306 | 2012-10-30 15:42:37 -0700 | [diff] [blame] | 73 | Incompatible changes: |
Jason Evans | 556ddc7 | 2012-11-07 15:16:29 -0800 | [diff] [blame] | 74 | - Change the "opt.lg_dirty_mult" default from 5 to 3 (32:1 to 8:1). |
Jason Evans | e3d1306 | 2012-10-30 15:42:37 -0700 | [diff] [blame] | 75 | |
Jason Evans | 12efefb | 2012-10-16 22:06:56 -0700 | [diff] [blame] | 76 | Bug fixes: |
| 77 | - Fix dss/mmap allocation precedence code to use recyclable mmap memory only |
| 78 | after primary dss allocation fails. |
Jason Evans | e3d1306 | 2012-10-30 15:42:37 -0700 | [diff] [blame] | 79 | - Fix deadlock in the "arenas.purge" mallctl. This regression was introduced |
| 80 | in 3.1.0 by the addition of the "arena.<i>.purge" mallctl. |
Jason Evans | 12efefb | 2012-10-16 22:06:56 -0700 | [diff] [blame] | 81 | |
Jason Evans | 2b592b0 | 2012-10-16 10:12:40 -0700 | [diff] [blame] | 82 | * 3.1.0 (October 16, 2012) |
Jason Evans | 3860eac | 2012-05-15 13:53:21 -0700 | [diff] [blame] | 83 | |
Jason Evans | 781fe75 | 2012-05-15 14:48:14 -0700 | [diff] [blame] | 84 | New features: |
| 85 | - Auto-detect whether running inside Valgrind, thus removing the need to |
| 86 | manually specify MALLOC_CONF=valgrind:true. |
Jason Evans | 2b592b0 | 2012-10-16 10:12:40 -0700 | [diff] [blame] | 87 | - Add the "arenas.extend" mallctl, which allows applications to create |
| 88 | manually managed arenas. |
| 89 | - Add the ALLOCM_ARENA() flag for {,r,d}allocm(). |
| 90 | - Add the "opt.dss", "arena.<i>.dss", and "stats.arenas.<i>.dss" mallctls, |
| 91 | which provide control over dss/mmap precedence. |
| 92 | - Add the "arena.<i>.purge" mallctl, which obsoletes "arenas.purge". |
| 93 | - Define LG_QUANTUM for hppa. |
Jason Evans | 781fe75 | 2012-05-15 14:48:14 -0700 | [diff] [blame] | 94 | |
Jason Evans | 174b70e | 2012-05-15 23:31:53 -0700 | [diff] [blame] | 95 | Incompatible changes: |
| 96 | - Disable tcache by default if running inside Valgrind, in order to avoid |
| 97 | making unallocated objects appear reachable to Valgrind. |
Jason Evans | 2b592b0 | 2012-10-16 10:12:40 -0700 | [diff] [blame] | 98 | - Drop const from malloc_usable_size() argument on Linux. |
Jason Evans | 174b70e | 2012-05-15 23:31:53 -0700 | [diff] [blame] | 99 | |
Jason Evans | 3860eac | 2012-05-15 13:53:21 -0700 | [diff] [blame] | 100 | Bug fixes: |
| 101 | - Fix heap profiling crash if sampled object is freed via realloc(p, 0). |
Jason Evans | 5c710ce | 2012-05-23 16:09:22 -0700 | [diff] [blame] | 102 | - Remove const from __*_hook variable declarations, so that glibc can modify |
| 103 | them during process forking. |
Jason Evans | 2b592b0 | 2012-10-16 10:12:40 -0700 | [diff] [blame] | 104 | - Fix mlockall(2)/madvise(2) interaction. |
| 105 | - Fix fork(2)-related deadlocks. |
| 106 | - Fix error return value for "thread.tcache.enabled" mallctl. |
Jason Evans | 3860eac | 2012-05-15 13:53:21 -0700 | [diff] [blame] | 107 | |
Jason Evans | cbb71ca | 2012-05-11 17:00:20 -0700 | [diff] [blame] | 108 | * 3.0.0 (May 11, 2012) |
Jason Evans | 9ef7f5d | 2012-04-16 18:16:48 -0700 | [diff] [blame] | 109 | |
| 110 | Although this version adds some major new features, the primary focus is on |
| 111 | internal code cleanup that facilitates maintainability and portability, most |
| 112 | of which is not reflected in the ChangeLog. This is the first release to |
| 113 | incorporate substantial contributions from numerous other developers, and the |
| 114 | result is a more broadly useful allocator (see the git revision history for |
| 115 | contribution details). Note that the license has been unified, thanks to |
| 116 | Facebook granting a license under the same terms as the other copyright |
| 117 | holders (see COPYING). |
| 118 | |
| 119 | New features: |
| 120 | - Implement Valgrind support, redzones, and quarantine. |
Jason Evans | 079687b | 2012-04-23 12:49:23 -0700 | [diff] [blame] | 121 | - Add support for additional platforms: |
Jason Evans | 9ef7f5d | 2012-04-16 18:16:48 -0700 | [diff] [blame] | 122 | + FreeBSD |
| 123 | + Mac OS X Lion |
Jason Evans | 40f514f | 2012-04-22 16:21:06 -0700 | [diff] [blame] | 124 | + MinGW |
Jason Evans | cbb71ca | 2012-05-11 17:00:20 -0700 | [diff] [blame] | 125 | + Windows (no support yet for replacing the system malloc) |
Jason Evans | 9ef7f5d | 2012-04-16 18:16:48 -0700 | [diff] [blame] | 126 | - Add support for additional architectures: |
| 127 | + MIPS |
| 128 | + SH4 |
| 129 | + Tilera |
| 130 | - Add support for cross compiling. |
| 131 | - Add nallocm(), which rounds a request size up to the nearest size class |
| 132 | without actually allocating. |
| 133 | - Implement aligned_alloc() (blame C11). |
Jason Evans | 9ef7f5d | 2012-04-16 18:16:48 -0700 | [diff] [blame] | 134 | - Add the "thread.tcache.enabled" mallctl. |
Jason Evans | 0b25fe7 | 2012-04-17 16:39:33 -0700 | [diff] [blame] | 135 | - Add the "opt.prof_final" mallctl. |
Jason Evans | 25a000e | 2012-04-17 15:49:30 -0700 | [diff] [blame] | 136 | - Update pprof (from gperftools 2.0). |
Jason Evans | cbb71ca | 2012-05-11 17:00:20 -0700 | [diff] [blame] | 137 | - Add the --with-mangling option. |
| 138 | - Add the --disable-experimental option. |
| 139 | - Add the --disable-munmap option, and make it the default on Linux. |
| 140 | - Add the --enable-mremap option, which disables use of mremap(2) by default. |
Jason Evans | 9ef7f5d | 2012-04-16 18:16:48 -0700 | [diff] [blame] | 141 | |
| 142 | Incompatible changes: |
| 143 | - Enable stats by default. |
| 144 | - Enable fill by default. |
| 145 | - Disable lazy locking by default. |
| 146 | - Rename the "tcache.flush" mallctl to "thread.tcache.flush". |
| 147 | - Rename the "arenas.pagesize" mallctl to "arenas.page". |
Jason Evans | 0b25fe7 | 2012-04-17 16:39:33 -0700 | [diff] [blame] | 148 | - Change the "opt.lg_prof_sample" default from 0 to 19 (1 B to 512 KiB). |
| 149 | - Change the "opt.prof_accum" default from true to false. |
Jason Evans | 9ef7f5d | 2012-04-16 18:16:48 -0700 | [diff] [blame] | 150 | |
| 151 | Removed features: |
| 152 | - Remove the swap feature, including the "config.swap", "swap.avail", |
| 153 | "swap.prezeroed", "swap.nfds", and "swap.fds" mallctls. |
| 154 | - Remove highruns statistics, including the |
| 155 | "stats.arenas.<i>.bins.<j>.highruns" and |
| 156 | "stats.arenas.<i>.lruns.<j>.highruns" mallctls. |
| 157 | - As part of small size class refactoring, remove the "opt.lg_[qc]space_max", |
| 158 | "arenas.cacheline", "arenas.subpage", "arenas.[tqcs]space_{min,max}", and |
| 159 | "arenas.[tqcs]bins" mallctls. |
| 160 | - Remove the "arenas.chunksize" mallctl. |
| 161 | - Remove the "opt.lg_prof_tcmax" option. |
| 162 | - Remove the "opt.lg_prof_bt_max" option. |
| 163 | - Remove the "opt.lg_tcache_gc_sweep" option. |
| 164 | - Remove the --disable-tiny option, including the "config.tiny" mallctl. |
| 165 | - Remove the --enable-dynamic-page-shift configure option. |
| 166 | - Remove the --enable-sysv configure option. |
| 167 | |
| 168 | Bug fixes: |
Jason Evans | 9ef7f5d | 2012-04-16 18:16:48 -0700 | [diff] [blame] | 169 | - Fix a statistics-related bug in the "thread.arena" mallctl that could cause |
| 170 | invalid statistics and crashes. |
Jason Evans | 079687b | 2012-04-23 12:49:23 -0700 | [diff] [blame] | 171 | - Work around TLS deallocation via free() on Linux. This bug could cause |
Jason Evans | 9ef7f5d | 2012-04-16 18:16:48 -0700 | [diff] [blame] | 172 | write-after-free memory corruption. |
Jason Evans | 52386b2 | 2012-04-22 16:00:11 -0700 | [diff] [blame] | 173 | - Fix a potential deadlock that could occur during interval- and |
| 174 | growth-triggered heap profile dumps. |
Jason Evans | d8ceef6 | 2012-05-10 20:59:39 -0700 | [diff] [blame] | 175 | - Fix large calloc() zeroing bugs due to dropping chunk map unzeroed flags. |
Jason Evans | 8f0e0eb | 2012-04-21 13:33:48 -0700 | [diff] [blame] | 176 | - Fix chunk_alloc_dss() to stop claiming memory is zeroed. This bug could |
| 177 | cause memory corruption and crashes with --enable-dss specified. |
Jason Evans | 52386b2 | 2012-04-22 16:00:11 -0700 | [diff] [blame] | 178 | - Fix fork-related bugs that could cause deadlock in children between fork |
| 179 | and exec. |
Jason Evans | 9ef7f5d | 2012-04-16 18:16:48 -0700 | [diff] [blame] | 180 | - Fix malloc_stats_print() to honor 'b' and 'l' in the opts parameter. |
| 181 | - Fix realloc(p, 0) to act like free(p). |
| 182 | - Do not enforce minimum alignment in memalign(). |
| 183 | - Check for NULL pointer in malloc_usable_size(). |
Jason Evans | 52386b2 | 2012-04-22 16:00:11 -0700 | [diff] [blame] | 184 | - Fix an off-by-one heap profile statistics bug that could be observed in |
| 185 | interval- and growth-triggered heap profiles. |
Jason Evans | 6b9ed67 | 2012-04-25 13:12:46 -0700 | [diff] [blame] | 186 | - Fix the "epoch" mallctl to update cached stats even if the passed in epoch |
| 187 | is 0. |
Jason Evans | 9ef7f5d | 2012-04-16 18:16:48 -0700 | [diff] [blame] | 188 | - Fix bin->runcur management to fix a layout policy bug. This bug did not |
| 189 | affect correctness. |
| 190 | - Fix a bug in choose_arena_hard() that potentially caused more arenas to be |
| 191 | initialized than necessary. |
| 192 | - Add missing "opt.lg_tcache_max" mallctl implementation. |
| 193 | - Use glibc allocator hooks to make mixed allocator usage less likely. |
| 194 | - Fix build issues for --disable-tcache. |
Jason Evans | 918d6e2 | 2012-04-20 13:42:21 -0700 | [diff] [blame] | 195 | - Don't mangle pthread_create() when --with-private-namespace is specified. |
Jason Evans | 9ef7f5d | 2012-04-16 18:16:48 -0700 | [diff] [blame] | 196 | |
Jason Evans | b3bd885 | 2011-11-14 17:12:45 -0800 | [diff] [blame] | 197 | * 2.2.5 (November 14, 2011) |
| 198 | |
| 199 | Bug fixes: |
| 200 | - Fix huge_ralloc() race when using mremap(2). This is a serious bug that |
| 201 | could cause memory corruption and/or crashes. |
| 202 | - Fix huge_ralloc() to maintain chunk statistics. |
| 203 | - Fix malloc_stats_print(..., "a") output. |
| 204 | |
Jason Evans | ca9ee1a | 2011-11-05 21:46:23 -0700 | [diff] [blame] | 205 | * 2.2.4 (November 5, 2011) |
| 206 | |
| 207 | Bug fixes: |
| 208 | - Initialize arenas_tsd before using it. This bug existed for 2.2.[0-3], as |
| 209 | well as for --disable-tls builds in earlier releases. |
| 210 | - Do not assume a 4 KiB page size in test/rallocm.c. |
| 211 | |
Jason Evans | c67e4fd | 2011-08-31 15:19:13 -0700 | [diff] [blame] | 212 | * 2.2.3 (August 31, 2011) |
| 213 | |
| 214 | This version fixes numerous bugs related to heap profiling. |
| 215 | |
| 216 | Bug fixes: |
| 217 | - Fix a prof-related race condition. This bug could cause memory corruption, |
| 218 | but only occurred in non-default configurations (prof_accum:false). |
| 219 | - Fix off-by-one backtracing issues (make sure that prof_alloc_prep() is |
| 220 | excluded from backtraces). |
| 221 | - Fix a prof-related bug in realloc() (only triggered by OOM errors). |
| 222 | - Fix prof-related bugs in allocm() and rallocm(). |
| 223 | - Fix prof_tdata_cleanup() for --disable-tls builds. |
| 224 | - Fix a relative include path, to fix objdir builds. |
| 225 | |
Jason Evans | 4c48481 | 2011-07-30 16:59:13 -0700 | [diff] [blame] | 226 | * 2.2.2 (July 30, 2011) |
| 227 | |
| 228 | Bug fixes: |
| 229 | - Fix a build error for --disable-tcache. |
| 230 | - Fix assertions in arena_purge() (for real this time). |
| 231 | - Add the --with-private-namespace option. This is a workaround for symbol |
| 232 | conflicts that can inadvertently arise when using static libraries. |
| 233 | |
Jason Evans | 7d9ebea | 2011-03-30 15:01:08 -0700 | [diff] [blame] | 234 | * 2.2.1 (March 30, 2011) |
| 235 | |
| 236 | Bug fixes: |
| 237 | - Implement atomic operations for x86/x64. This fixes compilation failures |
| 238 | for versions of gcc that are still in wide use. |
| 239 | - Fix an assertion in arena_purge(). |
| 240 | |
Jason Evans | 4bcd987 | 2011-03-22 15:30:22 -0700 | [diff] [blame] | 241 | * 2.2.0 (March 22, 2011) |
| 242 | |
| 243 | This version incorporates several improvements to algorithms and data |
| 244 | structures that tend to reduce fragmentation and increase speed. |
| 245 | |
| 246 | New features: |
| 247 | - Add the "stats.cactive" mallctl. |
| 248 | - Update pprof (from google-perftools 1.7). |
| 249 | - Improve backtracing-related configuration logic, and add the |
| 250 | --disable-prof-libgcc option. |
| 251 | |
| 252 | Bug fixes: |
| 253 | - Change default symbol visibility from "internal", to "hidden", which |
| 254 | decreases the overhead of library-internal function calls. |
| 255 | - Fix symbol visibility so that it is also set on OS X. |
| 256 | - Fix a build dependency regression caused by the introduction of the .pic.o |
| 257 | suffix for PIC object files. |
| 258 | - Add missing checks for mutex initialization failures. |
| 259 | - Don't use libgcc-based backtracing except on x64, where it is known to work. |
| 260 | - Fix deadlocks on OS X that were due to memory allocation in |
| 261 | pthread_mutex_lock(). |
| 262 | - Heap profiling-specific fixes: |
| 263 | + Fix memory corruption due to integer overflow in small region index |
| 264 | computation, when using a small enough sample interval that profiling |
| 265 | context pointers are stored in small run headers. |
| 266 | + Fix a bootstrap ordering bug that only occurred with TLS disabled. |
| 267 | + Fix a rallocm() rsize bug. |
| 268 | + Fix error detection bugs for aligned memory allocation. |
| 269 | |
Jason Evans | 0e4d0d1 | 2011-03-14 16:41:03 -0700 | [diff] [blame] | 270 | * 2.1.3 (March 14, 2011) |
| 271 | |
| 272 | Bug fixes: |
| 273 | - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix |
| 274 | for OS X in 2.1.2). |
| 275 | - Fix a "thread.arena" mallctl bug. |
| 276 | - Fix a thread cache stats merging bug. |
| 277 | |
je | 6e56e5e | 2011-03-02 11:23:41 -0800 | [diff] [blame] | 278 | * 2.1.2 (March 2, 2011) |
| 279 | |
| 280 | Bug fixes: |
| 281 | - Fix "thread.{de,}allocatedp" mallctl for OS X. |
| 282 | - Add missing jemalloc.a to build system. |
| 283 | |
Jason Evans | 6369286 | 2011-02-07 22:48:35 -0800 | [diff] [blame] | 284 | * 2.1.1 (January 31, 2011) |
Jason Evans | ada55b2 | 2011-01-31 20:08:56 -0800 | [diff] [blame] | 285 | |
Jason Evans | 6369286 | 2011-02-07 22:48:35 -0800 | [diff] [blame] | 286 | Bug fixes: |
Jason Evans | ada55b2 | 2011-01-31 20:08:56 -0800 | [diff] [blame] | 287 | - Fix aligned huge reallocation (affected allocm()). |
| 288 | - Fix the ALLOCM_LG_ALIGN macro definition. |
| 289 | - Fix a heap dumping deadlock. |
| 290 | - Fix a "thread.arena" mallctl bug. |
| 291 | |
Jason Evans | 6369286 | 2011-02-07 22:48:35 -0800 | [diff] [blame] | 292 | * 2.1.0 (December 3, 2010) |
Jason Evans | 0e8d3d2 | 2010-12-03 17:02:16 -0800 | [diff] [blame] | 293 | |
| 294 | This version incorporates some optimizations that can't quite be considered |
| 295 | bug fixes. |
| 296 | |
| 297 | New features: |
| 298 | - Use Linux's mremap(2) for huge object reallocation when possible. |
| 299 | - Avoid locking in mallctl*() when possible. |
| 300 | - Add the "thread.[de]allocatedp" mallctl's. |
| 301 | - Convert the manual page source from roff to DocBook, and generate both roff |
| 302 | and HTML manuals. |
| 303 | |
| 304 | Bug fixes: |
| 305 | - Fix a crash due to incorrect bootstrap ordering. This only impacted |
| 306 | --enable-debug --enable-dss configurations. |
| 307 | - Fix a minor statistics bug for mallctl("swap.avail", ...). |
| 308 | |
Jason Evans | 6369286 | 2011-02-07 22:48:35 -0800 | [diff] [blame] | 309 | * 2.0.1 (October 29, 2010) |
Jason Evans | 53806fe | 2010-10-29 20:16:39 -0700 | [diff] [blame] | 310 | |
| 311 | Bug fixes: |
| 312 | - Fix a race condition in heap profiling that could cause undefined behavior |
Jason Evans | ada55b2 | 2011-01-31 20:08:56 -0800 | [diff] [blame] | 313 | if "opt.prof_accum" were disabled. |
Jason Evans | 53806fe | 2010-10-29 20:16:39 -0700 | [diff] [blame] | 314 | - Add missing mutex unlocks for some OOM error paths in the heap profiling |
| 315 | code. |
| 316 | - Fix a compilation error for non-C99 builds. |
| 317 | |
Jason Evans | 6369286 | 2011-02-07 22:48:35 -0800 | [diff] [blame] | 318 | * 2.0.0 (October 24, 2010) |
Jason Evans | 379f847 | 2010-10-24 16:18:29 -0700 | [diff] [blame] | 319 | |
| 320 | This version focuses on the experimental *allocm() API, and on improved |
| 321 | run-time configuration/introspection. Nonetheless, numerous performance |
| 322 | improvements are also included. |
| 323 | |
| 324 | New features: |
Jason Evans | b059a53 | 2010-10-24 16:54:40 -0700 | [diff] [blame] | 325 | - Implement the experimental {,r,s,d}allocm() API, which provides a superset |
| 326 | of the functionality available via malloc(), calloc(), posix_memalign(), |
| 327 | realloc(), malloc_usable_size(), and free(). These functions can be used to |
| 328 | allocate/reallocate aligned zeroed memory, ask for optional extra memory |
| 329 | during reallocation, prevent object movement during reallocation, etc. |
| 330 | - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is |
| 331 | more human-readable, and more flexible. For example: |
| 332 | JEMALLOC_OPTIONS=AJP |
| 333 | is now: |
| 334 | MALLOC_CONF=abort:true,fill:true,stats_print:true |
| 335 | - Port to Apple OS X. Sponsored by Mozilla. |
| 336 | - Make it possible for the application to control thread-->arena mappings via |
| 337 | the "thread.arena" mallctl. |
| 338 | - Add compile-time support for all TLS-related functionality via pthreads TSD. |
| 339 | This is mainly of interest for OS X, which does not support TLS, but has a |
| 340 | TSD implementation with similar performance. |
| 341 | - Override memalign() and valloc() if they are provided by the system. |
| 342 | - Add the "arenas.purge" mallctl, which can be used to synchronously purge all |
| 343 | dirty unused pages. |
| 344 | - Make cumulative heap profiling data optional, so that it is possible to |
| 345 | limit the amount of memory consumed by heap profiling data structures. |
| 346 | - Add per thread allocation counters that can be accessed via the |
| 347 | "thread.allocated" and "thread.deallocated" mallctls. |
Jason Evans | 379f847 | 2010-10-24 16:18:29 -0700 | [diff] [blame] | 348 | |
| 349 | Incompatible changes: |
Jason Evans | b059a53 | 2010-10-24 16:54:40 -0700 | [diff] [blame] | 350 | - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above). |
| 351 | - Increase default backtrace depth from 4 to 128 for heap profiling. |
| 352 | - Disable interval-based profile dumps by default. |
Jason Evans | 379f847 | 2010-10-24 16:18:29 -0700 | [diff] [blame] | 353 | |
| 354 | Bug fixes: |
| 355 | - Remove bad assertions in fork handler functions. These assertions could |
| 356 | cause aborts for some combinations of configure settings. |
| 357 | - Fix strerror_r() usage to deal with non-standard semantics in GNU libc. |
| 358 | - Fix leak context reporting. This bug tended to cause the number of contexts |
| 359 | to be underreported (though the reported number of objects and bytes were |
| 360 | correct). |
| 361 | - Fix a realloc() bug for large in-place growing reallocation. This bug could |
| 362 | cause memory corruption, but it was hard to trigger. |
| 363 | - Fix an allocation bug for small allocations that could be triggered if |
| 364 | multiple threads raced to create a new run of backing pages. |
| 365 | - Enhance the heap profiler to trigger samples based on usable size, rather |
| 366 | than request size. |
| 367 | - Fix a heap profiling bug due to sometimes losing track of requested object |
| 368 | size for sampled objects. |
| 369 | |
Jason Evans | 6369286 | 2011-02-07 22:48:35 -0800 | [diff] [blame] | 370 | * 1.0.3 (August 12, 2010) |
Jason Evans | 379f847 | 2010-10-24 16:18:29 -0700 | [diff] [blame] | 371 | |
| 372 | Bug fixes: |
| 373 | - Fix the libunwind-based implementation of stack backtracing (used for heap |
| 374 | profiling). This bug could cause zero-length backtraces to be reported. |
| 375 | - Add a missing mutex unlock in library initialization code. If multiple |
| 376 | threads raced to initialize malloc, some of them could end up permanently |
| 377 | blocked. |
| 378 | |
Jason Evans | 6369286 | 2011-02-07 22:48:35 -0800 | [diff] [blame] | 379 | * 1.0.2 (May 11, 2010) |
Jason Evans | 379f847 | 2010-10-24 16:18:29 -0700 | [diff] [blame] | 380 | |
| 381 | Bug fixes: |
| 382 | - Fix junk filling of large objects, which could cause memory corruption. |
| 383 | - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual |
| 384 | memory limits could cause swap file configuration to fail. Contributed by |
| 385 | Jordan DeLong. |
| 386 | |
Jason Evans | 6369286 | 2011-02-07 22:48:35 -0800 | [diff] [blame] | 387 | * 1.0.1 (April 14, 2010) |
Jason Evans | 379f847 | 2010-10-24 16:18:29 -0700 | [diff] [blame] | 388 | |
| 389 | Bug fixes: |
| 390 | - Fix compilation when --enable-fill is specified. |
| 391 | - Fix threads-related profiling bugs that affected accuracy and caused memory |
| 392 | to be leaked during thread exit. |
| 393 | - Fix dirty page purging race conditions that could cause crashes. |
| 394 | - Fix crash in tcache flushing code during thread destruction. |
| 395 | |
Jason Evans | 6369286 | 2011-02-07 22:48:35 -0800 | [diff] [blame] | 396 | * 1.0.0 (April 11, 2010) |
Jason Evans | 379f847 | 2010-10-24 16:18:29 -0700 | [diff] [blame] | 397 | |
| 398 | This release focuses on speed and run-time introspection. Numerous |
| 399 | algorithmic improvements make this release substantially faster than its |
| 400 | predecessors. |
| 401 | |
| 402 | New features: |
| 403 | - Implement autoconf-based configuration system. |
| 404 | - Add mallctl*(), for the purposes of introspection and run-time |
| 405 | configuration. |
| 406 | - Make it possible for the application to manually flush a thread's cache, via |
| 407 | the "tcache.flush" mallctl. |
| 408 | - Base maximum dirty page count on proportion of active memory. |
| 409 | - Compute various addtional run-time statistics, including per size class |
| 410 | statistics for large objects. |
| 411 | - Expose malloc_stats_print(), which can be called repeatedly by the |
| 412 | application. |
| 413 | - Simplify the malloc_message() signature to only take one string argument, |
| 414 | and incorporate an opaque data pointer argument for use by the application |
| 415 | in combination with malloc_stats_print(). |
| 416 | - Add support for allocation backed by one or more swap files, and allow the |
| 417 | application to disable over-commit if swap files are in use. |
| 418 | - Implement allocation profiling and leak checking. |
| 419 | |
| 420 | Removed features: |
| 421 | - Remove the dynamic arena rebalancing code, since thread-specific caching |
| 422 | reduces its utility. |
| 423 | |
| 424 | Bug fixes: |
| 425 | - Modify chunk allocation to work when address space layout randomization |
| 426 | (ASLR) is in use. |
| 427 | - Fix thread cleanup bugs related to TLS destruction. |
| 428 | - Handle 0-size allocation requests in posix_memalign(). |
| 429 | - Fix a chunk leak. The leaked chunks were never touched, so this impacted |
| 430 | virtual memory usage, but not physical memory usage. |
| 431 | |
Jason Evans | 6369286 | 2011-02-07 22:48:35 -0800 | [diff] [blame] | 432 | * linux_2008082[78]a (August 27/28, 2008) |
Jason Evans | 379f847 | 2010-10-24 16:18:29 -0700 | [diff] [blame] | 433 | |
| 434 | These snapshot releases are the simple result of incorporating Linux-specific |
| 435 | support into the FreeBSD malloc sources. |
| 436 | |
| 437 | -------------------------------------------------------------------------------- |
| 438 | vim:filetype=text:textwidth=80 |