Understanding LLVM – the (Sulong) Truffle interface
LLVM is a compiler infrastructure that provides a modular, reusable set of compiler components that can form a toolchain to compile source code to machine code. The toolchain provides various levels of optimization, on an intermediate representation (IR). Any source language can use this toolchain, as long as the source code can be represented as an LLVM IR. Once the source code is represented as an LLVM IR, that language can utilize the advanced optimization techniques that LLVM provides. You can refer to the LLVM project at https://llvm.org/. There are various compilers that are already built on this infrastructure. Some of the most popular ones are Clang (for C, C++, and Objective C), Swift (used extensively by Apple), Rust, and Fortran.
Sulong is an LLVM interpreter that is written in Java and internally uses the Truffle language implementation framework. This enables all language compilers that can generate LLVM IR...