NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2639 most downloaded on crates.io
An implementation of thread pools which hand out futures to the results of the computation on the threads themselves.
Last release 9 years ago
no release in 18 months
Release timing varies
gaps range from 3 weeks to 6 months
Nearly every release is documented
notes for 8 of 8 stable releases
1 version withdrawn
withdrawn after publishing
10 years old
9 releases · first in 2016
Fix some race conditions in the Shared implementation
Shared implementationStream::take_whilestream::futures_unorderedStream::for_eachStream::chainstream::repeat&mut self to &self in UnboundedSender::sendAdd a Future::shared method for creating a future that can be shared amongst threads by cloning the future itself. All derivative futures will resolve
Future::shared method for creating a future that can be shared
amongst threads by cloning the future itself. All derivative futures
will resolve to the same value once the original future has been
resolved.FutureFrom trait for future-based conversionReceiver::closefuture::poll_fn for quickly adapting a Poll-based function to
a future.Either enum with two branches to easily create one future
type based on two different futures created on two branches of control
flow.'static bound on Unparksend_all and forward to send as many items as possible
before calling poll_complete.ok, err, and result future to
assist returning different varieties in different branches of a function.CpuFuture::forget to allow the computation to continue running
after a drop.stream::futures_unordered combinator to turn a list of futures
into a stream representing their order of completion.One column per quarter.
Fix Clone bound on the type parameter on UnboundedSender
Clone bound on the type parameter on UnboundedSender* Fix #![no_std] support
#![no_std] supportNote that all old locations for types/traits still exist, they're just deprecated and tagged with #[doc(hidden)].
This is quite a large release relative to the previous point releases! As with all 0.1 releases, this release should be fully compatible with the 0.1.3 release. If any incompatibilities are discovered please file an issue!
The largest changes in 0.1.4 are the addition of a Sink trait coupled with a
reorganization of this crate. Note that all old locations for types/traits
still exist, they're just deprecated and tagged with #[doc(hidden)].
The new Sink trait is used to represent types which can periodically over
time accept items, but may take some time to fully process the item before
another can be accepted. Essentially, a sink is the opposite of a stream. This
trait will then be used in the tokio-core crate to implement simple framing by
modeling I/O streams as both a stream and a sink of frames.
The organization of this crate is to now have three primary submodules,
future, stream, and sink. The traits as well as all combinator types are
defined in these submodules. The traits and types like Async and Poll are
then reexported at the top of the crate for convenient usage. It should be a
relatively rare occasion that the modules themselves are reached into.
Finally, the 0.1.4 release comes with a new module, sync, in the futures
crate. This is intended to be the home of a suite of futures-aware
synchronization primitives. Currently this is inhabited with a oneshot module
(the old oneshot function), a mpsc module for a new multi-producer
single-consumer channel, and a BiLock type which represents sharing ownership
of one value between two consumers. This module may expand over time with more
types like a mutex, rwlock, spsc channel, etc.
Notable deprecations in the 0.1.4 release that will be deleted in an eventual 0.2 release:
TaskRc type is now deprecated in favor of BiLock or otherwise Arc
sharing.future module, not
the top-level of the crate.Oneshot and Complete types are now replaced with the sync::oneshot
module.collect are deprecated in favor of more appropriately
named versions like join_allfinished constructor is now ok.failed constructor is now err.done constructor is now result.As always, please report bugs to https://github.com/rust-lang-nursery/futures-rs and we always love feedback! If you've got situations we don't cover, combinators you'd like to see, or slow code, please let us know!
Full changelog:
buffer_unordered combinatorSinksync module for synchronization primitivesBiLock sync primitive for two-way sharingTaskRccollect to join_allEvents for improved clone performanceStream::select for selecting items from two streams like merge but
requiring the same types.stream::unfold constructorsync::mpsc module with a futures-aware multi-producer single-consumer
queue. Both bounded (with backpressure) and unbounded (no backpressure)
variants are provided.failed, finished, and done combinators to err, ok, and
result.Stream::forward to send all items to a sink, like Sink::send_allStream::split for streams which are both sinks and streams to have
separate ownership of the stream/sink halvesjoin_all with concurrencyRewrite oneshot for efficiency and removing allocations on send/recv
oneshot for efficiency and removing allocations on send/recvStream::take and Stream::skipselect_ok combinator to pick the first of a list that succeedsSelectAllNext typedefStream::chunks for receiving chunks of datastream::channel for efficiency, correctness, and removing
allocationsSend + 'static bounds on the stream::Empty typeFixed a bug in drop of FutureSender
FutureSenderSendError typeFuture::into_stream to convert to a single-element streamFuture::flatten_to_stream to convert a future of a stream to a streamStream::catch_unwindInitial release!
Initial release!
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →