Skip to content

Commit dbd042f

Browse files
Update Rust crate rand to 0.9.0 (#664)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [rand](https://rust-random.github.io/book) ([source](https://redirect.github.com/rust-random/rand)) | workspace.dependencies | minor | `0.8.5` -> `0.9.0` | --- ### Release Notes <details> <summary>rust-random/rand (rand)</summary> ### [`v0.9.0`](https://redirect.github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#090---2025-01-27) [Compare Source](https://redirect.github.com/rust-random/rand/compare/0.8.5...0.9.0) ##### Security and unsafe - Policy: "rand is not a crypto library" ([#&#8203;1514](https://redirect.github.com/rust-random/rand/issues/1514)) - Remove fork-protection from `ReseedingRng` and `ThreadRng`. Instead, it is recommended to call `ThreadRng::reseed` on fork. ([#&#8203;1379](https://redirect.github.com/rust-random/rand/issues/1379)) - Use `zerocopy` to replace some `unsafe` code ([#&#8203;1349](https://redirect.github.com/rust-random/rand/issues/1349), [#&#8203;1393](https://redirect.github.com/rust-random/rand/issues/1393), [#&#8203;1446](https://redirect.github.com/rust-random/rand/issues/1446), [#&#8203;1502](https://redirect.github.com/rust-random/rand/issues/1502)) ##### Dependencies - Bump the MSRV to 1.63.0 ([#&#8203;1207](https://redirect.github.com/rust-random/rand/issues/1207), [#&#8203;1246](https://redirect.github.com/rust-random/rand/issues/1246), [#&#8203;1269](https://redirect.github.com/rust-random/rand/issues/1269), [#&#8203;1341](https://redirect.github.com/rust-random/rand/issues/1341), [#&#8203;1416](https://redirect.github.com/rust-random/rand/issues/1416), [#&#8203;1536](https://redirect.github.com/rust-random/rand/issues/1536)); note that 1.60.0 may work for dependents when using `--ignore-rust-version` - Update to `rand_core` v0.9.0 ([#&#8203;1558](https://redirect.github.com/rust-random/rand/issues/1558)) ##### Features - Support `std` feature without `getrandom` or `rand_chacha` ([#&#8203;1354](https://redirect.github.com/rust-random/rand/issues/1354)) - Enable feature `small_rng` by default ([#&#8203;1455](https://redirect.github.com/rust-random/rand/issues/1455)) - Remove implicit feature `rand_chacha`; use `std_rng` instead. ([#&#8203;1473](https://redirect.github.com/rust-random/rand/issues/1473)) - Rename feature `serde1` to `serde` ([#&#8203;1477](https://redirect.github.com/rust-random/rand/issues/1477)) - Rename feature `getrandom` to `os_rng` ([#&#8203;1537](https://redirect.github.com/rust-random/rand/issues/1537)) - Add feature `thread_rng` ([#&#8203;1547](https://redirect.github.com/rust-random/rand/issues/1547)) ##### API changes: rand_core traits - Add fn `RngCore::read_adapter` implementing `std::io::Read` ([#&#8203;1267](https://redirect.github.com/rust-random/rand/issues/1267)) - Add trait `CryptoBlockRng: BlockRngCore`; make `trait CryptoRng: RngCore` ([#&#8203;1273](https://redirect.github.com/rust-random/rand/issues/1273)) - Add traits `TryRngCore`, `TryCryptoRng` ([#&#8203;1424](https://redirect.github.com/rust-random/rand/issues/1424), [#&#8203;1499](https://redirect.github.com/rust-random/rand/issues/1499)) - Rename `fn SeedableRng::from_rng` -> `try_from_rng` and add infallible variant `fn from_rng` ([#&#8203;1424](https://redirect.github.com/rust-random/rand/issues/1424)) - Rename `fn SeedableRng::from_entropy` -> `from_os_rng` and add fallible variant `fn try_from_os_rng` ([#&#8203;1424](https://redirect.github.com/rust-random/rand/issues/1424)) - Add bounds `Clone` and `AsRef` to associated type `SeedableRng::Seed` ([#&#8203;1491](https://redirect.github.com/rust-random/rand/issues/1491)) ##### API changes: Rng trait and top-level fns - Rename fn `rand::thread_rng()` to `rand::rng()` and remove from the prelude ([#&#8203;1506](https://redirect.github.com/rust-random/rand/issues/1506)) - Remove fn `rand::random()` from the prelude ([#&#8203;1506](https://redirect.github.com/rust-random/rand/issues/1506)) - Add top-level fns `random_iter`, `random_range`, `random_bool`, `random_ratio`, `fill` ([#&#8203;1488](https://redirect.github.com/rust-random/rand/issues/1488)) - Re-introduce fn `Rng::gen_iter` as `random_iter` ([#&#8203;1305](https://redirect.github.com/rust-random/rand/issues/1305), [#&#8203;1500](https://redirect.github.com/rust-random/rand/issues/1500)) - Rename fn `Rng::gen` to `random` to avoid conflict with the new `gen` keyword in Rust 2024 ([#&#8203;1438](https://redirect.github.com/rust-random/rand/issues/1438)) - Rename fns `Rng::gen_range` to `random_range`, `gen_bool` to `random_bool`, `gen_ratio` to `random_ratio` ([#&#8203;1505](https://redirect.github.com/rust-random/rand/issues/1505)) - Annotate panicking methods with `#[track_caller]` ([#&#8203;1442](https://redirect.github.com/rust-random/rand/issues/1442), [#&#8203;1447](https://redirect.github.com/rust-random/rand/issues/1447)) ##### API changes: RNGs - Fix `<SmallRng as SeedableRng>::Seed` size to 256 bits ([#&#8203;1455](https://redirect.github.com/rust-random/rand/issues/1455)) - Remove first parameter (`rng`) of `ReseedingRng::new` ([#&#8203;1533](https://redirect.github.com/rust-random/rand/issues/1533)) ##### API changes: Sequences - Split trait `SliceRandom` into `IndexedRandom`, `IndexedMutRandom`, `SliceRandom` ([#&#8203;1382](https://redirect.github.com/rust-random/rand/issues/1382)) - Add `IndexedRandom::choose_multiple_array`, `index::sample_array` ([#&#8203;1453](https://redirect.github.com/rust-random/rand/issues/1453), [#&#8203;1469](https://redirect.github.com/rust-random/rand/issues/1469)) ##### API changes: Distributions: renames - Rename module `rand::distributions` to `rand::distr` ([#&#8203;1470](https://redirect.github.com/rust-random/rand/issues/1470)) - Rename distribution `Standard` to `StandardUniform` ([#&#8203;1526](https://redirect.github.com/rust-random/rand/issues/1526)) - Move `distr::Slice` -> `distr::slice::Choose`, `distr::EmptySlice` -> `distr::slice::Empty` ([#&#8203;1548](https://redirect.github.com/rust-random/rand/issues/1548)) - Rename trait `distr::DistString` -> `distr::SampleString` ([#&#8203;1548](https://redirect.github.com/rust-random/rand/issues/1548)) - Rename `distr::DistIter` -> `distr::Iter`, `distr::DistMap` -> `distr::Map` ([#&#8203;1548](https://redirect.github.com/rust-random/rand/issues/1548)) ##### API changes: Distributions - Relax `Sized` bound on `Distribution<T> for &D` ([#&#8203;1278](https://redirect.github.com/rust-random/rand/issues/1278)) - Remove impl of `Distribution<Option<T>>` for `StandardUniform` ([#&#8203;1526](https://redirect.github.com/rust-random/rand/issues/1526)) - Let distribution `StandardUniform` support all `NonZero*` types ([#&#8203;1332](https://redirect.github.com/rust-random/rand/issues/1332)) - Fns `{Uniform, UniformSampler}::{new, new_inclusive}` return a `Result` (instead of potentially panicking) ([#&#8203;1229](https://redirect.github.com/rust-random/rand/issues/1229)) - Distribution `Uniform` implements `TryFrom` instead of `From` for ranges ([#&#8203;1229](https://redirect.github.com/rust-random/rand/issues/1229)) - Add `UniformUsize` ([#&#8203;1487](https://redirect.github.com/rust-random/rand/issues/1487)) - Remove support for generating `isize` and `usize` values with `StandardUniform`, `Uniform` (except via `UniformUsize`) and `Fill` and usage as a `WeightedAliasIndex` weight ([#&#8203;1487](https://redirect.github.com/rust-random/rand/issues/1487)) - Add impl `DistString` for distributions `Slice<char>` and `Uniform<char>` ([#&#8203;1315](https://redirect.github.com/rust-random/rand/issues/1315)) - Add fn `Slice::num_choices` ([#&#8203;1402](https://redirect.github.com/rust-random/rand/issues/1402)) - Add fn `p()` for distribution `Bernoulli` to access probability ([#&#8203;1481](https://redirect.github.com/rust-random/rand/issues/1481)) ##### API changes: Weighted distributions - Add `pub` module `rand::distr::weighted`, moving `WeightedIndex` there ([#&#8203;1548](https://redirect.github.com/rust-random/rand/issues/1548)) - Add trait `weighted::Weight`, allowing `WeightedIndex` to trap overflow ([#&#8203;1353](https://redirect.github.com/rust-random/rand/issues/1353)) - Add fns `weight, weights, total_weight` to distribution `WeightedIndex` ([#&#8203;1420](https://redirect.github.com/rust-random/rand/issues/1420)) - Rename enum `WeightedError` to `weighted::Error`, revising variants ([#&#8203;1382](https://redirect.github.com/rust-random/rand/issues/1382)) and mark as `#[non_exhaustive]` ([#&#8203;1480](https://redirect.github.com/rust-random/rand/issues/1480)) ##### API changes: SIMD - Switch to `std::simd`, expand SIMD & docs ([#&#8203;1239](https://redirect.github.com/rust-random/rand/issues/1239)) ##### Reproducibility-breaking changes - Make `ReseedingRng::reseed` discard remaining data from the last block generated ([#&#8203;1379](https://redirect.github.com/rust-random/rand/issues/1379)) - Change fn `SmallRng::seed_from_u64` implementation ([#&#8203;1203](https://redirect.github.com/rust-random/rand/issues/1203)) - Allow `UniformFloat::new` samples and `UniformFloat::sample_single` to yield `high` ([#&#8203;1462](https://redirect.github.com/rust-random/rand/issues/1462)) - Fix portability of distribution `Slice` ([#&#8203;1469](https://redirect.github.com/rust-random/rand/issues/1469)) - Make `Uniform` for `usize` portable via `UniformUsize` ([#&#8203;1487](https://redirect.github.com/rust-random/rand/issues/1487)) - Fix `IndexdRandom::choose_multiple_weighted` for very small seeds and optimize for large input length / low memory ([#&#8203;1530](https://redirect.github.com/rust-random/rand/issues/1530)) ##### Reproducibility-breaking optimisations - Optimize fn `sample_floyd`, affecting output of `rand::seq::index::sample` and `rand::seq::SliceRandom::choose_multiple` ([#&#8203;1277](https://redirect.github.com/rust-random/rand/issues/1277)) - New, faster algorithms for `IteratorRandom::choose` and `choose_stable` ([#&#8203;1268](https://redirect.github.com/rust-random/rand/issues/1268)) - New, faster algorithms for `SliceRandom::shuffle` and `partial_shuffle` ([#&#8203;1272](https://redirect.github.com/rust-random/rand/issues/1272)) - Optimize distribution `Uniform`: use Canon's method (single sampling) / Lemire's method (distribution sampling) for faster sampling (breaks value stability; [#&#8203;1287](https://redirect.github.com/rust-random/rand/issues/1287)) - Optimize fn `sample_single_inclusive` for floats (+~20% perf) ([#&#8203;1289](https://redirect.github.com/rust-random/rand/issues/1289)) ##### Other optimisations - Improve `SmallRng` initialization performance ([#&#8203;1482](https://redirect.github.com/rust-random/rand/issues/1482)) - Optimise SIMD widening multiply ([#&#8203;1247](https://redirect.github.com/rust-random/rand/issues/1247)) ##### Other - Add `Cargo.lock.msrv` file ([#&#8203;1275](https://redirect.github.com/rust-random/rand/issues/1275)) - Reformat with `rustfmt` and enforce ([#&#8203;1448](https://redirect.github.com/rust-random/rand/issues/1448)) - Apply Clippy suggestions and enforce ([#&#8203;1448](https://redirect.github.com/rust-random/rand/issues/1448), [#&#8203;1474](https://redirect.github.com/rust-random/rand/issues/1474)) - Move all benchmarks to new `benches` crate ([#&#8203;1329](https://redirect.github.com/rust-random/rand/issues/1329), [#&#8203;1439](https://redirect.github.com/rust-random/rand/issues/1439)) and migrate to Criterion ([#&#8203;1490](https://redirect.github.com/rust-random/rand/issues/1490)) ##### Documentation - Improve `ThreadRng` related docs ([#&#8203;1257](https://redirect.github.com/rust-random/rand/issues/1257)) - Docs: enable experimental `--generate-link-to-definition` feature ([#&#8203;1327](https://redirect.github.com/rust-random/rand/issues/1327)) - Better doc of crate features, use `doc_auto_cfg` ([#&#8203;1411](https://redirect.github.com/rust-random/rand/issues/1411), [#&#8203;1450](https://redirect.github.com/rust-random/rand/issues/1450)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 8pm,before 6am" in timezone America/Los_Angeles, Automerge - "after 8pm,before 6am" in timezone America/Los_Angeles. 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMzcuMSIsInVwZGF0ZWRJblZlciI6IjQwLjAuMC1uZXh0LjYiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIiLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19--> --------- Co-authored-by: oxide-renovate[bot] <146848827+oxide-renovate[bot]@users.noreply.github.com> Co-authored-by: Kyle Simpson <[email protected]>
1 parent e6b7439 commit dbd042f

File tree

4 files changed

+83
-24
lines changed

4 files changed

+83
-24
lines changed

Cargo.lock

+71-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ pcap-parser = "0.16"
6060
postcard = { version = "1", features = ["alloc"], default-features = false }
6161
proc-macro2 = { version = "1" }
6262
quote = "1.0"
63-
rand = "0.8.5"
63+
rand = "0.9.0"
6464
ron = "0.8"
6565
serde = { version = "1.0", features = ["alloc", "derive"], default-features = false }
6666
serde_json = { version = "1.0" }

bench/src/dtrace.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
// License, v. 2.0. If a copy of the MPL was not distributed with this
33
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
44

5-
// Copyright 2024 Oxide Computer Company
5+
// Copyright 2025 Oxide Computer Company
66

77
//! Tools for parsing lquantize histograms into `criterion`.
88
99
use super::MeasurementInfo;
1010
use criterion::measurement::Measurement;
1111
use criterion::measurement::ValueFormatter;
1212
use criterion::measurement::WallTime;
13-
use rand::distributions::WeightedIndex;
13+
use rand::distr::weighted::WeightedIndex;
1414
use rand::prelude::*;
1515
use std::path::Path;
1616
use std::sync::OnceLock;
@@ -157,7 +157,7 @@ impl Measurement for DTraceHisto {
157157
// from. We build up the WeightedIndex once it is needed, at which
158158
// point it will effectively mirror the input distribution.
159159
fn end(&self, _i: Self::Intermediate) -> Self::Value {
160-
let mut rng = thread_rng();
160+
let mut rng = rand::rng();
161161
let idx = self.rng_idx.get_or_init(|| {
162162
WeightedIndex::new(self.buckets.iter().map(|x| x.1)).unwrap()
163163
});

bench/src/kbench/measurement.rs

+8-10
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
// License, v. 2.0. If a copy of the MPL was not distributed with this
33
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
44

5-
// Copyright 2024 Oxide Computer Company
5+
// Copyright 2025 Oxide Computer Company
66

77
use super::*;
88
use crate::dtrace::DTraceHisto;
99
use clap::ValueEnum;
1010
use criterion::Criterion;
11-
use rand::distributions::Distribution;
12-
use rand::distributions::WeightedIndex;
13-
use rand::thread_rng;
11+
use rand::distr::weighted::WeightedIndex;
12+
use rand::distr::Distribution;
13+
use rand::rng;
1414
use rand::Rng;
1515
use std::fs;
1616
use std::fs::File;
@@ -242,7 +242,7 @@ pub fn process_output(
242242
let mut c =
243243
Criterion::default().measurement_time(Duration::from_secs(20));
244244

245-
let mut rng = thread_rng();
245+
let mut rng = rng();
246246
let idx =
247247
WeightedIndex::new(histo.buckets.iter().map(|x| x.1)).unwrap();
248248

@@ -255,11 +255,9 @@ pub fn process_output(
255255
let sample = &histo.buckets[chosen_bucket].0;
256256

257257
// uniformly distribute within bucket.
258-
Duration::from_nanos(
259-
rng.gen_range(
260-
*sample..*sample + histo.bucket_width,
261-
),
262-
)
258+
Duration::from_nanos(rng.random_range(
259+
*sample..*sample + histo.bucket_width,
260+
))
263261
})
264262
.sum()
265263
})

0 commit comments

Comments
 (0)