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!






















