-
-
Notifications
You must be signed in to change notification settings - Fork 128
/
NEWS
301 lines (205 loc) · 9.23 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
The Hoard Multiprocessor Memory Allocator
<http://www.hoard.org>
Version Information
-------------------
Since 2012, all commit information has been publicly accessible in the
Hoard github repository (https://github.com/emeryberger/Hoard); this
information is preserved here for historical reasons only.
--------------------------------------------------------------------------------
version 3.9 (June 10, 2012):
* Overhauled Heap Layers and cleaned up directory structure.
* Fixed allocator to eliminate integer overflow (CVE-2012-2676).
See also http://www.openwall.com/lists/oss-security/2012/06/07/13.
version 3.8.1:
* Vastly improved Mac support: works for a wide range of applications
without the need to declare "flat namespaces."
version 3.8 (Nov 9, 2009):
* Refactored and fixed TLAB support to do appropriate cleanup.
* Added interception of Solaris threads API (thr_*).
* Moved createKey out of critical path, improving speed for Unix
platforms that do not support __thread.
* Added a lock to AlignedMmap to prevent a possible race condition.
* Changed hooks to use GNU-supported hooks on platforms with glibc
(especially Linux).
* Changed all code to include C++ headers (e.g., <cassert>
instead of <assert.h>).
* Improved Mac support.
* Added robustness, checking for heap corruption or other errors.
* Improved Windows support (added _recalloc interception).
* Fixed incorrect handling of a (highly unlikely) out-of-memory
condition in bumpalloc.h.
version 3.7.1 (Feb. 20, 2008):
* Fixed a serious bug for Windows in thread reclamation.
* Fixed a small memory leak in thread creation.
* Substantially increased performance for small objects on 64-bit platforms.
* Initial port to Windows 64.
version 3.7 (Sept. 18, 2007):
* Streamlined fast path for allocation, speeding 32 and 64-bit code.
* Use pthread_* based thread-specific data for x86-64, where it's faster.
version 3.6.2 (May 25, 2007):
* Fixed build for Mac OS X (Darwin).
* Fixed to support older versions of Sun compilers.
* Added FreeBSD ("freebsd") as a target.
version 3.6.1 (May 21, 2007):
* Added x86-64 target for Linux/gcc.
* Added support for posix_memalign (for Unix systems).
* Added static library build option for Linux.
version 3.6 (May 10, 2007):
* Improved performance, especially from thread-specific heap allocation.
* Revised algorithm for large objects to reduce mmap fragmentation.
* Added support for Solaris x86 (32 and 64 bit).
* Fixed a problem for 64-bit builds.
* Removed support for Detours.
* Restored to top-level status (moved heaplayers to a directory).
* Changed thread-specific data for Windows to support use in DLLs.
* Build now fully supports Mac OS X (Darwin).
version 3.5.1 (May 22, 2006):
* Eliminated a (rare) memory error.
version 3.5.0 (May 18, 2006):
* Resolved some cross-platform memory leaks, notably
for Windows due to surprising VirtualFree API
(which doesn't reclaim memory unless size argument is 0).
version 3.4.0 (December 28, 2005):
* Added support for X86-64, Apple OS-X,
and Microsoft's Visual Studio 2005.
* Restored Detours version, but with thread-specific local heaps disabled.
* Removed all dependencies on STL.
version 3.3.0 (May 27, 2005):
* Added thread-specific local heaps, which substantially
improve performance by eliminating most atomic operations.
version 3.2.3:
* Bug fix for Unix platforms, now allowing calls to
pthread_create with a NULL attribute.
* Added support for ARM architectures.
version 3.2.2 (Dec 13, 2004):
* Reduces memory consumption for large objects (Windows).
version 3.2.1 (Dec 3, 2004):
* Maintenance release: fixes a bug for 64-bit versions
and changes the Windows build (for winhoard) slightly.
version 3.2 (Nov 28, 2004):
* An improved Windows build (see NOTES.windows).
* An algorithmic change (essentially a variant of thread-local
allocation buffers) that boosts performance by avoiding atomic
operations.
version 3.1 (Nov 14, 2004):
* Several performance optimizations.
* A minor bug fix for non-Windows platforms.
version 3 (Nov 21, 2003):
* Switched over to Heap Layers-based implementation.
* Added single-threaded optimization (if no threads spawned, no locks).
version 2.1.2 (April 7, 2003):
* Made the code 64-bit clean.
* Fixed a bug in recycling free memory on uniprocessors.
version 2.1.1:
* Added Debian distribution support.
* Fixed a Linux compilation bug in a benchmark.
* Added automake-produced Makefiles for all benchmarks.
* Added pthread_atfork handlers to avoid deadlocks when
using fork().
version 2.1.0 (December 24, 2001):
* Now ships as a DLL for Windows.
* Reduced internal fragmentation for small objects.
* A variety of performance improvements.
* Patched to work on 64-bit Solaris.
* Removed BeOS support.
* Simplified user-level locking.
* Incorporated Doug Lea's malloc as a faster backing store
than mmap(), for non-Windows execution.
version 2.0.6 (July 10, 2001):
* Fix to allow Hoard to work with MFC under Windows.
version 2.0.5 (Mar 17, 2001):
* Fix to work with the new Sun WorkShop compiler.
version 2.0.4 (Mar 14, 2001):
* Fix to allow Hoard to work with Debug builds under Windows.
version 2.0.3 (Feb 17, 2001):
* Added a fix for better fragmentation on uniprocessors,
added a "winprojects" directory for easier building on Windows
under Visual Studio, improved realloc performance, and fixed a bug
for out-of-memory conditions.
version 2.0.2 (Apr 6, 2000):
* Fixed a memory leak for SGI.
version 2.0.1:
* Fixed compilation on AIX with xlC (IBM).
version 2.0 (Mar 24, 2000):
* Added very aggressive superblock recycling. Now an empty
superblock is immediately available for reuse for another size
class. This can dramatically reduce fragmentation.
* We now preferentially allocate from recently-touched
superblocks to improve page locality.
* Incorporated a protocol to guarantee swift superblock
'acquisition' by free().
version 1.5.3: (not generally released)
* Miscellaneous bug fixes.
version 1.5.2 (Feb 24, 2000):
* Fixed a problem on some Linux systems that caused
many large allocations to fail.
* Fixed a call to VirtualFree which didn't actually
release memory back to the system.
version 1.5.1 (Feb 21, 2000):
* Changed initialization of the process heap to fix
a problem with Visual C++.
version 1.5 (Feb 18, 2000):
* Large blocks (> 4K) are now immediately returned to
the system when they are freed.
* Made a number of improvements to the algorithm that ensure
O(1) cost for malloc & free and guarantee low contention for
free's. (These will be discussed in a paper currently in
progress.) Also added a method that further reduces the number
of system calls when allocating memory.
* Added superblock recycling to reduce fragmentation.
* Hoard now compiles with Sun's Workshop compilers (version 5.0)
on SPARCs. (Thanks to Ganesan Rajagopal of Novell for the
undocumented .il trick for inlining assembly.)
* Ported to AIX (IBM, PowerPC-based).
version 1.4.2 (Jan 16, 2000):
* A bug fix -- corrects a subtle problem with memalign.
Hoard now successfully passes Wolfram Gloger's
malloc-test (included with the distribution).
version 1.4.1 (Jan 12, 2000):
* A few fixes for backward compatibility with Solaris 2.6.
version 1.4 (Jan 11, 2000):
* Doubled the speed of calls to free().
* Further improved scalability, especially on Solaris.
* Reduced memory consumption and improved performance on
uniprocessors.
* Changed the lock implementation for Windows from spin to
spin-yield, as in the UNIX implementations (thanks to Paul
Larson of Microsoft Research for pointing out how to do this).
* Removed the shbench benchmark from the distribution, per
request from MicroQuill, Inc.
version 1.3.3:
* Changed some casts of pointers to unsigned longs
to allow Hoard to work on 64-bit machines (read: SGI O2K).
version 1.3.2 (Nov 23, 1999):
* Minor modifications for the Windows NT port,
along with workspace and project files for Visual C++
(thanks to Arnd Bohm).
version 1.3.1:
* Included a customized version of 'atexit' for Linux,
since the newest version of libc (2.1.2) caused Hoard to
deadlock (it called malloc internally).
version 1.3 (Nov 18, 1999):
* Ported to the BeOS (thanks to Trey Boudreau of Be).
* Replaced the per-sizeclass locks with per-heap locks,
since this has no impact on scalability and reduces Hoard's
static footprint.
version 1.2 (Oct 29, 1999):
* Dramatically improved performance with fast user-level locks
for SPARC, x86, and the SGI.
* Added sproc support (for the SGI).
* Hoard can now be built under Visual C++ (thanks to John
Hickin).
version 1.1 (Oct 13, 1999):
* Added autoconf and automake scripts to facilitate compilation
and installation (including shared libraries).
(thanks to Ganesan Rajagopal of Novell for submitting the scripts)
version 1.0.3 (Oct 4, 1999):
* Hoard now scales on OS's besides Linux and Solaris.
(the thread ID hash function was pathological for other OS's)
version 1.0.2 (Oct 4, 1999):
* Ported to Windows NT.
* Added in the benchmark suite (larson, linux-scalability, shbench).
version 1.0.1 (Sep 30, 1999):
* Fixed a build problem.
version 1.0 (Sep 29, 1999):
* Initial release.