Simply put: when we clone an execution, we currently share the old locals object between all clones. Any changes in a parallel clone will be reflected in concurrently-executing clones.
For a long time, we talked about using some sort of forking-data-structure (the equivalent of lexical scopes, but temporal) for locals-storage.
One alternative that's at the front of my mind, because I like anything simple, is to shallow-copy the locals every time the execution is cloned. This, however, leaves no recourse for modifying temporally-up-stream associations (basically, it makes us Just As Evil As CoffeeScriptâ„¢.)
One last point of interest: don't forget how association-shadowing comes into play, here. Since we're considering shallow-copying the locals, that means all the associations would be the same: we could modify the existing association to reflect the change into all clones; or shadow the association to affect only the current clone. (Sounds like a solution?)
Simply put: when we clone an execution, we currently share the old
locals
object between all clones. Any changes in a parallel clone will be reflected in concurrently-executing clones.For a long time, we talked about using some sort of forking-data-structure (the equivalent of lexical scopes, but temporal) for locals-storage.
One alternative that's at the front of my mind, because I like anything simple, is to shallow-copy the locals every time the execution is cloned. This, however, leaves no recourse for modifying temporally-up-stream associations (basically, it makes us Just As Evil As CoffeeScriptâ„¢.)
One last point of interest: don't forget how association-shadowing comes into play, here. Since we're considering shallow-copying the locals, that means all the associations would be the same: we could modify the existing association to reflect the change into all clones; or shadow the association to affect only the current clone. (Sounds like a solution?)