Skip to content

Releases: carrotsearch/hppc

Release 0.10.0

04 Jun 13:47
Compare
Choose a tag to compare

This release adds a few utility methods and fixes a few problems with clashing method names (remove). This release is not backward compatible: it's likely you will have to update your code (remove method renamed to removeElement or removeAt, depending on the semantics, dropped WormMap and WormSet classes).

This release requires Java 11 or higher to run.

Resolved issues:
https://github.com/carrotsearch/hppc/milestone/4?closed=1

JavaDoc:
http://carrotsearch.github.io/hppc/releases/0.10.0/api/

New features and API changes

  • GH-250: Add KTypeIndexedContainer stream, sort and reverse methods. (Bruno Roustant)

  • GH-247: Add KTypeArrayList removeAt and rename remove to removeElement. (Bruno Roustant)

  • GH-244: Hide RamUsageEstimator from the public API. (Dawid Weiss)

  • GH-239: Minimum Java bumped to 11 (from 8). (Dawid Weiss)

  • GH-235: Drop WormMap and WormSet. (Bruno Roustant).

Improvements

  • GH-248: List constructor creates a buffer with capacity exactly the expected number of elements. (Bruno Roustant)

** Bugs

  • GH-237: Fix HashMap put/remove returned value for empty key after clear. (Bruno Roustant)

Release 0.9.1

15 Dec 09:43
Compare
Choose a tag to compare

This release brings a few nice improvements from Bruno: SortedIterationKTypeVTypeHashMap view that allows you to traverse maps in sorted key order, an efficient QuickSort implementation for faster sorting and a few minor additions to the API.

Resolved issues:
https://github.com/carrotsearch/hppc/milestone/3?closed=1

JavaDoc:
http://carrotsearch.github.io/hppc/releases/0.9.1/api/

New features and API changes

  • GH-31: Added QuickSort and used it in SortedIterationKTypeVTypeHashMap. (Bruno Roustant)
    QuickSort can be used with custom element comparator and swapper.

  • GH-28: Added SortedIterationKTypeVTypeHashMap: a sorted-iteration order view over
    another key-value map. (Bruno Roustant)

Improvements

  • GH-26: Moved putIfAbsent to interface KTypeVTypeMap. (Dawid Weiss)

  • GH-25: Added addAll(KTypeContainer) on KTypeSet. (Erich Schubert, Dawid Weiss).

  • GH-27: Added identity short circuit to existing equals methods. (Callum Galbreath).

Release 0.9.0

08 Jun 11:32
Compare
Choose a tag to compare

This is the API-breaking release of HPPC in a longer while. A new interesting associative container has been added (see worm hashing issue below) and some changes have been made to get rid of the Scatter*-type containers. You can now safely use either worm or regular version of hash maps and sets.

Resolved issues:
https://github.com/carrotsearch/hppc/milestone/1?closed=1

JavaDoc:
http://carrotsearch.github.io/hppc/releases/0.9.0/api/

New features and API changes

  • Java 11 is now required to compile HPPC. The resulting binary JAR is Java 1.8 compatible (Dawid Weiss).

  • GH-24: Support indexRemove in KTypeVTypeHashMap,KTypeHashSet,KTypeWormSet (Bruno Roustant).

  • GH-20: KeysContainer of WormMap is not public (Haoyu Zhai, Bruno Roustant).

  • GH-13: Add automatic module name to the generated JAR's manifest ("com.carrotsearch.hppc").

  • HPPC-179: Update java template parser to support Java 8.

  • HPPC-186: A different strategy has been implemented for collision avalanche avoidance. This results in removal of Scatter* maps and sets and their unification with their Hash* counterparts. This change should not affect any existing code unless it relied on static, specific ordering of keys. A side effect of this change is that key/value enumerators will return a different ordering of their container's values on each invocation. If your code relies on the order of values in associative arrays, it must order them after they are retrieved. (Bruno Roustant).

  • HPPC-176: A new set of associative containers implementing Worm Hashing has been added. This strategy is appropriate for a medium sized maps and sets (less than 2M entries). It takes more time to put entries in the map because it maintains chains of entries having the same hash. Then the lookup speed is fast even if the map is heavy loaded or hashes are clustered. On average it takes slightly less memory than KTypeVTypeHashMap: even though it allocates more data structures, the reasonable load factor is higher (it varies around 80%) so containers enlarge later. (Bruno Roustant, Aleksandr Danilin).

Improvements

  • HPPC-191: Improve Accountable implementation (Haoyu Zhai)

  • HPPC-183: Simplify IndirectSort comparator to use IntBinaryOperator.

  • HPPC-177: Modernize the build system to gradle and make it work with IntelliJ.

  • HPPC-184: Use closures where possible to make the resulting JAR smaller.

Bugs

  • HPPC-187: ObjectIdentityHashSet redistributes keys according to key.hashCode rather than object identity's hash code. (Bruno Roustant).

Release 0.9.0.RC2

14 Dec 16:25
Compare
Choose a tag to compare

Release candidate preview for 0.9.0.

Resolved issues:
https://github.com/carrotsearch/hppc/milestone/2?closed=1

JavaDoc:
http://carrotsearch.github.io/hppc/releases/0.9.0.RC2/api/

New features and API changes

  • GH-13: Add automatic module name to the generated JAR's manifest ("com.carrotsearch.hppc")

Improvements

  • HPPC-191: Improve Accountable implementation (Haoyu Zhai)

0.9.0.RC1

08 Sep 14:07
Compare
Choose a tag to compare

Release candidate preview for 0.9.0.

Resolved issues:
https://issues.carrot2.org/secure/ReleaseNote.jspa?projectId=10070&version=15325
https://github.com/carrotsearch/hppc/milestone/1?closed=1

JavaDoc:
http://carrotsearch.github.io/hppc/releases/0.9.0.RC1/api/

New features and API changes

  • HPPC-179: Update java template parser to support Java 8.

  • HPPC-186: A different strategy has been implemented for collision avalanche avoidance. This
    results in removal of Scatter* maps and sets and their unification with their Hash*
    counterparts.
    This change should not affect any existing code unless it relied on static, specific
    ordering of keys. A side effect of this change is that key/value enumerators will return
    a different ordering of their container's values on each invocation. If your code relies
    on the order of values in associative arrays, it must order them after they are retrieved.
    (Bruno Roustant).

  • HPPC-176: A new set of associative containers implementing Worm Hashing has been added.
    This strategy is appropriate for a medium sized maps and sets (less than 2M entries).
    It takes more time to put entries in the map because it maintains chains of entries having
    the same hash. Then the lookup speed is fast even if the map is heavy loaded or hashes are
    clustered. On average it takes slightly less memory than KTypeVTypeHashMap: even though
    it allocates more data structures, the reasonable load factor is higher (it varies around 80%)
    so containers enlarge later.
    (Bruno Roustant, Aleksandr Danilin).

Improvements

  • HPPC-183: Simplify IndirectSort comparator to use IntBinaryOperator.

  • HPPC-177: Modernize the build system to gradle and make it work with IntelliJ.

  • HPPC-184: Use closures where possible to make the resulting JAR smaller.

Bugs

  • HPPC-187: ObjectIdentityHashSet redistributes keys according to key.hashCode rather than object identity's hash code.
    (Bruno Roustant).

Release 0.8.2

01 Jun 08:51
Compare
Choose a tag to compare

This release adds utility methods for estimating allocated and used memory.

  • HPPC-175: Method estimating memory usage (Haoyu Zhai)

Resolved issues:
https://issues.carrot2.org/projects/HPPC/versions/13522
JavaDoc:
http://carrotsearch.github.io/hppc/releases/0.8.2/api

Release 0.8.1

24 May 09:50
Compare
Choose a tag to compare

A bug fix release removing Intrisics class that somehow got included in the 0.8.0.

Resolved issues:
https://issues.carrot2.org/projects/HPPC/versions/13521
JavaDoc:
http://carrotsearch.github.io/hppc/releases/0.8.1/api

Release 0.8.0

24 May 09:49
Compare
Choose a tag to compare

This is a maintenance release that drops the esoteric JARA completely, updates and modernizes project build process and brings a contractual improvement to map.get (return of default values is now guaranteed).

Resolved issues:
https://issues.carrot2.org/projects/HPPC/versions/12628
JavaDoc:
http://carrotsearch.github.io/hppc/releases/0.8.0/api

Release 0.7.3

22 Oct 10:27
Compare
Choose a tag to compare

This is a bugfix release improving performance and documentation.

Check out the changelog.

Release 0.7.2

25 Oct 11:43
Compare
Choose a tag to compare

This is a bugfix release providing OSGi support (http://issues.carrot2.org/secure/ReleaseNote.jspa?projectId=10070&version=12632).

Check out the changelog, virtually all the code remains identical to 0.7.1.