This repository was archived by the owner on Mar 17, 2023. It is now read-only.
Update Rust crate rayon to 1.7.0 #6
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.3.0->1.7.0Release Notes
rayon-rs/rayon
v1.7.0Compare Source
rustcis now 1.59.ParallelIterator::take_anyandskip_anymethods work likeunordered
IndexedParallelIterator::takeandskip, counting items inwhatever order they are visited in parallel.
ParallelIterator::take_any_whileandskip_any_whilemethods worklike unordered
Iterator::take_whileandskip_while, which previously hadno parallel equivalent. The "while" condition may be satisfied from anywhere
in the parallel iterator, affecting all future items regardless of position.
yield_nowandyield_localfunctions will cooperatively yieldexecution to Rayon, either trying to execute pending work from the entire
pool or from just the local deques of the current thread, respectively.
v1.6.1Compare Source
par_bridgeto 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!)
par_bridge, so iterators that alsoinvoke rayon will not cause mutex recursion deadlocks.
v1.6.0Compare Source
rustcis now 1.56.IndexedParallelIterator::fold_chunksandfold_chunks_withmethodswork like
ParallelIterator::foldandfold_withwith fixed-size chunks ofitems. This may be useful for predictable batching performance, without the
allocation overhead of
IndexedParallelIterator::chunks.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.
broadcastfunction andThreadPool::broadcastmethod willblock until completion, returning a
Vecof all return values.spawn_broadcastfunction and methods onThreadPool,Scope,and
ScopeFifowill run detached, without blocking the current thread.#[track_caller]to report the caller's location.vec::Drainwhen given an empty range.Contributors
Thanks to all of the contributors for this release!
v1.5.3Compare Source
ParallelSliceMut::par_sort_by_cached_keyis a stable sort that cachesthe keys for each item -- a parallel version of
slice::sort_by_cached_key.v1.5.2Compare Source
ParallelSlice::par_rchunks()andpar_rchunks_exact()iterateslice chunks in reverse, aligned the against the end of the slice if the
length is not a perfect multiple of the chunk size. The new
ParallelSliceMut::par_rchunks_mut()andpar_rchunks_exact_mut()are thesame for mutable slices.
ParallelIterator::try_*methods now supportstd::ops::ControlFlowandstd::task::Pollitems, mirroring the unstableTryimplementations in thestandard library.
ParallelStringpattern-based methods now support&[char]patterns,which match when any character in that slice is found in the string.
thread pool, respecting internal bit limits that already existed. The current
maximum is publicly available from the new function
max_num_threads().cargo miri.Contributors
Thanks to all of the contributors for this release!
v1.5.1Compare Source
in_place_scopeandin_place_scope_fifoare variations ofscopeand
scope_fifo, running the initial non-Sendcallback directly on thecurrent thread, rather than moving execution to the thread pool.
IntoParallelIterator.FromParallelIteratormake it possible tocollectcomplicated nestings of items.
FromParallelIterator<(A, B)> for (FromA, FromB)works likeunzip.FromParallelIterator<Either<L, R>> for (A, B)works likepartition_map.RangeandRangeInclusive.FromParallelIteratorandParallelExtendforVec<T>now usesMaybeUninit<T>internally to avoid creating anyreferences to uninitialized data.
ParallelBridgefixed a bug with threads missing available work.Contributors
Thanks to all of the contributors for this release!
v1.5.0Compare Source
rustcis now 1.36.Contributors
Thanks to all of the contributors for this release!
v1.4.1Compare Source
flat_map_iterandflatten_itermethods can be used to flattensequential iterators, which may perform better in cases that don't need the
nested parallelism of
flat_mapandflatten.par_drainmethod is a parallel version of the standarddrainforcollections, removing items while keeping the original capacity. Collections
that implement this through
ParallelDrainRangesupport draining items fromarbitrary index ranges, while
ParallelDrainFullalways drains everything.positionsmethod finds all items that match the given predicate andreturns their indices in a new iterator.
v1.4.0Compare Source
new work and for notifications of completed stolen work, reducing wasteful
CPU usage in idle threads.
IntoParallelIterator for Range<char>andRangeInclusive<char>with the same iteration semantics as Rust 1.45.
scopeclosure.Contributors
Thanks to all of the contributors for this release!
v1.3.1Compare Source
Vecnow drops any partial writes while unwinding,rather than just leaking them. If dropping also panics, Rust will abort.
IndexedParallelIterator::step_by()adapts an iterator to stepthrough items by the given count, like
Iterator::step_by().ParallelSlice::par_chunks_exact()and mutable equivalentParallelSliceMut::par_chunks_exact_mut()ensure that the chunks always havethe exact length requested, leaving any remainder separate, like the slice
methods
chunks_exact()andchunks_exact_mut().Contributors
Thanks to all of the contributors for this release!
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 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.
This PR has been generated by Mend Renovate. View repository job log here.