|
1 | 1 | # egglog-experimental |
2 | 2 |
|
3 | | -This is the repo for unstable extensions to [`egglog`](https://github.com/egraphs-good/egglog). |
4 | | -This can be thought of as a standard library of sorts. |
| 3 | +This repo implements several experimental extensions to the core [`egglog`](https://github.com/egraphs-good/egglog). |
| 4 | +Currently, this can be thought of as a standard library to `egglog`. |
5 | 5 |
|
6 | | -You can use the existing egglog [Zulip](https://egraphs.zulipchat.com/#narrow/stream/375765-egglog) chat to ask questions and suggest improvements to this repo. |
| 6 | +You can use the egglog [Zulip](https://egraphs.zulipchat.com/#narrow/stream/375765-egglog) to ask questions and suggest improvements to this repo. |
7 | 7 |
|
8 | | -This crate is not on crates.io yet. Until then, we recommend using a [git dependency](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-git-repositories) in a `Cargo.toml` file, or else building from source. |
| 8 | +## Trying it out |
| 9 | + |
| 10 | +The easiest way to try out `egglog-experimental` is to use the [web demo](https://egraphs-good.github.io/egglog-demo), which builds on top of latest egglog-experimental. |
| 11 | + |
| 12 | +To install egglog-experimental binary locally, you need to install `cargo` and run |
| 13 | + |
| 14 | +``` |
| 15 | +git clone git@github.com:egraphs-good/egglog-experimental.git |
| 16 | +cargo install --path=egglog-experimental |
| 17 | +``` |
| 18 | + |
| 19 | +To use it in a Rust project, you can add it as a dependency in a `Cargo.toml` file. |
| 20 | + |
| 21 | +``` |
| 22 | +egglog-experimental = "1.0" |
| 23 | +``` |
| 24 | + |
| 25 | +## Implemented extensions |
| 26 | + |
| 27 | +* `for`-loops ([demo](https://egraphs-good.github.io/egglog-demo/?example=for)) |
| 28 | +* `with-ruleset` ([demo](https://egraphs-good.github.io/egglog-demo/?example=with-ruleset)) |
| 29 | +* Rationals ([demo](https://egraphs-good.github.io/egglog-demo/?example=rational), see `src/rational.rs` for supported primitives) |
| 30 | +* Dynamic cost model with `set-cost` ([demo](https://egraphs-good.github.io/egglog-demo/?example=05-cost-model-and-extraction)) |
| 31 | +* Running custom schedulers with `run-with` ([demo](https://egraphs-good.github.io/egglog-demo/?example=math-backoff)) |
0 commit comments