lpgauth/shackle
74.5
Strong · 2 October 2026
1.6k
lines of production code
Erlang
primary language
2
measurements over time
What this system is
Shackle is a high-performance Erlang library that manages network connections and request backlogs using a pool-centric architecture. It supports multiple transport protocols, including TCP, UDP, SSL, and a custom NIF-based TLS implementation, while providing telemetry metrics and automatic connection recycling. The system is designed to optimize client-server communication through efficient backlog management and pluggable protocol handlers.
Removals
Removed generated EDoc documentation files
The generated EDoc documentation files for the Shackle application modules (including shackle\_app, shackle\_backlog, shackle\_backoff, shackle\_cache, shackle\_queue, shackle\_server, and shackle\_sup) have been removed from the repository. This cleanup eliminates the static markdown and edoc-info files that previously provided API reference material for these components.
doc · high confidence
Behavioural changes
6 commits (0 fixes) modifying bin
A change to existing behaviour in bin — 6 commits, 1 file.
bin · medium confidence · unverified
Refactor include files to separate defaults, internals, and records
The library's include structure has been reorganized to improve maintainability and clarity. Default configuration values (such as address, backlog size, pool strategy, and timeouts) are now centralized in a new \shackle\_defaults.hrl\ file, while internal macros, application environment lookups, and logging helpers have been moved to \shackle\_internal.hrl\. The main \shackle.hrl\ file now exclusively defines record structures for client casts and reconnect states, replacing the previous flat definition of ETS table names and app constants. This change simplifies the public interface and makes default values easier to locate and modify.
include · high confidence
Shackle 0.8.0: Complete rewrite with new architecture and protocol support
Shackle has been upgraded to version 0.8.0, introducing a complete architectural rewrite that replaces the previous ETS-based caching and queueing system with a new pool-centric design using the Foil library for lookup optimization and atomics for backlog management. The framework now supports a pluggable protocol system with built-in implementations for TCP, UDP, SSL, and a new NIF-based socket protocol (shackle\_socket) that requires OTP 28. A new telemetry module provides detailed metrics for client operations, and the application now manages its own lifecycle with explicit start/stop behaviors. Deprecated modules like shackle\_cache and shackle\_queue have been removed, and the public API has been standardized with new call/cast/receive\_response functions.
src · high confidence
Version 0.8.0 release with new client options and TLS protocol
This release introduces a \max\_requests\ client option that automatically recycles connections after a specified number of requests, enabling DNS rebalancing across load balancers. It also adds \shackle\_ssl\_socket\, an opt-in TLS protocol built on the \socket\ NIF module that requires OTP 28. Performance improvements include moving the request backlog from ETS to atomics and using \socket:sendv/2\ for iolists. The minimum supported Erlang/OTP version is now 25, and the \granderl\ dependency has been replaced with \knot\.
(repo-wide) · high confidence
Test coverage
Added EUnit test suite for arithmetic protocol over TCP, UDP, SSL, and socket transports
Added a comprehensive EUnit test suite that exercises the arithmetic protocol (add, multiply, noop operations) across multiple transport layers: raw TCP, UDP, SSL, and the new shackle\_ssl\_socket NIF-based TLS protocol. The tests include client and server implementations for each transport, SSL certificate/key fixtures, and coverage for behaviors such as connection setup, request/response parsing, timeouts, backlog handling, max requests, and reconnection strategies.
test · high confidence
Dependencies
Added Mix project configuration for Shackle
A new mix.exs file has been added to define the Shackle project structure, including version management via git tags and application properties sourced from src/shackle.app.src. This file is intended for use by Shackle as a dependency, with rebar3 recommended for compiling and running tests.
(dependencies) · high confidence
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 73 → 75 (+1.1)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 98 → 98 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 59 → 59 (-0.0)
- Readiness 78 → 80 (+2.2)
- Security 92 → 96 (+4.0)
Resolved (2)
- Coverage not measured — no coverage collector is wired up
- Documentation: no installation or build instructions (README.md)
New (1)
- Outdated: foil
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
lpgauth/shackle 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 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit b8d02a30d2afe0aa78adeec33b380982bf06e75a — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.