Hobbes - a low-level distributed database for the Elixir programming language

I doubt you could ever rely on the BEAM to be deterministic, but putting that aside another nice property for the simulator to have is stability.

One of the most useful features of the sim is that, when a run fails, you can actually go back and instrument the code with extremely specific log statements and other checks. Because of how Construct is implemented (like a cooperative scheduler), executing those log statements does not throw the run off of its path.

Even if the BEAM scheduler was deterministic the extra reductions from the log statements would destabilize it. Perhaps this could be made up for with fancy debugging tools, but I do enjoy my print statement debugging :slight_smile:

1 Like