MIT licensed by Roman Gonzalez
Maintained by [email protected]
This version can be pinned in stack with:capataz-0.2.0.0@sha256:c0f508a668796c78fee6281916061bf363800f48b01424aef1db387274ae802a,3059

Capataz

Our greatest glory is not in never failing, but in rising every time we fail.โ€“ Confucius

Table Of Contents

Installation

Hackage Stackage LTS Stackage Nightly

Make sure you include the following entry on your cabal fileโ€™s dependecies section.

library:
  build-depends: capataz

Or on your package.yaml

dependencies:
- capataz

Documentation

The documentation website can be found here. Some relevant links:

Development

Build Status Github Hackage Dependencies

Follow the developer guidelines

In future releases

  • Replace Protolude in favor of RIO
  • Documentation of performance analysis
  • Ensure unit tests always finish on all concurrent scenarios (dejafu experiment)

Changes

Change log

capataz uses Semantic Versioning. The change log is available on GitHub.

v0.2.0.0 Bumblebee release

BREAKING CHANGES

  • Allow the creation of Supervision Trees on Monad Transformer stacks ๐ŸŽ‰
  • Move to latest stable stackage snapshot (lts-11.10)
  • Remove protolude in favor of rio (closes #9)
  • Add convinience module Capataz
  • Add Control.Concurrent.Capataz.Util which provide ProcessSpec for normal use-cases
  • Add buildLogWorkerSpec and buildLogWorkerOptions which create a dedicated supervised thread that logs messages (sits on top of rio logger utilities)
  • Add terminateCapataz and terminateCapataz_ , these functions replace the re-exported runTeardown
  • Add re-export of TeardownResult from the teardown package
  • Update the capataz-simple-example project to use typed-process and rio
  • Add export for WorkerName and SupervisorName aliases
  • Add new dependency prettyprinter
  • Add new dependency pretty-show to prettify exceptions
  • Add Pretty instance for CapatazEvent
  • Add Display instance for CapatazEvent
  • Add ProcessThreadId newtype to better render ThreadId values
  • Add buildWorkerOptions1 and workerSpec1 (closes #17)
  • Move to CircleCI

v0.1.0.1

  • Bump bounds of async dependency

v0.1.0.0 Who supervises the supervisor?

BREAKING CHANGES

  • Introduction of the Process type which is composed of both Supervisor and Worker types
  • Replace defWorkerSpec in favor of workerSpec and workerSpecWithDefaults to build static workers
  • Replace of defWorkerOptions in favor of buildWorkerOptions and buildWorkerOptionsWithDefaults to build dynamic workers
  • Replace terminateWorker in favor of terminateProcess
  • Add supervisorSpec, supervisorSpecWithDefaults to build static supervision trees
  • Add forkSupervisor, buildSupervisorOptions and buildSupervisorOptionsWithDefaults to build dynamic supervision trees
  • Replace usage of default records semantics in favor of Lenses
  • Add joinCapatazThread to avoid providing direct access to async of root supervision tree
  • Add getSupervisorProcessId to access the ProcessId of a given Supervisor record (for dynamic termination)
  • Add getSupervisorAsync to access the Async () record of a supervisor process thread
  • Add getCapatazTeardown to access the Teardown record of the capataz system
  • Move CapatazEvent records to new module Control.Concurrent.Capataz.Event to avoid requiring DuplicateRecordFields extension on API users
  • Remove WorkerAction alias as it is used for library development documentation
  • Add capataz-repo-watcher example to showcase static supervision trees
  • Update capataz-simple-example unix-process example
  • forkCapataz signature now requires name for root supervisor

v0.0.0.2

  • Bump bounds of tasty dependency

v0.0.0.1

  • Bump bounds of tasty dependency
  • Bump bounds of tasty-hunit dependency

v0.0.0.0

  • First release of capataz
  • Support for supervising simple worker IO () sub-routines