As far as I understand you just want something working right now? Then my suggestion would be to look into std.parallelism [0]. Create a task for each node without a parent. Let the tasks create new tasks for their children.
Yeah, I'm just trying to get something working right now, so I will certainly look into that. Luckily I have time this weekend to grok more of this and try some new things out (assuming I don't get sidetracked by anything too shiny)
You could try to make the DAG immutable and create a secondary data structure for the evaluation results.
Again, certainly something I'll look into, but I'm a little suspicious about storing the evaluation results separately because I'll constantly be accessing and adding them. So they'll have to be shared anyway, right? So if that's the case why not just read the DAG links from the already shared data.
