S3.1 — Rust core: edition 2024, rand 0.10, getrandom 0.4
Intent
Bring the oxmpl core onto current Rust dependencies so everything downstream (bindings, CI, 0.9.0 validation work) starts from the new rand API. Breaking for Rust users who implement StateSpace or Goal (public traits expose &mut impl Rng).
Acceptance criteria
Tasks
Completion (2026-10-09)
Commit 08dadb6 on branch toolchain-refresh (originally a79e10f; rewritten before push): build(deps)!: move to edition 2024, rand 0.10 and getrandom 0.4.
Evidence (run on the staged snapshot; HEAD re-checked for fmt):
- Edition 2024 +
rust-version = "1.85"inherited from the workspace root in all 4 crates (confirmed viacargo metadata). - Lock: rand 0.10.3, rand_core 0.10.1, getrandom 0.4.3;
rand_chachagone. - Rust tests 91 passed / 0 failed, including all 5 seeded-RNG guard tests (only change to that file: the
RngExtimport). - Python 34/34, JS (wasm-pack + vitest) 30/30 — the three parts of
just test-all, run individually. cargo clippy --workspace --all-targets -- -D warningsclean;cargo fmt --all --checkclean at HEAD.oxmpl-jsbuilds forwasm32-unknown-unknown.
Folded in (same code, no new story): RngWrapper adaptor in any_state_space.rs deleted (rand 0.10 makes &mut dyn Rng an Rng); .cargo/config.toml deleted (the getrandom_backend="wasm_js" flag is a no-op since getrandom 0.3.4; WASM build + vitest verified without it).
Notes:
- The
BREAKING CHANGE:footer names the rand trait rename but not the MSRV raise to 1.85. Acceptable for the AC; mention MSRV in the 0.8.0 release notes (S3.6). just test-allwas not run as the recipe itself: the shell'sVIRTUAL_ENVpointed at the deleted~/Documents/casual/oxmpl/.venv. Re-entering the worktree (direnv) fixes it.