Field notes from the cave

ADR-0017: Buffer taxonomy — fixed head pool, inline small responses, and streaming I/O pools

Status: Accepted (2026-06-09).

Context

Two distinct kinds of RAM buffer were being conflated. They have different lifetimes and sizing, and treating them the same is what makes the current GET allocate (and copy) a whole object.

Decision

Consequences

Implementation status (2026-07-15)

Done: the fixed head pool, per-worker read IoBufferPools, one shared write-staging pool, streaming GET, streaming SET, the ≤16 KiB inline fast path, and pinned sendmsg for larger heads. IORING_OP_SEND_ZC and registered io_uring buffers remain possible measured follow-ups.