My Tech Journal - November 2026

My Tech Journal - November 2026 Edition


Rust

  • Completion-based IO (Alice Ryhl at RustWeek) RustNL
    In this presentation, Alice Ryhl provides an overview of the two different approaches to async IO: readiness-based and completion-based.
    • For many years, the most widely used IO APIs on Linux were based on the readiness model. e.g. select, poll, epoll
    • In 2019, io_uring - added completion based APIs to Linux.
    • In the readiness-based IO, the waiting happens in the application (user-space), whereas
    in the completion-based IO, the waiting happens in the kernel-space.
    • Tokio async runtime for Rust is based on the readiness model.
    • Compio is an async runtime for Rust built with completion-based IO.

  • She also explains different options to implement completion-based async IO in Rust correctly.
    • Option 1: Keep using old IO traits with an extra copy
    • Option 2: Not all IO would be completion based; and keep compatibility at a higher layer
    • Option 3: Keep using readiness-based IO for scenarios where it makes sense e.g. TCPStream
    • Option 4: Use the appropriate IO model for every use-case