Years ago there was a Ruby language feature which I found powerful, but which people warned me about using because it was also quite inefficient in the Ruby implementations of the time. I remember asking Matz, the creator of Ruby, about this at a conference. His answer was that Ruby programmers should use the features that make them happy, and that it’s the job of language implementers, like Matz and his team, to ensure that those features are also fast.
This idea—that the language should serve programmer happiness first and foremost—is one of the things that makes Ruby unique. Chris Seaton, our guest chef today, is keeping that spirit alive. Chris is the head of the TruffleRuby project. Today in the first of a two-part series he’s going to give us an example of how abstraction and runtime efficiency can sometimes be at odds. Then, in part two, he’ll show how he and other language implementers are tackling this problem so we don’t have to choose one or the other. Enjoy!