ginger/vm
Brian Picciano c4dd673bf4 Refactor Graph internals to deduplicate OpenEdges
This change required OpenEdges to be passed around as pointers, which in
turn required me to audit how value copying is being done everywhere and
simplify it in a few places. I think I covered all the bases.

The new internals of Graph allow the graph's actual structure to be
reflected within the graph itself. For example, if the OpenEdges of two
ValueIns are equivalent then the same OpenEdge pointer is shared for the
two internally. This applies recursively, so if two OpenEdge tuples
share an inner OpenEdge, they will share the same pointer.

This change is a preliminary requirement for creating a graph mapping
operation. Without OpenEdge deduplication the map operation would end up
operating on the same OpenEdge multiple times, which would be incorrect.
2021-12-29 13:57:14 -07:00
..
op.go Refactor Graph internals to deduplicate OpenEdges 2021-12-29 13:57:14 -07:00
scope_global.go Implementation of a super basic vm 2021-12-29 10:43:08 -07:00
scope.go Refactor Graph internals to deduplicate OpenEdges 2021-12-29 13:57:14 -07:00
vm_test.go Implementation of a super basic vm 2021-12-29 10:43:08 -07:00
vm.go Make graph generic 2021-12-29 12:32:53 -07:00