>> C. Set all variables in the C environment to match process-environment >> every time we call into the dynamic module >> (but this is slow and hurts performance) I'm going to preface a solution to excessive redundant passing by pointing out that the provenance of a piece of data is a requisite but something we don't have. Encoding input provenance in vector clocks is a solution to avoiding unnecessary passing and maintaining caller and callee input synchronization even when the callee is performing asynchronous work. While we can use watch-variable for updates from Elisp, such as those done by a package like envrc that creates buffer local environments, updates from C don't have this convenience. Protecting inputs from arbitrary mutations is a requirement to implement this technique conveniently. More likely, there need to be interfaces that permit a logical clock and the value it versions to remain consistent. Since the data needs to be immutable or else requires locking, coordination with the GC is required.