async-std v1.1.0 Release Notes

Release Date: 2019-11-21 // over 4 years ago
  • ๐Ÿ“š 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.