Or is the issue that the evolution of a language might introduce additional sources of non-determinism?
So merely upgrading without checking for these wouldn't be safe if code execution depends on the behavior of a specific runtime?
(that would probably for code that never fails at runtime I assume which also seem to be a pretty stringent requirement?)
The advantage of a virtual machine would then be that the full execution trace of the instructions can be recorded and then replayed, regardless of the higher level changing semantics?)