Skip to content
This repository has been archived by the owner on Mar 17, 2023. It is now read-only.

Update Rust crate rayon to 1.7.0 #6

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Aug 14, 2022

Mend Renovate

This PR contains the following updates:

Package Type Update Change
rayon dependencies minor 1.3.0 -> 1.7.0

Release Notes

rayon-rs/rayon

v1.7.0

Compare Source

  • The minimum supported rustc is now 1.59.
  • Added a fallback when threading is unsupported.
  • The new ParallelIterator::take_any and skip_any methods work like
    unordered IndexedParallelIterator::take and skip, counting items in
    whatever order they are visited in parallel.
  • The new ParallelIterator::take_any_while and skip_any_while methods work
    like unordered Iterator::take_while and skip_while, which previously had
    no parallel equivalent. The "while" condition may be satisfied from anywhere
    in the parallel iterator, affecting all future items regardless of position.
  • The new yield_now and yield_local functions will cooperatively yield
    execution 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.1

Compare Source

  • 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.

v1.6.0

Compare Source

  • 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!

v1.5.3

Compare Source

  • The new ParallelSliceMut::par_sort_by_cached_key is a stable sort that caches
    the keys for each item -- a parallel version of slice::sort_by_cached_key.

v1.5.2

Compare Source

  • The new ParallelSlice::par_rchunks() and par_rchunks_exact() iterate
    slice 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() and par_rchunks_exact_mut() are the
    same for mutable slices.
  • The ParallelIterator::try_* methods now support std::ops::ControlFlow and
    std::task::Poll items, mirroring the unstable Try implementations in the
    standard library.
  • The ParallelString pattern-based methods now support &[char] patterns,
    which match when any character in that slice is found in the string.
  • A soft limit is now enforced on the number of threads allowed in a single
    thread pool, respecting internal bit limits that already existed. The current
    maximum is publicly available from the new function max_num_threads().
  • Fixed several Stacked Borrow and provenance issues found by cargo miri.

Contributors

Thanks to all of the contributors for this release!

v1.5.1

Compare Source

  • The new in_place_scope and in_place_scope_fifo are variations of scope
    and scope_fifo, running the initial non-Send callback directly on the
    current thread, rather than moving execution to the thread pool.
  • With Rust 1.51 or later, arrays now implement IntoParallelIterator.
  • New implementations of FromParallelIterator make it possible to collect
    complicated nestings of items.
    • FromParallelIterator<(A, B)> for (FromA, FromB) works like unzip.
    • FromParallelIterator<Either<L, R>> for (A, B) works like partition_map.
  • Type inference now works better with parallel Range and RangeInclusive.
  • The implementation of FromParallelIterator and ParallelExtend for
    Vec<T> now uses MaybeUninit<T> internally to avoid creating any
    references to uninitialized data.
  • ParallelBridge fixed a bug with threads missing available work.

Contributors

Thanks to all of the contributors for this release!

v1.5.0

Compare Source

  • Update crossbeam dependencies.
  • The minimum supported rustc is now 1.36.

Contributors

Thanks to all of the contributors for this release!

v1.4.1

Compare Source

  • The new flat_map_iter and flatten_iter methods can be used to flatten
    sequential iterators, which may perform better in cases that don't need the
    nested parallelism of flat_map and flatten.
  • The new par_drain method is a parallel version of the standard drain for
    collections, removing items while keeping the original capacity. Collections
    that implement this through ParallelDrainRange support draining items from
    arbitrary index ranges, while ParallelDrainFull always drains everything.
  • The new positions method finds all items that match the given predicate and
    returns their indices in a new iterator.

v1.4.0

Compare Source

  • Implemented a new thread scheduler, RFC 5, which uses targeted wakeups for
    new work and for notifications of completed stolen work, reducing wasteful
    CPU usage in idle threads.
  • Implemented IntoParallelIterator for Range<char> and RangeInclusive<char>
    with the same iteration semantics as Rust 1.45.
  • Relaxed the lifetime requirements of the initial scope closure.

Contributors

Thanks to all of the contributors for this release!

v1.3.1

Compare Source

  • Fixed a use-after-free race in calls blocked between two rayon thread pools.
  • Collecting to an indexed Vec now drops any partial writes while unwinding,
    rather than just leaking them. If dropping also panics, Rust will abort.
    • Note: the old leaking behavior is considered safe, just not ideal.
  • The new IndexedParallelIterator::step_by() adapts an iterator to step
    through items by the given count, like Iterator::step_by().
  • The new ParallelSlice::par_chunks_exact() and mutable equivalent
    ParallelSliceMut::par_chunks_exact_mut() ensure that the chunks always have
    the exact length requested, leaving any remainder separate, like the slice
    methods chunks_exact() and chunks_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.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot changed the title Update Rust crate rayon to 1.5.3 Update Rust crate rayon to 1.6.0 Nov 20, 2022
@renovate renovate bot changed the title Update Rust crate rayon to 1.6.0 Update Rust crate rayon to 1.7.0 Mar 16, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

0 participants