Repository navigation
Needs Vega 1.1: Garuda depends on it from: "1.1.0".
- Idle connections give their buffers back. An HTTP/1.1 or HTTP/2
connection that has been quiet for--idle-buffersmilliseconds (100;
ServerConfig.idleBufferDelay) returns its read buffer to Vega's receive
blocks and its output buffer to a per-worker list, and waits in Vega's
receive(), which holds no buffer, until it is sent more. A WebSocket
reader does so as soon as it has nothing buffered. With 20,000 idle
keep-alive connections a connection costs 14.5 KiB of the server's memory
where it cost 27.0, and with 5,000 over TLS 18.3 KiB where it cost 41.2.
The limits a connection is held to are shared, not copied into each of its
waiting calls. --idle-buffers MS|off.0gives the buffers back as soon as a
connection has nothing to read;off(nil) keeps them, as 2.1 did. The
100 ms default keeps a busy connection, whose next request is usually a
fraction of a millisecond away, from giving its buffers back and taking
them again for every request: doing that cost 3–7% of throughput on the
keep-alive workloads, and with the delay they measure as 2.1 does.- The README opens with a handler that awaits a PostgreSQL query and throws
anHTTPError, which is what most handlers look like, where every snippet
before the middleware section used to be anasyncclosure that never
suspended. The quick start is a five-line application with no database.
The opening is shorter: the runtime, shards and crash semantics are one
paragraph with links, the middleware list is grouped by purpose, the
database, streaming and upload prose is cut to what a first reader needs,
and the axum side-by-side, the release line and the Kitura note move to
the sections about them. - The README says that Garuda 2 is rebuilt on Vega, a new I/O and runtime
package modelled after Tokio, in place of aviancore.