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.0.81
->1.0.82
1.1.0
->1.1.1
0.1.79
->0.1.80
2.5.0
->2.6.0
1.9.0
->1.11.0
7.5.0
->7.6.0
1.0.79
->1.0.81
1.0.35
->1.0.36
0.8.16
->0.8.17
1.0.198
->1.0.200
0.2.0
->0.2.1
2.0.58
->2.0.60
1.2.0
->1.4.1
1.0.91
->1.0.93
0.1.11
->0.1.12
0.202.0
->0.206.0
Release Notes
dtolnay/anyhow (anyhow)
v1.0.82
Compare Source
dcchut/async-recursion (async-recursion)
v1.1.1
Compare Source
What's Changed
Full Changelog: dcchut/async-recursion@v1.1.0...v1.1.1
dtolnay/async-trait (async-trait)
v0.1.80
Compare Source
!
(#265, thanks @de-vri-es)rayon-rs/either (either)
v1.11.0
Compare Source
v1.10.0
Compare Source
yoshuawuyts/futures-concurrency (futures-concurrency)
v7.6.0
Compare Source
✨ Portable Concurrent Async Iteration ✨
This release introduces the
ConcurrentStream
API: a concurrentasync/.await
adaptation of Rayon'sParallelStream
API. We've been trying to implement this API for the past six or so years, and we've happy to announce we finally have a working implementation!The main feature that sets this implementation apart from other, similar attempts is that it works for any existing
Stream
impl. All you need to do is call the.co()
method to obtain aConcurrentStream
, and from that point allStream
combinators should just work as expected:See the call to
collect
at the end there? That's right: that's concurrent async iteration, collecting back into a single structure. This makes writing fan-out/fan-in pipelines trivial to author. But that's not all: in addition to converting into collections, we can also directly convert collections intoConcurrentStream
implementations too:The amount of concurrency by default is unbounded, but can be bounded by calling the limit method. This will apply backpressure should the stream produce items faster than the concurrent iterator can process them.
This API also resolves the buffered streams problem.
ConcurrentStream
removes the need for the dreaded combination of mapping to futures and then calling the futures-rsbuffered
method. Instead it ensures that the processing of items in a loop always happens in concert with the execution of the concurrent futures [^queuing-theory].[^queuing-theory]: There is a more elaborate version of this problem we don't have a user story for yet. Rust's futures model couples "liveness" to "backpressure". In theory we might fail to send keepalive messages if we apply backpressure for too long; this is a direct artifact of queueing theory, and would be a reason to add some form of async
Future::pending
/Future::poll_pending
method for. This is a more subtle / niche issue than "barbara battles buffered streams". But it's worth explicitly calling out the limits of our solutions.Notably this API will work with any async runtime or async framework, because it makes no assumptions about the underlying runtime. The only assumption is makes is that an allocator is available. This means that at this time, unlike most other APIs in
futures-concurrency
this will not work on#[no_std]
environments. This, however, is not an inherent restriction but merely an artifact of the implementation. In the future we may explore porting this to a#[no_std]
compatible version - this will require some minor API changes, but should, as a system, likely work.In order to make this system work with parallel execution it should be possible to write a custom adapter. We encourage async runtimes to wrap the
ConcurrentStream
trait exposed in this crate to create their ownParallelStream
system. This can depend on the runtime, and ensure that all execution not only happens concurrently, but can also be scheduled on multiple cores.We're excited for people to give this a try. We certainly hope this lowers the bar for correctly applying structured, asynchronous, concurrent streaming processing in Rust!
What's Changed
todo!
by @yoshuawuyts in https://github.com/yoshuawuyts/futures-concurrency/pull/176{Future,Stream}::wait_until
by @yoshuawuyts in https://github.com/yoshuawuyts/futures-concurrency/pull/167Full Changelog: yoshuawuyts/futures-concurrency@v7.5.0...v7.6.0
dtolnay/proc-macro2 (proc-macro2)
v1.0.81
Compare Source
v1.0.80
Compare Source
Literal::byte_character
constructor (#449)Literal::c_string
constructor #450)dtolnay/quote (quote)
v1.0.36
Compare Source
GREsau/schemars (schemars)
v0.8.17
Compare Source
Changed:
serde-rs/serde (serde)
v1.0.200
Compare Source
v1.0.199
Compare Source
forward_to_deserialize_any!
is used on an enum withError
variant (#2732, thanks @aatifsyed)dtolnay/syn (syn)
v2.0.60
Compare Source
peek
(#1625)v2.0.59
Compare Source
c"…"
andcr"…"
C-string literal syntax asLit::CStr
(#1502)BurntSushi/termcolor (termcolor)
v1.4.1
Compare Source
v1.4.0
Compare Source
v1.3.0
Compare Source
dtolnay/trybuild (trybuild)
v1.0.93
Compare Source
once_cell
crate (#266, thanks @taiki-e)v1.0.92
Compare Source
unicode-rs/unicode-width (unicode-width)
v0.1.12
Compare Source
Configuration
📅 Schedule: Branch creation - "before 8am on wednesday" in timezone Asia/Shanghai, 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.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate. View repository job log here.