/rust-await

Core primitives for building asynchrnonous stuff

Primary LanguageRustApache License 2.0Apache-2.0

rust-await

Core primitives for building asynchronous stuff

Dashboard

Linux CI Test Coverage Crate Documentation
Build Status Coverage Status Crate Docs

Motivation

We need some core types to help build asynchronous frameworks.

This crate does not intend to define the correct framework to use, but to simply present some common basic primitives on top of which: async/await, promises/futures, callbacks, state-machines, streams... can be expressed upon.

There is lengthy discussion on async on rust at RFC-1081 Async IO.

State of the art

Tier-1 (Basic abstractions)

Crate Provides Builds-on
mio Event loop epoll/kqueue
gj Promises epoll/kqueue
eventual Futures + Streams ?
async-await async/await eventual
rotor state-machines mio

Tier-2 (IO/threading models)

Crate Provides Abstraction Builds-on
eventual-io Async IO futures eventual + mio
gjio Async IO promises gj
mioco Coroutines cooperative mio
coio Coroutines works-stealing mio

Tier-3 (Domain specific)

Crate Provides Domain Builds-on
simplesched Coroutines + Async IO Http mio + hyper

Disclaimer: I apologize if your crate is missing, this is not intended to be a complete survey

Goal

  • Define the tier-0 abstraction on top of which all the tier-1 should be based on, to interact with each other.
  • Having the base libraries for each async framework to build upon this core types.
  • Hopefully, the contents of this crate can at some point be moved to the nursery on their way to the std.

License

Licensed under:

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.