char/avril

(wip) why'd you have to go and make things so complicaaaaated?

git clone https://git.t4t.associates/char/avril

Charlotte Somdeslop: factor module prep/transpilatione/etc into loader.rsab5df08

main
2 folders2 files

files

src/
tests/
Cargo.toml622 B
README.md1.2 KiB

avril-http

HTTP/1.1 transport for avril, independent of V8 and runtime capability types.

The engine owns TCP/Unix listeners, request and response streaming, connection lifetimes, graceful/forced shutdown, and validated WebSocket upgrade handshakes. Its caller supplies an authorization callback for each listener. Runtime policy and JS bindings stay in exts/http/src; CLI listeners supply host authority without changing guest capabilities.

An accepted upgrade returns a stream and a lease. Keep the lease for the entire WebSocket session: dropping it finishes the request and releases the server's shutdown tracking. WebSocket framing and events reuse the runtime's existing client implementation, with server-role masking and closing semantics.

Listener binding is shared with raw sockets through avril-net. Unix listeners use Linux procfs for FD-relative binding, with pinned parent directories and identity-checked socket cleanup. Other Unix platforms use ordinary path-based binding and best-effort identity-checked cleanup. Authorization still applies, but that fallback can race with filesystem changes. Non-Unix platforms report an unsupported-operation error.