Skip to main content

CHANGELOG.md

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