Repository navigation
v.1.1.11
A transport and hot-path release. Nothing on the wire changes; no export,
capability flag or option is added, removed or renamed.
epoll transport: one epoll_wait per loop turn
Every listening and accepted socket is now a libuv poll handle on the
loop's own epoll, so libuv's single epoll_wait per loop turn delivers
every event; accept, receive and send remain the engine's direct calls on
plain non-blocking sockets. 1.1.10 drained a private epoll fd with a
second epoll_wait per turn, which showed under light or client-paced
load. Teardown is simpler as well: a socket is closed from its handle's
close callback, after libuv has released it, and the connection is freed
there. probe() still reports 'epoll'.
Engine-answered routes
Every request on a static or parameter route is parsed, validated and
routed on its own: request line and headers checked in place, framing
headers interpreted, body received, reply framed from the route's
prepared response head (rebuilt when the Date second changes) and
written. The per-connection repeat-request memo 1.1.10 introduced is
removed.
Verified
macOS (libuv) and all three Linux transport lanes (epoll, libuv,
io_uring): 221 suite tests each, the C++ unit tests, the smoke test, no
export drift.