sasa1977/parent
75.2
Strong · 18 September 2026
2.2k
lines of production code
Elixir
primary language
1
measurement over time
What this system is
This system is an Elixir library that provides a generic process abstraction for managing the lifecycle of child processes, including binding, supervision, and dynamic termination strategies. It also includes a periodic job scheduler with configurable intervals, overlap handling, and telemetry integration. The library offers performance optimizations via ETS-based registries and provides comprehensive testing utilities and benchmarking tools for developers.
Features
Added benchmark script for supervisor performance comparison
A new \scripts/bench.exs\ script has been added to allow users to benchmark and compare the performance of \Parent.Supervisor\ against the standard \DynamicSupervisor\. The script measures the time and memory usage for starting, restarting, and terminating 100,000 child processes using both implementations, providing empirical data on their relative efficiency.
scripts · high confidence
Introduce Parent process abstraction and Periodic job scheduler
This change introduces two new core components to the library. The \Parent\ module provides a generic process abstraction for managing the lifecycle of child processes, supporting features such as child binding (lifecycle dependencies), shutdown groups, restart limits, and anonymous children. Additionally, a new \Periodic\ module is added to handle scheduled job execution, offering configurable intervals, overlap handling strategies, runtime guards, and optional telemetry integration.
lib · high confidence
New test helpers and logging module for periodic schedulers
This change introduces two new modules in the \lib/periodic\ directory. \Periodic.Logger\ provides a ready-to-use telemetry handler that logs scheduler lifecycle events (started, finished, skipped, stopped\_previous) with appropriate log levels, allowing users to easily monitor scheduler activity. \Periodic.Test\ adds testing utilities for manual-mode schedulers, including \tick/1\ and \sync\_tick/2\ for sending and waiting on job ticks, as well as macros \assert\_periodic\_event/4\ and \refute\_periodic\_event/4\ for asserting telemetry events in tests.
lib/periodic · high confidence
Behavioural changes
Major version 0.12.1 with breaking changes to child termination and new supervisor interface
This release introduces significant behavioral changes to how the Parent library manages child processes. The most critical change is that children which time out are now terminated according to their specific shutdown specification (using a :timeout exit reason) rather than being forcefully terminated as before. Additionally, the library now requires Elixir 1.10+, removes deprecated Parent.GenServer functions, and changes the default child restart behavior to :permanent. New high-level modules Parent.Supervisor and Parent.Client are added to simplify supervision and external interaction, while ephemeral child support allows for dynamic supervision patterns. Anonymous bound siblings are also correctly taken down during termination.
(repo-wide) · high confidence
Parent process now supports ETS-based registry for faster child lookups
The Parent library introduces a new registry mechanism that allows child processes to be tracked in an ETS table instead of relying solely on GenServer state. When the \registry?: true\ option is enabled, client functions such as \children/1\, \child\_pid/2\, and \child\_meta/2\ perform direct ETS lookups, which improves performance and allows these queries to be used from within the parent process itself (bypassing the previous restriction that required external calls). This change is implemented via new modules \Parent.Registry\ and \Parent.MetaRegistry\, and is integrated into the \Parent.Client\ interface and \Parent.GenServer\ initialization.
lib/parent · high confidence
Updated configuration syntax and added console logging format
The application configuration has been updated to use the modern \import Config\ syntax instead of the deprecated \Mix.Config\. Additionally, a default console logger format has been configured to include metadata and level information in log output, enhancing visibility into application events.
config · high confidence
Test coverage
Added comprehensive test coverage for Periodic and Parent modules; Added test support utilities for log capture and stateful test servers; Added tests for the periodic logger; Added unit tests for Parent client, GenServer, and supervisor behaviors.
Dependencies
Upgrade Elixir requirement and add core dependencies
The project now requires Elixir 1.15+ (up from 1.6) and introduces several new dependencies: dialyxir for static analysis, ex\_doc for documentation generation, mox for mocking in tests, and telemetry for event monitoring. The application structure has been updated to include a proper application module and package metadata, ensuring these tools are available for development, testing, and runtime telemetry support.
(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
Baseline
- First survey — no prior run to compare against. CAI 75.
Lenses
- Code Health 98
- Architecture 100
- Maturity 59
- Readiness 80
- Security 100
Changes since last survey
- 288 commits — 261 feature/other, 27 fixes
By area
- lib/parent — 106 commits
- (root) — 84 commits
- lib/parent.ex — 18 commits
- (repo) — 17 commits
- lib/periodic.ex — 16 commits
- test/parent — 13 commits
- lib/periodic — 10 commits
- test/parent_test.exs — 6 commits
- demo/lib — 5 commits
- config/config.exs — 2 commits
- demo/_build — 2 commits
- lib/child.ex — 2 commits
- test/periodic_test.exs — 2 commits
- .github/workflows — 1 commit
- demo/buffer_batching — 1 commit
- demo/mix.lock — 1 commit
- scripts/bench.exs — 1 commit
- test/child_test.exs — 1 commit
Notable commits
- fix: Fix childspec
- fix: Fix crash in child_spec
- fix: Fix dialyzer warning
- fix: Fix error handling
- fix: Fix error reporting bug
- fix: Fix example error
- fix: Fix interleaved executions when using initial_delay
- fix: Fix ordered-depending tests
- fix: Fix readme
- fix: Fix shutdown children with brutal_kill spec
- fix: Fix test warning
- fix: Fix tests
- fix: Fix typespec
- fix: Fix typespec
- fix: Fix typespecs
- fix: Fix typespecs
- fix: Fix warning level
- fix: Fix warnings
- fix: Merge pull request #24 from gilbertwong96/fix/elixir-1.20-warnings
- fix: fix CI failures on Elixir 1.6
- …and 268 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
sasa1977/parent 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 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 8e88b243a7cabb1e4fff8d9575616fe282678bd7 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.