Skip to main content

Module dev

Module dev 

Expand description

The dev profile: for writing workflows, not for production.

Chosen with Config::dev, Config::profile or FUSEE_PROFILE=dev (which fusee dev and the test kit set); never inferred. The engine says so in one line when it opens, and:

  • keeps every run’s history (Config::keep_history);
  • on macOS flushes with fsync instead of F_FULLFSYNC: a process crash loses nothing, power loss may;
  • strict replay: when a run waits or ends, its journal is replayed against the registered code on a thread of its own, and a difference is reported at once with the step name, so reading the clock, random numbers or unordered collections outside a step shows up while the code is written, not after a crash in production;
  • result() of a stuck run fails with Error::Determinism instead of waiting for code that matches;
  • serves the HTTP API and the UI (Config::http);
  • records when each step began and how long it took (a STEP_TIMED record), so the UI’s step list is also a timeline.

Only the step times touch the step path, and only here: a clock read when a step begins and two varints on its record. A production step reads no clock for them and writes the same bytes as without the profile. The checks poll the run list from their own thread.

Enums§

Profile
Which defaults and checks an engine runs with.