SPLASH Events 2021
2021 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity (SPLASH Events 2021)
Powered by
Conference Publishing Consulting

13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages (VMIL 2021), October 19, 2021, Chicago, IL, USA

VMIL 2021 – Preliminary Table of Contents

Contents - Abstracts - Authors

13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages (VMIL 2021)


Title Page

Message from the Chairs
Welcome to the 13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages (VMIL 2021). The workshop is co-located with SPLASH’21 and will be held as a hybrid event in Chicago, US. The workshop aims at advancing the state of the art on the design and implementation of programming systems, with virtual machines—broadly defined—as a focus. VMIL could attract a sizable number of seven submissions this year, after a submission low due to COVID-19 last year.


Reflections on a Decade of MoarVM, a Runtime for the Raku Programming Language (Keynote)
Jonathan Worthington
(Edument, n.n.)

Article Search
TBA (Keynote)
Tobias Grosser
(University of Edinburgh, UK)

Article Search
GraalVM Native Image: Large-Scale Static Analysis for Java (Keynote)
Christian Wimmer
(Oracle Labs, n.n.)

Article Search

Full Papers

Lightweight On-Stack Replacement in Languages with Unstructured Loops
Matt D'Souza and Gilles Duboscq
(University of Waterloo, Canada; Oracle Labs, Switzerland)
On-stack replacement (OSR) is a popular technique used by just in time (JIT) compilers. A JIT can use OSR to transfer from interpreted to compiled code in the middle of execution, immediately reaping the performance benefits of compilation. This technique typically relies on loop counters, so it cannot be easily applied to languages with unstructured control flow. It is possible to reconstruct the high-level loop structures of an unstructured language using a control flow analysis, but such an analysis can be complicated, expensive, and language-specific. In this paper, we present a more lightweight strategy for OSR in unstructured languages which relies only on detecting backward jumps. We design a simple, language-agnostic API around this strategy for language interpreters. We then discuss our implementation of the API in the Truffle framework, and the design choices we made to make it efficient and correct. In our evaluation, we integrate the API with Truffle's LLVM bitcode interpreter, and find the technique is effective at improving start-up performance without harming warmed-up performance.

Article Search
A Small Scheme VM, Compiler, and REPL in 4K
Samuel Yvon and Marc Feeley
(Université de Montréal, Canada)
Compact language implementations are increasingly popular for use in resource constrained environments. For embedded applications such as robotics and home automation, it is useful to support a Read-Eval-Print-Loop (REPL) so that a basic level of interactive development is possible directly on the device. Due to its minimalistic design, the Scheme language is particularly well suited for such applications and several implementations are available with different tradeoffs. In this paper we explain the design and implementation of Ribbit, a compact Scheme system that supports a REPL, is extensible and has a 4 KB executable code footprint.

Article Search

Work-in-Progress Papers

YJIT: A Basic Block Versioning JIT Compiler for CRuby
Maxime Chevalier-Boisvert, Noah Gibbs, Jean Boussier, Si Xing (Alan) Wu, Aaron Patterson, Kevin Newton, and John Hawthorn
(Shopify, Canada; Shopify, UK; Shopify, France; Shopify, USA; GitHub, Canada)
Ruby is a dynamically typed programming language with a large breadth of features which has grown in popularity with the rise of the modern web, and remains at the core of the implementation of many widely-used websites.
CRuby, the default implementation of the language, features a JIT compiler known as MJIT, but developers often do not enable it in production environments, because it does not always yield performance improvements on real-world software. Attempts to independently reimplement the Ruby language, such as JRuby and TruffleRuby have shown impressive performance results on benchmarks, but often lag behind CRuby when it comes to supporting new additions to the language, which limits their adoption.
We introduce YJIT, a new JIT compiler built inside CRuby based on a Lazy Basic Block Versioning (LBBV) architecture. We show that while our compiler does not match the peak performance of TruffleRuby, it offers near-100% compatibility with existing Ruby code, impressively fast warmup, and speedups from 15% to 19% on sizeable benchmarks based on real-world software.

Article Search

proc time: 1.1