
Contributions to ruby/spec
As a maintainer of ruby/spec I sometimes wonder how much each Ruby implementation contributes to ruby/spec. Without further ado, here it is: Interpretation Rubinius started...

Matching Regexps 200 Times Faster
You might have seen @byroot’s excellent blog post series on optimizing the json gem. From the first blog post it’s clear most of the time for generating JSON...

Benchmarking Ruby Parsers
The new Prism parser has become the default in Ruby 3.4.0 preview 2. Let’s benchmark Ruby parsers and find out how fast they are. We run benchmarks on...

Benchmarking CRuby, MJIT, YJIT, JRuby and TruffleRuby
In this blog post we benchmark many Ruby versions and the latest Ruby Just-in-Time compilers (JITs) on the newest Ruby benchmark suite, yjit-bench. As a teaser, the geometric mean...

Review: Ruby Installers and Ruby Switchers
In this post I review the most popular Ruby installers (making it easier to install a Ruby) and Ruby switchers (to switch between different Rubies conveniently). I contributed to all...

Correct Delegation with Ruby 2.6, 2.7 and 3.0
While looking at how a few gems handle delegation on Ruby 2.7, I noticed that many of them are unfortunately incorrect. The official blog post about keyword arguments changes...

The Ruby Spec Suite Compatibility Report
Introduction For a long time I wanted to show visually the compatibility of Ruby implementations with ruby/spec. This is not as easy as it sounds. First, we would...

A Migration Path to Bundler 2+
Bundler 2 did not arrive quietly. It was noticed by almost every CI build failing when running bundle install. As a result, it seems many still avoid Bundler 2...

The Delegation Challenge of Ruby 2.7
Ruby 3.0 will introduce the separation between positional and keyword arguments. The upcoming Ruby 2.7 release aims to introduce warnings for every argument behavior that will change in Ruby...