Upload
aysylu-greenberg
View
10.183
Download
4
Embed Size (px)
DESCRIPTION
The paper explains how you can write an interpreter and get an optimizing just-in-time (JIT) compiler for free. This enables language designers to focus on features without worrying about the complexities of compiler optimizations and code generation. This paper presents a Java Virtual Machine (JVM) that allows the application to control the JIT compiler behavior at runtime. We'll discuss how various programming languages can take advantage of this framework. To intrigue compiler aficionados, the authors show how combining AST node rewriting during interpretation, optimization, and deoptimization produces high performance code from the interpreter without a language-specific compiler. In addition, they present how features of a variety of programming languages, such as JavaScript, Ruby, Python, R and others, map on the framework.
Citation preview
One VM to Rule Them All
Aysylu Greenberg @aysylu22 h9p://aysy.lu
Papers We Love NYC #5 June 18th, 2014
About Me
• Search Infrastructure at • Spare Qme, + art + archery • Love everything related to compilers
Today
• Introduce concepts: – Interpreter, Compiler – Just-‐in-‐Qme (JIT) Compiler, VM
• Truffle + Graal • Node specializaQon #FTW • Truffle + Graal now
• Familiar with interpreter? Compiler? VM?
• Wrote interpreter/compiler/VM?
• Read the paper?
• Played with Truffle/Graal?
Interpreter vs. Compiler
h9p://www.youtube.com/watch?v=kmQUB-‐5cEgM
Example AST
JIT Compiler
Interpreter + Compiler
Virtual Machine
Interprets bytecode for processor Targets ANY hardware
Easier to opQmize bytecode
Truffle + Graal
• Truffle: language implementaQon framework
• Graal VM: extension to HotSpot VM with exposing of its internals
Truffle + Graal
Interpreter for AST -‐> JIT Compiler for Free!
Node SpecializaQon
Node SpecializaQon
Languages in Truffle + Graal
• Javascript • Ruby • Python • R • J
All the Useful Links in One Place • Graal on OpenJDK h9p://openjdk.java.net/projects/graal/ • TruffleRuby h9p://blog.jruby.org/2014/01/truffle_graal_high_performance_backend/ • FastR h9ps://bitbucket.org/allr/fastr • ZipPy h9ps://bitbucket.org/ssllab/zippy • TruffleSOM h9ps://github.com/smarr/TruffleSOM
Truffle + Graal Now
• System Modularity:h9p://www.slideshare.net/ThomasWuerthinger/2014-‐0424-‐graal-‐modularity
• All things Truffle + Graal: h9p://graalvm.org • Smalltalk (SOM) fastest implementaQon: h9p://som-‐st.github.io/#performance
• Progress on R, Python, Ruby, and Smalltalk
Truffle + Graal Now
• New Truffle features: – on-‐stack-‐replacement for loops – tail calls
• GraalVM binaries: h9p://lafo.ssw.uni-‐linz.ac.at/builds – Also, execute Java binaries (faster for some workloads)
And now for Clojurians …
From Authors: “We are very interested to build up a Clojure implementa5on on top of
Truffle. We believe we would be able to support tail calls.
We would be happy to support kick-‐start any kind of open source effort
on Truffle/Clojure.”