Simplified par_bridge to only pull one item at a time from the iterator,
without batching. Threads that are waiting for iterator items will now block
appropriately rather than spinning CPU. (Thanks @njaard!)
Added protection against recursion in par_bridge, so iterators that also
invoke rayon will not cause mutex recursion deadlocks.
Release rayon-core 1.10.1 (2022-11-18)
Fixed a race condition with threads going to sleep while a broadcast starts.
Release rayon 1.6.0 / rayon-core 1.10.0 (2022-11-18)
The minimum supported rustc is now 1.56.
The new IndexedParallelIterator::fold_chunks and fold_chunks_with methods
work like ParallelIterator::fold and fold_with with fixed-size chunks of
items. This may be useful for predictable batching performance, without the
allocation overhead of IndexedParallelIterator::chunks.
New "broadcast" methods run a given function on all threads in the pool.
These run at a sort of reduced priority after each thread has exhausted their
local work queue, but before they attempt work-stealing from other threads.
The global broadcast function and ThreadPool::broadcast method will
block until completion, returning a Vec of all return values.
The global spawn_broadcast function and methods on ThreadPool, Scope,
and ScopeFifo will run detached, without blocking the current thread.
Panicking methods now use #[track_caller] to report the caller's location.
Fixed a truncated length in vec::Drain when given an empty range.
Contributors
Thanks to all of the contributors for this release!
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps rayon from 1.5.3 to 1.6.1.
Changelog
Sourced from rayon's changelog.
Commits
401678e
Merge #70933e9843
Release rayon 1.2.1 / rayon-core 1.6.1dd874ac
Bump crate versions and dependencies0c6338d
Reduce Option complexity in demo cpu_timebe99e50
cargo fmt9b4d979
Avoid mem::uninitialized in the demo cpu_time5a46643
Avoid mem::uninitialized in par_sort_unstable73b1061
Merge #70554c0b0d
Make sure that compat-Cargo.lock is fresh4fd13b0
Regenerate compat-Cargo.lockDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)