Skip to content

Automatically generate a compiler using equality saturation

Notifications You must be signed in to change notification settings

sgpthomas/comp-gen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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?

About

Automatically generate a compiler using equality saturation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages