-type 'a to_string = 'a -> string
-
-val run : (unit -> 'a next) -> 'a retire -> 'a to_string -> unit
-(** [run next_job retire_job] runs jobs in parallel. [next_job]
- is called to pick the next available job. [retire_job] is
- called when a job finishes successfully.
+ [next_job] is called to pick the next available job.
+ [retire_job] is called when a job finishes successfully.
+ [fail_job] is called when a job fails (only in keep-going
+ -k mode). All jobs that depend on this one must be marked
+ failed by the caller.
+ [to_string] is called if we need to print the job name.