Overview
News
Salaries
Products
People
Growth
Offices
Financials

Overview

I have a lot of thoughts about the design of compiler intermediate representations (IRs). In this post I’m going to try and communicate some of those ideas and why I think they are important.

News

Blog 2 months ago
Another partial SSI trick with canonicalize
After reading Chris Fallin's aegraph post , new ZJIT contributor dak2 landed a block-local version of the canonicalize function in #16828 . The pseudocode of the block-local canonicalize function looks like this: span...
Read more
Report
Blog 2 months ago
A quick look at zero-knowledge proofs
NB: This isn't about crypto. I don't care about crypto. Chris messaged me the other week asking if I wanted to implement zero-knowledge proofs. I initially was not interested, but then he said: What if I told you there's a version of them that has nothing
Read more
Report
Blog 3 months ago
The inliner is yielding benefits for ZJIT
Originally published on Rails At Scale . We recently enabled a really cool feature in ZJIT that makes it feel like a Real Compiler: the inliner! We'll write more about it soon. In this post, we'll talk about one excellent concrete benefit we are already s
Read more
Report
Blog 3 months ago
Travel notes: PLDI Boulder
I had another excellent PLDI this past June. It was my fourth 1 . I continued to meet new people and learn new things! Overall: I got to meet a lot of new people, which was exciting. I had some good chats about research. I asked a question at a talk! I go
Read more
Report
Blog 4 months ago
A survey of inlining heuristics
Compilers, especially method just-in-time compilers, operate on one function at a time. It is a natural code unit size, especially for a dynamic language JIT: at a given point in time, what more information can you gather about other parts of a running, c
Read more
Report
Blog 4 months ago
Checking assembly with Z3
Short post today. New ZJIT contributor dak2 submitted a PR to fix an overflow bug in fixnum division in ZJIT. We did the division fine, but lied about the type of the result in the case of dividing FIXNUM_MIN by -1 . You can see how this is special-cased
Read more
Report
Blog 5 months ago
Travel notes: RubyKaigi Hakodate
I just got back from a three and a half week trip to Japan. It was the longest trip I have ever been on (aside from studying abroad in Germany, which felt different). I made the following wild circuit with only a backpack and a duffel: Tokyo Toyama Kanaza
Read more
Report
Blog 5 months ago
Partial static single information form
In compilers, static single information form (SSI) is a common extension to static single assignment form (SSA). It was introduced by C. Scott Ananian in 1999 in his MS thesis (PDF) 1 . SSI extends your existing SSA intermediate representation by discover
Read more
Report
Blog 6 months ago
Value numbering
Welcome back to compiler land. Today we're going to talk about value numbering , which is like SSA, but more. Static single assignment (SSA) gives names to values: every expression has a name, and each name corresponds to exactly one expression. It transf
Read more
Report
Blog 7 months ago
Using Perfetto in ZJIT
Originally published on Rails At Scale . Look! A trace of slow events in a benchmark! Hover over the image to see it get bigger. img { max-width: 100%; } img:hover { transform: scale(2); transition: transform 0.1s ease-in; } img:not(:hover) { transition:
Read more
Report
Show more news