Weekly notes #11

Proposal for improving performance in MRI Ruby using RTL+JIT, on mruby, and fuzzing.

Ruby, systems, performance, and programming links from last week.

Ruby

Feature #12589: VM performance improvement proposal - Vladimir Makarov, who previously improved Hash table performance, wrote a RTL (basically a switch to register-based from stack-based VM), which promises a more performant and easier-to-optimize intermediate representation of Ruby code, and MJIT (a MRI Ruby JIT). The initial implementation is up on GitHub for testing and evaluation.

Partial Downloads with Enumerators and Fibers - On implementing resumable downloads.

mruby archive - An archive of news about mruby - the lightweight, embeddable Ruby implementation.

Bug #13234: Infinite recursion (stack overflow) in parse_char_class() - a CVE-2017-6181 in Ruby - uncovered by fuzzing miniruby.

Fuzzing

The last two links made me want to find out more about using fuzzing to discover bugs. Here are some links on using American Fuzzy Lop (with interpreted languages). I’m planning to write a walk-through about fuzzing mruby.

A fuzz job from start to finish

Advanced usage of American Fuzzy Lop

afl-fuzz: making up grammar with a dictionary in hand

Segfaulting Python with afl-fuzz