The past several years of my career have been spent predominately working on TruffleRuby, an implemention of the Ruby programming language that can achieve impressive execution speed thanks to the Truffle language implementation framework and the Graal JIT compiler. Taken together, these three technologies form part of the GraalVM distribution. The full distribution includes implementations of other languages (JavaScript, Python, R, and Java), an interpreter for LLVM bitcode (Sulong), tooling such as a profiler and debugger for both host and guest code (VisualVM), tooling to visualize decisions made by the JIT compiler (IGV), and the ability to generate native binaries of Java applications (including any of the listed language interpreters) via Native Image. There’s more to GraalVM as well, which makes defining it and discovering all of its capabilities difficult. In this article, I’d like to focus on two pieces of GraalVM functionality: 1) loading a Truffle interpreter into a Java application to call guest language code (e.g, Ruby) directly from Java; and 2) using Native Image to turn that Java code into a native shared library, allowing Truffle languages to be loaded and called just like any other exposed C function.
Tue 7 JunDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
11:00 - 12:30 | |||
11:00 30mShort-paper | Efficient Object Graph Recording with Truffle for Live Data-Structure Programming Truffle Shusuke Takahashi Tokyo Institute of Technology, Yusuke Izawa Tokyo Institute of Technology, Hidehiko Masuhara Tokyo Institute of Technology, Youyou Cong Tokyo Institute of Technology Media Attached | ||
11:30 30mTalk | Designing an intuitive language-agnostic integration of foreign objects in Ruby Truffle Benoit Daloze Oracle Labs Pre-print Media Attached | ||
12:00 30mTalk | Embedding Truffle Languages Truffle Kevin Menard Shopify Media Attached |