I've created a branch for the new graph processing code so we can test it a bit before I push it to master. It is immensely faster than the old code (my simple 15 node benchmark graph went from 10% overhead to about 0.5% overhead), but it has probably broken some assumptions about the old graph.
The known gotchas:
* get_cached_region is no longer used. The cache bounds are
always the full output bounds, but the request will not be
expanded.
* The cache intersect is calculated after all requests to a node
are combined, so partial cache hits from multiple nodes may
skip the cache.
* Meta nodes (nodes who's pads do not reference them) will never
be visited.
* Prepare is called only once per node (at least until the node is invalidated), and must not modify the
connectivity of the graph.
I've fixed the issues I found in the included operations (load, save, and layer were the only ones broken) and Gimp appears to work, but I'm sure there are some new bugs lurking around after changing this much code. :)
https://git.gnome.org/browse/gegl/log/?h=newgraph-merge