Skip to content

docs(hash): SMHASHER3.md leads with current state; add same-rig comparison table - #226

Merged
helly25 merged 5 commits into
mainfrom
hash/smhasher3-doc-order
Jul 4, 2026
Merged

docs(hash): SMHASHER3.md leads with current state; add same-rig comparison table#226
helly25 merged 5 commits into
mainfrom
hash/smhasher3-doc-order

Conversation

@helly25

@helly25 helly25 commented Jul 4, 2026

Copy link
Copy Markdown
Collaborator

Redoes mbo/hash/SMHASHER3.md as a pure current-state document — the historical narrative (initial 147/188 run, hardening chronology) is gone; a status doc, not a chronicle.

Same-rig comparison table — all six variants measured by us under identical conditions (same SMHasher3 build @ 6ab4343, container, flags, machine); no quoting of upstream results:

Algorithm Bits SMHasher3 result Failure families
rapidhash 64 PASS - 188/188 none
mh 64 FAIL - 183/188 BIC, Sparse, Bitflip
xxh64 64 FAIL - 181/188 SeedBlockLen, SeedBIC
xxh3 64 FAIL - 166/188 BIC, Sparse, PerlinNoise, Bitflip, SeedZeroes, SeedSparse
mh 128 FAIL - 163/188 + Zeroes, Permutation, TwoBytes, SeedZeroes, SeedBlockOffset
xxh3 128 FAIL - 162/188 + Bitflip, SeedBlockLen, SeedBlockOffset, SeedBIC

Notable:

  • SMHasher3 is much stricter than the original SMHasher — the xxHash family fails its newer Seed* batteries. rapidhash is the only clean pass, making the 64-bit default rationale self-evident from data; mh (WIP) places above the xxHash family.
  • Every 128-bit variant fails more than its 64-bit sibling (wider output = more statistical surface); no tested 128-bit variant passes cleanly. xxh3 stays the 128-bit default as the only canonical-value 128-bit format in the library.
  • mh's native 128-bit variant exposes lane correlation that the 64-bit fold hides; analyzed in the doc and added to the "mh is WIP" TODO item (lane decorrelation).

The doc keeps: results table + interpretation, mh's failure analysis (core-round diffusion + 128-bit lane correlation, TODO pointers), and a reproduction-grade methodology section.

helly25 added 5 commits July 4, 2026 16:00
The document led with the obsolete initial verdict (147/188) and buried the
post-hardening re-run; skimmers read the wrong result. Now: current state
(five remaining core-round failures) first, initial run kept as history.
@helly25
helly25 requested a review from Fab-Cat July 4, 2026 16:19
@helly25
helly25 merged commit fd1d4bb into main Jul 4, 2026
16 of 24 checks passed
@helly25
helly25 deleted the hash/smhasher3-doc-order branch July 4, 2026 18:13
helly25 added a commit that referenced this pull request Jul 4, 2026
# Conflicts:
#	CHANGELOG.md
#	mbo/digest/BUILD.bazel
#	mbo/digest/digest.h
#	mbo/digest/digest_test.cc
#	mbo/hash/hash_internal_util.h
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants