2026.09 — v2.0.0
AsanagiDB 2.0.0: an event-loop reactor for the graph server
Scaling network connections with a dedicated OS thread per client creates heavy memory and context-switching overhead under load. AsanagiDB 2.0.0 rebuilds the graph server on a libxev event-loop reactor: one loop thread multiplexes every connection into a bounded worker pool, retiring AsanagiDB's legacy thread-per-connection model and its 256-connection ceiling.
Each platform gets the right I/O backend underneath: epoll on Linux, kqueue on macOS. Windows has no event-loop primitive suited to this, so it runs a blocking Winsock path instead — but that path goes through the exact same framing, dispatch, auth, and worker-pool code as the other two, so every wire protocol and every feature behaves identically on all three.
On the Linux/epoll build we've verified 4,000–6,000 concurrent connections and roughly 72,000 open/close cycles with flat memory and no file-descriptor leaks. macOS/kqueue is in daily use; the Windows blocking path is functionally verified — 200 concurrent connections, flat handle count across churn — but hasn't been load-tested at scale.
What's new in 2.0.0:
- TLS 1.3 — native server-authenticated encryption on the TCP listener via --tls-cert / --tls-key.
- Backpressure, not drops — a bounded execution pool returns a clean Gremlin 597 "too busy" when the queue is full, instead of dropping the socket.
- WebSocket SASL PLAIN — end-to-end authentication over WebSockets.
- Cross-platform asna REPL — the interactive Gremlin console now builds on Windows and cross-compiles for every platform.
- Reliability — fixes the write-load socket drops (write: broken pipe) and the client reconnect stampede that followed.
Three wire protocols run on the reactor: WebSocket (GraphSON / GraphBinary), ASNA binary, and JSON-line.
Install with Homebrew — brew tap asanasoft/tap && brew install asanagidb — or download for macOS, Linux, and Windows from the downloads section →. Read the full changelog →.
— Alfred