Unreleased - ReleaseDate
EGraph::add_exprnow proceeds linearly through the givenRecExpr, which should be faster and include all e-nodes from the expression.
0.6.0 - 2020-07-16
Idis now a struct not a type alias. This should help prevent some bugs.Runnerhooks allow you to modify theRunnereach iteration and stop early if you want.- Added a way to lookup an e-node without adding it.
define_language!now support variants with data and children.- Added a tutorial in the documentation!
- Fixed a bug when making
Patterns fromRecExprs. - Improved the
RecExprAPI.
0.5.0 - 2020-06-22
eggnow providesSymbols, a simple interned string that users can (and should) use in theirLanguages.eggwill now warn you when you try to useRewrites with the same name.- Rewrite creation will now fail if the searcher doesn't bind the right variables.
- The
rewrite!macro supports bidirectional rewrites now. define_language!now supports variable numbers of children withBox<[Id]>.
- The
rewrite!macro builds conditional rewrites in the correct order now.
0.4.1 - 2020-05-26
- Added various Debug and Display impls.
- Fixed the way applications were counted by the Runner.
0.4.0 - 2020-05-21
- The rebuilding algorithm is now precise meaning it avoid a lot of unnecessary work. This leads to across the board speedup by up to 2x.
Languageelements are now much more compact, leading to speed ups across the board.
- Replaced
MetadatawithAnalysis, which can hold egraph-global data as well as per-eclass data. - Fix: An eclass's metadata will now get updated by congruence. (commit)
- The
BackoffSchedulerwill now fast-forward if all rules are banned. (commit) - Improve benchmark reporting (commit)
- The egraph now skips irrelevant eclasses while searching for a ~40% search speed up.
(PR)
0.3.0 - 2020-02-27
Runnercan now be configured with user-definedRewriteSchedulers andIterationData.
- Reworked the
RunnerAPI. It's now a generic struct instead of a trait. - Patterns are now compiled into a small virtual machine bytecode inspired by this paper. This gets about a 40% speed up.
0.2.0 - 2020-02-19
- A dumb little benchmarking system called
egg_benchthat can help benchmark tests. - String interning for
Vars (néeQuestionMarkNames). This speeds up things by ~35%. - Add a configurable time limit to
SimpleRunner
- Renamed
WildMaptoSubst,QuestionMarkNametoVar.
- Multi-matching patterns (ex:
?a...). They were a hack and undocumented. If we can come up with better way to do it, then we can put them back.
0.1.2 - 2020-02-14
This release completes the documentation (at least every public item is documented).
- Replaced
Pattern::{from_expr, to_expr}withFromandTryFromimplementations.
0.1.1 - 2020-02-13
- A lot of documentation
- The graphviz visualization now looks a lot better; enode argument come out from the "correct" position based on which argument they are.
0.1.0 - 2020-02-11
This is egg's first real release!
Hard to make a changelog on the first release, since basically everything has changed! But hopefully things will be a little more stable from here on out since the API is a lot nicer.