blob: e32a5883b98bd918c82564e4324292335871722e [file] [log] [blame]
Jason Evans379f8472010-10-24 16:18:29 -07001Following are change highlights associated with official releases. Important
2bug fixes are all mentioned, but internal enhancements are omitted here for
3brevity (even though they are more fun to write about). Much more detail can be
4found 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 Evans0e8d3d22010-12-03 17:02:16 -08009* 2.1.0
10
11 This version incorporates some optimizations that can't quite be considered
12 bug fixes.
13
14 New features:
15 - Use Linux's mremap(2) for huge object reallocation when possible.
16 - Avoid locking in mallctl*() when possible.
17 - Add the "thread.[de]allocatedp" mallctl's.
18 - Convert the manual page source from roff to DocBook, and generate both roff
19 and HTML manuals.
20
21 Bug fixes:
22 - Fix a crash due to incorrect bootstrap ordering. This only impacted
23 --enable-debug --enable-dss configurations.
24 - Fix a minor statistics bug for mallctl("swap.avail", ...).
25
Jason Evans53806fe2010-10-29 20:16:39 -070026* 2.0.1
27
28 Bug fixes:
29 - Fix a race condition in heap profiling that could cause undefined behavior
30 if opt.prof_accum were disabled.
31 - Add missing mutex unlocks for some OOM error paths in the heap profiling
32 code.
33 - Fix a compilation error for non-C99 builds.
34
Jason Evans379f8472010-10-24 16:18:29 -070035* 2.0.0
36
37 This version focuses on the experimental *allocm() API, and on improved
38 run-time configuration/introspection. Nonetheless, numerous performance
39 improvements are also included.
40
41 New features:
Jason Evansb059a532010-10-24 16:54:40 -070042 - Implement the experimental {,r,s,d}allocm() API, which provides a superset
43 of the functionality available via malloc(), calloc(), posix_memalign(),
44 realloc(), malloc_usable_size(), and free(). These functions can be used to
45 allocate/reallocate aligned zeroed memory, ask for optional extra memory
46 during reallocation, prevent object movement during reallocation, etc.
47 - Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is
48 more human-readable, and more flexible. For example:
49 JEMALLOC_OPTIONS=AJP
50 is now:
51 MALLOC_CONF=abort:true,fill:true,stats_print:true
52 - Port to Apple OS X. Sponsored by Mozilla.
53 - Make it possible for the application to control thread-->arena mappings via
54 the "thread.arena" mallctl.
55 - Add compile-time support for all TLS-related functionality via pthreads TSD.
56 This is mainly of interest for OS X, which does not support TLS, but has a
57 TSD implementation with similar performance.
58 - Override memalign() and valloc() if they are provided by the system.
59 - Add the "arenas.purge" mallctl, which can be used to synchronously purge all
60 dirty unused pages.
61 - Make cumulative heap profiling data optional, so that it is possible to
62 limit the amount of memory consumed by heap profiling data structures.
63 - Add per thread allocation counters that can be accessed via the
64 "thread.allocated" and "thread.deallocated" mallctls.
Jason Evans379f8472010-10-24 16:18:29 -070065
66 Incompatible changes:
Jason Evansb059a532010-10-24 16:54:40 -070067 - Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above).
68 - Increase default backtrace depth from 4 to 128 for heap profiling.
69 - Disable interval-based profile dumps by default.
Jason Evans379f8472010-10-24 16:18:29 -070070
71 Bug fixes:
72 - Remove bad assertions in fork handler functions. These assertions could
73 cause aborts for some combinations of configure settings.
74 - Fix strerror_r() usage to deal with non-standard semantics in GNU libc.
75 - Fix leak context reporting. This bug tended to cause the number of contexts
76 to be underreported (though the reported number of objects and bytes were
77 correct).
78 - Fix a realloc() bug for large in-place growing reallocation. This bug could
79 cause memory corruption, but it was hard to trigger.
80 - Fix an allocation bug for small allocations that could be triggered if
81 multiple threads raced to create a new run of backing pages.
82 - Enhance the heap profiler to trigger samples based on usable size, rather
83 than request size.
84 - Fix a heap profiling bug due to sometimes losing track of requested object
85 size for sampled objects.
86
87* 1.0.3
88
89 Bug fixes:
90 - Fix the libunwind-based implementation of stack backtracing (used for heap
91 profiling). This bug could cause zero-length backtraces to be reported.
92 - Add a missing mutex unlock in library initialization code. If multiple
93 threads raced to initialize malloc, some of them could end up permanently
94 blocked.
95
96* 1.0.2
97
98 Bug fixes:
99 - Fix junk filling of large objects, which could cause memory corruption.
100 - Add MAP_NORESERVE support for chunk mapping, because otherwise virtual
101 memory limits could cause swap file configuration to fail. Contributed by
102 Jordan DeLong.
103
104* 1.0.1
105
106 Bug fixes:
107 - Fix compilation when --enable-fill is specified.
108 - Fix threads-related profiling bugs that affected accuracy and caused memory
109 to be leaked during thread exit.
110 - Fix dirty page purging race conditions that could cause crashes.
111 - Fix crash in tcache flushing code during thread destruction.
112
113* 1.0.0
114
115 This release focuses on speed and run-time introspection. Numerous
116 algorithmic improvements make this release substantially faster than its
117 predecessors.
118
119 New features:
120 - Implement autoconf-based configuration system.
121 - Add mallctl*(), for the purposes of introspection and run-time
122 configuration.
123 - Make it possible for the application to manually flush a thread's cache, via
124 the "tcache.flush" mallctl.
125 - Base maximum dirty page count on proportion of active memory.
126 - Compute various addtional run-time statistics, including per size class
127 statistics for large objects.
128 - Expose malloc_stats_print(), which can be called repeatedly by the
129 application.
130 - Simplify the malloc_message() signature to only take one string argument,
131 and incorporate an opaque data pointer argument for use by the application
132 in combination with malloc_stats_print().
133 - Add support for allocation backed by one or more swap files, and allow the
134 application to disable over-commit if swap files are in use.
135 - Implement allocation profiling and leak checking.
136
137 Removed features:
138 - Remove the dynamic arena rebalancing code, since thread-specific caching
139 reduces its utility.
140
141 Bug fixes:
142 - Modify chunk allocation to work when address space layout randomization
143 (ASLR) is in use.
144 - Fix thread cleanup bugs related to TLS destruction.
145 - Handle 0-size allocation requests in posix_memalign().
146 - Fix a chunk leak. The leaked chunks were never touched, so this impacted
147 virtual memory usage, but not physical memory usage.
148
149* linux_20080828a, linux_20080827a
150
151 These snapshot releases are the simple result of incorporating Linux-specific
152 support into the FreeBSD malloc sources.
153
154--------------------------------------------------------------------------------
155vim:filetype=text:textwidth=80