Changelog
View Source0.1.1
Added
- Module-level
@docdistinguishing the two hash variants and pointing at Cassandra/Scylla token-routing as the use case formurmur3_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.shwith the correct OTP 27+-eval/-s init stopoption order. - CI matrix: OTP 25, 26, 27, 28 in
erlang:${otp}containers. - Hex package published with
rebar3_ex_docdocumentation. - Byte-for-byte compatible with the legacy
lpgauth/murmurfork.