This PR contains the following updates:
| Package |
Type |
Update |
Change |
| rand (source) |
workspace.dependencies |
minor |
0.8.0 -> 0.9.0 |
Release Notes
rust-random/rand (rand)
Compare Source
Security and unsafe
- Policy: "rand is not a crypto library" (#1514)
- Remove fork-protection from
ReseedingRng and ThreadRng. Instead, it is recommended to call ThreadRng::reseed on fork. (#1379)
- Use
zerocopy to replace some unsafe code (#1349, #1393, #1446, #1502)
Dependencies
Features
- Support
std feature without getrandom or rand_chacha (#1354)
- Enable feature
small_rng by default (#1455)
- Remove implicit feature
rand_chacha; use std_rng instead. (#1473)
- Rename feature
serde1 to serde (#1477)
- Rename feature
getrandom to os_rng (#1537)
- Add feature
thread_rng (#1547)
API changes: rand_core traits
- Add fn
RngCore::read_adapter implementing std::io::Read (#1267)
- Add trait
CryptoBlockRng: BlockRngCore; make trait CryptoRng: RngCore (#1273)
- Add traits
TryRngCore, TryCryptoRng (#1424, #1499)
- Rename
fn SeedableRng::from_rng -> try_from_rng and add infallible variant fn from_rng (#1424)
- Rename
fn SeedableRng::from_entropy -> from_os_rng and add fallible variant fn try_from_os_rng (#1424)
- Add bounds
Clone and AsRef to associated type SeedableRng::Seed (#1491)
API changes: Rng trait and top-level fns
- Rename fn
rand::thread_rng() to rand::rng() and remove from the prelude (#1506)
- Remove fn
rand::random() from the prelude (#1506)
- Add top-level fns
random_iter, random_range, random_bool, random_ratio, fill (#1488)
- Re-introduce fn
Rng::gen_iter as random_iter (#1305, #1500)
- Rename fn
Rng::gen to random to avoid conflict with the new gen keyword in Rust 2024 (#1438)
- Rename fns
Rng::gen_range to random_range, gen_bool to random_bool, gen_ratio to random_ratio (#1505)
- Annotate panicking methods with
#[track_caller] (#1442, #1447)
API changes: RNGs
- Fix
<SmallRng as SeedableRng>::Seed size to 256 bits (#1455)
- Remove first parameter (
rng) of ReseedingRng::new (#1533)
API changes: Sequences
- Split trait
SliceRandom into IndexedRandom, IndexedMutRandom, SliceRandom (#1382)
- Add
IndexedRandom::choose_multiple_array, index::sample_array (#1453, #1469)
API changes: Distributions: renames
- Rename module
rand::distributions to rand::distr (#1470)
- Rename distribution
Standard to StandardUniform (#1526)
- Move
distr::Slice -> distr::slice::Choose, distr::EmptySlice -> distr::slice::Empty (#1548)
- Rename trait
distr::DistString -> distr::SampleString (#1548)
- Rename
distr::DistIter -> distr::Iter, distr::DistMap -> distr::Map (#1548)
API changes: Distributions
- Relax
Sized bound on Distribution<T> for &D (#1278)
- Remove impl of
Distribution<Option<T>> for StandardUniform (#1526)
- Let distribution
StandardUniform support all NonZero* types (#1332)
- Fns
{Uniform, UniformSampler}::{new, new_inclusive} return a Result (instead of potentially panicking) (#1229)
- Distribution
Uniform implements TryFrom instead of From for ranges (#1229)
- Add
UniformUsize (#1487)
- Remove support for generating
isize and usize values with StandardUniform, Uniform (except via UniformUsize) and Fill and usage as a WeightedAliasIndex weight (#1487)
- Add impl
DistString for distributions Slice<char> and Uniform<char> (#1315)
- Add fn
Slice::num_choices (#1402)
- Add fn
p() for distribution Bernoulli to access probability (#1481)
API changes: Weighted distributions
- Add
pub module rand::distr::weighted, moving WeightedIndex there (#1548)
- Add trait
weighted::Weight, allowing WeightedIndex to trap overflow (#1353)
- Add fns
weight, weights, total_weight to distribution WeightedIndex (#1420)
- Rename enum
WeightedError to weighted::Error, revising variants (#1382) and mark as #[non_exhaustive] (#1480)
API changes: SIMD
- Switch to
std::simd, expand SIMD & docs (#1239)
Reproducibility-breaking changes
- Make
ReseedingRng::reseed discard remaining data from the last block generated (#1379)
- Change fn
SmallRng::seed_from_u64 implementation (#1203)
- Allow
UniformFloat::new samples and UniformFloat::sample_single to yield high (#1462)
- Fix portability of distribution
Slice (#1469)
- Make
Uniform for usize portable via UniformUsize (#1487)
- Fix
IndexdRandom::choose_multiple_weighted for very small seeds and optimize for large input length / low memory (#1530)
Reproducibility-breaking optimisations
- Optimize fn
sample_floyd, affecting output of rand::seq::index::sample and rand::seq::SliceRandom::choose_multiple (#1277)
- New, faster algorithms for
IteratorRandom::choose and choose_stable (#1268)
- New, faster algorithms for
SliceRandom::shuffle and partial_shuffle (#1272)
- Optimize distribution
Uniform: use Canon's method (single sampling) / Lemire's method (distribution sampling) for faster sampling (breaks value stability; #1287)
- Optimize fn
sample_single_inclusive for floats (+~20% perf) (#1289)
Other optimisations
- Improve
SmallRng initialization performance (#1482)
- Optimise SIMD widening multiply (#1247)
Other
- Add
Cargo.lock.msrv file (#1275)
- Reformat with
rustfmt and enforce (#1448)
- Apply Clippy suggestions and enforce (#1448, #1474)
- Move all benchmarks to new
benches crate (#1329, #1439) and migrate to Criterion (#1490)
Documentation
- Improve
ThreadRng related docs (#1257)
- Docs: enable experimental
--generate-link-to-definition feature (#1327)
- Better doc of crate features, use
doc_auto_cfg (#1411, #1450)
Compare Source
Fixes
- Fix build on non-32/64-bit architectures (#1144)
- Fix "min_const_gen" feature for
no_std (#1173)
- Check
libc::pthread_atfork return value with panic on error (#1178)
- More robust reseeding in case
ReseedingRng is used from a fork handler (#1178)
- Fix nightly: remove unused
slice_partition_at_index feature (#1215)
- Fix nightly +
simd_support: update packed_simd (#1216)
Rngs
StdRng: Switch from HC128 to ChaCha12 on emscripten (#1142).
We now use ChaCha12 on all platforms.
Documentation
- Added docs about rand's use of const generics (#1150)
- Better random chars example (#1157)
Compare Source
Additions
- Use const-generics to support arrays of all sizes (#1104)
- Implement
Clone and Copy for Alphanumeric (#1126)
- Add
Distribution::map to derive a distribution using a closure (#1129)
- Add
Slice distribution (#1107)
- Add
DistString trait with impls for Standard and Alphanumeric (#1133)
Other
- Reorder asserts in
Uniform float distributions for easier debugging of non-finite arguments
(#1094, #1108)
- Add range overflow check in
Uniform float distributions (#1108)
- Deprecate
rngs::adapter::ReadRng (#1130)
Compare Source
Fixes
- Fix
no-std + alloc build by gating choose_multiple_weighted on std (#1088)
Compare Source
Fixes
- Fix panic in
UniformInt::sample_single_inclusive and Rng::gen_range when
providing a full integer range (eg 0..=MAX) (#1087)
Compare Source
Other
- Enable all stable features in the playground (#1081)
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [rand](https://rust-random.github.io/book) ([source](https://github.com/rust-random/rand)) | workspace.dependencies | minor | `0.8.0` -> `0.9.0` |
---
### Release Notes
<details>
<summary>rust-random/rand (rand)</summary>
### [`v0.9.0`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#090---2025年01月27日)
[Compare Source](https://github.com/rust-random/rand/compare/0.8.5...0.9.0)
##### Security and unsafe
- Policy: "rand is not a crypto library" ([#​1514](https://github.com/rust-random/rand/issues/1514))
- Remove fork-protection from `ReseedingRng` and `ThreadRng`. Instead, it is recommended to call `ThreadRng::reseed` on fork. ([#​1379](https://github.com/rust-random/rand/issues/1379))
- Use `zerocopy` to replace some `unsafe` code ([#​1349](https://github.com/rust-random/rand/issues/1349), [#​1393](https://github.com/rust-random/rand/issues/1393), [#​1446](https://github.com/rust-random/rand/issues/1446), [#​1502](https://github.com/rust-random/rand/issues/1502))
##### Dependencies
- Bump the MSRV to 1.63.0 ([#​1207](https://github.com/rust-random/rand/issues/1207), [#​1246](https://github.com/rust-random/rand/issues/1246), [#​1269](https://github.com/rust-random/rand/issues/1269), [#​1341](https://github.com/rust-random/rand/issues/1341), [#​1416](https://github.com/rust-random/rand/issues/1416), [#​1536](https://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 ([#​1558](https://github.com/rust-random/rand/issues/1558))
##### Features
- Support `std` feature without `getrandom` or `rand_chacha` ([#​1354](https://github.com/rust-random/rand/issues/1354))
- Enable feature `small_rng` by default ([#​1455](https://github.com/rust-random/rand/issues/1455))
- Remove implicit feature `rand_chacha`; use `std_rng` instead. ([#​1473](https://github.com/rust-random/rand/issues/1473))
- Rename feature `serde1` to `serde` ([#​1477](https://github.com/rust-random/rand/issues/1477))
- Rename feature `getrandom` to `os_rng` ([#​1537](https://github.com/rust-random/rand/issues/1537))
- Add feature `thread_rng` ([#​1547](https://github.com/rust-random/rand/issues/1547))
##### API changes: rand_core traits
- Add fn `RngCore::read_adapter` implementing `std::io::Read` ([#​1267](https://github.com/rust-random/rand/issues/1267))
- Add trait `CryptoBlockRng: BlockRngCore`; make `trait CryptoRng: RngCore` ([#​1273](https://github.com/rust-random/rand/issues/1273))
- Add traits `TryRngCore`, `TryCryptoRng` ([#​1424](https://github.com/rust-random/rand/issues/1424), [#​1499](https://github.com/rust-random/rand/issues/1499))
- Rename `fn SeedableRng::from_rng` -> `try_from_rng` and add infallible variant `fn from_rng` ([#​1424](https://github.com/rust-random/rand/issues/1424))
- Rename `fn SeedableRng::from_entropy` -> `from_os_rng` and add fallible variant `fn try_from_os_rng` ([#​1424](https://github.com/rust-random/rand/issues/1424))
- Add bounds `Clone` and `AsRef` to associated type `SeedableRng::Seed` ([#​1491](https://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 ([#​1506](https://github.com/rust-random/rand/issues/1506))
- Remove fn `rand::random()` from the prelude ([#​1506](https://github.com/rust-random/rand/issues/1506))
- Add top-level fns `random_iter`, `random_range`, `random_bool`, `random_ratio`, `fill` ([#​1488](https://github.com/rust-random/rand/issues/1488))
- Re-introduce fn `Rng::gen_iter` as `random_iter` ([#​1305](https://github.com/rust-random/rand/issues/1305), [#​1500](https://github.com/rust-random/rand/issues/1500))
- Rename fn `Rng::gen` to `random` to avoid conflict with the new `gen` keyword in Rust 2024 ([#​1438](https://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` ([#​1505](https://github.com/rust-random/rand/issues/1505))
- Annotate panicking methods with `#[track_caller]` ([#​1442](https://github.com/rust-random/rand/issues/1442), [#​1447](https://github.com/rust-random/rand/issues/1447))
##### API changes: RNGs
- Fix `<SmallRng as SeedableRng>::Seed` size to 256 bits ([#​1455](https://github.com/rust-random/rand/issues/1455))
- Remove first parameter (`rng`) of `ReseedingRng::new` ([#​1533](https://github.com/rust-random/rand/issues/1533))
##### API changes: Sequences
- Split trait `SliceRandom` into `IndexedRandom`, `IndexedMutRandom`, `SliceRandom` ([#​1382](https://github.com/rust-random/rand/issues/1382))
- Add `IndexedRandom::choose_multiple_array`, `index::sample_array` ([#​1453](https://github.com/rust-random/rand/issues/1453), [#​1469](https://github.com/rust-random/rand/issues/1469))
##### API changes: Distributions: renames
- Rename module `rand::distributions` to `rand::distr` ([#​1470](https://github.com/rust-random/rand/issues/1470))
- Rename distribution `Standard` to `StandardUniform` ([#​1526](https://github.com/rust-random/rand/issues/1526))
- Move `distr::Slice` -> `distr::slice::Choose`, `distr::EmptySlice` -> `distr::slice::Empty` ([#​1548](https://github.com/rust-random/rand/issues/1548))
- Rename trait `distr::DistString` -> `distr::SampleString` ([#​1548](https://github.com/rust-random/rand/issues/1548))
- Rename `distr::DistIter` -> `distr::Iter`, `distr::DistMap` -> `distr::Map` ([#​1548](https://github.com/rust-random/rand/issues/1548))
##### API changes: Distributions
- Relax `Sized` bound on `Distribution<T> for &D` ([#​1278](https://github.com/rust-random/rand/issues/1278))
- Remove impl of `Distribution<Option<T>>` for `StandardUniform` ([#​1526](https://github.com/rust-random/rand/issues/1526))
- Let distribution `StandardUniform` support all `NonZero*` types ([#​1332](https://github.com/rust-random/rand/issues/1332))
- Fns `{Uniform, UniformSampler}::{new, new_inclusive}` return a `Result` (instead of potentially panicking) ([#​1229](https://github.com/rust-random/rand/issues/1229))
- Distribution `Uniform` implements `TryFrom` instead of `From` for ranges ([#​1229](https://github.com/rust-random/rand/issues/1229))
- Add `UniformUsize` ([#​1487](https://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 ([#​1487](https://github.com/rust-random/rand/issues/1487))
- Add impl `DistString` for distributions `Slice<char>` and `Uniform<char>` ([#​1315](https://github.com/rust-random/rand/issues/1315))
- Add fn `Slice::num_choices` ([#​1402](https://github.com/rust-random/rand/issues/1402))
- Add fn `p()` for distribution `Bernoulli` to access probability ([#​1481](https://github.com/rust-random/rand/issues/1481))
##### API changes: Weighted distributions
- Add `pub` module `rand::distr::weighted`, moving `WeightedIndex` there ([#​1548](https://github.com/rust-random/rand/issues/1548))
- Add trait `weighted::Weight`, allowing `WeightedIndex` to trap overflow ([#​1353](https://github.com/rust-random/rand/issues/1353))
- Add fns `weight, weights, total_weight` to distribution `WeightedIndex` ([#​1420](https://github.com/rust-random/rand/issues/1420))
- Rename enum `WeightedError` to `weighted::Error`, revising variants ([#​1382](https://github.com/rust-random/rand/issues/1382)) and mark as `#[non_exhaustive]` ([#​1480](https://github.com/rust-random/rand/issues/1480))
##### API changes: SIMD
- Switch to `std::simd`, expand SIMD & docs ([#​1239](https://github.com/rust-random/rand/issues/1239))
##### Reproducibility-breaking changes
- Make `ReseedingRng::reseed` discard remaining data from the last block generated ([#​1379](https://github.com/rust-random/rand/issues/1379))
- Change fn `SmallRng::seed_from_u64` implementation ([#​1203](https://github.com/rust-random/rand/issues/1203))
- Allow `UniformFloat::new` samples and `UniformFloat::sample_single` to yield `high` ([#​1462](https://github.com/rust-random/rand/issues/1462))
- Fix portability of distribution `Slice` ([#​1469](https://github.com/rust-random/rand/issues/1469))
- Make `Uniform` for `usize` portable via `UniformUsize` ([#​1487](https://github.com/rust-random/rand/issues/1487))
- Fix `IndexdRandom::choose_multiple_weighted` for very small seeds and optimize for large input length / low memory ([#​1530](https://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` ([#​1277](https://github.com/rust-random/rand/issues/1277))
- New, faster algorithms for `IteratorRandom::choose` and `choose_stable` ([#​1268](https://github.com/rust-random/rand/issues/1268))
- New, faster algorithms for `SliceRandom::shuffle` and `partial_shuffle` ([#​1272](https://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; [#​1287](https://github.com/rust-random/rand/issues/1287))
- Optimize fn `sample_single_inclusive` for floats (+~20% perf) ([#​1289](https://github.com/rust-random/rand/issues/1289))
##### Other optimisations
- Improve `SmallRng` initialization performance ([#​1482](https://github.com/rust-random/rand/issues/1482))
- Optimise SIMD widening multiply ([#​1247](https://github.com/rust-random/rand/issues/1247))
##### Other
- Add `Cargo.lock.msrv` file ([#​1275](https://github.com/rust-random/rand/issues/1275))
- Reformat with `rustfmt` and enforce ([#​1448](https://github.com/rust-random/rand/issues/1448))
- Apply Clippy suggestions and enforce ([#​1448](https://github.com/rust-random/rand/issues/1448), [#​1474](https://github.com/rust-random/rand/issues/1474))
- Move all benchmarks to new `benches` crate ([#​1329](https://github.com/rust-random/rand/issues/1329), [#​1439](https://github.com/rust-random/rand/issues/1439)) and migrate to Criterion ([#​1490](https://github.com/rust-random/rand/issues/1490))
##### Documentation
- Improve `ThreadRng` related docs ([#​1257](https://github.com/rust-random/rand/issues/1257))
- Docs: enable experimental `--generate-link-to-definition` feature ([#​1327](https://github.com/rust-random/rand/issues/1327))
- Better doc of crate features, use `doc_auto_cfg` ([#​1411](https://github.com/rust-random/rand/issues/1411), [#​1450](https://github.com/rust-random/rand/issues/1450))
### [`v0.8.5`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#085---2021年08月20日)
[Compare Source](https://github.com/rust-random/rand/compare/0.8.4...0.8.5)
##### Fixes
- Fix build on non-32/64-bit architectures ([#​1144](https://github.com/rust-random/rand/issues/1144))
- Fix "min_const_gen" feature for `no_std` ([#​1173](https://github.com/rust-random/rand/issues/1173))
- Check `libc::pthread_atfork` return value with panic on error ([#​1178](https://github.com/rust-random/rand/issues/1178))
- More robust reseeding in case `ReseedingRng` is used from a fork handler ([#​1178](https://github.com/rust-random/rand/issues/1178))
- Fix nightly: remove unused `slice_partition_at_index` feature ([#​1215](https://github.com/rust-random/rand/issues/1215))
- Fix nightly + `simd_support`: update `packed_simd` ([#​1216](https://github.com/rust-random/rand/issues/1216))
##### Rngs
- `StdRng`: Switch from HC128 to ChaCha12 on emscripten ([#​1142](https://github.com/rust-random/rand/issues/1142)).
We now use ChaCha12 on all platforms.
##### Documentation
- Added docs about rand's use of const generics ([#​1150](https://github.com/rust-random/rand/issues/1150))
- Better random chars example ([#​1157](https://github.com/rust-random/rand/issues/1157))
### [`v0.8.4`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#084---2021年06月15日)
[Compare Source](https://github.com/rust-random/rand/compare/0.8.3...0.8.4)
##### Additions
- Use const-generics to support arrays of all sizes ([#​1104](https://github.com/rust-random/rand/issues/1104))
- Implement `Clone` and `Copy` for `Alphanumeric` ([#​1126](https://github.com/rust-random/rand/issues/1126))
- Add `Distribution::map` to derive a distribution using a closure ([#​1129](https://github.com/rust-random/rand/issues/1129))
- Add `Slice` distribution ([#​1107](https://github.com/rust-random/rand/issues/1107))
- Add `DistString` trait with impls for `Standard` and `Alphanumeric` ([#​1133](https://github.com/rust-random/rand/issues/1133))
##### Other
- Reorder asserts in `Uniform` float distributions for easier debugging of non-finite arguments
([#​1094](https://github.com/rust-random/rand/issues/1094), [#​1108](https://github.com/rust-random/rand/issues/1108))
- Add range overflow check in `Uniform` float distributions ([#​1108](https://github.com/rust-random/rand/issues/1108))
- Deprecate `rngs::adapter::ReadRng` ([#​1130](https://github.com/rust-random/rand/issues/1130))
### [`v0.8.3`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#083---2021年01月25日)
[Compare Source](https://github.com/rust-random/rand/compare/0.8.2...0.8.3)
##### Fixes
- Fix `no-std` + `alloc` build by gating `choose_multiple_weighted` on `std` ([#​1088](https://github.com/rust-random/rand/issues/1088))
### [`v0.8.2`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#082---2021年01月12日)
[Compare Source](https://github.com/rust-random/rand/compare/0.8.1...0.8.2)
##### Fixes
- Fix panic in `UniformInt::sample_single_inclusive` and `Rng::gen_range` when
providing a full integer range (eg `0..=MAX`) ([#​1087](https://github.com/rust-random/rand/issues/1087))
### [`v0.8.1`](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#081---2020年12月31日)
[Compare Source](https://github.com/rust-random/rand/compare/0.8.0...0.8.1)
##### Other
- Enable all stable features in the playground ([#​1081](https://github.com/rust-random/rand/issues/1081))
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, 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://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMzcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjEzNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiXX0=-->