2019 Ruby Association Grant selection result

We are very happy to announce that the following four projects have been selected by the Ruby Association grant committee.
Accomplishments of the projects will be published around March 2019.

Creating a multi-file precompilation mechanism

Project Summary

ISeq, an intermediate representation of RubyVM, provides binary serialization and deserialization functions. Bootsnap improves the application startup time by caching the binary data. However, Bootsnap cannot cache multiple files such as projects and gems at once. In addition, some gems that the Ruby interpreter loads at startup are not cached.

This project provides a mechanism for pre-compiling gems and projects into a single binary file by extending the MRI. Using it, we aim to speed up the launching of Ruby applications and the Ruby interpreter itself.

Applicant Name

NAGAYAMA Ryoga

Asynchronous Ruby

Project Summary

We have proven that fibers are useful for building scalable systems. In order to develop this further, we need to add hooks into the various Ruby VMs so that we can improve the concurrency of existing code without changes. There is an outstanding PR for this work, but additional effort is required to bring this to completion and show its use in real world situations. We propose to bring the existing PR to completion and improve Ruby’s concurrency model.

From time to time, we will live stream the implementation of this feature. Please follow https://twitter.com/ioquatix to receive notifications before live streaming begins.

Applicant Name

Samuel Williams

The Tests of Reline In Real Terminals

Project Summary

Ruby 2.7 has brand-new IRB with Reline that is a multiline interactive input interface library. It contains some multiline editing modes that are GNU Readline compatible on terminals and it’s very difficult to reproduce behaviors. I always test it manually. Reline has too many features so I need too many checking before when I add a commit every time. It’s too dangerous.

The goal of this project is development “real” terminal test frameworks for Reline.

Applicant Name

ITOYANAGI Sakura

Rubyplot: An advanced plotting library for Ruby

Project Summary

Rubyplot is a plotting library for Ruby inspired from the library Matplotlib for Python which aims to provide platform-independent data visualizations to be used for scientific computing and web development. This project aims to advance Rubyplot as the defacto standard plotting library in the Ruby community. By the end of the project, Rubyplot will have a large variety of good looking plots which would be well documented and easy to use, support for NMatrix and Numo arrays and basic Image Processing functionality.

Applicant Name

Alish Dipani

RbBCC - An improvement for CRuby ecosystem to access Linux tracing technologies

Project Summary

The goal of this project is enabling Ruby ecosystem to trace Linux applications in a detailed way. “Linux applications” includes the Linux kernel itself. In addition, enabling debuging and event aggregation are also aimed to achieve. Recently Linux supports a functionality called eBPF(extended Berkley Packet Filter). Using this we can trace and aggregate events occurred in Linux kernel with lower costs. There is a library called libbcc that wraps ebpf(2) syscall to utilize more safely, and is now only available from Python or Lua. There is no libbcc accessor for Ruby. This project first creates the Ruby gem (named RbBCC) which can access all of the basic functions of libbcc. At the same time, the project also develop an internal DSL for basic tracing in order to empower server operators to trace kernel events just using Ruby.

Applicant Name

Kondo, Uchio