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