2.0.2 (2026-09-03)
Added
- Comprehensive test coverage for block and tail boundary vectors (0 to 33 bytes) across all Murmur3 variants.
- Regression tests verifying Erlang term hashing against serialized binary representations.
Changed
- Optimized tail processing in 128-bit hashes (
Murmur.Hash128X86andMurmur.Hash128X64) by decoding 32-bit and 64-bit integers directly via binary pattern matching, eliminating intermediate tail splitting. - Added fast-path early exit for empty tails in 128-bit hashes.
- Inlined hot arithmetic, round mixing, and intermixing functions in 128-bit hash implementations.
- Streamlined dispatch in the top-level
Murmurmodule to directly invoke hash implementations for binary inputs. - Simplified tail termination in
Murmur.Hash32X86with direct empty binary pattern matching. - Standardized binary pattern matching to canonical bit syntax (
32-little,64-little). - Updated documentation examples, local benchmark scripts, and benchmark results in
README.md.
Removed
- Removed unused and orphaned helper functions from
Murmur.Helpers(fmix32/1,fmix64/1,swap_uint/1,k_32_op/4,k_64_op/4,rotl32/2,rotl64/2,bxor_and_shift_right/2). - Removed redundant masking operations and constant function arguments in internal round helpers.
2.0.1 (2026-08-19)
Changed
- Reduced allocations in the 128-bit hash implementations by replacing fixed-size collection pipelines with direct state handling.
- Improved hashing performance and memory usage with compiler-guided arithmetic optimizations while preserving existing hash results.
2.0.0 (2024-07-26)
Breaking changes
- Refactor and fix 128-bit results according to the original (SMHasher) version, this fixes the issue with the 128-bit results being incorrect, but it also means that the 128-bit results are not compatible with the previous version of the library, therefore the version has been bumped to 2.0.0.
1.0.4 (2024-07-22)
Changed
- Stopped testing against Erlang terms due to potential inconsistencies between Erlang versions.
- Fixed compiler warnings.
1.0.3 and earlier
- See the Git history for changes prior to 1.0.4