A Common Lisp implementation of the HTTP/2 draft-14 protocol for interoperability testing and network applications.
CL-HTTP2-PROTOCOL is a Common Lisp library that implements the HTTP/2 draft-14 protocol specification. It provides a transport-agnostic foundation for building HTTP/2 clients and servers, enabling features like stream multiplexing, header compression, and server push within Lisp applications.
Common Lisp developers working on network applications, web servers, or clients that require HTTP/2 support, particularly those involved in protocol interoperability testing.
It offers a pure Common Lisp implementation of HTTP/2 with no external dependencies on other HTTP/2 libraries, making it ideal for integrating modern web protocol features into Lisp-based systems while maintaining idiomatic Lisp design.
HTTP/2 interop library in Common Lisp
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The library is written entirely in Common Lisp without relying on external HTTP/2 codebases, making it easy to integrate into Lisp projects and avoid foreign dependencies, as emphasized in the README's philosophy.
Supports key HTTP/2 draft-14 elements like binary framing, stream multiplexing with prioritization, flow control, HPACK header compression, and server push, all documented in the README with specific examples.
Decouples the HTTP/2 protocol logic from transport layers, allowing use with various networking libraries such as CL+SSL and CL-ASYNC, as shown in the example client and server code.
Uses an idiomatic Lisp event system for connection and stream lifecycle events, enabling flexible application logic without manual state handling, detailed in the stream lifecycle section.
Implements HTTP/2 draft-14, not the final RFC 7540, which may cause interoperability issues with modern HTTP/2 implementations and lacks updates for subsequent protocol changes.
Requires manual installation of Quicklisp, multiple libraries like CL+SSL and CL-ASYNC, and includes overrides to those libraries, making initial setup error-prone and time-consuming, as outlined in the server setup instructions.
Only tested on SBCL 1.1.8.0 to 1.1.14 on Ubuntu Linux x86; the README admits porting to other Lisp implementations or OSes may require significant code edits in util.lisp and example.lisp.
Provides only basic 'Hello, World' examples and lacks comprehensive tutorials or API references, forcing developers to rely on sparse README content and source code exploration for advanced use.