cl-http-kit¶
cl-http-kit is a portable, binary-safe Common Lisp HTTP substrate. It separates HTTP message semantics and wire processing from the application-owned network boundary.
The checked-in systems are version 0.4.1. The integration includes native default client wiring, the four-kit dependency declarations, and a URL-and- method client entry point. The optional cl-quic-kit adapter supports native IPv4 HTTP/3 client connections. Native QUIC server acceptance is not provided; HTTP/3 server sessions use injected streams. Read the migration guide for the compatibility boundary and the changelog for the release scope.
Start here¶
- Getting Started introduces loading, recording sessions, and transport callbacks.
- Core Concepts explains message values, octets, deadlines, limits, and callback styles.
- API Reference documents the primary public symbols of each registered runtime system; package definitions remain authoritative for lower-level exports.
Systems¶
The repository currently documents these ASDF systems:
| System | Responsibility |
|---|---|
| cl-http-kit | HTTP messages, HTTP/1.1, HTTP/1.x server sessions, transport callbacks, limits, deadlines, conditions, and recording sessions |
| cl-http-kit/client | URI, authentication, cookies, cache, content-coding selection, ALPN protocol helpers, proxy, redirect, retry, HTTP/1.1 connection-pool, and WebSocket client/server-session policies |
| cl-http-kit/http2 | HTTP/2 client and injected-stream server-session boundaries |
| cl-http-kit/http3 | HTTP/3 request-stream framing, static/literal/Huffman QPACK codecs with caller-owned dynamic tables, injected-QUIC client/server-session boundaries, and an optional cl-quic-kit client adapter |
| cl-http-kit/network | Optional native SBCL TCP, DNS, and HTTP/1 listener service |
| cl-http-kit/tls | Native TLS 1.3 client stream wrapper; server wrapping is unsupported because cl-tls-kit has no server driver |
| cl-http-kit/observability | Request and error counters |
| cl-http-kit/test-core | Internal core-only test runner without optional subsystems |
| cl-http-kit/test | Internal test runner for the core and optional systems |
Scope¶
The core system handles validation, serialization, parsing, bounded body
materialization, HTTP/1.x server sessions, and deterministic transport
composition. The client system adds reusable request policies, cookie
partitioning and SameSite request context, content-coding and ALPN helper
APIs, cache request-directive handling, and a thread-safe HTTP/1.1
connection pool. It also includes RFC 6455 frame,
message, close-payload, HTTP upgrade, and upgraded server-session helpers in
the http-kit/websocket package. The optional HTTP/2 system adds client and
server sessions over injected I/O. The optional HTTP/3 system adds client and
per-request server sessions over injected QUIC streams. Its optional cl-quic-kit
client adapter drives the client QUIC connection and HTTP/3 stream lifecycle
when explicitly supplied. The optional network
system supplies native SBCL TCP, DNS, and HTTP/1 listener service. The
optional TLS system supplies the native TLS 1.3 client wrapper; server-side TLS
is not supported because the current cl-tls-kit integration does not expose a
server driver. For HTTPS servers, terminate TLS in a reverse proxy or load
balancer and forward HTTP to the listener. The HTTP/3 adapter delegates QUIC
and native IPv4 UDP sockets to cl-quic-kit. QUIC/TLS options, certificate
policy, and shutdown policy remain caller-owned; native QUIC server accept
loops and proxy negotiation are not provided by this adapter.
See Architecture for the layer boundaries and Compatibility for protocol behavior.