futures-channel
Channels for asynchronous communication using futures-rs.
0.3.34
806M downloads/mo
#89 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 33 of 35 stable releases
2 versions withdrawn
withdrawn after publishing
8 years old
39 releases · first in 2018
3 releases in the last 12 months
see the full history below
Release timeline
39 releases · Mar 2018 to Aug 2026Releases
latest 39-
0.3.3411 Aug 2026 -
0.3.3318 Jul 2026Release notes
Open source →- Fix
ReadLine's soundness issue regarding to exception safety. (#3020) - Fix unsound
Sendimpl forIterPinRefandIter. (#3003) - Fix stacked borrows violation in
compat01as03implementation. (#3012) - Fix memory leak in
FuturesUnordered::IntoIter. (#3005) - Add
portable-atomic-allocfeature and use it inFuturesUnordered. (#3007) - Re-export
alloc::task::Wake. (#3010) - Update
spinto 0.12. (#3014)
Release notes
Open source →- Fix
ReadLine's soundness issue regarding to exception safety. (#3020) - Fix unsound
Sendimpl forIterPinRefandIter. (#3003) - Fix stacked borrows violation in
compat01as03implementation. (#3012) - Fix memory leak in
FuturesUnordered::IntoIter. (#3005) - Add
portable-atomic-allocfeature and use it inFuturesUnordered. (#3007) - Re-export
alloc::task::Wake. (#3010) - Update
spinto 0.12. (#3014)
- Fix
-
0.3.3215 Feb 2026Release notes
Open source →- Bump MSRV of utility crates to 1.71. (#2989)
- Soft-deprecate
ready!macro in favor ofstd::task::ready!added in Rust 1.64 (#2925) - Soft-deprecate
pin_mut!macro in favor ofstd::pin::pin!added in Rust 1.68 (#2929) - Add
FuturesOrdered::clear(#2927) - Add
mpsc::*Receiver::recv(#2947) - Add
mpsc::*Receiver::try_recvand deprecatempsc::*Receiver::::try_next(#2944) - Implement
FusedStreamforsink::With(#2948) - Add
no_stdsupport forshared(#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)
Release notes
Open source →- Bump MSRV of utility crates to 1.71. (#2989)
- Soft-deprecate
ready!macro in favor ofstd::task::ready!added in Rust 1.64 (#2925) - Soft-deprecate
pin_mut!macro in favor ofstd::pin::pin!added in Rust 1.68 (#2929) - Add
FuturesOrdered::clear(#2927) - Add
mpsc::*Receiver::recv(#2947) - Add
mpsc::*Receiver::try_recvand deprecatempsc::*Receiver::::try_next(#2944) - Implement
FusedStreamforsink::With(#2948) - Add
no_stdsupport forshared(#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)
-
0.3.3105 Oct 2024Release notes
Open source →- Fix use after free of task in
FuturesUnorderedwhen 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_lineandAsyncBufReadExt::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_wakechange (#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)
Release notes
Open source →- Fix use after free of task in
FuturesUnorderedwhen 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_lineandAsyncBufReadExt::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_wakechange (#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)
- Fix use after free of task in
-
0.3.3024 Dec 2023Release notes
Open source →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)
- Add
-
0.3.2926 Oct 2023Release notes
Open source →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
Syncimpl ofFuturesUnordered(#2788) - Fix infinite loop caused by invalid UTF-8 bytes (#2785)
- Fix build error with -Z minimal-versions (#2761)
- Add
-
0.3.2830 Mar 2023Release notes
Open source →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)
-
0.3.2711 Mar 2023Release notes
Open source →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
BiLockstrict-provenance compatible (#2716)
- Add
-
0.3.2630 Jan 2023Release notes
Open source →- Add
Either::as_pin_mutandEither::as_pin_ref(#2691) - Add
Shared::ptr_eqandShared::ptr_hash(#2691) - Implement
FusedStreamforBuffered(#2676) - Implement
FusedStreamfor all streams inReadyChunks(#2693) - Fix bug in
FuturesOrdered::push_front(#2664) - Remove
Fut::Output: Clonebounds from someSharedmethods (#2662) - Remove
T: Debugbounds fromDebugimplementations ofmpscandoneshottypes (#2666, #2667)
Release notes
Open source →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_mutandEither::as_pin_ref(#2691) - Add
Shared::ptr_eqandShared::ptr_hash(#2691) - Implement
FusedStreamforBuffered(#2676) - Implement
FusedStreamfor all streams inReadyChunks(#2693) - Fix bug in
FuturesOrdered::push_front(#2664) - Remove
Fut::Output: Clonebounds from someSharedmethods (#2662) - Remove
T: Debugbounds fromDebugimplementations ofmpscandoneshottypes (#2666, #2667)
- Add
-
0.3.2520 Oct 2022Release notes
Open source →Release notes
Open source →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!andtry_join!macros (#2649) - Implement
Cloneforsink::Drain(#2650)
- Fix soundness issue in
-
0.3.2429 Aug 2022Release notes
Open source →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_strategystreams (#2635)
- Fix incorrect termination of
-
0.3.2314 Aug 2022Release notes
Open source →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.
-
0.3.2214 Aug 2022Release notes
Open source →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
Syncimpl ofBiLockGuard(#2570) - Fix partial iteration in
FuturesUnordered(#2574) - Fix false detection of inner panics in
Shared(#2576) - Add
Mutex::lock_ownedandMutex::try_lock_owned(#2571) - Add
io::copy_buf_abortable(#2507) - Remove
Unpinbound fromTryStreamExt::into_async_read(#2599) - Make
run_until_stalledhandle self-waking futures (#2593) - Use
FuturesOrderedintry_join_all(#2556) - Fix orderings in
LocalPoolwaker (#2608) - Fix
stream::Chunkadapters size hints (#2611) - Add
push_frontandpush_backtoFuturesOrdered(#2591) - Deprecate
FuturesOrdered::pushin favor ofFuturesOrdered::push_back(#2591) - Performance improvements (#2583, #2626)
- Documentation improvements (#2579, #2604, #2613)
- Fix
-
0.3.2106 Feb 2022Release notes
Open source →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
FlattenUnorderedthat introduced in 0.3.20 (#2566)
- Fix potential data race in
-
0.3.2006 Feb 2022 withdrawnRelease notes
Open source →Note: This release has been yanked due to a bug fixed in 0.3.21.
- Fix stacked borrows violations when
-Zmiri-tag-raw-pointersis enabled. This raises MSRV offutures-taskto 1.45. (#2548, #2550) - Change
FuturesUnorderedto respect yielding from future (#2551) - Add
StreamExt::{flatten_unordered, flat_map_unordered}(#2083)
- Fix stacked borrows violations when
-
0.3.1918 Dec 2021Release notes
Open source →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-initializerfeature (#2534) - Fix panic in
FuturesUnordered(#2535) - Fix compatibility issue with
FuturesUnorderedand tokio's cooperative scheduling (#2527) - Add
StreamExt::count(#2495)
- Remove unstable
-
0.3.1823 Nov 2021 withdrawnRelease notes
Open source →Note: This release has been yanked. See #2529 for details.
- Fix unusable
Sinkimplementation onstream::Scan(#2499) - Make
task::noop_waker_refavailable withoutstdfeature (#2505) - Add async
LineWriter(#2477) - Remove dependency on
proc-macro-hack. This raises MSRV of utility crates to 1.45. (#2520)
- Fix unusable
-
0.3.1730 Aug 2021Release notes
Open source →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
FuturesOrderedinjoin_all(#2412) - Add
{future, stream}::poll_immediate(#2452) - Add
stream_select!macro (#2262) - Implement
DefaultforOptionFuture(#2471) - Add
Peekable::{peek_mut, poll_peek_mut}(#2488) - Add
BufReader::seek_relative(#2489)
- Use
-
0.3.1623 Jul 2021Release notes
Open source →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_advanceinterface (#2454)
- Add
-
0.3.1511 May 2021Release notes
Open source →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
IntoIteratorforFuturesUnordered(#2423) - Implement
SendandSyncforFuturesUnorderediterators (#2416) - Make
FuturesUnordered::iter_pin_refpublic (#2423) - Add
SelectAll::clear(#2430) - Add
SelectAll::{iter, iter_mut}(#2428) - Implement
IntoIteratorforSelectAll(#2428) - Implement
CloneforWeakShared(#2396)
- Use
-
0.3.1410 Apr 2021Release notes
Open source →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_nextafterNone(#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)
- Add
-
0.3.1323 Feb 2021Release notes
Open source →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_stdsupport fortask::noop_waker_ref(#2332) - Implemented
Stream::size_hintforEither(#2325)
- Mitigated starvation issues in
-
0.3.1215 Jan 2021Release notes
Open source →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
Unpinimpl offuture::{MaybeDone, TryMaybeDone}where trait bounds were accidentally added in 0.3.9. (#2317)
- Fixed
-
0.3.1114 Jan 2021Release notes
Open source →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)
- Fixed heap buffer overflow in
-
0.3.1013 Jan 2021Release notes
Open source →Note: This release has been yanked. See #2310 for details.
- Fixed type-inference in
sink::unfoldby specifying more of its types (breaking change -- see #2311)
- Fixed type-inference in
-
0.3.908 Jan 2021Release notes
Open source →Note: This release has been yanked. See #2310 for details.
- Significantly improved compile time when
async-awaitcrate feature is disabled (#2273) - Added
stream::repeat_with(#2279) - Added
StreamExt::unzip(#2263) - Added
sink::unfold(#2268) - Added
SinkExt::feed(#2155) - Implemented
FusedFutureforoneshot::Receiver(#2300) - Implemented
Cloneforsink::With(#2290) - Re-exported
MapOkOrElse,MapInto,OkInto,TryFlatten,WriteAllVectored(#2275)
- Significantly improved compile time when
-
0.3.809 Nov 2020Release notes
Open source →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
Cloneforstream::{Empty, Pending, Repeat, Iter}(#2248, #2252) - Fixed panic in some
TryStreamExtcombinators (#2250)
- Switched proc-macros to use native
-
0.3.723 Oct 2020Release notes
Open source →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)
- Fixed unsoundness in
-
0.3.605 Oct 2020Release notes
Open source →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_tomethod tompsc::{Sender, UnboundedSender}(#2179) - Added
is_connected_tomethod tooneshot::Sender(#2158) - Implement
FusedStreamforFuturesOrdered(#2205) - Fixed documentation links
- Improved documentation
- futures-test: Added
track_closedmethod toAsyncWriteTestExtandSinkTestExt(#2159) - futures-test: Implemented more traits for
InterleavePending(#2208) - futures-test: Implemented more traits for
AssertUnmoved(#2208)
- Fixed UB due to missing 'static on
-
0.3.508 May 2020Release notes
Open source →Note: This release has been yanked. See #2310 for details.
- Added
StreamExt::flat_map. - Added
StreamExt::ready_chunks. - Added
*_unpinmethods toSinkExt. - Added a
cancellation()future tooneshot::Sender. - Added
reunitemethod toReadHalfandWriteHalf. - Added
Extendimplementations forFutures(Un)OrderedandSelectAll. - Added support for reexporting the
join!andselect!macros. - Added
no_stdsupport for thepending!andpoll!macros. - Added
SendandSyncsupport forAssertUnmoved. - Fixed a bug where
Sharedwasn't relinquishing control to the executor. - Removed the
Sendbound on the output ofRemoteHandle. - 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.
- Added
-
0.3.407 Feb 2020Release notes
Open source →Note: This release has been yanked. See #2310 for details.
- Fixed missing
DropforUnboundedReceiver(#2064)
- Fixed missing
-
0.3.305 Feb 2020Release notes
Open source →Note: This release has been yanked. See #2310 for details.
- Fixed compatibility issue with pinned facade (#2062)
-
0.3.204 Feb 2020Release notes
Open source →Note: This release has been yanked. See #2310 for details.
- Improved buffering performance of
SplitSink(#1969) - Added
select_biased!macro (#1976) - Added
hash_receivermethod to mpsc channel (#1962) - Added
stream::try_unfold(#1977) - Fixed bug with zero-size buffers in vectored IO (#1998)
AtomicWaker::new()is nowconst fn(#2007)- Fixed bug between threadpool and user park/unparking (#2010)
- Added
stream::Peekable::peek(#2021) - Added
StreamExt::scan(#2044) - Added impl of
AsyncRead/WriteforBufReader/Writer(#2033) - Added impl of
SpawnandLocalSpawnforArc<impl SpawnandRc<impl Spawn>(#2039) - Fixed
Syncissues withFuturesUnordered(#2054) - Added
into_innermethod forfuture::Ready(#2055) - Added
MappedMutexGuardAPI (#2056) - Mitigated starvation issues in
FuturesUnordered(#2049) - Added
TryFutureExt::map_ok_or_else(#2058)
- Improved buffering performance of
-
0.3.107 Nov 2019Release notes
Open source →Note: This release has been yanked. See #2310 for details.
- Fix signature of
SpawnExtandLocalSpawnExttrait (breaking change -- see #1959)
- Fix signature of
-
0.3.006 Nov 2019Release notes
Open source →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
Spawntrait andFuturesUnordered::pushto take&self(#1950) - Moved
SpawnandFutureObjout offutures-coreand intofutures-task(#1925) - Changed case convention for feature names (#1937)
- Added
executorfeature (#1949) - Moved
copy_into/copy_buf_into(#1948) - Changed
SinkExt::send_allto accept aTryStream(#1946) - Removed
ThreadPool::run(#1944) - Changed to use our own definition of
io::Cursor(#1943) - Removed
BufReader::poll_seek_relative(#1938) - Changed
skipto take ausizerather thanu64(#1931) - Removed
Streamimpl forVecDeque(#1930) - Renamed
Peekable::peektopoll_peek(#1928) - Added immutable iterators for
FuturesUnordered(#1922) - Made
ThreadPooloptional (#1910) - Renamed
oneshot::Sender::poll_canceltopoll_canceled(#1908) - Added some missing
Cloneimplementations - Documentation fixes
-
0.2.119 Apr 2018Nothing published for this version
-
0.2.006 Apr 2018Nothing published for this version
-
0.2.0-beta20 Mar 2018 pre-releaseNothing published for this version
-
0.2.0-alpha05 Mar 2018 pre-releaseNothing published for this version