The egg project uses e-graphs to provide a new way to build program optimizers and synthesizers.
The egg project maintains two systems that offer different ways to use e-graphs:
egg
- The original high-performance, flexible e-graph library implemented in Rust.
- Simpler design, a bit more “hackable” if you are looking to understand or poke at the underlying e-graph data structure.
- See the docs.rs, or the tutorial.
- BibTeX for citation information.
egglog
- A newer, more powerful system based on Datalog.
- More sophisticated database-oriented implementation, offering faster pattern matching, incremental execution, and composable e-class analyses.
- Usable from Rust, a built-in s-exp language, or Python bindings.
- See the docs.rs, the tutorial, or the web demo.
- BibTeX for citation information.
EGRAPHS Community
The egg project is part of the larger EGRAPHS Community, which aims to bring together researchers and practitioners interested in e-graphs and related techniques. Check out the EGRAPHS Community resources, including:
- The annual EGRAPHS Workshop at PLDI,
- The monthly EGRAPHS Seminar,
- The EGRAPHS Zulip for discussion and announcements about egg, egglog, and other projects!
News
For updates on egg itself, see the changelog.
- Our work connecting egg to Datalog will appear at PLDI 2023.
- Our paper Small Proofs from Congruence Closure is accepted to FMCAD 2022! See the recorded talk here.
- The inaugural EGRAPHS workshop at PLDI 2022 was a huge success!
- Ruler won a Distinguished Paper Award at OOPSLA 2021! Check out the talk here.
- Our paper on using equality saturation to automatically infer rewrite rules is accepted at OOPSLA 2021!
- Max wrote a post on the SIGPLAN blog about egg!
- Check out egg's POPL 2021 videos on YouTube (5 min and 30 min) or Clowdr.
- The egg paper won Distinguished Paper at POPL 2021.
- Max gave a 10 minute talk about egg as part of the UW CSE Colloquium series.
- The egg paper will appear at POPL 2021! Check out the preprint.
Projects using egg and e-graphs
Check out Philip Zucker’s page on Awesome E-graphs for a list of egg and e-graph related projects. PRs are welcome to add your project to the list!
You can also see who's using egg on GitHub and Google Scholar.