Back to JetBrains

The Evolution of Async Rust: From Tokio to High-Level Applications

JetBrainsFebruary 13, 20261h 10m
In a Nutshell

Carl Lodge explains that Tokio became Rust's default async runtime due to being first and building the ecosystem around it, while most applications should use its work-stealing scheduler rather than thread-per-core approaches for practical performance. The conversation highlights Rust's expansion beyond systems programming into higher-level web applications, with ongoing work on Toasty as an ergonomic ORM/query engine and future frameworks to address the current gap in industrial-grade application frameworks. Key technical insights include io_uring's limited real-world benefits for sockets, the cooperative scheduling nature of async Rust requiring careful yielding, and the importance of defensive cancellation handling.

AI-Generated Notes

These notes were generated by AI and may contain inaccuracies.

Vitaly Bragilevsky from JetBrains Rust team hosts a livestream joined by Carl Lodge from Tokyo. Tokyo is described as the prominent project in the Rust ecosystem. Tokyo is hosting its first conference in Portland at the end of April, with the website tokio.com. The conference marks 10 years since Tokyo was announced in July. Tokyo and Rust have become one of the default ways companies and people build infrastructure-level software for networking services. If building a database or proxy from scratch, Rust is the likely choice due to its maturity and correctness.

Portland was chosen because Carl Lodge lives there, making organization easier with a local partner. The conference is called Tokyo Conf but is really async network programming with Rust. The program committee helped select talks from the community building amazing things.

Async is a general programming construct pattern that has been around for a long time. While many associate async with performance and handling large numbers of concurrent connections, async also provides added flexibility in code structure. Writing timeouts with threads is surprisingly hard, requiring setting timeouts on reads and handling interrupts, which is quite painful. With async code, timeouts can be thrown everywhere easily. Cancellation and managing multiple in-process tasks efficiently is both performance-wise and architecturally a big reason to use async programming.

Sign in to read the full notes

Get access to AI-generated notes, topic timestamps, and more.