Array Programming LanguageHigh-level Programming LanguageNovel FrameworkEngineeringProgram AnalysisCompiler TechnologySoftware SystemsFormal MethodsComputer EngineeringSoftware EngineeringProgramming Language ImplementationInterpreter (Computing)Computer ScienceCompilersSoftware AnalysisLanguage ParadigmsProgramming Languages
We present Truffle, a novel framework for implementing managed languages in Java™. The language implementer writes an AST interpreter, which is integrated in our framework that allows tree rewriting during AST interpretation. Tree rewrites incorporate type feedback and other profiling information into the tree, thus specializing the tree and augmenting it with run-time information. When the tree reaches a stable state, partial evaluation compiles the tree into optimized machine code. The partial evaluation is done by Graal, the just-in-time compiler of our Java VM (a variation of the Java HotSpot VM). To show that Truffle supports a variety of programming language paradigms, we present prototype implementations of JavaScript (a dynamically typed programming language) and J (an array programming language).
4
Carl Friedrich Bolz, Antonio Cuni, Maciej Fijałkowski et al. · 2009 · 277 citations
PyPy's approach to virtual machine construction
Armin Rigo, Samuele Pedroni · 2006 · 170 citations
Engineering, Compiler Technology, System Programming Language +20
Self-optimizing AST interpreters
Thomas Würthinger, Andreas Wöß, Lukas Stadler et al. · 2012 · 130 citations