lpgauth/swirl
59.9
Adequate · 2 October 2026
1.2k
lines of production code
Erlang
primary language
2
measurements over time
What this system is
Swirl is a high-performance Erlang stream processing engine designed for distributed data flows. It enables users to define configurable pipelines with mappers, reducers, and windowing logic, while managing state and node coordination through built-in mechanisms like ETS tables and a code distribution server. The system supports event filtering via a query language and provides telemetry instrumentation to monitor flow lifecycle and dispatch granularity.
Features
Add telemetry instrumentation and modernize build infrastructure
Version 0.2.9 introduces four new telemetry events (\[swirl, flow, start\], \[swirl, flow, stop\], \[swirl, mapper, window\], \[swirl, reducer, window\]) to monitor flow lifecycle and window dispatch granularity, requiring the addition of the telemetry 1.4.2 dependency. This release also includes infrastructure updates from version 0.2.8, such as switching the uuid dependency to the hex package uuid\_erl 2.0.7, migrating documentation generation from edown to rebar3\_ex\_doc, and updating the CI matrix to support OTP 25-28.
(repo-wide) · high confidence
Initial release of Swirl stream processing engine
Swirl is introduced as a high-performance Erlang stream processor (version 0.2.9) that enables distributed data flows with configurable mappers and reducers. The system features a code distribution mechanism via a code server to handle module updates across nodes, a query language (swirl\_ql) for filtering events, and a heartbeat system to automatically restart dead mappers. Users can define flows with specific windowing, flushing, and concurrency options, while the engine manages state through ETS tables and exposes telemetry events for monitoring.
src · high confidence
Introduce Swirl distributed processing API and data structures
This change adds the core header file for the Swirl library, defining the records and types that constitute its public API. Users can now define flows using the new \#flow record, which supports configuration for mappers and reducers (including options, windows, and node limits), stream filtering, and heartbeats. The file also introduces the \#stream record for tracking stream state and defines the exp\_tree type for stream filtering expressions, establishing the foundational data structures for the library's distributed processing capabilities.
include · high confidence
Behavioural changes
3 commits (0 fixes) modifying bin
A change to existing behaviour in bin — 3 commits, 1 file.
bin · medium confidence · unverified
Documentation rebuilt with ExDoc v0.39.1 for swirl v0.2.8
The project documentation has been regenerated using ExDoc v0.39.1, updating the API reference, changelog, and search assets for swirl v0.2.8. This rebuild reflects the infrastructure modernization in version 0.2.8, which migrated the documentation toolchain from edown to rebar3\_ex\_doc, switched the uuid dependency to the uuid\_erl hex package, and updated the CI matrix to support OTP 25-28.
doc · high confidence
Test coverage
Added unit tests for Flow and Query Language components
Added new test suites to verify the behavior of the \swirl\_flow\ module and the \swirl\_ql\ query language parser/evaluator. The \swirl\_flow\_tests\ module exercises the flow lifecycle, including mapper/reducer logic and stream filtering, while \swirl\_ql\_tests\ validates the parsing and evaluation of comparison, set membership, and logical predicates.
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 59 → 60 (+0.6)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 99 → 99 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 39 → 39 (+0.0)
- Readiness 78 → 80 (+2.3)
- Security 92 → 96 (+4.0)
Resolved (1)
- Coverage not measured — no coverage collector is wired up
New (2)
- Documentation: no licence statement (README.md)
- Documentation: no project overview (README.md)
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/swirl 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 ab631a01a1b49a1b08710ca997c3c555ba4c26ae — 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.