NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #112 most downloaded on crates.io
An implementation of futures and streams featuring zero allocations, composability, and iterator-like interfaces.
Last release 1 months ago
11 Aug 2026
Release timing varies
gaps range from 2 weeks to 1.4 years
Most releases are documented
notes for 39 of 52 stable releases
23 versions withdrawn
withdrawn after publishing
10 years old
75 releases · first in 2016
Preserve cloned waker identity.
Fix ReadLine 's soundness issue regarding to exception safety.
ReadLine's soundness issue regarding to exception safety. (#3020)Send impl for IterPinRef and Iter. (#3003)compat01as03 implementation. (#3012)FuturesUnordered::IntoIter. (#3005)portable-atomic-alloc feature and use it in FuturesUnordered. (#3007)alloc::task::Wake. (#3010)spin to 0.12. (#3014)One column per quarter.
Soft-deprecate ready! macro in favor of std::ready! added in Rust 1.64
ready! macro in favor of std::task::ready! added in Rust 1.64 (#2925)pin_mut! macro in favor of std::pin::pin! added in Rust 1.68 (#2929)FuturesOrdered::clear (#2927)mpsc::*Receiver::recv (#2947)mpsc::*Receiver::try_recv and deprecate mpsc::*Receiver::::try_next (#2944)FusedStream for sink::With (#2948)no_std support for shared (#2868)Mutex::new() const (#2956)#[clippy::has_significant_drop] to guards (#2967)pin-utils (#2929)num_cpus (#2946)Fix soundness bug in task::waker_ref ( #2830 ) This is a breaking change but allowed because it is soundness bug fix.
FuturesUnordered when dropped future panics (#2886)task::waker_ref (#2830)AsyncBufRead::read_line and AsyncBufReadExt::lines (#2884)select!/select_biased! (#2832)Waker::will_wake change (#2865)stream::Iter::{get_ref,get_mut,into_inner} (#2875)future::AlwaysReady (#2825)io::{BufReader,BufWriter} (#2848)Add {BiLock,SplitStream,SplitSink,ReadHalf,WriteHalf}::is_pair_of
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
{BiLock,SplitStream,SplitSink,ReadHalf,WriteHalf}::is_pair_of (#2797)FuturesUnordered::clear (#2809)AsyncBufReadExt::fill_buf (#2801, #2812)Add TryStreamExt::try_ready_chunks
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
TryStreamExt::try_ready_chunks (#2757)TryStreamExt::{try_all,try_any} (#2783)UnboundedSender::{len,is_empty} (#2750)Sync impl of FuturesUnordered (#2788)Update to syn 2. This raises MSRV of utility crates to 1.56. ( #2730 , #2733 )
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
FlattenUnordered (#2726, #2728)Add TryFlattenUnordered ( #2577 , #2590 , #2606 , #2607 )
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
TryFlattenUnordered (#2577, #2590, #2606, #2607)AbortHandle::is_aborted (#2710)AbortRegistration::handle (#2712)BiLock strict-provenance compatible (#2716)Add Either::as_pin_mut and Either::as_pin_ref
Either::as_pin_mut and Either::as_pin_ref (#2691)Shared::ptr_eq and Shared::ptr_hash (#2691)FusedStream for Buffered (#2676)FusedStream for all streams in ReadyChunks (#2693)FuturesOrdered::push_front (#2664)Fut::Output: Clone bounds from some Shared methods (#2662)T: Debug bounds from Debug implementations of mpsc and oneshot types (#2666, #2667)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Either::as_pin_mut and Either::as_pin_ref (#2691)Shared::ptr_eq and Shared::ptr_hash (#2691)FusedStream for Buffered (#2676)FusedStream for all streams in ReadyChunks (#2693)FuturesOrdered::push_front (#2664)Fut::Output: Clone bounds from some Shared methods (#2662)T: Debug bounds from Debug implementations of mpsc and oneshot types (#2666, #2667)Fix soundness issue in join! and try_join! macros
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
join! and try_join! macros (#2649)Clone for sink::Drain (#2650)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
select_with_strategy streams (#2635)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Deprecate FuturesOrdered::push in favor of FuturesOrdered::push_back
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Sync impl of BiLockGuard (#2570)FuturesUnordered (#2574)Shared (#2576)Mutex::lock_owned and Mutex::try_lock_owned (#2571)io::copy_buf_abortable (#2507)Unpin bound from TryStreamExt::into_async_read (#2599)run_until_stalled handle self-waking futures (#2593)FuturesOrdered in try_join_all (#2556)LocalPool waker (#2608)stream::Chunk adapters size hints (#2611)push_front and push_back to FuturesOrdered (#2591)FuturesOrdered::push in favor of FuturesOrdered::push_back (#2591)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
FlattenUnordered that introduced in 0.3.20 (#2566)Note: This release has been yanked due to a bug fixed in 0.3.21.
Note: This release has been yanked due to a bug fixed in 0.3.21.
-Zmiri-tag-raw-pointers is enabled. This raises MSRV of futures-task to 1.45. (#2548, #2550)FuturesUnordered to respect yielding from future (#2551)StreamExt::{flatten_unordered, flat_map_unordered} (#2083)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
read-initializer feature (#2534)FuturesUnordered (#2535)FuturesUnordered and tokio's cooperative scheduling (#2527)StreamExt::count (#2495)Note: This release has been yanked. See #2529 for details.
Note: This release has been yanked. See #2529 for details.
Sink implementation on stream::Scan (#2499)task::noop_waker_ref available without std feature (#2505)LineWriter (#2477)proc-macro-hack. This raises MSRV of utility crates to 1.45. (#2520)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
FuturesOrdered in join_all (#2412){future, stream}::poll_immediate (#2452)stream_select! macro (#2262)Default for OptionFuture (#2471)Peekable::{peek_mut, poll_peek_mut} (#2488)BufReader::seek_relative (#2489)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
TryStreamExt::try_chunks (#2438)StreamExt::{all, any} (#2460)stream::select_with_strategy (#2450)io_slice_advance interface (#2454)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
#[proc_macro] at Rust 1.45+ to fix an issue where proc macros don't work with rust-analyzer (#2407)#[test] function attribute (#2409)stream::abortable (#2410)FuturesUnordered::clear (#2415)IntoIterator for FuturesUnordered (#2423)Send and Sync for FuturesUnordered iterators (#2416)FuturesUnordered::iter_pin_ref public (#2423)SelectAll::clear (#2430)SelectAll::{iter, iter_mut} (#2428)IntoIterator for SelectAll (#2428)Clone for WeakShared (#2396)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
future::SelectAll::into_inner (#2363)UnboundedReceiver::try_next after None (#2369)futures_util (#2377)AsyncSeekExt::stream_position (#2380)stream::Peekable::{next_if, next_if_eq} (#2379)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
FuturesUnordered (#2333)mpsc::Receiver (#2304)Shared::{strong_count, weak_count} (#2346)no_std support for task::noop_waker_ref (#2332)Stream::size_hint for Either (#2325)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Unpin impl of future::{MaybeDone, TryMaybeDone} where trait bounds were accidentally added in 0.3.9. (#2317)Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
Note: This release of futures-util has been yanked due to a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later.
AsyncReadExt::{read_to_end, read_to_string} (#2314)Fixed type-inference in sink::unfold by specifying more of its types (breaking change -- see #2311)
Note: This release has been yanked. See #2310 for details.
sink::unfold by specifying more of its types (breaking change -- see #2311)Note: This release has been yanked. See #2310 for details.
Note: This release has been yanked. See #2310 for details.
async-await crate feature is disabled (#2273)stream::repeat_with (#2279)StreamExt::unzip (#2263)sink::unfold (#2268)SinkExt::feed (#2155)FusedFuture for oneshot::Receiver (#2300)Clone for sink::With (#2290)MapOkOrElse, MapInto, OkInto, TryFlatten, WriteAllVectored (#2275)Note: This release has been yanked. See #2310 for details.
Note: This release has been yanked. See #2310 for details.
#[proc_macro] at Rust 1.45+ (#2243)WeakShared (#2169)TryStreamExt::try_buffered (#2245)StreamExt::cycle (#2252)Clone for stream::{Empty, Pending, Repeat, Iter} (#2248, #2252)TryStreamExt combinators (#2250)Note: This release has been yanked. See #2310 for details.
Note: This release has been yanked. See #2310 for details.
MappedMutexGuard (#2240)TakeUntil (#2235)panic_waker (#2236)Note: This release has been yanked. See #2310 for details.
Note: This release has been yanked. See #2310 for details.
task::waker (#2206)AsyncBufReadExt::fill_buf (#2225)TryStreamExt::try_take_while (#2212)is_connected_to method to mpsc::{Sender, UnboundedSender} (#2179)is_connected_to method to oneshot::Sender (#2158)FusedStream for FuturesOrdered (#2205)track_closed method to AsyncWriteTestExt and SinkTestExt (#2159)InterleavePending (#2208)AssertUnmoved (#2208)Note: This release has been yanked. See #2310 for details.
Note: This release has been yanked. See #2310 for details.
StreamExt::flat_map.StreamExt::ready_chunks.*_unpin methods to SinkExt.cancellation() future to oneshot::Sender.reunite method to ReadHalf and WriteHalf.Extend implementations for Futures(Un)Ordered and SelectAll.join! and select! macros.no_std support for the pending! and poll! macros.Send and Sync support for AssertUnmoved.Shared wasn't relinquishing control to the executor.Send bound on the output of RemoteHandle.FuturesUnordered.--features.StreamExt::forward.unsafe.Note: This release has been yanked. See #2310 for details.
Note: This release has been yanked. See #2310 for details.
Drop for UnboundedReceiver (#2064)Note: This release has been yanked. See #2310 for details.
Note: This release has been yanked. See #2310 for details.
Note: This release has been yanked. See #2310 for details.
Note: This release has been yanked. See #2310 for details.
SplitSink (#1969)select_biased! macro (#1976)hash_receiver method to mpsc channel (#1962)stream::try_unfold (#1977)AtomicWaker::new() is now const fn (#2007)stream::Peekable::peek (#2021)StreamExt::scan (#2044)AsyncRead/Write for BufReader/Writer (#2033)Spawn and LocalSpawn for Arc<impl Spawn and Rc<impl Spawn> (#2039)Sync issues with FuturesUnordered (#2054)into_inner method for future::Ready (#2055)MappedMutexGuard API (#2056)FuturesUnordered (#2049)TryFutureExt::map_ok_or_else (#2058)Fix signature of SpawnExt and LocalSpawnExt trait (breaking change -- see #1959)
Note: This release has been yanked. See #2310 for details.
SpawnExt and LocalSpawnExt trait (breaking change -- see #1959)Note: This release has been yanked. See #2310 for details.
Note: This release has been yanked. See #2310 for details.
Spawn trait and FuturesUnordered::push to take &self (#1950)Spawn and FutureObj out of futures-core and into futures-task (#1925)executor feature (#1949)copy_into/copy_buf_into (#1948)SinkExt::send_all to accept a TryStream (#1946)ThreadPool::run (#1944)io::Cursor (#1943)BufReader::poll_seek_relative (#1938)skip to take a usize rather than u64 (#1931)Stream impl for VecDeque (#1930)Peekable::peek to poll_peek (#1928)FuturesUnordered (#1922)ThreadPool optional (#1910)oneshot::Sender::poll_cancel to poll_canceled (#1908)Clone implementationsNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Undeprecate stream::iter as stream::iter_result
close method on sink::Waitstream::iter as stream::iter_resultFromIterator implementation for FuturesOrdered and FuturesUnordered.A prelude module has been added to glob import from and pick up a whole bunch of useful types
prelude module has been added to glob import from and pick up a whole
bunch of useful typessync::mpsc::Sender::poll_ready has been added as an APIsync::mpsc::Sender::try_send has been added as an APIDeprecate the boxed methods. These methods have caused more confusion than they've solved historically, so it's recommended to use a local extension t…
BiLock methodsClone for FutureResultStream trait through SinkMapErrstream::futures_ordered next to futures_unorderedStream::buffered on top of stream::futures_ordered (much more
efficient at scale).with_notify function for abstractions which previously required
UnparkEvent.get_ref/get_mut/into_inner functions for stream take/skip methodsClone implementation for SharedItem and SharedErrormpsc::spawn function to spawn a Stream into an Executorreunite function for BiLock and the split stream/sink types to
rejoin two halves and reclaim the original item.stream::poll_fn to behave similarly to future::poll_fnSink::with_flat_map like Iterator::flat_mapAtomicTask in the public API for managing synchronization around task
notifications.Canceled type of the sync and unsync modules.boxed methods. These methods have caused more confusion than
they've solved historically, so it's recommended to use a local extension
trait or a local helper instead of the trait-based methods.Stream::merge method as it's less ergonomic than select.oneshot::Sender::is_canceled to test if a oneshot is canceled off a
task.UnboundedSender::send in favor of a method named unbounded_send
to avoid a conflict with Sink::send.stream::iter function in favor of an stream::iter_ok adaptor
to avoid the need to deal with Result manually.inspect function to the Future and Stream traits along the lines
of Iterator::inspectYour coding agent can read these notes before it upgrades. Set up the MCP server →