QJAB-004 DONE: expose the abc/HTTP lexer to JS — the http leaf binding

Now
DONE
Sev
MED
Ask
gritzko
Rep
///quickjab
See
LITE-034

An HTTP server in lite (LITE-034) has its transport already — net.c is a Node-style async API over the pol loop, net.createServer accepts and streams. What is missing is message parsing: dog/abc/HTTP.h carries the ragel lexer (HTTP.c.rl → HTTP.rl.c) but no JS binding exposes it, and manual parsing in JS would be a second recognizer next to a working ragel one. This ticket adds the binding, leaf-only in the net.c/io.c style: C parses bytes and hands back slices, no JS state held, no protocol logic — keep-alive, routing and body handling stay in the JS bundle.

Input

Context

dog/abc/HTTP.h: HTTPstate carries data, the request line (method, uri, version), the status line (status_code, reason) and headers (a u8cssp name/value pair list); errors are HTTPFAIL/HTTPBAD/HTTPNONE.

Goals

JS can parse an HTTP message head from a Uint8Array and compose one, through the ragel lexer only.

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome

Built in //QJAB-004 (///quickjab#61895a7f), not committed.

PROPOSED API — awaiting gritzko's confirmation

Files

Notes

Tests

cmake -S . -B build -GNinja && ninja -C build && ctest -j16: *122/122 passed* (121 before + the new JABChttp). A 200k-iteration drain+feed loop stays at 8.4 MB RSS and exits 0 (no JSValue or BASS leak).

Suggested commit message:

QJAB-004: http._drain/_feed leaves over abc/HTTP