Module Dm.ExecutionManagerSource

The event manager is in charge of the actual event of tasks (as defined by the scheduler), caching event states and invalidating them. It can delegate to worker processes via DelegationManager

Sourcetype delegation_mode =
  1. | CheckProofsInMaster
  2. | SkipProofs
  3. | DelegateProofsToWorkers of {
    1. number_of_workers : int;
    }
Sourcetype options = {
  1. delegation_mode : delegation_mode;
  2. completion_options : Protocol.Settings.Completion.t;
  3. enableDiagnostics : bool;
}
Sourceval is_diagnostics_enabled : unit -> bool
Sourcetype state

Execution state, includes the cache

Sourcetype event
Sourcetype events = event Sel.Event.t list
Sourcetype errored_sentence = (Types.sentence_id * Loc.t option) option
Sourceval pr_event : event -> Pp.t
Sourceval init : Vernacstate.t -> feedback_pipe:Types.feedback_pipe -> state
Sourceval destroy : state -> unit
Sourceval get_options : unit -> options
Sourceval set_options : options -> unit
Sourceval set_default_options : unit -> unit
Sourceval invalidate : state -> Types.sentence_id -> state
Sourceval is_remotely_executed : state -> Types.sentence_id -> bool

we know if it worked but we do not have the state in this process

Sourceval get_initial_vernac_state : state -> Vernacstate.t

Events for the main loop

Sourcetype prepared_task

Execution happens in two steps. In particular the event one takes only one task at a time to ease checking for interruption

Sourceval get_id_of_executed_task : prepared_task -> Types.sentence_id
Sourcemodule ProofWorkerProcess : sig ... end

Rocq toplevels for delegation without fork