What happens when one has 10 different ways of handling async IO? Massive ecosystem fragmentation.<p>Ruby has EventMachine, the standard lib, and Celluloid. None of these are interoperable.<p>Python has the standard lib, Twisted, and a number of other projects. All have the same problems.<p>C++ has Boost, Asio, a few others. This is more along the lines of where Rust is headed.<p>C has &#x2F;countless&#x2F; options. None of them are standard, and it&#x27;s totally understood in such an old language.<p>---<p>Go has goroutines: it&#x27;s a harmonious, unified ecosystem. I greatly dislike go, but this is one thing they do absolutely correctly.<p>Erlang has fully-preemptive multitasking (which the entire ecosystem is built upon).<p>Haskell has incredible parallelization and concurrency primitives built right into the stdlib.<p>Certain things belong in the stdlib. Async IO is definitely one of them. If not an implementation, a defined, common interface of some nature, to help prevent some of the fragmentation.<p>async&#x2F;await, if I am not mistaken, will require compiler and borrow-checker support. This would be a good start.