std::execution from the metal up
summary
Claims that sender/receiver (P2300) can run on microcontrollers with no dynamic allocations and optional exception costs are demonstrated by a prototype UART executor: an ISR sender built with tag_invoke, a type‑erased operation_state, and a volatile/optional wake flag. Implementation targets freestanding environments, avoids coroutines and heap allocation, uses AVR sleep/wake for polling, and works as a proof‑of‑concept though not hardened for production or large deployments.
AI-written summary · about
chapters (27)
- 0:00Introduction
- 1:00Who am I
- 2:54What motivated me
- 4:08Senders and receivers
- 6:35Senders
- 7:14Receivers
- 7:44Chaining
- 8:53Operation State
- 11:39Scheduler
- 14:06Interrupt
- 16:27Asynchronous Pipeline
- 17:34Nvidia
- 19:27ISR sender
- 20:36Value categories
- 22:24The operation state
- 23:15The problem
- 24:45Calling the receiver
- 26:01Enabling the interrupt
- 26:48Disabling the interrupt
- 29:04Receiver environment
- 30:09User facing
- 31:51Feynman way
- 33:22freestanding
- 35:31future work
- 37:18freestanding execution
- 38:21asynchronous code
- 39:01Grumpy old man
related talks
41m(Don't) use coroutines for this
30mCombining Zephyr & C++20 to Build Safe, Low-footprint, Event-based Applicati...
39mServer/Client unified execution model
01h 04mA Pattern Language for Expressing Concurrency in Cpp
55mC++ Concurrency TS 2 Use Cases and Future Direction
42mInter Process Confusion - Navigating Zephyr's IPC APIs
27mInsights on the Re-Architecting to a Single Codebase, Running on Different Hardware...
49mThinking in a Highly Concurrent, Mostly-functional Language
