| Following are change highlights associated with official releases. Important |
| bug fixes are all mentioned, but internal enhancements are omitted here for |
| brevity (even though they are more fun to write about). Much more detail can be |
| found in the git revision history: |
| |
| http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git |
| git://canonware.com/jemalloc.git |
| |
| * 2.1.3 (March 14, 2011) |
| |
| Bug fixes: |
| - Fix a cpp logic regression (due to the "thread.{de,}allocatedp" mallctl fix |
| for OS X in 2.1.2). |
| - Fix a "thread.arena" mallctl bug. |
| - Fix a thread cache stats merging bug. |
| |
| * 2.1.2 (March 2, 2011) |
| |
| Bug fixes: |
| - Fix "thread.{de,}allocatedp" mallctl for OS X. |
| - Add missing jemalloc.a to build system. |
| |
| * 2.1.1 (January 31, 2011) |
| |
| Bug fixes: |
| - Fix aligned huge reallocation (affected allocm()). |
| - Fix the ALLOCM_LG_ALIGN macro definition. |
| - Fix a heap dumping deadlock. |
| - Fix a "thread.arena" mallctl bug. |
| |
| * 2.1.0 (December 3, 2010) |
| |
| This version incorporates some optimizations that can't quite be considered |
| bug fixes. |
| |
| New features: |
| - Use Linux's mremap(2) for huge object reallocation when possible. |
| - Avoid locking in mallctl*() when possible. |
| - Add the "thread.[de]allocatedp" mallctl's. |
| - Convert the manual page source from roff to DocBook, and generate both roff |
| and HTML manuals. |
| |
| Bug fixes: |
| - Fix a crash due to incorrect bootstrap ordering. This only impacted |
| --enable-debug --enable-dss configurations. |
| - Fix a minor statistics bug for mallctl("swap.avail", ...). |
| |
| * 2.0.1 (October 29, 2010) |
| |
| Bug fixes: |
| - Fix a race condition in heap profiling that could cause undefined behavior |
| if "opt.prof_accum" were disabled. |
| - Add missing mutex unlocks for some OOM error paths in the heap profiling |
| code. |
| - Fix a compilation error for non-C99 builds. |
| |
| * 2.0.0 (October 24, 2010) |
| |
| This version focuses on the experimental *allocm() API, and on improved |
| run-time configuration/introspection. Nonetheless, numerous performance |
| improvements are also included. |
| |
| New features: |
| - Implement the experimental {,r,s,d}allocm() API, which provides a superset |
| of the functionality available via malloc(), calloc(), posix_memalign(), |
| realloc(), malloc_usable_size(), and free(). These functions can be used to |
| allocate/reallocate aligned zeroed memory, ask for optional extra memory |
| during reallocation, prevent object movement during reallocation, etc. |
| - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is |
| more human-readable, and more flexible. For example: |
| JEMALLOC_OPTIONS=AJP |
| is now: |
| MALLOC_CONF=abort:true,fill:true,stats_print:true |
| - Port to Apple OS X. Sponsored by Mozilla. |
| - Make it possible for the application to control thread-->arena mappings via |
| the "thread.arena" mallctl. |
| - Add compile-time support for all TLS-related functionality via pthreads TSD. |
| This is mainly of interest for OS X, which does not support TLS, but has a |
| TSD implementation with similar performance. |
| - Override memalign() and valloc() if they are provided by the system. |
| - Add the "arenas.purge" mallctl, which can be used to synchronously purge all |
| dirty unused pages. |
| - Make cumulative heap profiling data optional, so that it is possible to |
| limit the amount of memory consumed by heap profiling data structures. |
| - Add per thread allocation counters that can be accessed via the |
| "thread.allocated" and "thread.deallocated" mallctls. |
| |
| Incompatible changes: |
| - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above). |
| - Increase default backtrace depth from 4 to 128 for heap profiling. |
| - Disable interval-based profile dumps by default. |
| |
| Bug fixes: |
| - Remove bad assertions in fork handler functions. These assertions could |
| cause aborts for some combinations of configure settings. |
| - Fix strerror_r() usage to deal with non-standard semantics in GNU libc. |
| - Fix leak context reporting. This bug tended to cause the number of contexts |
| to be underreported (though the reported number of objects and bytes were |
| correct). |
| - Fix a realloc() bug for large in-place growing reallocation. This bug could |
| cause memory corruption, but it was hard to trigger. |
| - Fix an allocation bug for small allocations that could be triggered if |
| multiple threads raced to create a new run of backing pages. |
| - Enhance the heap profiler to trigger samples based on usable size, rather |
| than request size. |
| - Fix a heap profiling bug due to sometimes losing track of requested object |
| size for sampled objects. |
| |
| * 1.0.3 (August 12, 2010) |
| |
| Bug fixes: |
| - Fix the libunwind-based implementation of stack backtracing (used for heap |
| profiling). This bug could cause zero-length backtraces to be reported. |
| - Add a missing mutex unlock in library initialization code. If multiple |
| threads raced to initialize malloc, some of them could end up permanently |
| blocked. |
| |
| * 1.0.2 (May 11, 2010) |
| |
| Bug fixes: |
| - Fix junk filling of large objects, which could cause memory corruption. |
| - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual |
| memory limits could cause swap file configuration to fail. Contributed by |
| Jordan DeLong. |
| |
| * 1.0.1 (April 14, 2010) |
| |
| Bug fixes: |
| - Fix compilation when --enable-fill is specified. |
| - Fix threads-related profiling bugs that affected accuracy and caused memory |
| to be leaked during thread exit. |
| - Fix dirty page purging race conditions that could cause crashes. |
| - Fix crash in tcache flushing code during thread destruction. |
| |
| * 1.0.0 (April 11, 2010) |
| |
| This release focuses on speed and run-time introspection. Numerous |
| algorithmic improvements make this release substantially faster than its |
| predecessors. |
| |
| New features: |
| - Implement autoconf-based configuration system. |
| - Add mallctl*(), for the purposes of introspection and run-time |
| configuration. |
| - Make it possible for the application to manually flush a thread's cache, via |
| the "tcache.flush" mallctl. |
| - Base maximum dirty page count on proportion of active memory. |
| - Compute various addtional run-time statistics, including per size class |
| statistics for large objects. |
| - Expose malloc_stats_print(), which can be called repeatedly by the |
| application. |
| - Simplify the malloc_message() signature to only take one string argument, |
| and incorporate an opaque data pointer argument for use by the application |
| in combination with malloc_stats_print(). |
| - Add support for allocation backed by one or more swap files, and allow the |
| application to disable over-commit if swap files are in use. |
| - Implement allocation profiling and leak checking. |
| |
| Removed features: |
| - Remove the dynamic arena rebalancing code, since thread-specific caching |
| reduces its utility. |
| |
| Bug fixes: |
| - Modify chunk allocation to work when address space layout randomization |
| (ASLR) is in use. |
| - Fix thread cleanup bugs related to TLS destruction. |
| - Handle 0-size allocation requests in posix_memalign(). |
| - Fix a chunk leak. The leaked chunks were never touched, so this impacted |
| virtual memory usage, but not physical memory usage. |
| |
| * linux_2008082[78]a (August 27/28, 2008) |
| |
| These snapshot releases are the simple result of incorporating Linux-specific |
| support into the FreeBSD malloc sources. |
| |
| -------------------------------------------------------------------------------- |
| vim:filetype=text:textwidth=80 |