What's Changed
- feat: switch from linear probing to triangular (quadratic) probing by @bluuewhale in #9
- feat:
ConcurrentSwissMapby @bluuewhale in #10 - fix: correct
SwissMapbackshift 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 jmhfails on macOS/Linux due to missingjdk.incubator.vectormodule (#12) by @bluuewhale in #13
Detailed Change Logs
Added
- Added
ConcurrentSwissMap: a sharded, thread-safe wrapper aroundSwissMap. (#10) - Added Guava testlib + Apache Commons Collections test suites; expanded
ConcurrentSwissMapConcurrentMapAPI and fixed deterministic random-cycle initialization in collection classes. (#11, thanks @ben-manes)
Fixed
- Fixed
./gradlew jmhfailing on macOS/Linux due to missing--add-modules jdk.incubator.vectorfor the JMH bytecode generator task. (#13)
Changed
SwissMapandSwissSimdMapprobing 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 unusednumGroups/visitedGroupscounters (keep onlygroupMask).ConcurrentSwissMapsharding now ignores the lower 7 bits reserved forSwissMap's H2 (control-byte tag) and shards by the remaining high bits (H1).ConcurrentSwissMapnow reuses the precomputedHashing.smearedHash(key)when calling into per-shardSwissMapoperations to avoid hashing the same key twice on hot paths (get/containsKey/put/remove).
New Contributors
- @ben-manes made their first contribution in #11
Full Changelog: v0.1.7...v0.1.8