| layout | default |
|---|
{% assign egg = 'egg' %}
The {{egg}} project uses e-graphs to provide a new way to build program optimizers and synthesizers.
An e-graph compactly represents many equivalent programs. These four e-graphs represent more and more (even infinite!) ways to write (a × 2) / 2. {{egg}} makes e-graphs fast and flexible enough for use in program optimization and synthesis.The {{egg}} project maintains two systems that offer different ways to use e-graphs:
- 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.
- 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.
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!
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.
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.