General
Eric Niebler argues for adopting a standard async model in C++ through senders/receivers (P2300), illustrating how a traditional callback API can be wrapped into a sender to enable composable, cross-library async workflows. The article details the six steps of a sender-based async operation (allocation, data, initiation, continuation, and deallocation), plus a concrete read_file_sender example and coroutine integration, highlighting benefits for scalable, coroutine-friendly code. It also addresses common objections and promotes an ecosystem of generic async algorithms that improve interoperability across libraries.
Development
The article introduces safe-gc, a Rust garbage collector implemented with zero unsafe code. It explains the API (Gc<T>, Root<T>, Trace) and the architecture (Heap, Arena, RootSet), and discusses design trade-offs, including a look at a copying collector and reasons for choosing a mark-and-sweep approach for heterogeneous objects. It emphasizes safety benefits of avoiding unsafe blocks and outlines potential footguns and safeguards.