An RFC for a Tokio revamp
September 19, 2017
Hi there, Tokio community!
Carl, Alex, and myself have been hard at work developing ways to simplify, streamline, and focus the Tokio project. As part of this effort, we have written the first-ever Tokio RFC!
Here's a quick run-down of what's being proposed.
-
Add a global event loop in
tokio-core
that is managed automatically by default. This change eliminates the need for setting up and managing your own event loop in the vast majority of cases.- Moreover, remove the distinction between
Handle
andRemote
intokio-core
by makingHandle
bothSend
andSync
and deprecatingRemote
. Thus, even working with custom event loops becomes simpler.
- Moreover, remove the distinction between
-
Decouple all task execution functionality from Tokio, instead providing it through a standard futures component. As with event loops, provide a default global thread pool that suffices for the majority of use-cases, removing the need for any manual setup.
- Moreover, when running tasks thread-locally (for non-
Send
futures), provide more fool-proof APIs that help avoid lost wakeups.
- Moreover, when running tasks thread-locally (for non-
-
Provide the above changes in a new
tokio
crate, which is a slimmed down version of today'stokio-core
, and may eventually re-export the contents oftokio-io
. Thetokio-core
crate is deprecated, but will remain available for backward compatibility. In the long run, most users should only need to depend ontokio
to use the Tokio stack. -
Focus documentation primarily on
tokio
, rather than ontokio-proto
. Provide a much more extensive set of cookbook-style examples and general guidelines, as well as a more in-depth guide to working with futures.
Altogether, these changes, together with async/await, should go a long distance toward making Tokio a newcomer-friendly library. Please take a look at the RFC and leave your feedback!
Once we've reached consensus on the RFC, we plan to form an impl period working group, focused primarily on docs and examples. And from there, we will be working with the Hyper team to figure out the next chapter of that story. Stay tuned!