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

Make Page always fully init #1193

Merged
merged 6 commits into from
May 2, 2024
Merged

Make Page always fully init #1193

merged 6 commits into from
May 2, 2024

Commits on May 2, 2024

  1. Make Page always fully init

    Per discussion on the snapshotting proposal,
    this PR changes the type of `Page.row_data` to `[u8; _]`,
    where previously it was `[MaybeUninit<u8>; _]`.
    
    This turns out to be shockingly easy,
    as our serialization codepaths never write padding bytes into a page.
    The only place pages ever became `poison` was the initial allocation;
    changing this to `alloc_zeroed` causes the `row_data` to always be valid at `[u8; _]`.
    
    The majority of this diff is replacing `MaybeUninit`-specific operators
    with their initialized equivalents,
    and updating comments and documentation to reflect the new requirements.
    
    This change also revealed a bug in the benchmarks
    introduced when we swapped the order of sum tags and payloads
    ( #1063 ),
    where benchmarks used a hardcoded offset for the tag which had not been updated.
    gefjon committed May 2, 2024
    Configuration menu
    Copy the full SHA
    9ce07c7 View commit details
    Browse the repository at this point in the history
  2. Update blake3

    Blake3 only supports running under Miri as of 1.15.1, the latest version.
    Prior versions hard-depended on SIMD intrinsics which Miri doesn't support.
    gefjon committed May 2, 2024
    Configuration menu
    Copy the full SHA
    e169ad3 View commit details
    Browse the repository at this point in the history
  3. Address Mazdak's review.

    Still pending his agreeing with me that `poison` is a better name than `uninit`.
    gefjon committed May 2, 2024
    Configuration menu
    Copy the full SHA
    7368f9b View commit details
    Browse the repository at this point in the history
  4. "Poison" -> "uninit"

    Against my best wishes, for consistency with the broader Rust community's poor choices.
    gefjon committed May 2, 2024
    Configuration menu
    Copy the full SHA
    5041422 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    d51d81a View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    0d7d486 View commit details
    Browse the repository at this point in the history