Changelog

View Source

0.1.1

Added

  • Module-level @doc distinguishing the two hash variants and pointing at Cassandra/Scylla token-routing as the use case for murmur3_cassandra_x64_128/1. The function-level docstrings already covered this, but the module landing page on hexdocs was empty; now it's a one-stop overview.

Plan-time notes

  • C3 also suggested re-tuning the inline-path BYTES_PER_REDUCTION (currently 500). Skipping: re-tuning requires measurement on the target hardware, and the existing value is conservatively low (over-reporting cost to the scheduler is benign; under-reporting starves siblings). Without fresh benchmark data the safer move is to leave it alone. The c_src/murmur_nif.c leading comment already documents the calibration target (~5 GB/s, ~500 bytes/red) so a future tuner has the context.

0.1.0

Initial release.

  • murmur_nif:murmur3_x64_128/1 -- standard MurmurHash3 128-bit hash for 64-bit platforms (Austin Appleby).
  • murmur_nif:murmur3_cassandra_x64_128/1 -- Cassandra/Scylla compatible variant using signed-byte arithmetic.
  • Vendors public-domain MurmurHash3 source from Austin Appleby.
  • Raw NIF (no rustler, no enif wrapper crate). Dirty CPU scheduler dispatch for inputs above 20 KB. Inline path reports its cost to the scheduler via enif_consume_timeslice, proportional to bytes processed (cost model: ~500 bytes/reduction, calibrated for MurmurHash3's throughput).
  • Build via c_src/build.sh with the correct OTP 27+ -eval/-s init stop option order.
  • CI matrix: OTP 25, 26, 27, 28 in erlang:${otp} containers.
  • Hex package published with rebar3_ex_doc documentation.
  • Byte-for-byte compatible with the legacy lpgauth/murmur fork.