Skip to content

Prepare v0.10.1: deprecate feature log - #1763

Merged
dhardy merged 3 commits into
masterfrom
push-qmwpoxslllum
Apr 11, 2026
Merged

dhardy merged 3 commits into
masterfrom
push-qmwpoxslllum

Conversation

@dhardy

@dhardy dhardy commented Apr 9, 2026 •

Copy link
Copy Markdown
Member
  • Added a CHANGELOG.md entry

Summary

Deprecates the log feature and removes the log dependency.

Motivation

It has been reported (by @lopopolo) that the rand library is unsound (i.e. that safe code using the public API can cause Undefined Behaviour) when all the following conditions are met:

  • The log and thread_rng features are enabled
  • A custom logger is defined
  • The custom logger accesses rand::rng() (previously rand::thread_rng()) and calls any TryRng (previously RngCore) methods on ThreadRng
  • The ThreadRng (attempts to) reseed while called from the custom logger (this happens every 64 kB of generated data)
  • Trace-level logging is enabled or warn-level logging is enabled and the random source (the getrandom crate) is unable to provide a new seed

TryRng (previously RngCore) methods for ThreadRng use unsafe code to cast *mut BlockRng<ReseedingCore> to &mut BlockRng<ReseedingCore>. When all the above conditions are met this results in an aliased mutable reference, violating the Stacked Borrows rules. Miri is able to detect this violation in sample code. Since construction of aliased mutable references is Undefined Behaviour, the behaviour of optimized builds is hard to predict.

Affected versions of rand are >= 0.7, < 0.9.3 and 0.10.0.

@dhardy
dhardy requested review from newpavlov and tarcieri April 9, 2026 16:07
@dhardy
dhardy force-pushed the push-qmwpoxslllum branch from 6096153 to b407df4 Compare April 9, 2026 16:12
Comment thread CHANGELOG.md Outdated
@dhardy
dhardy force-pushed the push-qmwpoxslllum branch from 51e3c5a to 605731b Compare April 11, 2026 10:13
@dhardy
dhardy merged commit 27ff4cb into master Apr 11, 2026
17 checks passed
@dhardy
dhardy deleted the push-qmwpoxslllum branch April 11, 2026 10:34
renovate Bot added a commit to gwennlbh/shapemaker that referenced this pull request Sep 27, 2026
##### [v0.10.3](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#0103--2026-09-20)

##### Fixes

- Fix `WeightedIndex` panic when the sum of float weights is infinite; return `Error::Overflow` instead ([#1808])
- Fix spurious `Error::NonFinite` from `Uniform::new_inclusive` on large finite float ranges such as `0.0..=f64::MAX` ([#1821])
- Fix possible panic due to sampling a deserialized `Uniform<char>` ([#1831])

##### Changes

- Report exact remaining lengths from `WeightedIndex::weights()` and reduce overhead when reading weights ([#1838])

[#1808]: rust-random/rand#1808

[#1821]: rust-random/rand#1821

[#1831]: rust-random/rand#1831

[#1838]: rust-random/rand#1838
##### [v0.10.2](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#0102--2026-07-02)

##### Fixes

- Fix possible memory safety violation due to deserialization of `UniformChar` from bad source ([#1790])

##### Changes

- Document required output order of fn `partial_shuffle` and apply `#[must_use]` ([#1769])
- Avoid usage of `unsafe` in contexts where non-local memory corruption could invalidate contract ([#1791])

[#1769]: rust-random/rand#1769

[#1790]: rust-random/rand#1790

[#1791]: rust-random/rand#1791
##### [v0.10.1](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#0101--2026-02-11)

This release includes a fix for a soundness bug; see [#1763].

##### Changes

- Document panic behavior of `make_rng` and add `#[track_caller]` ([#1761])
- Deprecate feature `log` ([#1763])

[#1761]: rust-random/rand#1761

[#1763]: rust-random/rand#1763
##### [v0.10.0](https://github.com/rust-random/rand/blob/HEAD/CHANGELOG.md#0100---2026-02-08)

##### Changes

- The dependency on `rand_chacha` has been replaced with a dependency on `chacha20`. This changes the implementation behind `StdRng`, but the output remains the same. There may be some API breakage when using the ChaCha-types directly as these are now the ones in `chacha20` instead of `rand_chacha` ([#1642]).
- Rename fns `IndexedRandom::choose_multiple` -> `sample`, `choose_multiple_array` -> `sample_array`, `choose_multiple_weighted` -> `sample_weighted`, struct `SliceChooseIter` -> `IndexedSamples` and fns `IteratorRandom::choose_multiple` -> `sample`, `choose_multiple_fill` -> `sample_fill` ([#1632])
- Use Edition 2024 and MSRV 1.85 ([#1653])
- Let `Fill` be implemented for element types, not sliceable types ([#1652])
- Fix `OsError::raw_os_error` on UEFI targets by returning `Option<usize>` ([#1665])
- Replace fn `TryRngCore::read_adapter(..) -> RngReadAdapter` with simpler struct `RngReader` ([#1669])
- Remove fns `SeedableRng::from_os_rng`, `try_from_os_rng` ([#1674])
- Remove `Clone` support for `StdRng`, `ReseedingRng` ([#1677])
- Use `postcard` instead of `bincode` to test the serde feature ([#1693])
- Avoid excessive allocation in `IteratorRandom::sample` when `amount` is much larger than iterator size ([#1695])
- Rename `os_rng` -> `sys_rng`, `OsRng` -> `SysRng`, `OsError` -> `SysError` ([#1697])
- Rename `Rng` -> `RngExt` as upstream `rand_core` has renamed `RngCore` -> `Rng` ([#1717])

##### Additions

- Add fns `IndexedRandom::choose_iter`, `choose_weighted_iter` ([#1632])
- Pub export `Xoshiro128PlusPlus`, `Xoshiro256PlusPlus` prngs ([#1649])
- Pub export `ChaCha8Rng`, `ChaCha12Rng`, `ChaCha20Rng` behind `chacha` feature ([#1659])
- Fn `rand::make_rng() -> R where R: SeedableRng` ([#1734])

##### Removals

- Removed `ReseedingRng` ([#1722])
- Removed unused feature "nightly" ([#1732])
- Removed feature `small_rng` ([#1732])

[#1632]: rust-random/rand#1632

[#1642]: rust-random/rand#1642

[#1649]: rust-random/rand#1649

[#1652]: rust-random/rand#1652

[#1653]: rust-random/rand#1653

[#1659]: rust-random/rand#1659

[#1665]: rust-random/rand#1665

[#1669]: rust-random/rand#1669

[#1674]: rust-random/rand#1674

[#1677]: rust-random/rand#1677

[#1693]: rust-random/rand#1693

[#1695]: rust-random/rand#1695

[#1697]: rust-random/rand#1697

[#1717]: rust-random/rand#1717

[#1722]: rust-random/rand#1722

[#1732]: rust-random/rand#1732

[#1734]: rust-random/rand#1734
##### [v0.9.5](https://github.com/rust-random/rand/releases/tag/0.9.5)

#### What's Changed

- rand v0.9.5: backport [#1790](rust-random/rand#1790) by [@dhardy](https://github.com/dhardy) in [#1803](rust-random/rand#1803)

**Full Changelog**: <rust-random/rand@0.9.4...0.9.5>
##### [v0.9.4](https://github.com/rust-random/rand/releases/tag/0.9.4)

##### Fixes

- Fix doc build ([#1766])

[#1766]: rust-random/rand#1766

**Full Changelog**: <rust-random/rand@0.9.3...0.9.4>
##### [v0.9.3](rust-random/rand@0.9.2...0.9.3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants