Daily Thought - 2024-11-18
< back to listQuite a while ago, I talked about rewinding your running program. More recently, I expanded on that, by looking at coarse-grained, event-based rewinding again. Today, I'd like to take revisit fine-grained, expression-based rewinding.
First, let's talk about the difference in nomenclature, because I was calling this "instruction-based" rewinding before. Back then, it didn't make much of a difference, since expressions in the compiler and instructions in the runtime were pretty much the same thing. But as the compiler is getting smarter, and the runtime is getting simpler, those concepts have started to diverge.
Expressions are what the developer is concerned with and (hopefully) understands, while instructions are an implementation detail. So it makes more sense to base fine-grained rewinding on expressions rather than instructions. Next, I'd like to talk about how to implement that.