priestjim/gen_rpc
51.8
Weak · 2 October 2026
2k
lines of production code
Erlang
primary language
2
measurements over time
What this system is
This system is a scalable remote procedure call (RPC) library for Erlang/OTP applications, designed to facilitate communication between distributed nodes. It provides core client and server components that support both plain TCP and encrypted SSL transports, enabling calls, casts, and broadcasts across a cluster. The library features per-key sharding for managing multiple connections and includes a comprehensive test suite to validate its distributed functionality.
Features
Added SSL/TLS certificate assets for secure communication
The priv/ssl directory now includes a complete set of cryptographic assets required for SSL support, including a self-signed Certificate Authority (ca.cert.pem, ca.key.pem), Diffie-Hellman parameters (dhparam.pem), and specific certificate/key pairs for the gen\_rpc master and slave nodes (gen\_rpc\_master@127.0.0.1 and gen\_rpc\_slave@127.0.0.1). These files enable the application to establish encrypted connections for remote procedure calls.
priv · high confidence
Initial release of gen\_rpc with TCP and SSL transport drivers
This change introduces the initial working version of the gen\_rpc library, providing a scalable RPC framework for Erlang/OTP applications. It adds core client and server components, including a gen\_statem-based acceptor for handling incoming connections and a gen\_server-based client for outgoing calls. The library supports both plain TCP and SSL transports via dedicated driver modules (gen\_rpc\_driver\_tcp and gen\_rpc\_driver\_ssl), enabling secure remote procedure calls, casts, and broadcast operations across a cluster.
src · high confidence
Behavioural changes
Introduction of standardized include files for configuration and types
This change introduces a new set of Erlang header files (app.hrl, guards.hrl, ssl.hrl, tcp.hrl, types.hrl) that centralize default options and type definitions. Users benefit from consistent default TCP and SSL socket configurations (such as keepalive, nodelay, and cipher suites) and reusable guard macros for validation, which standardize how the library handles network connections and data types across the application.
include · high confidence
New TCP and SSL server architecture with dedicated supervisors
The system now uses a new supervision tree to manage TCP and SSL server connections. A new root supervisor (gen\_rpc\_sup) starts permanent workers for TCP and SSL servers, alongside supervisors for acceptors and clients. This allows for better management of server processes and client connections, improving stability and resource handling.
src/supervisor · high confidence
gen\_rpc 2.0.0: Major refactor with Erlang 19+ requirement, SSL support, and per-key sharding
This release introduces a significant architectural overhaul of the gen\_rpc library. The server and acceptor finite state machines have been converted from gen\_fsm to gen\_statem, which requires a minimum Erlang/OTP version of 19.1 and drops support for older releases. New features include SSL support for secure inter-node communication, per-key sharding to allow multiple connections per node using arbitrary keys, and module version control to restrict RPC calls to specific module versions. Additionally, the library now uses the \hut\ logging backend instead of \lager\ for better Elixir compatibility, and ports are no longer dynamically assigned, favoring static port listeners to reduce supervision complexity.
(repo-wide) · high confidence
Test coverage
Add Common Test configuration header; Added Docker-based integration test infrastructure; Added comprehensive Common Test suites for gen\_rpc functionality; Added test infrastructure for gen\_rpc SSL and TCP configurations.
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 50 → 52 (+1.5)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 96 → 100 (+4.2)
- Maturity 55 → 55 (+0.0)
- Readiness 33 → 33 (+0.0)
- Security 57 → 66 (+8.5)
Resolved (3)
- Change coupling: gen_rpc_client.erl ↔ gen_rpc_server.erl (src/gen_rpc_client.erl)
- Coverage not measured — no coverage collector is wired up
- Orphaned knowledge (src/gen_rpc_client.erl)
New (2)
- Dependency hygiene PARTLY measured — rebar3 pinning read, dependency currency not (no rebar.lock-pinned Hex declaration to grade)
- No dependency lockfile committed (rebar.config)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
priestjim/gen_rpc 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 6e17cac4e886f36ecb35bbda91e6bb3293aaa723 — 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.