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

To actually answer your question, I don’t think any language changes are needed. Simulation tests on the BEAM work today; I’m literally doing it right now.

If you made the BEAM scheduler deterministic and wrote simulated APIs for I/O and time you could do DST natively, which would have performance benefits. But this would probably be a lot of work.

The real benefit of a new VM would be to simtest the VM itself. The biggest problem with my approach is that I cannot catch bugs in Erlang. Of course Erlang is old and stable so this isn’t the end of the world, but I would love to do better.

If you look at Tigerbeetle they have no dependencies at all. They literally vendor parts of the Zig stlib into their repo. That’s the dream: no untested surface area whatsoever.

But obviously “rewrite the entire BEAM” was one yak too many even for me, so Construct works for now!