# Changelog
## 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.