Conversation
This was referenced Aug 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Supersedes #29, which bumps the dependency but not the code that breaks with it.
rand0.9 renamedSeedableRng::from_entropytofrom_os_rng, andmake_permutationscalls it on the unseeded branch — so #29 as it stands does not compile. This does the bump
and the rename together.
Why now rather than later
0.9 changes what a seed means. Its changelog lists both of the things this crate uses
under Reproducibility-breaking changes:
Change fn SmallRng::seed_from_u64 implementation(#1203)New, faster algorithms for SliceRandom::shuffle and partial_shuffle(#1272)Measured rather than assumed —
make_permutations(3, 20, Some(42)):[16, 2, 5, 14, 1, 12, 11, 19, 17, 15][16, 17, 19, 6, 9, 5, 18, 8, 10, 11]So a given seed produces different permutations, and therefore different p-values, either
side of this change.
That is normally a good reason to defer. Here it is the reason to hurry: seeding landed days
ago (#31) and is not yet in a released
WebGestaltR, so no seed has been published byanyone yet. Nothing outside this repository depends on the current stream. Take the break
now and it costs a golden file; take it in six months and it invalidates every seed a user
has quoted in a methods section in between.
Not included: rand 0.10
0.10 requires Edition 2024 and MSRV 1.85, which would raise the floor for every downstream R
and Python user, and it removes
from_os_rngagain. That deserves its own decision. 0.9'sMSRV is 1.63.0, exactly what both manifests already declare, so this change needs no
toolchain bump.
Verified
cargo test --allpasses — 5 tests across 5 suites, including themake_permutationsdoctest. No other
randAPI is used: the whole surface isSliceRandom,SeedableRng,seed_from_u64,from_os_rngandshuffle, all ingsea.rs.Downstream, after merge
WebGestaltRneedscargo update -p webgestalt_liband a regeneratedvendor.tar.xzis the check doing its job
NEWS.mdline: seeds are comparable within a version, not across versions