All Versions
31
Latest Version
Avg Release Cycle
42 days
Latest Release
676 days ago

Changelog History
Page 2

  • v1.6.1 Changes

    June 11, 2020

    โž• Added

    ๐Ÿ”„ Changed

    • โœ‚ Removed unstable stdio lock methods, due to their unsoundness (#807).

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed wrong slice index for file reading (#802).
    • ๐Ÿ›  Fixed recursive calls to block_on (#799) and (#809).
    • โœ‚ Remove default feature requirement for the unstable feature (#806).
  • v1.6.0 Changes

    May 22, 2020

    ๐Ÿ‘€ See 1.6.0-beta.1 and 1.6.0-beta.2.

  • v1.6.0-beta.2 Changes

    May 19, 2020

    โž• Added

    • โž• Added an environment variable to configure the thread pool size of the runtime. (#774)
    • ๐Ÿ‘ฏ Implement Clone for UnixStream (#772)

    ๐Ÿ”„ Changed

    ๐Ÿ›  Fixed

    • ๐Ÿ‘‰ Use smol::block_on to handle drop of File, avoiding nested executor panic. (#768)
  • v1.6.0-beta.1 Changes

    May 07, 2020

    โž• Added

    • โž• Added task::spawn_local. (#757)
    • โž• Added out of the box support for wasm. (#757)
    • โž• Added JoinHandle::cancel (#757)
    • โž• Added sync::Condvar (#369)
    • ๐Ÿ”€ Added sync::Sender::try_send and sync::Receiver::try_recv (#585)
    • โž• Added no_std support for task, future and stream (#680)

    ๐Ÿ”„ Changed

    • Switched underlying runtime to smol. (#757)
    • ๐Ÿ”€ Switched implementation of sync::Barrier to use sync::Condvar like std does. (#581)

    ๐Ÿ›  Fixed

    • ๐Ÿ‘ Allow compilation on 32 bit targets, by using AtomicUsize for TaskId. (#756)
  • v1.5.0 Changes

    February 03, 2020

    ๐Ÿ“š API Documentation

    This patch includes various quality of life improvements to async-std. ๐ŸŽ Including improved performance, stability, and the addition of various ๐Ÿ‘ฏ Clone impls that replace the use of Arc in many cases.

    โž• Added

    • โž• Added links to various ecosystem projects from the README (#660)
    • โž• Added an example on FromStream for Result<T, E> (#643)
    • โž• Added stream::pending as "unstable" (#615)
    • โž• Added an example of stream::timeout to document the error flow (#675)
    • ๐Ÿ‘ฏ Implement Clone for DirEntry (#682)
    • ๐Ÿ‘ฏ Implement Clone for TcpStream (#689)

    ๐Ÿ”„ Changed

    • โœ‚ Removed internal comment on stream::Interval (#645)
    • 0๏ธโƒฃ The "unstable" feature can now be used without requiring the "default" feature (#647)
    • โœ‚ Removed unnecessary trait bound on stream::FlatMap (#651)
    • โšก๏ธ Updated the "broadcaster" dependency used by "unstable" to 1.0.0 (#681)
    • โšก๏ธ Updated async-task to 1.2.1 (#676)
    • ๐ŸŽ task::block_on now parks after a single poll, improving performance in many cases (#684)
    • ๐Ÿ‘Œ Improved reading flow of the "client" part of the async-std tutorial (#550)
    • ๐Ÿ‘‰ Use take_while instead of scan in impl of Product, Sum and FromStream (#667)
    • ๐ŸŽ TcpStream::connect no longer uses a thread from the threadpool, improving performance (#687)

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed crate documentation typo (#655)
    • ๐Ÿ›  Fixed documentation for UdpSocket::recv (#648)
    • ๐Ÿ›  Fixed documentation for UdpSocket::send (#671)
    • ๐Ÿ›  Fixed typo in stream documentation (#650)
    • ๐Ÿ›  Fixed typo on sync::JoinHandle documentation (#659)
    • โœ‚ Removed use of std::error::Error::description which failed CI (#661)
    • Removed the use of rustfmt's unstable format_code_in_doc_comments option which failed CI (#685)
    • ๐Ÿ›  Fixed a code typo in the task::sleep example (#688)
  • v1.4.0 Changes

    December 20, 2019

    ๐Ÿ“š API Documentation

    โฑ This patch adds Future::timeout, providing a method counterpart to the ๐Ÿ›  future::timeout free function. And includes several bug fixes around missing APIs. Notably we're not shipping our new executor yet, first announced on our blog.

    Examples

    use async_std::prelude::*;
    use async_std::future;
    use std::time::Duration;
    
    let fut = future::pending::<()>(); // This future will never resolve.
    let res = fut.timeout(Duration::from_millis(100)).await;
    assert!(res.is_err()); // The future timed out, returning an err.
    

    โž• Added

    • โž• Added Future::timeout as "unstable" (#600)

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fixed a doc test and enabled it on CI (#597)
    • ๐Ÿ›  Fixed a rendering issue with the stream submodule documentation (#621)
    • Write::write_fmt's future is now correctly marked as #[must_use] (#628)
    • ๐Ÿ›  Fixed the missing io::Bytes export (#633)
    • ๐Ÿ›  Fixed the missing io::Chain export (#633)
    • ๐Ÿ›  Fixed the missing io::Take export (#633)
  • v1.3.0 Changes

    December 12, 2019

    ๐Ÿ“š API Documentation

    This patch introduces Stream::delay, more methods on DoubleEndedStream, and improves compile times. Stream::delay is a new API that's similar to ๐Ÿ“„ task::sleep, but can be passed as part of as stream, rather than as a separate block. This is ๐Ÿ‘‰ useful for examples, or when manually debugging race conditions.

    Examples

    let start = Instant::now();
    let mut s = stream::from_iter(vec![0u8, 1]).delay(Duration::from_millis(200));
    
    // The first time will take more than 200ms due to delay.
    s.next().await;
    assert!(start.elapsed().as_millis() >= 200);
    
    // There will be no delay after the first time.
    s.next().await;
    assert!(start.elapsed().as_millis() <= 210);
    

    โž• Added

    • โž• Added Stream::delay as "unstable" (#309)
    • โž• Added DoubleEndedStream::next_back as "unstable" (#562)
    • โž• Added DoubleEndedStream::nth_back as "unstable" (#562)
    • โž• Added DoubleEndedStream::rfind as "unstable" (#562)
    • โž• Added DoubleEndedStream::rfold as "unstable" (#562)
    • โž• Added DoubleEndedStream::try_rfold as "unstable" (#562)
    • stream::Once now implements DoubleEndedStream (#562)
    • stream::FromIter now implements DoubleEndedStream (#562)

    ๐Ÿ”„ Changed

    • โœ‚ Removed our dependency on async-macros, speeding up compilation (#610)

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fixed a link in the task docs (#598)
    • ๐Ÿ›  Fixed the UdpSocket::recv example (#603)
    • ๐Ÿ›  Fixed a link to task::block_on (#608)
    • ๐Ÿ›  Fixed an incorrect API mention in task::Builder (#612)
    • ๐Ÿ›  Fixed leftover mentions of futures-preview (#595)
    • ๐Ÿ›  Fixed a typo in the tutorial (#614)
    • <TcpStream as Write>::poll_close now closes the write half of the stream (#618)
  • v1.2.0 Changes

    November 27, 2019

    ๐Ÿ“š API Documentation

    This patch includes some minor quality-of-life improvements, introduces a ๐Ÿ†• new Stream::unzip API, and adds verbose errors to our networking types.

    This means if you can't connect to a socket, you'll never have to wonder again which address it was you couldn't connect to, instead of having to go through the motions to debug what the address was.

    Example

    Unzip a stream of tuples into two collections:

    use async_std::prelude::*;
    use async_std::stream;
    
    let s = stream::from_iter(vec![(1,2), (3,4)]);
    
    let (left, right): (Vec<_>, Vec<_>) = s.unzip().await;
    
    assert_eq!(left, [1, 3]);
    assert_eq!(right, [2, 4]);
    

    โž• Added

    • โž• Added Stream::unzip as "unstable".
    • โž• Added verbose errors to the networking types.

    ๐Ÿ”„ Changed

    • ๐Ÿ‘ท Enabled CI on master branch.
    • Future::join and Future::try_join can now join futures with different output types.

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed the docs and Debug output of BufWriter.
    • ๐Ÿ›  Fixed a bug in Stream::throttle that made it consume too much CPU.
  • v1.1.0 Changes

    November 21, 2019

    ๐Ÿ“š API Documentation

    โฑ This patch introduces a faster scheduler algorithm, Stream::throttle, and stabilizes task::yield_now. Additionally we're introducing several more stream APIs, bringing us to almost complete parity with the standard library.

    Furthermore our path submodule now returns more context in errors. So if opening a file fails, async-std will tell you which file was failed to open, making it easier to write and debug programs.

    Examples

    let start = Instant::now();
    
    let mut s = stream::interval(Duration::from_millis(5))
        .throttle(Duration::from_millis(10))
        .take(2);
    
    s.next().await;
    assert!(start.elapsed().as_millis() >= 5);
    
    s.next().await;
    assert!(start.elapsed().as_millis() >= 15);
    
    s.next().await;
    assert!(start.elapsed().as_millis() >= 25);
    

    โž• Added

    • โž• Added Stream::throttle as "unstable".
    • โž• Added Stream::count as "unstable".
    • โž• Added Stream::max as "unstable".
    • โž• Added Stream::successors as "unstable".
    • โž• Added Stream::by_ref as "unstable".
    • โž• Added Stream::partition as "unstable".
    • โž• Added contextual errors to the path submodule.
    • โž• Added os::windows::symlink_dir as "unstable".
    • โž• Added os::windows::symlink_file as "unstable".
    • Stabilized task::yield_now.

    ๐Ÿ›  Fixes

    • ๐Ÿ‘€ We now ignore seek errors when rolling back failed read calls on File.
    • Fixed a bug where Stream::max_by_key was returning the wrong result.
    • Fixed a bug where Stream::min_by_key was returning the wrong result.

    ๐Ÿ”„ Changed

    • ๐Ÿ›  Applied various fixes to the tutorial.
    • ๐Ÿ›  Fixed an issue with Clippy.
    • โšก๏ธ Optimized an internal code generation macro, improving compilation speeds.
    • โœ‚ Removed an Unpin bound from stream::Once.
    • โœ‚ Removed various extra internal uses of pin_mut!.
    • Simplified Stream::any and Stream::all's internals.
    • The surf example is now enabled again.
    • ๐Ÿ‘‰ Tweaked some streams internals.
    • โšก๏ธ Updated futures-timer to 2.0.0, improving compilation speed.
    • โฌ†๏ธ Upgraded async-macros to 2.0.0.
    • ๐Ÿšค Stream::merge now uses randomized ordering to reduce overall latency.
    • โฑ The scheduler is now more efficient by keeping a slot for the next task to run. This is similar to Go's scheduler, and Tokio's scheduler.
    • ๐Ÿ›  Fixed the documentation of the channel types to link back to the channel function.
  • v1.0.1 Changes

    November 12, 2019

    ๐Ÿ“š API Documentation

    ๐ŸŽ We were seeing a regression in our fs performance, caused by too many ๐Ÿ›  long-running tasks. This patch fixes that regression by being more proactive about closing down idle threads.

    ๐Ÿ”„ Changes

    • ๐Ÿ‘Œ Improved thread startup/shutdown algorithm in task::spawn_blocking.
    • ๐Ÿ›  Fixed a typo in the tutorial.