Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unwind just the "pseudorandom probing" part of recent sets,tables changes #13816

Merged
merged 2 commits into from
Mar 31, 2020
Merged

Commits on Mar 31, 2020

  1. Unwind just the "pseudorandom probing" (whole hash-code-keyed variable

    stride double hashing) part of recent sets & tables changes (which has
    still been causing bugs over a month later (e.g., two days ago
    #13794) as well as still having
    several "figure this out" implementation question comments in them (see
    just diffs of this PR).
    
    This topic has been discussed in many places:
      #13393
      #13418
      #13440
      #13794
    
    Alternative/non-mandatory stronger integer hashes (or vice-versa opt-in
    identity hashes) are a better solution that is more general (no illusion
    of one hard-coded sequence solving all problems) while retaining the
    virtues of linear probing such as cache obliviousness and age-less tables
    under delete-heavy workloads (still untested after a month of this change).
    
    The only real solution for truly adversarial keys is a hash keyed off of
    data unobservable to attackers.  That all fits better with a few families
    of user-pluggable/define-switchable hashes which can be provided in a
    separate PR more about `hashes.nim`.
    
    This PR carefully preserves the better (but still hard coded!) probing
    of the  `intsets` and other recent fixes like `move` annotations, hash
    order invariant tests, `intsets.missingOrExcl` fixing, and the move of
    `rightSize` into `hashcommon.nim`.
    c-blake committed Mar 31, 2020
    Configuration menu
    Copy the full SHA
    70c81c4 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    0433f4b View commit details
    Browse the repository at this point in the history