Three Rubyists having conversations and interviewing others about Ruby and web development.

Optimizing Ruby JIT Compilers with Takashi Kokubun

April 14, 2023 0:47:05 90.42 MB Downloads: 0

On this episode of Remote Ruby, Jason and Andrew are here, and they are thrilled to have with them, Takashi Kokubun, a Staff Developer at Shopify. He’s here to talk about JIT (just-in-time) compilers in Ruby and why we would want to use one in Ruby. We’ll hear about his work on YJIT and RJIT, the differences between YJIT and MJIT, and how the primary focus is to make YJIT the best JIT compiler for real-world Ruby apps. 

There’s a conversation about the use of Rust in JIT compiler development for Ruby, and Takashi shares some benefits to using Rust, as well some challenges. Also, there’s some exciting upcoming improvements in YJIT, we find out why HAML is Takashi’s preferred template language, and he tells us about Hamlit, the template engine he authored and maintains. Hit download to hear much more! 

[00:01:54] Since Takashi worked on the original MJIT, he tells us what a JIT compiler is and why we would want to use one in Ruby.


[00:06:41] Takashi talks about working on the original MJIT (Ruby 2.6). 


[00:11:15] Jason wonders what kind of performance gains Takashi saw on average in Ruby 2.6 using MJIT in production. He explains that it was designed to optimize specific benchmarks such as Optcarrot but was not efficient for general purpose applications like Rails. 


[00:12:49] We find out why MJIT was slower on Rails which has to do with it using a sync compiler. 


[00:14:41] What kind of improvements were there in running Optcarrot with MJIT?


[00:16:41] Takashi shares why he joined in Shopify and what he did with YJIT.


[00:20:34] We hear some differences that YJIT has taken from MJIT. For example, YJIT is a JIT compiler that generates machine code directly, making it more efficient and faster than MJIT, which uses a C compiler. Also, he explains the architecture being very different between MJIT and YJIT. 


[00:24:52] We learn some performance benefits using YJIT.


[00:26:19] Let’s listen to Takashi talk about his work on RJIT, and he touches on John Hawthorn and Aaron Patterson’s compilers, hawthjit and TenderJit.

 

[00:31:23] Takashi talks about the primary focus to make YJIT the best JIT compiler for real world Ruby apps. 


[00:34:20] Takashi shares his mixed feelings with Rust, as well as the challenges. 


[00:39:29] There’s some exciting improvements coming up in the JIT world! 


[00:42:33] Andrew wonders if ERB gets any benefit to the stuff happening in YJIT.


[00:43:14] HAML is Takashi’s preferred template language, and he tells us about a HAML package he authored and maintains called, Hamlit. 


[00:44:42] Takashi maintains many libraries, he works on YJIT at Shopify, and writes assembly code.  How does he have time for all this? 


[00:45:46] Find out where you can follow Takashi online.


Panelists:

Jason Charnes

Andrew Mason


Guest:

Takashi Kokubun


Sponsor:

Honeybadger


Links:

Jason Charnes Twitter

Chris Oliver Twitter

Andrew Mason Twitter

Takashi Kokubun Twitter

Takashi Kokubun GitHub

Optcarrot 

yjit-bench

TenderJIT

hawthjit

Hamlit

Ruby Radar Twitter

Ruby for All Podcast