C · Design

Design

1.0.0-rc.1 · 60202332

  • Backends. Select automatic, posix, linux-epollaio, linux-uring612, linux-uring618, bsd-kqueue, or windows-iocp in the server or client configuration; explicit unavailable selections fail. All variants use the same HTTP/1.1 and Noise connection automata.
  • io_uring. Both io_uring variants use registered files, direct descriptors, an incremental provided receive-buffer ring, a sparse table of registered buffers, SEND_ZC zero-copy sends and READ_FIXED file reads. The 6.18 variant adds multishot receive and vectored READV_FIXED file reads.
  • Readiness and completion ports. linux-epollaio reads files through Linux AIO completing into its epoll set, sends with MSG_ZEROCOPY, and refuses to start where io_setup is refused, naming fs.aio-max-nr. posix and macOS kqueue read files blocking, FreeBSD kqueue through aio_read, and IOCP through overlapped unbuffered reads; these send by copying.
  • Credit-limited accepts. Accepts remain one-shot operations: multishot direct accept can consume more connections than a finite file table can install before userspace observes a completion.