Description: whole program optimizer for lazy and strict functional languages
GRIN is a compiler framework and an intermediate representation. It is short for Graph Reduction Intermediate Notation . GRIN could significantly improve the tooling, performance and size of functional programs and could enable functional technologies to target new platforms like WebAssembly.
Functional languages are compiled in three stages:
While LLVM handles the last step perfectly, GRIN as a functional optimizer can capture the original language semantics and can perform transformations that are infeasible at LLVM level.