Tue 23 Mar 2021 13:00 - 14:00 at Virtual Space A - Optimizing Dynamic Languages Chair(s): Fabio Niephaus

Ruby is a dynamically-typed programming language with elements of object-oriented and functional programming. This language was used to implement the backend of many popular online services, such as Shopify, GitHub, AirBnB, and Twitch. Each of these services requires a large number of servers to run, and so there is a strong desire from multiple large stakeholders to optimize Ruby’s performance. There are currently multiple ongoing attempts to write JIT compilers for the language. However, Ruby’s highly dynamic nature makes it challenging to generate efficient compiled code, and sometimes surprisingly difficult to outperform CRuby’s interpreter.

In this talk, I will present YJIT, an open source project led by a small team of developers at Shopify to incrementally build a new JIT compiler inside CRuby, the mainstream Ruby implementation, with the goal of seamless integration with existing Ruby code. I will be briefly discussing the landscape of existing Ruby JIT compilers and presenting the approach we are taking to implement YJIT, which is based on lazy basic block versioning, a JIT compiler architecture developed during my PhD. With this approach, we are trying to find a sweet spot in terms of implementation complexity and performance of the generated code. We are at an early stage in the YJIT project, and so I am coming to you not just to present the architecture, but also to discuss design tradeoffs and to solicit feedback from compiler and virtual machine design experts.

Conference Day
Tue 23 Mar

Displayed time zone: Belfast change

12:55 - 14:30
Optimizing Dynamic LanguagesMoreVMs at Virtual Space A
Chair(s): Fabio NiephausHasso Plattner Institute, University of Potsdam
12:55
5m
Day opening
Welcome
MoreVMs
Fabio NiephausHasso Plattner Institute, University of Potsdam, David LeopoldsederOracle Labs
13:00
60m
Talk
YJIT: Building a New JIT Compiler Inside CRubyMoreVMs Invited Talk
MoreVMs
Media Attached
14:00
30m
Talk
Caching Hidden Classes for Pre-transitioning Object Memory Layout in JavaScript
MoreVMs
Tomoharu UgawaUniversity of Tokyo, Stefan MarrUniversity of Kent, Richard JonesUniversity of Kent
Media Attached