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...

A New Expectation Syntax for ruby/spec

ruby/spec is a test suite for the behavior of the Ruby programming language. The utility to run the test suite is called MSpec and is very similar to...

How TruffleRuby's Startup Time Became Faster Than MRI's

Introduction I want to talk about VM startup in Ruby. That is, the time it takes for a Ruby implementation to print “Hello World” with: $...

TruffleRuby Native: Fast Even for Short Scripts

Introduction Nowadays, it seems every major Ruby implementation has a Just-In-Time (JIT) compiler. Recently, YARV-MJIT has been merged to MRI (CRuby) trunk. JRuby relies on the Java...

From an obfuscated Sudoku to Fibers and coroutines

TRICK is the Transcendental Ruby Imbroglio Contest for RubyKaigi, a contest for interesting & weird (transcendental, imbroglio) Ruby programs. I participated in the 2015 edition and won the 4th prize....

Finding Thread errors early with Thread.report_on_exception

Ruby 2.4 introduced Thread.report_on_exception to print exceptions to $stderr when a Thread dies from an exception. However, it was disabled by default. In Ruby 2.5, I made

Running Optcarrot, a Ruby NES emulator, at 150 fps with the GUI!

TruffleRuby runs Optcarrot, a NES emulator written in Ruby, at 150 fps while playing a NES game. As we can see in the GIF, performance gets better...

RubySpec is Reborn!

Reposted from the ruby/spec blog post and slightly updated. TL;DR The Ruby Spec Suite is actively maintained at ruby/spec and MRI, JRuby, Opal and...