Skip to content

Latest commit

 

History

History
51 lines (26 loc) · 2.13 KB

README.org

File metadata and controls

51 lines (26 loc) · 2.13 KB

Automatic Compiler Generation using Equality Saturation

Automatically generate equality saturation based compilers using equality saturation and some cleverness.

Artifact Evaluation!!

Check out our artifact evaluation here: artifact-evaluation.org

Sub-components

Comp-gen

This is the main library that implements the rule generation and rule phasing algorithms.

README

dios-lang

README

This is an implementation of Diospyros using comp-gen. Right now it’s using Ruler directly to do synthesis, rather than implementing the Interpreter trait. However it is using the Compiler structure in the comp-gen library.

This is where most the work is happening right now.

aella

README

An experimental equality saturation compiler for a simple imperative language. This is an experiment to see if this technique of automatically constructing an equality saturation based compiler can generalize beyond Diospyros.

Future Work

Extending comp-gen to work in another setting

Trying comp-gen on the cranelift e-graph thing would be cool.

Using Ruler 2.0

Experimenting with how deeper rules change results. We have this note in the paper about increasing the number of rules that apply in each phase let’s use get away with using fewer iterations of equality saturation.

In general, it seems like there is this tradeoff between how much exploration we do in rule-generation vs. at equality saturation time. Understanding what this trade-off is seems interesting and probably useful.

Think about rules that allow cross lane interactions.

Automatic phase selection

We have these metrics on the rules. It should be relatively straight-forward to use something like clustering to automatically select phases.

Smarter methods of pruning

Can we be smarter about how we prune the e-graph? At the moment, we just throw away the entire thing. Can we do better than this? Can we define some part of the e-graph that is likely to be useful?