ninenines/gun
59.9
Adequate · 6 August 2026
19.3k
lines of production code
Erlang
primary language
4
measurements over time
What this system is
Gun is an Erlang HTTP client library that manages connections and protocols including HTTP/1.1, HTTP/2, HTTP/3, WebSockets, and Server-Sent Events. It provides a unified API for connection pooling, structured event handling, and cookie management across multiple protocols. The system includes comprehensive documentation and test suites to verify its behavior.
Features
Comprehensive documentation for the Gun HTTP client
The manual has been completely revamped to provide detailed, one-page documentation for each function and message in the Gun library. This includes new man pages for connection management (open, open\_unix, set\_owner, ping, shutdown, close), request methods (get, head, options, patch, post, put, delete, headers, request, data), stream control (cancel, update\_flow, stream\_info), WebSockets (ws\_upgrade, ws\_send), and waiting for responses (await, await\_body, await\_up). The documentation also covers the various asynchronous messages (gun\_up, gun\_down, gun\_response, etc.) and type definitions, ensuring users have clear guidance on usage, arguments, return values, and examples for all available features.
doc/src/manual · high confidence
Introduce connection pooling and structured event handling
Added a new connection pool manager (gun\_pool) that allows managing multiple underlying connections with a unified API for requests, streaming, and WebSockets. Introduced a structured event system (gun\_event) that provides detailed lifecycle and protocol events (e.g., domain\_lookup\_start, request\_start, response\_end) for all supported protocols. Implemented a cookie store (gun\_cookies) with a default list-based implementation (gun\_cookies\_list) to automatically manage cookies across pooled connections. Added a default event handler (gun\_default\_event\_h) that forwards all events, and a content handler (gun\_content\_handler) to process response bodies.
src · high confidence
New Gun User Guide and Migration Documentation
The documentation for the Gun HTTP client has been restructured into a comprehensive user guide, located in doc/src/guide. This includes a main book file that organizes the content into sections for Introduction, Connection, HTTP, Websocket, and Advanced topics. The guide now includes detailed chapters on starting and stopping the application, connecting to servers, and using HTTP/1.1, HTTP/2, and Websocket protocols. Additionally, migration guides have been added for every major version from 1.0 to 2.5, documenting the changes, new features, and breaking changes for each release. A LaTeX style file (gun.sty) has also been added to support the documentation build process.
doc/src/guide · high confidence
Behavioural changes
Gun 2.5.0 release with HTTP/2, WebSockets, and modernized build system
The project has been updated to version 2.5.0, introducing support for HTTP/2, WebSockets, and HTTP/1.1 CONNECT. The build system has been modernized with a new rebar.config and an updated Makefile that generates the rebar configuration automatically. The project now depends on Cowlib 2.19.0 and requires OTP-22+. The README has been converted to Asciidoc, and a .gitignore file has been added to exclude build artifacts and test outputs.
(repo-wide) · high confidence
Gun HTTP client library updated to version 2.5.0
The Gun Erlang HTTP client library has been updated to version 2.5.0. This release includes support for HTTP/3, Socks5, and TLS over TLS (gun\_tls\_proxy), alongside new event handlers for connection lifecycle events and built-in Server-Sent Events (SSE) support.
ebin · high confidence
Test coverage
Added comprehensive test suites for connection lifecycle, flow control, and raw protocols; Added test handlers for HTTP/2, SSE, and WebSocket features.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 60 → 60 (+0.0)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.19) — scores are not directly comparable.
Lenses
- Code Health 91 → 91 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 51 → 51 (+0.0)
- Readiness 45 → 45 (+0.0)
- Security 100 → 100 (+0.0)
Resolved (1)
- Off-boarding risk: anonymized user #1
New (2)
- Off-boarding risk: anonymized user #1
- The README mentions sponsors but does not link to any sponsor pages or logos. (README.asciidoc)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ninenines/gun was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 6 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 0b6bc62e9614b8a3ed08cc2c0999b4a2063c7fdf — the exact code this score is about.
- Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer latest.