Version update. Tarearbol gets DynamicManager to ease building the collections of supervised workers with a similar behaviours, e. g. watchers for different changing entities.
Scaffold for the supervised DynamicSupervisor
No code for managing processes required
Implementation is as easy as 4 callbacks
Extremely easy testing
Behaviour-driven consumers
Consistent state and callbacks on state changes (like restarting)
Since yesterday it has two unrelated parts. The old one is a very thin wrapper around standard Task, reducing a boilerplate when one needs to deal with often-occasionally-failing tasks (retries, error handling, logging, etc.) plus it brings its own Supervisor. It was done mostly to eliminate the necessity to copy-paste boilerplate.
The part I introduced yesterday is actually not about tasks, but rather about DynamicSupervisor with many no-so-long living children. It has no analogs AFAIK. It drastically simplifies dealing with DynamicSupervisor when the workers are undefined upfront, have a defined lifecycle and might increase thousands in a number. It also makes testing DynamicSupervisor with children a charm.
v0.13.1 includes lightweight cron scheduler fully based on spawn processes. Allows conditional job termination, rescheduling, keeps track of last execution outcome.
Zero boilerplate is required.
Comes with cron record parser, returning all the upcoming events as Stream, Tarearbol.Calendar.{beginning_of,end_of}/2 working properly with any calendar (not only Calendar.ISO.)