I’m the primary author of the Elision term rewriter library, which I donated to Oak Ridge National Laboratory a few years back. Elision was a core part of the Hyperion static analysis tool, and that tool has subsequently been licensed to a private company, Lenvio (now being renamed as “Affirm Logic”), to grow and improve. Elision is written in Scala and fits well with the Hyperion system, which is written in a mix of Java and Python.
There are many things I like about Elision, and many things I don’t. In particular there was a notion of “metavariables” that I really disliked, and some unusually cryptic notation that really just needs to go. Finally, the choice of Scala had some consequences (such as running on the JVM) which made some of the things we hoped to do (like running on Titan or Summit) hard.
Relision is not a rewrite of Elision, but a new term rewriting library, being written (this time) in Rust. I considered writing it in C++, but decided that the guarantees that Rust provides, combined with the fact that Rust has become (reasonably) mature, make it the right language to use.
The emphasis in Relision is going to be on performance. Elision had quite good performance, but I think with native code and concurrency we can do better.
Anyway, that’s my goal and we will see how far I manage to get.