PackageTrack
Sign in Get early access

futures-macro

The futures-rs procedural macro implementations.

0.3.34 726M downloads/mo #111 most downloaded on crates.io rust-lang/futures-rs

What this package is like to depend on

Last release 12 days ago

11 Aug 2026

Release timing varies

gaps range from 2 weeks to 1.4 years

Nearly every release is documented

notes for 34 of 34 stable releases

1 version withdrawn

withdrawn after publishing

7 years old

35 releases · first in 2019

3 releases in the last 12 months

see the full history below

Release timeline

35 releases · Nov 2019 to Aug 2026
2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 35
  1. 0.3.34 11 Aug 2026
    Release notes
    • Preserve cloned waker identity. (#3032)
    • Updato syn to 3. (#3028)
    Open source →
    Release notes
    • Preserve cloned waker identity. (#3032)
    • Updato syn to 3. (#3028)
    Open source →
  2. 0.3.33 18 Jul 2026
    Release notes
    • Fix ReadLine's soundness issue regarding to exception safety. (#3020)
    • Fix unsound Send impl for IterPinRef and Iter. (#3003)
    • Fix stacked borrows violation in compat01as03 implementation. (#3012)
    • Fix memory leak in FuturesUnordered::IntoIter. (#3005)
    • Add portable-atomic-alloc feature and use it in FuturesUnordered. (#3007)
    • Re-export alloc::task::Wake. (#3010)
    • Update spin to 0.12. (#3014)
    Open source →
    Release notes
    • Fix ReadLine's soundness issue regarding to exception safety. (#3020)
    • Fix unsound Send impl for IterPinRef and Iter. (#3003)
    • Fix stacked borrows violation in compat01as03 implementation. (#3012)
    • Fix memory leak in FuturesUnordered::IntoIter. (#3005)
    • Add portable-atomic-alloc feature and use it in FuturesUnordered. (#3007)
    • Re-export alloc::task::Wake. (#3010)
    • Update spin to 0.12. (#3014)
    Open source →
  3. 0.3.32 15 Feb 2026
    Release notes
    • Bump MSRV of utility crates to 1.71. (#2989)
    • Soft-deprecate ready! macro in favor of std::task::ready! added in Rust 1.64 (#2925)
    • Soft-deprecate pin_mut! macro in favor of std::pin::pin! added in Rust 1.68 (#2929)
    • Add FuturesOrdered::clear (#2927)
    • Add mpsc::*Receiver::recv (#2947)
    • Add mpsc::*Receiver::try_recv and deprecate mpsc::*Receiver::::try_next (#2944)
    • Implement FusedStream for sink::With (#2948)
    • Add no_std support for shared (#2868)
    • Make Mutex::new() const (#2956)
    • Add #[clippy::has_significant_drop] to guards (#2967)
    • Remove dependency to pin-utils (#2929)
    • Remove dependency on num_cpus (#2946)
    • Performance improvements (#2983)
    • Documentation improvements (#2925, #2926, #2940, #2971)
    Open source →
    Release notes
    • Bump MSRV of utility crates to 1.71. (#2989)
    • Soft-deprecate ready! macro in favor of std::task::ready! added in Rust 1.64 (#2925)
    • Soft-deprecate pin_mut! macro in favor of std::pin::pin! added in Rust 1.68 (#2929)
    • Add FuturesOrdered::clear (#2927)
    • Add mpsc::*Receiver::recv (#2947)
    • Add mpsc::*Receiver::try_recv and deprecate mpsc::*Receiver::::try_next (#2944)
    • Implement FusedStream for sink::With (#2948)
    • Add no_std support for shared (#2868)
    • Make Mutex::new() const (#2956)
    • Add #[clippy::has_significant_drop] to guards (#2967)
    • Remove dependency to pin-utils (#2929)
    • Remove dependency on num_cpus (#2946)
    • Performance improvements (#2983)
    • Documentation improvements (#2925, #2926, #2940, #2971)
    Open source →
  4. 0.3.31 05 Oct 2024
    Release notes
    • Fix use after free of task in FuturesUnordered when dropped future panics (#2886)
    • Fix soundness bug in task::waker_ref (#2830)
      This is a breaking change but allowed because it is soundness bug fix.
    • Fix bugs in AsyncBufRead::read_line and AsyncBufReadExt::lines (#2884)
    • Fix parsing issue in select!/select_biased! (#2832)
      This is technically a breaking change as it will now reject a very odd undocumented syntax that was previously accidentally accepted.
    • Work around issue due to upstream Waker::will_wake change (#2865)
    • Add stream::Iter::{get_ref,get_mut,into_inner} (#2875)
    • Add future::AlwaysReady (#2825)
    • Relax trait bound on non-constructor methods of io::{BufReader,BufWriter} (#2848)
    Open source →
    Release notes
    • Fix use after free of task in FuturesUnordered when dropped future panics (#2886)
    • Fix soundness bug in task::waker_ref (#2830) This is a breaking change but allowed because it is soundness bug fix.
    • Fix bugs in AsyncBufRead::read_line and AsyncBufReadExt::lines (#2884)
    • Fix parsing issue in select!/select_biased! (#2832) This is technically a breaking change as it will now reject a very odd undocumented syntax that was previously accidentally accepted.
    • Work around issue due to upstream Waker::will_wake change (#2865)
    • Add stream::Iter::{get_ref,get_mut,into_inner} (#2875)
    • Add future::AlwaysReady (#2825)
    • Relax trait bound on non-constructor methods of io::{BufReader,BufWriter} (#2848)
    Open source →
  5. 0.3.30 24 Dec 2023
    Release notes
    • Add {BiLock,SplitStream,SplitSink,ReadHalf,WriteHalf}::is_pair_of (#2797)
    • Fix panic in FuturesUnordered::clear (#2809)
    • Fix panic in AsyncBufReadExt::fill_buf (#2801, #2812)
    • Improve support for targets without atomic CAS (#2811)
    • Remove build scripts (#2811)
    Open source →
    Release notes

    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.

    • Add {BiLock,SplitStream,SplitSink,ReadHalf,WriteHalf}::is_pair_of (#2797)
    • Fix panic in FuturesUnordered::clear (#2809)
    • Fix panic in AsyncBufReadExt::fill_buf (#2801, #2812)
    • Improve support for targets without atomic CAS (#2811)
    • Remove build scripts (#2811)
    Open source →
  6. 0.3.29 26 Oct 2023
    Release notes
    • Add TryStreamExt::try_ready_chunks (#2757)
    • Add TryStreamExt::{try_all,try_any} (#2783)
    • Add UnboundedSender::{len,is_empty} (#2750)
    • Fix Sync impl of FuturesUnordered (#2788)
    • Fix infinite loop caused by invalid UTF-8 bytes (#2785)
    • Fix build error with -Z minimal-versions (#2761)
    Open source →
    Release notes

    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.

    • Add TryStreamExt::try_ready_chunks (#2757)
    • Add TryStreamExt::{try_all,try_any} (#2783)
    • Add UnboundedSender::{len,is_empty} (#2750)
    • Fix Sync impl of FuturesUnordered (#2788)
    • Fix infinite loop caused by invalid UTF-8 bytes (#2785)
    • Fix build error with -Z minimal-versions (#2761)
    Open source →
  7. 0.3.28 30 Mar 2023
    Release notes
    • Update to syn 2. This raises MSRV of utility crates to 1.56. (#2730, #2733)
    • Fix bug in FlattenUnordered (#2726, #2728)
    Open source →
    Release notes

    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.

    • Update to syn 2. This raises MSRV of utility crates to 1.56. (#2730, #2733)
    • Fix bug in FlattenUnordered (#2726, #2728)
    Open source →
  8. 0.3.27 11 Mar 2023
    Release notes
    • Add TryFlattenUnordered (#2577, #2590, #2606, #2607)
    • Add AbortHandle::is_aborted (#2710)
    • Add AbortRegistration::handle (#2712)
    • Make BiLock strict-provenance compatible (#2716)
    Open source →
    Release notes

    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.

    • Add TryFlattenUnordered (#2577, #2590, #2606, #2607)
    • Add AbortHandle::is_aborted (#2710)
    • Add AbortRegistration::handle (#2712)
    • Make BiLock strict-provenance compatible (#2716)
    Open source →
  9. 0.3.26 30 Jan 2023
    Release notes
    • Add Either::as_pin_mut and Either::as_pin_ref (#2691)
    • Add Shared::ptr_eq and Shared::ptr_hash (#2691)
    • Implement FusedStream for Buffered (#2676)
    • Implement FusedStream for all streams in ReadyChunks (#2693)
    • Fix bug in FuturesOrdered::push_front (#2664)
    • Remove Fut::Output: Clone bounds from some Shared methods (#2662)
    • Remove T: Debug bounds from Debug implementations of mpsc and oneshot types (#2666, #2667)
    Open source →
    Release notes

    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.

    • Add Either::as_pin_mut and Either::as_pin_ref (#2691)
    • Add Shared::ptr_eq and Shared::ptr_hash (#2691)
    • Implement FusedStream for Buffered (#2676)
    • Implement FusedStream for all streams in ReadyChunks (#2693)
    • Fix bug in FuturesOrdered::push_front (#2664)
    • Remove Fut::Output: Clone bounds from some Shared methods (#2662)
    • Remove T: Debug bounds from Debug implementations of mpsc and oneshot types (#2666, #2667)
    Open source →
  10. 0.3.25 20 Oct 2022
    Release notes
    • Fix soundness issue in join! and try_join! macros (#2649)
    • Implement Clone for sink::Drain (#2650)
    Open source →
    Release notes

    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.

    • Fix soundness issue in join! and try_join! macros (#2649)
    • Implement Clone for sink::Drain (#2650)
    Open source →
  11. 0.3.24 29 Aug 2022
    Release notes

    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.

    • Fix incorrect termination of select_with_strategy streams (#2635)
    Open source →
  12. 0.3.23 14 Aug 2022
    Release notes

    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.

    • Work around MSRV increase due to a cargo bug.
    Open source →
  13. 0.3.22 14 Aug 2022
    Release notes

    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.

    • Fix Sync impl of BiLockGuard (#2570)
    • Fix partial iteration in FuturesUnordered (#2574)
    • Fix false detection of inner panics in Shared (#2576)
    • Add Mutex::lock_owned and Mutex::try_lock_owned (#2571)
    • Add io::copy_buf_abortable (#2507)
    • Remove Unpin bound from TryStreamExt::into_async_read (#2599)
    • Make run_until_stalled handle self-waking futures (#2593)
    • Use FuturesOrdered in try_join_all (#2556)
    • Fix orderings in LocalPool waker (#2608)
    • Fix stream::Chunk adapters size hints (#2611)
    • Add push_front and push_back to FuturesOrdered (#2591)
    • Deprecate FuturesOrdered::push in favor of FuturesOrdered::push_back (#2591)
    • Performance improvements (#2583, #2626)
    • Documentation improvements (#2579, #2604, #2613)
    Open source →
  14. 0.3.21 06 Feb 2022
    Release notes

    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.

    • Fix potential data race in FlattenUnordered that introduced in 0.3.20 (#2566)
    Open source →
  15. 0.3.20 06 Feb 2022 withdrawn
    Release notes

    Note: This release has been yanked due to a bug fixed in 0.3.21.

    • Fix stacked borrows violations when -Zmiri-tag-raw-pointers is enabled. This raises MSRV of futures-task to 1.45. (#2548, #2550)
    • Change FuturesUnordered to respect yielding from future (#2551)
    • Add StreamExt::{flatten_unordered, flat_map_unordered} (#2083)
    Open source →
  16. 0.3.19 18 Dec 2021
    Release notes

    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.

    • Remove unstable read-initializer feature (#2534)
    • Fix panic in FuturesUnordered (#2535)
    • Fix compatibility issue with FuturesUnordered and tokio's cooperative scheduling (#2527)
    • Add StreamExt::count (#2495)
    Open source →
  17. 0.3.18 23 Nov 2021
    Release notes

    Note: This release has been yanked. See #2529 for details.

    • Fix unusable Sink implementation on stream::Scan (#2499)
    • Make task::noop_waker_ref available without std feature (#2505)
    • Add async LineWriter (#2477)
    • Remove dependency on proc-macro-hack. This raises MSRV of utility crates to 1.45. (#2520)
    Open source →
  18. 0.3.17 30 Aug 2021
    Release notes

    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.

    • Use FuturesOrdered in join_all (#2412)
    • Add {future, stream}::poll_immediate (#2452)
    • Add stream_select! macro (#2262)
    • Implement Default for OptionFuture (#2471)
    • Add Peekable::{peek_mut, poll_peek_mut} (#2488)
    • Add BufReader::seek_relative (#2489)
    Open source →
  19. 0.3.16 23 Jul 2021
    Release notes

    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.

    • Add TryStreamExt::try_chunks (#2438)
    • Add StreamExt::{all, any} (#2460)
    • Add stream::select_with_strategy (#2450)
    • Update to new io_slice_advance interface (#2454)
    Open source →
  20. 0.3.15 11 May 2021
    Release notes

    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.

    • Use #[proc_macro] at Rust 1.45+ to fix an issue where proc macros don't work with rust-analyzer (#2407)
    • Support targets that do not have atomic CAS on stable Rust (#2400)
    • futures-test: Add async #[test] function attribute (#2409)
    • Add stream::abortable (#2410)
    • Add FuturesUnordered::clear (#2415)
    • Implement IntoIterator for FuturesUnordered (#2423)
    • Implement Send and Sync for FuturesUnordered iterators (#2416)
    • Make FuturesUnordered::iter_pin_ref public (#2423)
    • Add SelectAll::clear (#2430)
    • Add SelectAll::{iter, iter_mut} (#2428)
    • Implement IntoIterator for SelectAll (#2428)
    • Implement Clone for WeakShared (#2396)
    Open source →
  21. 0.3.14 10 Apr 2021
    Release notes

    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.

    • Add future::SelectAll::into_inner (#2363)
    • Allow calling UnboundedReceiver::try_next after None (#2369)
    • Reexport non-Ext traits from the root of futures_util (#2377)
    • Add AsyncSeekExt::stream_position (#2380)
    • Add stream::Peekable::{next_if, next_if_eq} (#2379)
    Open source →
  22. 0.3.13 23 Feb 2021
    Release notes

    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.

    • Mitigated starvation issues in FuturesUnordered (#2333)
    • Fixed race with dropping mpsc::Receiver (#2304)
    • Added Shared::{strong_count, weak_count} (#2346)
    • Added no_std support for task::noop_waker_ref (#2332)
    • Implemented Stream::size_hint for Either (#2325)
    Open source →
  23. 0.3.12 15 Jan 2021
    Release notes

    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.

    • Fixed Unpin impl of future::{MaybeDone, TryMaybeDone} where trait bounds were accidentally added in 0.3.9. (#2317)
    Open source →
  24. 0.3.11 14 Jan 2021
    Release notes

    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.

    • Fixed heap buffer overflow in AsyncReadExt::{read_to_end, read_to_string} (#2314)
    Open source →
  25. 0.3.10 13 Jan 2021
    Release notes

    Note: This release has been yanked. See #2310 for details.

    • Fixed type-inference in sink::unfold by specifying more of its types (breaking change -- see #2311)
    Open source →
  26. 0.3.9 08 Jan 2021
    Release notes

    Note: This release has been yanked. See #2310 for details.

    • Significantly improved compile time when async-await crate feature is disabled (#2273)
    • Added stream::repeat_with (#2279)
    • Added StreamExt::unzip (#2263)
    • Added sink::unfold (#2268)
    • Added SinkExt::feed (#2155)
    • Implemented FusedFuture for oneshot::Receiver (#2300)
    • Implemented Clone for sink::With (#2290)
    • Re-exported MapOkOrElse, MapInto, OkInto, TryFlatten, WriteAllVectored (#2275)
    Open source →
  27. 0.3.8 09 Nov 2020
    Release notes

    Note: This release has been yanked. See #2310 for details.

    • Switched proc-macros to use native #[proc_macro] at Rust 1.45+ (#2243)
    • Added WeakShared (#2169)
    • Added TryStreamExt::try_buffered (#2245)
    • Added StreamExt::cycle (#2252)
    • Implemented Clone for stream::{Empty, Pending, Repeat, Iter} (#2248, #2252)
    • Fixed panic in some TryStreamExt combinators (#2250)
    Open source →
  28. 0.3.7 23 Oct 2020
    Release notes

    Note: This release has been yanked. See #2310 for details.

    • Fixed unsoundness in MappedMutexGuard (#2240)
    • Re-exported TakeUntil (#2235)
    • futures-test: Prevent double panic in panic_waker (#2236)
    Open source →
  29. 0.3.6 05 Oct 2020
    Release notes

    Note: This release has been yanked. See #2310 for details.

    • Fixed UB due to missing 'static on task::waker (#2206)
    • Added AsyncBufReadExt::fill_buf (#2225)
    • Added TryStreamExt::try_take_while (#2212)
    • Added is_connected_to method to mpsc::{Sender, UnboundedSender} (#2179)
    • Added is_connected_to method to oneshot::Sender (#2158)
    • Implement FusedStream for FuturesOrdered (#2205)
    • Fixed documentation links
    • Improved documentation
    • futures-test: Added track_closed method to AsyncWriteTestExt and SinkTestExt (#2159)
    • futures-test: Implemented more traits for InterleavePending (#2208)
    • futures-test: Implemented more traits for AssertUnmoved (#2208)
    Open source →
  30. 0.3.5 08 May 2020
    Release notes

    Note: This release has been yanked. See #2310 for details.

    • Added StreamExt::flat_map.
    • Added StreamExt::ready_chunks.
    • Added *_unpin methods to SinkExt.
    • Added a cancellation() future to oneshot::Sender.
    • Added reunite method to ReadHalf and WriteHalf.
    • Added Extend implementations for Futures(Un)Ordered and SelectAll.
    • Added support for reexporting the join! and select! macros.
    • Added no_std support for the pending! and poll! macros.
    • Added Send and Sync support for AssertUnmoved.
    • Fixed a bug where Shared wasn't relinquishing control to the executor.
    • Removed the Send bound on the output of RemoteHandle.
    • Relaxed bounds on FuturesUnordered.
    • Reorganized internal tests to work under different --features.
    • Reorganized the bounds on StreamExt::forward.
    • Removed and replaced a large amount of internal unsafe.
    Open source →
  31. 0.3.4 07 Feb 2020
    Release notes

    Note: This release has been yanked. See #2310 for details.

    • Fixed missing Drop for UnboundedReceiver (#2064)
    Open source →
  32. 0.3.3 05 Feb 2020
    Release notes

    Note: This release has been yanked. See #2310 for details.

    • Fixed compatibility issue with pinned facade (#2062)
    Open source →
  33. 0.3.2 04 Feb 2020
    Release notes

    Note: This release has been yanked. See #2310 for details.

    • Improved buffering performance of SplitSink (#1969)
    • Added select_biased! macro (#1976)
    • Added hash_receiver method to mpsc channel (#1962)
    • Added stream::try_unfold (#1977)
    • Fixed bug with zero-size buffers in vectored IO (#1998)
    • AtomicWaker::new() is now const fn (#2007)
    • Fixed bug between threadpool and user park/unparking (#2010)
    • Added stream::Peekable::peek (#2021)
    • Added StreamExt::scan (#2044)
    • Added impl of AsyncRead/Write for BufReader/Writer (#2033)
    • Added impl of Spawn and LocalSpawn for Arc<impl Spawn and Rc<impl Spawn> (#2039)
    • Fixed Sync issues with FuturesUnordered (#2054)
    • Added into_inner method for future::Ready (#2055)
    • Added MappedMutexGuard API (#2056)
    • Mitigated starvation issues in FuturesUnordered (#2049)
    • Added TryFutureExt::map_ok_or_else (#2058)
    Open source →
  34. 0.3.1 07 Nov 2019
    Release notes

    Note: This release has been yanked. See #2310 for details.

    • Fix signature of SpawnExt and LocalSpawnExt trait (breaking change -- see #1959)
    Open source →
  35. 0.3.0 06 Nov 2019
    Release notes

    Note: This release has been yanked. See #2310 for details.

    • Stable release along with stable async/await!
    • Added async/await to default features (#1953)
    • Changed Spawn trait and FuturesUnordered::push to take &self (#1950)
    • Moved Spawn and FutureObj out of futures-core and into futures-task (#1925)
    • Changed case convention for feature names (#1937)
    • Added executor feature (#1949)
    • Moved copy_into/copy_buf_into (#1948)
    • Changed SinkExt::send_all to accept a TryStream (#1946)
    • Removed ThreadPool::run (#1944)
    • Changed to use our own definition of io::Cursor (#1943)
    • Removed BufReader::poll_seek_relative (#1938)
    • Changed skip to take a usize rather than u64 (#1931)
    • Removed Stream impl for VecDeque (#1930)
    • Renamed Peekable::peek to poll_peek (#1928)
    • Added immutable iterators for FuturesUnordered (#1922)
    • Made ThreadPool optional (#1910)
    • Renamed oneshot::Sender::poll_cancel to poll_canceled (#1908)
    • Added some missing Clone implementations
    • Documentation fixes
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive