jeanparpaillon/erlang-dbus
60.1
Adequate · 2 October 2026
6.1k
lines of production code
Erlang
primary language
2
measurements over time
What this system is
This system is a native Erlang implementation of the D-Bus protocol, enabling direct communication with system and session buses from Erlang applications. It provides core capabilities for establishing connections, managing bus proxies, and marshaling complex message types, including support for passing raw OS file descriptors via NIFs. The library includes comprehensive property-based and end-to-end testing to ensure protocol compliance and robustness.
Features
Add D-Bus demo application with Erlang and Python examples
The demo area now includes a complete D-Bus demonstration application. This adds Erlang source files implementing a gen\_server-based demo, a gen\_dbus service exposing methods like HelloWorld and GetTuple, a supervisor tree, and client utilities to list system services. It also includes a Python script demonstrating D-Bus signal handling and method calls, a shell script to configure the session bus address, and EUnit tests to verify the demo functionality.
demo · high confidence
Added NIFs for closing and duplicating raw OS file descriptors
A new C source file (c\_src/dbus\_fd.c) introduces two NIFs, \close\ and \dup\, to manage raw OS file descriptors received via D-Bus SCM\_RIGHTS. This addresses a gap where OTP's standard file and socket modules cannot close arbitrary descriptors (such as pipes or eventfds) that are not Erlang file handles or sockets. The \close\ NIF provides a direct way to release these descriptors, while the \dup\ NIF creates a copy with the \FD\_CLOEXEC\ flag set to prevent descriptor leaks during process execution.
_c\src · high confidence
Initial release of native Erlang D-Bus implementation
This commit introduces version 0.9.0 of the \dbus\ application, providing a complete native Erlang implementation of the D-Bus protocol. It adds core modules for establishing connections (\dbus\_connection\), managing bus proxies (\dbus\_bus\), and parsing addresses (\dbus\_address\). The release includes support for multiple authentication mechanisms (ANONYMOUS, EXTERNAL, and DBUS\_COOKIE\_SHA1), binary marshaling and unmarshaling of D-Bus messages, and handling of UNIX file descriptors via a NIF. Users can now connect to system or session buses and interact with D-Bus services directly from Erlang.
src · high confidence
Introduce D-Bus core data structures and type definitions
Adds the \include/dbus.hrl\ header file, establishing the foundational type definitions and records for the D-Bus implementation. This includes definitions for message types (method calls, signals, errors), header fields, endianness, and complex data structures such as \dbus\_message\, \dbus\_header\, \dbus\_variant\, and \dbus\_address\. It also defines constants for authentication mechanisms, message flags, and the maximum number of Unix file descriptors allowed per message, providing the necessary schema for marshaling and unmarshaling D-Bus traffic.
include · high confidence
New script to automate GitHub issue creation from local files
A new \scripts/submit\_issue.sh\ script has been added to streamline the process of creating GitHub issues. Users can now pass a local issue file to the script, which parses metadata such as title, workstream, context, and state, and automatically resolves any referenced issue numbers to populate the 'Blocked by' field. The script uses \gum\ to display a preview of the issue details and allows the user to select the issue type and confirm submission before creating the issue via the GitHub CLI.
scripts · high confidence
Project initialization with rebar3 build tooling and documentation
The repository has been initialized with a standard Erlang project structure managed by rebar3. This includes a Makefile for common tasks (build, tests, lint, dialyze), a rebar.config defining dependencies (including the pc plugin for native code compilation), test profiles (using PropEr), and documentation generation (ExDoc). Additionally, standard project files such as .editorconfig, .gitignore, AUTHORS, LICENSE (Apache 2.0), README, and ChangeLog have been added to establish the project's baseline configuration and documentation.
(repo-wide) · high confidence
Test coverage
Added property-based and end-to-end tests for D-Bus marshalling, RPC, and Unix FD passing
Added a comprehensive test suite covering the D-Bus client and marshalling logic. Property-based tests (using PropEr) validate the \dbus\_marshaller\ against D-Bus specification laws, including signature round-trips, alignment rules, incremental decoding, and robustness against corrupted input, while also verifying \dbus\_rpc\ call semantics (method call rejection, NO\_REPLY\_EXPECTED handling, and timeouts). End-to-end Common Test suites verify Unix file-descriptor passing over both UNIX sockets (negotiating \NEGOTIATE\_UNIX\_FD\) and TCP (ensuring refusal and safe fallback), checking descriptor survival across the bus and leak prevention.
test · 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 64 → 60 (-4.1)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 97 → 97 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 54 → 45 (-8.9)
- Readiness 68 → 68 (+0.0)
- Security 61 → 61 (+0.0)
- Event Sourcing 100 → 100 (+0.0)
Resolved (3)
- Coverage not measured — no coverage collector is wired up
- Documentation: no usage examples (README.md)
- Off-boarding risk: anonymized user #1
New (2)
- Dependency hygiene PARTLY measured — rebar3 pinning read, dependency currency not (no rebar.lock-pinned Hex declaration to grade)
- Off-boarding risk: anonymized user #1
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
jeanparpaillon/erlang-dbus 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 98370cc7ad562cd39971ebcb9a1315e9da2db49c — 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.