{"id":1,"date":"2018-12-31T22:23:52","date_gmt":"2018-12-31T22:23:52","guid":{"rendered":"https:\/\/stacyprowell.com\/blog\/?p=1"},"modified":"2019-01-07T22:30:27","modified_gmt":"2019-01-08T03:30:27","slug":"hello-world","status":"publish","type":"post","link":"https:\/\/stacyprowell.com\/blog\/2018\/12\/31\/hello-world\/","title":{"rendered":"Relision"},"content":{"rendered":"\n<p>I\u2019m the primary author of the <a href=\"http:\/\/elision.github.io\/\">Elision<\/a> term rewriter library, which I donated to <a href=\"http:\/\/ornl.gov\">Oak Ridge National Laboratory<\/a> a few years back.&nbsp; Elision was a core part of the <a href=\"https:\/\/www.ornl.gov\/division\/projects\/hyperion\">Hyperion<\/a> static analysis tool, and that tool has subsequently been licensed to a private company, <a href=\"https:\/\/www.lenvio-inc.com\/\">Lenvio<\/a> (now being renamed as \u201cAffirm Logic\u201d), to grow and improve.&nbsp; Elision is written in <a href=\"http:\/\/scala-lang.org\">Scala<\/a> and fits well with the Hyperion system, which is written in a mix of <a href=\"http:\/\/www.java.com\">Java<\/a> and <a href=\"http:\/\/www.python.org\">Python<\/a>.<\/p>\n\n\n\n<p>There\n are many things I like about Elision, and many things I don\u2019t.&nbsp; In \nparticular there was a notion of \u201cmetavariables\u201d that I really disliked,\n and some unusually cryptic notation that really just needs to go.&nbsp; \nFinally, the choice of Scala had some consequences (such as running on \nthe JVM) which made some of the things we hoped to do (like running on <a href=\"https:\/\/www.olcf.ornl.gov\/olcf-resources\/compute-systems\/titan\/\">Titan<\/a> or <a href=\"https:\/\/www.olcf.ornl.gov\/olcf-resources\/compute-systems\/summit\/\">Summit<\/a>) <em>hard<\/em>.<\/p>\n\n\n\n<p>Relision is not a rewrite of Elision, but a new term rewriting library, being written (this time) in <a href=\"http:\/\/rust-lang.org\">Rust<\/a>.&nbsp;\n I considered writing it in C++, but decided that the guarantees that \nRust provides, combined with the fact that Rust has become (reasonably) \nmature, make it the right language to use.<\/p>\n\n\n\n<p>The emphasis in Relision is going to be on <em>performance<\/em>.&nbsp; Elision had quite good performance, but I think with native code and concurrency we can do better.<\/p>\n\n\n\n<p>Anyway, that\u2019s my goal and we will see how far I manage to get.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rewriting a term rewriter library&#8230; in Rust!<\/p>\n","protected":false},"author":2,"featured_media":17,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/stacyprowell.com\/blog\/wp-json\/wp\/v2\/posts\/1"}],"collection":[{"href":"https:\/\/stacyprowell.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stacyprowell.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stacyprowell.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/stacyprowell.com\/blog\/wp-json\/wp\/v2\/comments?post=1"}],"version-history":[{"count":3,"href":"https:\/\/stacyprowell.com\/blog\/wp-json\/wp\/v2\/posts\/1\/revisions"}],"predecessor-version":[{"id":1120,"href":"https:\/\/stacyprowell.com\/blog\/wp-json\/wp\/v2\/posts\/1\/revisions\/1120"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stacyprowell.com\/blog\/wp-json\/wp\/v2\/media\/17"}],"wp:attachment":[{"href":"https:\/\/stacyprowell.com\/blog\/wp-json\/wp\/v2\/media?parent=1"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stacyprowell.com\/blog\/wp-json\/wp\/v2\/categories?post=1"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stacyprowell.com\/blog\/wp-json\/wp\/v2\/tags?post=1"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}