This is quite a big PR but it finally introduces an actual compiler that produces executable graphs. These graphs can be further optimized by performing some compile-time checks. The graph structure implicitly takes care of control flow, while the optimizations reduce the graph size as much as possible.
There's also an inlining process which runs before the compilation step. It can provide benefits in the interpreted case, and it also makes compilation faster.
This is quite a big PR but it finally introduces an actual compiler that produces executable graphs. These graphs can be further optimized by performing some compile-time checks. The graph structure implicitly takes care of control flow, while the optimizations reduce the graph size as much as possible.
There's also an inlining process which runs before the compilation step. It can provide benefits in the interpreted case, and it also makes compilation faster.