From 583e9df9eba63a933cf62b0483cb85299b05f853 Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Sat, 24 Jul 2021 03:32:26 +0900 Subject: [PATCH 1/2] Update changelog --- CHANGELOG.md | 80 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 61 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 86b614f4a6..b6d4369d4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,12 @@ +# 0.3.16 - 2021-07-23 + +* Add `TryStreamExt::try_chunks` (#2438) +* Add `StreamExt::{all, any}` (#2460) +* Add `stream::select_with_strategy` (#2450) +* Update to new `io_slice_advance` interface (#2454) + # 0.3.15 - 2021-05-11 + * 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) @@ -13,6 +21,7 @@ * Implement `Clone` for `WeakShared` (#2396) # 0.3.14 - 2021-04-10 + * 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) @@ -20,6 +29,7 @@ * Add `stream::Peekable::{next_if, next_if_eq}` (#2379) # 0.3.13 - 2021-02-23 + * Mitigated starvation issues in `FuturesUnordered` (#2333) * Fixed race with dropping `mpsc::Receiver` (#2304) * Added `Shared::{strong_count, weak_count}` (#2346) @@ -27,15 +37,19 @@ * Implemented `Stream::size_hint` for `Either` (#2325) # 0.3.12 - 2021-01-15 + * Fixed `Unpin` impl of `future::{MaybeDone, TryMaybeDone}` where trait bounds were accidentally added in 0.3.9. (#2317) # 0.3.11 - 2021-01-14 + * Fixed heap buffer overflow in `AsyncReadExt::{read_to_end, read_to_string}` (#2314) # 0.3.10 - 2021-01-13 + * Fixed type-inference in `sink::unfold` by specifying more of its types (breaking change -- see #2311) # 0.3.9 - 2021-01-08 + * Significantly improved compile time when `async-await` crate feature is disabled (#2273) * Added `stream::repeat_with` (#2279) * Added `StreamExt::unzip` (#2263) @@ -46,6 +60,7 @@ * Re-exported `MapOkOrElse`, `MapInto`, `OkInto`, `TryFlatten`, `WriteAllVectored` (#2275) # 0.3.8 - 2020-11-04 + * Switched proc-macros to use native `#[proc_macro]` at Rust 1.45+ (#2243) * Added `WeakShared` (#2169) * Added `TryStreamExt::try_buffered` (#2245) @@ -54,11 +69,13 @@ * Fixed panic in some `TryStreamExt` combinators (#2250) # 0.3.7 - 2020-10-23 + * Fixed unsoundness in `MappedMutexGuard` (#2240) * Re-exported `TakeUntil` (#2235) * futures-test: Prevent double panic in `panic_waker` (#2236) # 0.3.6 - 2020-10-06 + * Fixed UB due to missing 'static on `task::waker` (#2206) * Added `AsyncBufReadExt::fill_buf` (#2225) * Added `TryStreamExt::try_take_while` (#2212) @@ -72,6 +89,7 @@ * futures-test: Implemented more traits for `AssertUnmoved` (#2208) # 0.3.5 - 2020-05-08 + * Added `StreamExt::flat_map`. * Added `StreamExt::ready_chunks`. * Added `*_unpin` methods to `SinkExt`. @@ -89,12 +107,15 @@ * Removed and replaced a large amount of internal `unsafe`. # 0.3.4 - 2020-02-06 + * Fixed missing `Drop` for `UnboundedReceiver` (#2064) # 0.3.3 - 2020-02-04 + * Fixed compatibility issue with pinned facade (#2062) # 0.3.2 - 2020-02-03 + * Improved buffering performance of `SplitSink` (#1969) * Added `select_biased!` macro (#1976) * Added `hash_receiver` method to mpsc channel (#1962) @@ -112,10 +133,12 @@ * Mitigated starvation issues in `FuturesUnordered` (#2049) * Added `TryFutureExt::map_ok_or_else` (#2058) -# 0.3.1 - 2019-11-7 +# 0.3.1 - 2019-11-07 + * Fix signature of `LocalSpawn` trait (breaking change -- see #1959) -# 0.3.0 - 2019-11-5 +# 0.3.0 - 2019-11-05 + * Stable release along with stable async/await! * Added async/await to default features (#1953) * Changed `Spawn` trait and `FuturesUnordered::push` to take `&self` (#1950) @@ -136,7 +159,8 @@ * Added some missing `Clone` implementations * Documentation fixes -# 0.3.0-alpha.19 - 2019-9-25 +# 0.3.0-alpha.19 - 2019-09-25 + * Stabilized the `async-await` feature (#1816) * Made `async-await` feature no longer require `std` feature (#1815) * Updated `proc-macro2`, `syn`, and `quote` to 1.0 (#1798) @@ -159,7 +183,8 @@ * Removed dependency on `rand` by using our own PRNG (#1837) * Removed `futures-core` dependency from `futures-sink` (#1832) -# 0.3.0-alpha.18 - 2019-8-9 +# 0.3.0-alpha.18 - 2019-08-09 + * Rewrote `join!` and `try_join!` as procedural macros to allow passing expressions (#1783) * Banned manual implementation of `TryFuture` and `TryStream` for forward compatibility. See #1776 for more details. (#1777) * Changed `AsyncReadExt::read_to_end` to return the total number of bytes read (#1721) @@ -178,7 +203,8 @@ * Added `TryStreamExt::try_flatten` (#1731) * Added `FutureExt::now_or_never` (#1747) -# 0.3.0-alpha.17 - 2019-7-3 +# 0.3.0-alpha.17 - 2019-07-03 + * Removed `try_ready!` macro in favor of `ready!(..)?`. (#1602) * Removed `io::Window::{set_start, set_end}` in favor of `io::Window::set`. (#1667) * Re-exported `pin_utils::pin_mut!` macro. (#1686) @@ -211,7 +237,8 @@ * Renamed `Sink::SinkError` to `Sink::Error`. * Made a number of dependencies of `futures-util` optional. -# 0.3.0-alpha.16 - 2019-5-10 +# 0.3.0-alpha.16 - 2019-05-10 + * Updated to new nightly `async_await`. * Changed `AsyncRead::poll_vectored_read` and `AsyncWrite::poll_vectored_write` to use stabilized `std::io::{IoSlice, IoSliceMut}` instead of `iovec::IoVec`, and renamed to @@ -222,7 +249,8 @@ * Added `AsyncBufReadExt::{read_line, lines}`. * Added `io::BufReader`. -# 0.3.0-alpha.15 - 2019-4-26 +# 0.3.0-alpha.15 - 2019-04-26 + * Updated to stabilized `futures_api`. * Removed `StreamObj`, cautioned against usage of `FutureObj`. * Changed `StreamExt::select` to a function. @@ -235,7 +263,8 @@ * Added functions to partially progress a local pool. * Changed to use our own `Either` type rather than the one from the `either` crate. -# 0.3.0-alpha.14 - 2019-4-15 +# 0.3.0-alpha.14 - 2019-04-15 + * Updated to new nightly `futures_api`. * Changed `Forward` combinator to drop sink after completion, and allow `!Unpin` `Sink`s. * Added 0.1 <-> 0.3 compatibility shim for `Sink`s. @@ -246,7 +275,8 @@ * Changed `join` and `try_join` combinators to functions. * Fixed propagation of `cfg-target-has-atomic` feature. -# 0.3.0-alpha.13 - 2019-2-20 +# 0.3.0-alpha.13 - 2019-02-20 + * Updated to new nightly with stabilization candidate API. * Removed `LocalWaker`. * Added `#[must_use]` to `Stream` and `Sink` traits. @@ -256,7 +286,8 @@ * Removed `TokioDefaultSpawner` and `tokio-compat`. * Moved intra-crate dependencies to exact versions. -# 0.3.0-alpha.12 - 2019-1-14 +# 0.3.0-alpha.12 - 2019-01-14 + * Updated to new nightly with a modification to `Pin::set`. * Expose `AssertUnmoved` and `PendingOnce`. * Prevent double-panic in `AssertUnmoved`. @@ -264,6 +295,7 @@ * Implement `Default` for `Mutex` and `SelectAll`. # 0.3.0-alpha.11 - 2018-12-27 + * Updated to newly stabilized versions of the `pin` and `arbitrary_self_types` features. * Re-added `select_all` for streams. * Added `TryStream::into_async_read` for converting from a stream of bytes into @@ -273,6 +305,7 @@ * Exposed `join_all` from the facade # 0.3.0-alpha.10 - 2018-11-27 + * Revamped `select!` macro * Added `select_next_some` method for getting only the `Some` elements of a stream from `select!` * Added `futures::lock::Mutex` for async-aware synchronization. @@ -285,27 +318,33 @@ * Added `try_concat` # 0.3.0-alpha.9 - 2018-10-18 + * Fixed in response to new nightly handling of 2018 edition + `#![no_std]` # 0.3.0-alpha.8 - 2018-10-16 + * Fixed stack overflow in 0.1 compatibility layer * Added AsyncRead / AsyncWrite compatibility layer * Added Spawn -> 0.1 Executor compatibility * Made 0.1 futures usable on 0.3 executors without an additional global `Task`, accomplished by wrapping 0.1 futures in an 0.1 `Spawn` when using them as 0.3 futures. -* Cleanups and improvments to the `AtomicWaker` implementation. +* Cleanups and improvements to the `AtomicWaker` implementation. # 0.3.0-alpha.7 - 2018-10-01 + * Update to new nightly which removes `Spawn` from `task::Context` and replaces `Context` with `LocalWaker`. * Add `Spawn` and `LocalSpawn` traits and `FutureObj` and `LocalFutureObj` types to `futures-core`. # 0.3.0-alpha.6 - 2018-09-10 + * Replace usage of `crate` visibility with `pub(crate)` now that `crate` visibility is no longer included in the 2018 edition * Remove newly-stabilized "edition" feature in Cargo.toml files # 0.3.0-alpha.5 - 2018-09-03 + * Revert usage of cargo crate renaming feature # 0.3.0-alpha.4 - 2018-09-02 + **Note: This release does not work, use `0.3.0-alpha.5` instead** * `future::ok` and `future:err` to create result wrapping futures (similar to `future::ready`) @@ -319,7 +358,8 @@ * Run Clippy in CI only when it is available # 0.3.0-alpha.3 - 2018-08-15 -* Compatibilty with newest nightly + +* Compatibility with newest nightly * Futures 0.1 compatibility layer including Tokio compatibility * Added `spawn!` and `spawn_with_handle!` macros * Added `SpawnExt` methods `spawn` and `spawn_with_handle` @@ -337,16 +377,17 @@ * Doc improvements to `StreamExt::select` # 0.3.0-alpha.2 - 2018-07-30 + * The changelog is back! * Compatibility with futures API in latest nightly * Code examples and doc improvements - - IO: Methods of traits `AsyncReadExt`, `AsyncWriteExt` - - Future: - - Methods of trait `TryFutureExt` - - Free functions `empty`, `lazy`, `maybe_done`, `poll_fn` and `ready` - - Type `FutureOption` - - Macros `join!`, `select!` and `pending!` - - Stream: Methods of trait `TryStreamExt` + * IO: Methods of traits `AsyncReadExt`, `AsyncWriteExt` + * Future: + * Methods of trait `TryFutureExt` + * Free functions `empty`, `lazy`, `maybe_done`, `poll_fn` and `ready` + * Type `FutureOption` + * Macros `join!`, `select!` and `pending!` + * Stream: Methods of trait `TryStreamExt` * Added `TryStreamExt` combinators `map_ok`, `map_err`, `err_into`, `try_next` and `try_for_each` * Added `Drain`, a sink that will discard all items given to it. Can be created using the `drain` function * Bugfix for the `write_all` combinator @@ -364,6 +405,7 @@ * "Task" is now defined as our term for "lightweight thread". The code of the executors and `FuturesUnordered` was refactored to align with this definition. # 0.3.0-alpha.1 - 2018-07-19 + * Major changes: See [the announcement](https://rust-lang-nursery.github.io/futures-rs/blog/2018/07/19/futures-0.3.0-alpha.1.html) on our new blog for details. The changes are too numerous to be covered in this changelog because nearly every line of code was modified. # 0.1.17 - 2017-10-31 From a538c1e4889dbe6cb727f92cd5ccb0cd1d9856fe Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Sat, 24 Jul 2021 03:34:49 +0900 Subject: [PATCH 2/2] Release 0.3.16 --- futures-channel/Cargo.toml | 6 +++--- futures-core/Cargo.toml | 2 +- futures-executor/Cargo.toml | 8 ++++---- futures-io/Cargo.toml | 2 +- futures-macro/Cargo.toml | 2 +- futures-sink/Cargo.toml | 2 +- futures-task/Cargo.toml | 2 +- futures-test/Cargo.toml | 16 ++++++++-------- futures-util/Cargo.toml | 14 +++++++------- futures/Cargo.toml | 16 ++++++++-------- 10 files changed, 35 insertions(+), 35 deletions(-) diff --git a/futures-channel/Cargo.toml b/futures-channel/Cargo.toml index fae78a0edf..1d3cb74f5e 100644 --- a/futures-channel/Cargo.toml +++ b/futures-channel/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "futures-channel" edition = "2018" -version = "0.3.15" +version = "0.3.16" authors = ["Alex Crichton "] license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" @@ -23,8 +23,8 @@ unstable = [] cfg-target-has-atomic = [] [dependencies] -futures-core = { path = "../futures-core", version = "0.3.15", default-features = false } -futures-sink = { path = "../futures-sink", version = "0.3.15", default-features = false, optional = true } +futures-core = { path = "../futures-core", version = "0.3.16", default-features = false } +futures-sink = { path = "../futures-sink", version = "0.3.16", default-features = false, optional = true } [dev-dependencies] futures = { path = "../futures", default-features = true } diff --git a/futures-core/Cargo.toml b/futures-core/Cargo.toml index a2440eab74..6c1b5e70ec 100644 --- a/futures-core/Cargo.toml +++ b/futures-core/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "futures-core" edition = "2018" -version = "0.3.15" +version = "0.3.16" authors = ["Alex Crichton "] license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" diff --git a/futures-executor/Cargo.toml b/futures-executor/Cargo.toml index 55c69e3a9c..286b253c65 100644 --- a/futures-executor/Cargo.toml +++ b/futures-executor/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "futures-executor" edition = "2018" -version = "0.3.15" +version = "0.3.16" authors = ["Alex Crichton "] license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" @@ -17,9 +17,9 @@ std = ["futures-core/std", "futures-task/std", "futures-util/std"] thread-pool = ["std", "num_cpus"] [dependencies] -futures-core = { path = "../futures-core", version = "0.3.15", default-features = false } -futures-task = { path = "../futures-task", version = "0.3.15", default-features = false } -futures-util = { path = "../futures-util", version = "0.3.15", default-features = false } +futures-core = { path = "../futures-core", version = "0.3.16", default-features = false } +futures-task = { path = "../futures-task", version = "0.3.16", default-features = false } +futures-util = { path = "../futures-util", version = "0.3.16", default-features = false } num_cpus = { version = "1.8.0", optional = true } [dev-dependencies] diff --git a/futures-io/Cargo.toml b/futures-io/Cargo.toml index b4f50547bf..518d4615a0 100644 --- a/futures-io/Cargo.toml +++ b/futures-io/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "futures-io" edition = "2018" -version = "0.3.15" +version = "0.3.16" authors = ["Alex Crichton "] license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" diff --git a/futures-macro/Cargo.toml b/futures-macro/Cargo.toml index 082faf1547..1acd4a22eb 100644 --- a/futures-macro/Cargo.toml +++ b/futures-macro/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "futures-macro" edition = "2018" -version = "0.3.15" +version = "0.3.16" authors = ["Taylor Cramer ", "Taiki Endo "] license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" diff --git a/futures-sink/Cargo.toml b/futures-sink/Cargo.toml index 02cb0d3063..2144518ec4 100644 --- a/futures-sink/Cargo.toml +++ b/futures-sink/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "futures-sink" edition = "2018" -version = "0.3.15" +version = "0.3.16" authors = ["Alex Crichton "] license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" diff --git a/futures-task/Cargo.toml b/futures-task/Cargo.toml index b454722777..3d246add7a 100644 --- a/futures-task/Cargo.toml +++ b/futures-task/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "futures-task" edition = "2018" -version = "0.3.15" +version = "0.3.16" authors = ["Alex Crichton "] license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" diff --git a/futures-test/Cargo.toml b/futures-test/Cargo.toml index 0f34875fd8..ef138d4437 100644 --- a/futures-test/Cargo.toml +++ b/futures-test/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "futures-test" edition = "2018" -version = "0.3.15" +version = "0.3.16" authors = ["Wim Looman "] license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" @@ -12,13 +12,13 @@ Common utilities for testing components built off futures-rs. """ [dependencies] -futures-core = { version = "0.3.15", path = "../futures-core", default-features = false } -futures-task = { version = "0.3.15", path = "../futures-task", default-features = false } -futures-io = { version = "0.3.15", path = "../futures-io", default-features = false } -futures-util = { version = "0.3.15", path = "../futures-util", default-features = false } -futures-executor = { version = "0.3.15", path = "../futures-executor", default-features = false } -futures-sink = { version = "0.3.15", path = "../futures-sink", default-features = false } -futures-macro = { version = "=0.3.15", path = "../futures-macro", default-features = false } +futures-core = { version = "0.3.16", path = "../futures-core", default-features = false } +futures-task = { version = "0.3.16", path = "../futures-task", default-features = false } +futures-io = { version = "0.3.16", path = "../futures-io", default-features = false } +futures-util = { version = "0.3.16", path = "../futures-util", default-features = false } +futures-executor = { version = "0.3.16", path = "../futures-executor", default-features = false } +futures-sink = { version = "0.3.16", path = "../futures-sink", default-features = false } +futures-macro = { version = "=0.3.16", path = "../futures-macro", default-features = false } pin-utils = { version = "0.1.0", default-features = false } pin-project = "1.0.1" diff --git a/futures-util/Cargo.toml b/futures-util/Cargo.toml index de77fdab86..98cace6b4c 100644 --- a/futures-util/Cargo.toml +++ b/futures-util/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "futures-util" edition = "2018" -version = "0.3.15" +version = "0.3.16" authors = ["Alex Crichton "] license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" @@ -39,12 +39,12 @@ cfg-target-has-atomic = [] autocfg = "1" [dependencies] -futures-core = { path = "../futures-core", version = "0.3.15", default-features = false } -futures-task = { path = "../futures-task", version = "0.3.15", default-features = false } -futures-channel = { path = "../futures-channel", version = "0.3.15", default-features = false, features = ["std"], optional = true } -futures-io = { path = "../futures-io", version = "0.3.15", default-features = false, features = ["std"], optional = true } -futures-sink = { path = "../futures-sink", version = "0.3.15", default-features = false, optional = true } -futures-macro = { path = "../futures-macro", version = "=0.3.15", default-features = false, optional = true } +futures-core = { path = "../futures-core", version = "0.3.16", default-features = false } +futures-task = { path = "../futures-task", version = "0.3.16", default-features = false } +futures-channel = { path = "../futures-channel", version = "0.3.16", default-features = false, features = ["std"], optional = true } +futures-io = { path = "../futures-io", version = "0.3.16", default-features = false, features = ["std"], optional = true } +futures-sink = { path = "../futures-sink", version = "0.3.16", default-features = false, optional = true } +futures-macro = { path = "../futures-macro", version = "=0.3.16", default-features = false, optional = true } proc-macro-hack = { version = "0.5.19", optional = true } proc-macro-nested = { version = "0.1.2", optional = true } slab = { version = "0.4.2", optional = true } diff --git a/futures/Cargo.toml b/futures/Cargo.toml index c62e99e72b..04cea8a125 100644 --- a/futures/Cargo.toml +++ b/futures/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "futures" edition = "2018" -version = "0.3.15" +version = "0.3.16" authors = ["Alex Crichton "] license = "MIT OR Apache-2.0" readme = "../README.md" @@ -16,13 +16,13 @@ composability, and iterator-like interfaces. categories = ["asynchronous"] [dependencies] -futures-core = { path = "../futures-core", version = "0.3.15", default-features = false } -futures-task = { path = "../futures-task", version = "0.3.15", default-features = false } -futures-channel = { path = "../futures-channel", version = "0.3.15", default-features = false, features = ["sink"] } -futures-executor = { path = "../futures-executor", version = "0.3.15", default-features = false, optional = true } -futures-io = { path = "../futures-io", version = "0.3.15", default-features = false } -futures-sink = { path = "../futures-sink", version = "0.3.15", default-features = false } -futures-util = { path = "../futures-util", version = "0.3.15", default-features = false, features = ["sink"] } +futures-core = { path = "../futures-core", version = "0.3.16", default-features = false } +futures-task = { path = "../futures-task", version = "0.3.16", default-features = false } +futures-channel = { path = "../futures-channel", version = "0.3.16", default-features = false, features = ["sink"] } +futures-executor = { path = "../futures-executor", version = "0.3.16", default-features = false, optional = true } +futures-io = { path = "../futures-io", version = "0.3.16", default-features = false } +futures-sink = { path = "../futures-sink", version = "0.3.16", default-features = false } +futures-util = { path = "../futures-util", version = "0.3.16", default-features = false, features = ["sink"] } [dev-dependencies] futures-executor = { path = "../futures-executor", features = ["thread-pool"] }