Runtimes, Wakers, and the Reactor-Executor Pattern 168 not one of those chapters you typically blaze through before going to bed, though, but I do promise it's absolutely worth it in the end. The chapter will be divided into the following segments: Introduction to runtimes and why we need them Improving our base example Creating a proper runtime Step 1-Improving our runtime design by adding a Reactor and a Waker Step 2-Implementing a proper Executor Step 3-Implementing a proper Reactor Experimenting with our new runtime So, let's dive right in! Technical requirements The examples in this chapter will build on the code from our last chapter, so the requirements are the same. The examples will all be cross-platform and work on all platforms that Rust ( https://doc. rust-lang. org/beta/rustc/platform-support. html#tier-1-with-host-tools ) and mio (https://github. com/tokio-rs/mio#platforms ) supports. The only thing you need is Rust installed and the repository that belongs to the book downloaded locally. All the code in this chapter will be found in the ch08 folder. To follow the examples step by step, you'll also need corofy installed on your machine. If you didn't install it in Chapter 7, install it now by going into the ch08/corofy folder in the repository and running this command: cargo install--force--path. Alternatively, you can just copy the relevant files in the repository when we come to the points where we use corofy to rewrite our coroutine/wait syntax. Both versions will be available to you there as well. We'll also use delayserver in this example, so you need to open a separate terminal, enter the delayserver folder at the root of the repository, and write cargo run so that it's ready and available for the examples going forward. Remember to change the ports in the code if you for some reason have to change the port delayserver listens on.