async-std v1.8.0 Release Notes

Release Date: 2020-12-04 // over 3 years ago
  • This patch introduces async_std::channel, a new submodule for our async channels implementation. channels have been one of async-std's most requested features, and have existed as "unstable" for the past year. We've been cautious about stabilizing channels, and this caution turned out to be warranted: we realized our channels could hang indefinitely under certain circumstances, and people ended up expressing a need for unbounded channels.

    So today we're introducing the new async_std::channel submodule which exports the async-channel crate, and we're marking the older unstable async_std::sync::channel API as "deprecated". This release includes both APIs, but we intend to stabilize async_std::channel and remove the older API in January. This should give dependent projects a month to upgrade, though we can extend that if it proves to be too short.

    ๐Ÿ”€ The rationale for adding a new top-level channel submodule, rather than extending sync is that the std::sync and async_std::sync submodule are a bit of a mess, and the libs team [has been talking about splitting std::sync up](https://github.com/rust-lang/rfcs/pull/2788#discussion_r339092478) into separate modules. The stdlib has to guarantee it'll forever be backwards compatible, but async-std does not (we fully expect a 2.0 once we have async closures & traits). So we're experimenting with this change before std does, with the expectation that this change can serve as a data point when the libs team decides how to proceed in std.

    โž• Added

    • async_std::channel as "unstable" #915
    • async_std::process as "unstable" #916

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed mentions of the tokio03 flags in the docs #909
    • ๐Ÿ›  Fixed a double drop issue in StreamExt::cycle #903

    Internal

    • โšก๏ธ updated pin-project to v0.2.0