This repository has been archived by the owner on Jun 27, 2023. It is now read-only.
forked from carrotsearch/hppc
-
Notifications
You must be signed in to change notification settings - Fork 6
/
CHANGES.txt
342 lines (207 loc) · 12 KB
/
CHANGES.txt
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
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
[0.7.5]
** Bug fixes
HPPCRT-49: Heaps wrongly use Comparable/Comparator for contains(), removeAll(), equals()
[0.7.4]
** Bug fixes
HPPCRT-48: Templates are mistakingly included in final Jar
[0.7.3]
** Other changes
PR #5: OSGi descriptors in JAR manifests, bundle packaging, by Guillaume Delafosse. (Copied from HPPC)
HPPCRT-47: Modernize the build by using Retrolambda (https://github.com/orfjackal/retrolambda) to generate a unique retro-compatible Jar.
This is fine since the API was the same between the 1.6 and 1.5 jars previously.
As a contrast, building the HPPC-RT project now REQUIRES Java 8 due to Retrolambda.
[0.7.2]
** API-breaking changes
HPPCRT-46: Remove CurstomHash and replace by equals/hashCode overrides in normal hash containers.
[0.7.1]
** Bug fixes
HPPCRT-45: API with intervals arguments is inconsistent with JDK conventions.
[0.7.0]
This release fix important bugs, and align on some refactorings or changes of HPPC v0.7.1, hence the version number.
** API-breaking changes / New features
HPPCRT-36: Simplify specific IdentityHash impl by deriving a specific CustomHash
HPPCRT-40: Remove DoubleLinkedIntSet and BitSet
HPPCRT-41: Remove senseless key types for CustomHash containers. Now CustomHash are only generated for int, long, Object keys.
HPPCRT-42: Remove all Boolean containers versions. Usage for them is either uncommon, or can be easily emulated with the other containers.
HPPCRT-43: Remove Stacks. Replaced by adding a few stack-emulating methods to KTypeArrayList.
HPPCRT-44: Simplify LinkedList iteration. Removed isFirst(), isLast(), isHead(), isTail() iterator methods and replace them by hasAfter()/ hashBefore().
HPPC-140: On maps, values() and keys() returns a full-fledged Collection. Indeed, keys() and values() already returned Collection from a long time in HPPC-RT.
Still, rename the retuned types from KeysContainer/ValuesContainer into KeysCollection/ValuesCollection to stress on that fact.
HPPCRT-37: API changes and internal code refactorings from HPPC v0.7.0:
- HPPC-104 + HPPC-116: Ability to create a read-only view of a map. For that, lset/lget/lslot..., all l* methods from hash containers are removed.
- HPPC-105: renamed hppcrt-core to hppcrt, and hppcrt-templateprocessor into hppcrt-template-processor
- HPPC-109: Moved @author tags to NOTICE.txt.
- HPPC-114: Buffer resizing and allocation should be throwing non-assertion mode exceptions.
- HPPC-117: Static factory methods newInstanceXXX() renamed into newInstance() everywhere with proper overrides.
- HPPC-118: Buffer arrays for generic types should be declared as Object[] to avoid compiler-injected automatic casts.
- HPPC-121: Renamed methods:
T.removeFirstOccurrences -> T.removeFirst
T.removeLastOccurrences -> T.removeLast
T.removeAllOccurrences -> T.removeAll(type)
- HPPC-125: equals should not compare with subclasses of itself.
- HPPC-133: KTypeContainer.toArray(Class<T>) now accepts any array
component type; runtime checks will throw ArrayStoreException if not
compatible.
- HPPC-141: Dropped mutable type wrappers (*Holder classes)
- HPPC-145: Removed any "Open" infix from all Hash container classes:
KTypeOpenHashSet -> KTypeHashSet
KTypeVTypeOpenHashMap -> KTypeVTypeHashMap
- HPPC-149: Recognize tests.seed as the initialization seed for perturbation key mixing for hash containers.
- HPPC-152: Add a faster RPRG, XorShift128P as a replacement of XorShiftRandom.
** Internal changes, cleanups, optimizations...etc.
HPPCRT-36: Simplify specific IdentityHash impl by deriving a specific CustomHash
HPPC-110: putOrAdd and other primitive-only methods should be template-compilable.
HPPC-120: Rework entry shifting routine to be less hairy
HPPC-134: Set and Map's removeAll() should pick the best removal strategy.
** Bug fixes
HPPCRT-35: Hash to hash batch copying hangs, regression from the working perturbation policy
HPPC-130: removeAll(KTypeLookupContainer) had an incorrect
generic signature of:
public int removeAll(final KTypeLookupContainer<? extends KType> c)
now corrected to:
public int removeAll(final KTypeLookupContainer<? super KType> c)
(for primitive types this does not apply).
HPPC-131: retainAll(KTypeLookupContainer) had an incorrect
generic signature of:
public int retainAll(final KTypeLookupContainer<? extends KType> c)
now corrected to:
public int retainAll(final KTypeLookupContainer<? super KType> c)
(for primitive types this does not apply).
HPPC-135: KTypeVTypeAssociativeContainer#removeAll had an incorrect
generic signature of:
public int removeAll(KTypeContainer<? extends KType> container)
now corrected to:
public int removeAll(KTypeContainer<? super KType> container)
[0.6.8]
** API-breaking changes
HPPCRT-34: Relax signature of sort() methods to match JDK ones.(stay compatible as before)
** Bug fixes
HPPCRT-32: CustomHashSet wrongly uses equals()/hashCode() instead of strategies
** New features
HPPC-101: Drop JUB, switch to JMH for benchmarks
Issue #27: Caliper benchmark framework looks abandoned, migrate the benchmarks to JMH
HPPCRT-33: Adopt perfomance enhancements found in fastutil 6.6x and Koloboke
[0.6.7]
** Bug fixes
HPPCRT-29 : Regression: setDefaultValue() method absent from v0.66 IndexedHeaps
HPPCRT-30: Object[VType]OpenHashMap.putOrAdd() wrong in Robin-Hood version
** New features
HPPCRT-31: Hash containers, merge allocated array and keys for performance
[0.6.6]
** API-breaking changes
HPPCRT-23: Make KTtypeIndexedPriorityQueue a IntKTypeMap, plus API additions
HPPCRT-27: Removed Guava adapter classes, which had very little value anyway
** Bug fixes
HPPC-92 : ObjectOpenHashSet/Generics -ClassCastException when accesing to keys[] array
HPPCRT-22 : Follow-up of HPPCRT-18 for more Perturbation-free fixes in Hashs containers
HPPCRT-24: Bug in Heaps with contains()/removeAllOccurences() not using Comparable/Comparator
HPPCRT-25: KTypeLinkedList.descendingForEach(Predicate) is not working.
** New features
HPPCRT-23: Make KTtypeIndexedPriorityQueue a IntKTypeMap, plus API additions
HPPCRT-26: Add specialized IdentityHash containers
HPPCRT-28: Sort improvements : generic KTypeIndexedContainer sort methods
[0.6.5]
** API-breaking changes
HPPCRT-20: Repackaging into com.carootsearch.hppcrt.lists|sets|maps|heaps
HPPCRT-18: Remove Perturbation methods in Hashs and replace with reverse iterationPerturbation vs. Non-perturbations Hash methods are removed, no longer needed.
** Bug fixes
HPPCRT-13 : Heaps equals() errors and various other equals() inconsistencies bug enhancement medium prio
HPPCRT-11 : Iterators states are inconsistent
HPPCRT-10: Heaps removeAll(Predicate) is not exception - safe
HPPCRT-6: Stack use ArrayList.sort() method for sorting, which leads to counterintuitive sort
HPPCRT-1 : initial constructor sizes of some containers do not garantee zero reallocations
** New features
HPPCRT-17: Robin Hood Hashing for Object and CustomHash containers
HPPCRT-14: Add a forEach(KTypeVTypePredicate) for the KTypeVTypeAssociativeContainer
HPPCRT-12 : Make ArrayDeque a KTypeIndexedContainer
** Changes in functionality
HPPCRT-8 : consistently Implement trim/trim-to-size methods using c = c.clone() idiom
HPPCRT-19: Drop hash startegies from OpenHash implementations, and replace it with dedicated CustomHash classes
[0.6.0]
http://issues.carrot2.org/secure/ReleaseNote.jspa?projectId=10070&version=11820
** API-breaking changes
HPPC-82: Expose resizeAt and lastSlot to subclasses (sets, maps).
** Bug fixes
HPPC-80: Practical deadlock on populating a set/ map with an iterator
over another map (storage-size dependent rehash).
HPPC-81: Improvements to near-the-limit collection sizes and resize strategies.
** New features
** Changes in functionality
** Other changes
HPPC-79: javadocs generated with 1.7 (and 1.8) look crappy.
[0.5.3]
http://issues.carrot2.org/secure/ReleaseNote.jspa?projectId=10070&version=11833
** Other changes
** API-breaking changes
** Bug fixes
[0.5.2]
http://issues.carrot2.org/secure/ReleaseNote.jspa?projectId=10070&version=11832
** Bug fixes
HPPC-84: hashCode calculated incorrectly for sets/ maps
[0.5.1]
http://issues.carrot2.org/secure/ReleaseNote.jspa?projectId=10070&version=11828
** API-breaking changes
HPPC-82: Expose resizeAt and lastSlot to subclasses (sets, maps).
** Bug fixes
HPPC-80: Practical deadlock on populating a set/ map with an iterator
over another map (storage-size dependent rehash).
HPPC-81: Improvements to near-the-limit collection sizes and resize strategies.
** New features
** Changes in functionality
** Other changes
HPPC-79: javadocs generated with 1.7 (and 1.8) look crappy.
[0.5.0]
http://issues.carrot2.org/secure/ReleaseNote.jspa?projectId=10070&version=10321
** API-breaking changes:
HPPC-66: allow retrieving key instances by key-equality from Object*Map versions of
hash maps. Renamed lget in KTypeOpenHashSet to lkey for consistency.
So, the methods accessing last found key in sets and maps are:
lget (maps, accesses last value), lset (maps, accesses last value),
lkey (maps, sets, accesses last key), lslot (both, slot index).
HPPC-68: Lifted final markers on public methods
** New features
HPPC-63: a jdk15-compatible artifact is being published to Maven Central now.
HPPC-66: allow retrieving key instances by key-equality from Object*Map versions of
hash maps and hash sets.
HPPC-69: added toString to cursors.
HPPC-77: BitSet should use hotspot intrinsics (popcnt mostly)
** Bug fixes
HPPC-65: putOrAdd uses == for comparing object keys instead of equality
HPPC-72: XorShiftRandom always returns a zero. [Sergey Peretyatko]
This class was used only in benchmarks and tests so unless
you're using it directly you're not affected.
HPPC-73: get, contains and any other method may block indefinitely with
high load factors and full storage array capacity
HPPC-74: Load factor is not used in KTypeOpenHashSet
HPPC-75: put or add may leave the internal state of the hash containers
inconsistent on OOM conditions
** Other
Added newInstance() to BitSet and IntDoubleLinkedSet for consistency.
[0.4.1]
http://issues.carrot2.org/secure/ReleaseNote.jspa?projectId=10070&version=10322
** New features
HPPC-63: a jdk15-compatible artifact is being published to Maven Central now.
** Bug fixes
HPPC-65: putOrAdd uses == for comparing object keys instead of equality
[0.4.0]
http://issues.carrot2.org/secure/ReleaseNote.jspa?projectId=10070&version=10210
** API-breaking changes:
HPPC-60: Cleaned up the code of all iterators (including some name/scope changes
of iterator classes, so if you relied on these, things may break).
HPPC-59: keySet() renamed to keys() on associative containers.
HPPC-46: toArray() on object types must return actual T[], not Object[]
HPPC-52: Dropped custom hash functions and comparators from associative containers
for speed reasons.
** New features
HPPC-61: Cleaned up Maven structure: parent aggregator and submodules.
HPPC-57: Added a view of values to associative containers (values() method).
HPPC-49: Added support for XorShift random.
HPPC-34: Added support for Cloneable.
HPPC-51: Replace double hashing in open hash map/set to linear probing and a good
hashing function to ensure random distribution of elements
HPPC-47: Changed the implementation of MurmurHash to MurmurHash3, impl.
borrowed from Sebastiano Vigna's fastutil library. [ASL]
** Bug fixes
HPPC-46: toArray() on object types must return actual T[], not Object[]
** Other
HPPC-58: Better integration with Eclipse, new template->code generation.