Pre-Conference Workshop

Kick off TokioConf with a half-day, hands-on workshop on Monday, April 20, 2026, designed for developers who want to go deeper into async Rust before the main conference begins. The workshop will take place at the Hyatt (the conference venue) from approximately 8:30am–12:30pm and includes light breakfast and coffee.

Inside Async Rust - Understanding the Runtime

Your Instructors

Carl Lerche

Tokio Core Team & Principal Engineer at Amazon

Alice Ryhl

Tokio Core Team, Rust for Linux Core Team, & Android Rust Team at Google

Sean McArthur

Tokio Core Team

Course Content

Async Rust powers some of the most performance-critical infrastructure on the internet, from network proxies to database systems. A lot of developers have used async Rust, but far fewer actually understand how it works under the hood – the Future trait, Pin, wakers, the runtime scheduler. This makes it hard to debug production issues like stuck tasks, understand what's actually happening performance-wise, or make informed decisions about how to architect your system.

This hands-on workshop goes beyond using async Rust to understanding how it actually works. We'll start with a bit of the origin story – why async Rust was designed the way it was, which helps explain concepts like Pin and manual polling that can seem arbitrary at first. Then we'll build our own minimal async runtime from scratch. We'll implement the core machinery: the Future trait, the waker system, and a basic executor. This gives us the foundation to dive into Tokio itself – how its scheduler works, how I/O types actually integrate with the OS, how timers are implemented.

The final section is all about applying this knowledge to real-world problems. We'll instrument runtimes to track poll times, identify tasks that are blocking the executor, and debug "stuck" tasks that appear to stop making progress. You'll leave with both a solid mental model of how async Rust works and practical debugging techniques you can use immediately.

Goals & Outcomes

  • Understand the design constraints that shaped async Rust – why polling-based futures, Pin, and explicit wakers exist rather than alternative approaches

  • Build a minimal async runtime from scratch, implementing the Future trait, waker mechanism, and basic executor to really solidify understanding of the machinery

  • Examine Tokio's internals: how the scheduler distributes work across threads, how I/O types integrate with epoll/kqueue/IOCP, and how timer wheels manage thousands of concurrent timeouts

  • Learn to instrument async runtimes to measure poll times and identify tasks that monopolize executor threads

  • Gain practical debugging skills for production issues: diagnosing stuck tasks, identifying missing wakers, and tracking down code that blocks the runtime

  • Develop the mental models needed to make informed decisions about task spawning, work distribution, and blocking operations in async systems