github bluuewhale/hash-smith v0.1.8

22 days ago

What's Changed

  • feat: switch from linear probing to triangular (quadratic) probing by @bluuewhale in #9
  • feat: ConcurrentSwissMap by @bluuewhale in #10
  • fix: correct SwissMap backshift delete to preserve probe invariants + stabilize tests (arm64/JDK25) by @bluuewhale in #6
  • test: add guava testlib and apache commons test suite by @ben-manes in #11
  • Fix: ./gradlew jmh fails on macOS/Linux due to missing jdk.incubator.vector module (#12) by @bluuewhale in #13

Detailed Change Logs

Added

  • Added ConcurrentSwissMap: a sharded, thread-safe wrapper around SwissMap. (#10)
  • Added Guava testlib + Apache Commons Collections test suites; expanded ConcurrentSwissMap ConcurrentMap API and fixed deterministic random-cycle initialization in collection classes. (#11, thanks @ben-manes)

Fixed

  • Fixed ./gradlew jmh failing on macOS/Linux due to missing --add-modules jdk.incubator.vector for the JMH bytecode generator task. (#13)

Changed

  • SwissMap and SwissSimdMap probing changed from linear probing to triangular/quadratic probing (group-step sequence +1, +2, +3, ...) to reduce primary clustering. (#9)
  • SwissMap: removed the probe-cycle guard and the unused numGroups / visitedGroups counters (keep only groupMask).
  • ConcurrentSwissMap sharding now ignores the lower 7 bits reserved for SwissMap's H2 (control-byte tag) and shards by the remaining high bits (H1).
  • ConcurrentSwissMap now reuses the precomputed Hashing.smearedHash(key) when calling into per-shard SwissMap operations to avoid hashing the same key twice on hot paths (get/containsKey/put/remove).

New Contributors

Full Changelog: v0.1.7...v0.1.8

Don't miss a new hash-smith release

NewReleases is sending notifications on new releases.