Releases: async-rs/async-std
v0.99.9
This patch upgrades our futures-rs
version, allowing us to build on the 1.39
beta. Additionally we've introduced map
and for_each
to Stream
. And we've
added about a dozen new FromStream
implementations for std
types, bringing
us up to par with std's FromIterator
implementations.
And finally we've added a new "unstable" task::blocking
function which can be
used to convert blocking code into async code using a threadpool. We've been
using this internally for a while now to async-std to power our fs
and
net::SocketAddr
implementations. With this patch userland code now finally has
access to this too.
Example
Create a stream of tuples, and collect into a hashmap
let a = stream::once(1u8);
let b = stream::once(0u8);
let s = a.zip(b);
let map: HashMap<u8, u8> = s.collect().await;
assert_eq!(map.get(&1), Some(&0u8));
Spawn a blocking task on a dedicated threadpool
task::blocking(async {
println!("long-running task here");
}).await;
Added
- Added
stream::Stream::map
- Added
stream::Stream::for_each
- Added
stream::Stream::try_for_each
- Added
task::blocking
as "unstable" - Added
FromStream
for allstd::{option, collections, result, string, sync}
types. - Added the
path
submodule as "unstable".
Changed
- Updated
futures-preview
to0.3.0-alpha.19
, allowing us to build onrustc 1.39.0-beta
. - As a consequence of this upgrade, all of our concrete stream implementations
now make use ofStream::size_hint
to optimize internal allocations. - We now use GitHub Actions through actions-rs,
in addition to Travis CI. We intend to fully switch in the near future. - Fixed a bug introduced in 0.99.6 where Unix Domain Listeners would sometimes become unresponsive.
- Updated our
sync::Barrier
docs to match std. - Updated our
stream::FromStream
docs to match std'sFromIterator
.
v0.99.8
This release came slightly ahead of schedule in order to fix compatibility issues with the newly released [email protected]
and Rust 1.39 beta release. Additionally we've introduced documentation for futures concurrency, and several new io::Read
methods!
Added
- Added README to examples directory.
- Added concurrency documentation to the futures submodule.
- Added
io::Read::take
method. - Added
io::Read::by_ref
method. - Added
io::Read::chain
method.
Changed
- Pin futures-preview to
0.3.0-alpha.18
, to avoid rustc upgrade problems. - Simplified extension traits using a macro.
- Use the
broadcast
module withstd::sync::Mutex
, reducing dependencies.
v0.99.7
This release includes 16 new APIs, including new streams combinators, Futures concurrency macros, and extensions to the sync and io submodules.
example using future::join
use async_std::future;
let a = future::ready(1);
let b = future::ready(2);
let c = future::ready(3);
let f = future::join!(a, b, c);
assert_eq!(f.await, (1, 2, 3));
Added
- Added
future::join
macro as "unstable" - Added
future::select
macro as "unstable" - Added
future::try_join
macro as "unstable" - Added
future::try_select
macro as "unstable" - Added
io::BufWriter
struct - Added
stream::Extend
trait - Added
stream::Stream::chain
method - Added
stream::Stream::filter
method - Added
stream::Stream::inspect
method - Added
stream::Stream::skip_while
method - Added
stream::Stream::skip
method - Added
stream::Stream::step_by
method - Added
sync::Arc
struct from stdlib - Added
sync::Barrier
struct as "unstable" - Added
sync::Weak
struct from stdlib - Added
task::ready
macro as "unstable"
Changed
- Correctly marked the
pin
submodule as "unstable" in the docs - Updated tutorial to have certain functions suffixed with
_loop
io
traits are now re-exports of futures-rs types, allowing them to be
implementedstream
traits are now re-exports of futures-rs types, allowing them to be
implementedprelude::*
now needs to be in scope for functionsio
andstream
traits
to work
v0.99.6
This release adds several new combinators, a work-stealing executor, and the ability to collect
streams using IntoStream
and FromStream
.
Additionally async-attributes 1.0
has been released which adds support for async fn main
, #[test] async fn
, and #[bench] async fn
.
Example
let a = stream::once(1u8);
let b = stream::once(2u8);
let c = stream::once(3u8);
let s = stream::join!(a, b, c);
assert_eq!(s.collect().await, vec![1u8, 2u8, 3u8]));
Added
- Added
stream::Stream::collect
as "unstable" - Added
stream::Stream::enumerate
- Added
stream::Stream::fuse
- Added
stream::Stream::fold
- Added
stream::Stream::scan
- Added
stream::Stream::zip
- Added
stream::join
macro as "unstable" - Added
stream::DoubleEndedStream
as "unstable" - Added
stream::FromStream
trait as "unstable" - Added
stream::IntoStream
trait as "unstable" - Added
io::Cursor
as "unstable" - Added
io::BufRead::consume
method - Added
io::repeat
- Added
io::Slice
andio::SliceMut
- Added documentation for feature flags
- Added
pin
submodule as "unstable" - Added the ability to
collect
a stream ofResult<T, E>
s into a
Result<impl FromStream<T>, E>
Changed
- Refactored the scheduling algorithm of our executor to use work stealing
- Refactored the network driver, removing 400 lines of code
- Removed the
Send
bound fromtask::block_on
- Removed
Unpin
bound fromimpl<T: futures::stream::Stream> Stream for T
v0.99.5
Added
- Added tests for
io::timeout
- Added
io::BufRead::fill_buf
, anasync fn
counterpart topoll_fill_buf
- Added
fs::create_dir_all
- Added
future::timeout
, a free function to time out futures after a threshold - Added
io::prelude
- Added
net::ToSocketAddrs
, a non-blocking version of std'sToSocketAddrs
- Added
stream::Stream::all
- Added
stream::Stream::filter_map
- Added
stream::Stream::find_map
- Added
stream::Stream::find
- Added
stream::Stream::min_by
- Added
stream::Stream::nth
Changed
- Polished the text and examples of the tutorial
cargo fmt
on all examples- Simplified internals of
TcpStream::connect_to
- Modularized our CI setup, enabled a rustfmt fallback, and improved caching
- Reduced our dependency on the
futures-rs
crate, improving compilation times - Split
io::Read
,io::Write
,io::BufRead
, andstream::Stream
into
multiple files fs::File
now flushes more often to prevent flushes duringseek
- Updated all dependencies
- Fixed a bug in the conversion of
File
into raw handle - Fixed compilation errors on the latest nightly