2019年度Rubyアソシエーション開発助成金成果報告

2019年度に採択されたプロジェクトの応募者による最終報告書及びメンターによる報告書を掲載致します。

複数ファイルに対応したプリコンパイル機構の作成

プロジェクト概要

RubyVMの中間表現であるISeqはバイナリ表現と相互に変換することができ、Rails 5.2以降でプロジェクトにデフォルトインストールされるBootsnapはそのバイナリ表現をキャッシュしておくことでアプリケーションの起動速度を改善している。 しかし、Bootsnapが行っているのは.rbファイルごとのキャッシュであり、gemやプロジェクトといった複数ファイルからなる単位でキャッシュを行うことはできない。 また、Rubyインタプリタが起動時にロードする一部のgemはBootsnapの初期化前に読み込まれるため仕組み上キャッシュされない。

本プロジェクトでは、MRIの機能を拡張することで複数のスクリプトファイルからなるgemやプロジェクトを単一のバイナリファイルにプリコンパイルするための機構を提供し、Rubyアプリケーションの起動の高速化とキャッシュサイズの削減を目指す。 また、インタプリタ起動時に読み込まれるgemをプリコンパイルすることでRubyインタプリタ自体の起動を高速化する。

採択者

永山 涼雅

中間報告書

本プロジェクトは開発途中で中止されたため、中間報告書を公開します。

中間報告書

メンター報告書

メンター報告書

Asynchronous Ruby

プロジェクト概要

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.

採択者

Samuel Williams

最終報告書

最終報告書

メンター報告書

メンター報告書

The Tests of Reline In Real Terminals

プロジェクト概要

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.

採択者

ITOYANAGI Sakura

最終報告書

最終報告書

メンター報告書

メンター報告書

Rubyplot: An advanced plotting library for Ruby

プロジェクト概要

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.

採択者

Alish Dipani

最終報告書

最終報告書

メンター報告書

メンター報告書

RbBCC - Linuxのトレーシング技術をCRubyから利用する環境の整備

プロジェクト概要

本プロジェクトの目的は、Rubyを用いたLinux上のアプリケーションの詳細な追跡を可能にすることである。 Linux上のアプリケーションにはカーネル本体を含み、また、追跡と同時にデバッグや、発生したイベントの集計なども実現可能にする。 近年のLinuxにはeBPF(extended Berkley Packet Filter)と呼ばれる機能があり、カーネル内のイベントを追跡・集計できる。 現在eBPF機能を安全に使うためのライブラリlibbccが公開されており、PythonやLuaから利用できる。一方Rubyのための実装はない。 本プロジェクトではlibbccの基本機能をすべてRuby gem(RbBCC)から利用可能にする。 同時に、Rubyの生産性を最大に生かすべく、基本的なトレースをRubyのみで行うための内部DSLも開発する。

採択者

近藤宇智朗

最終報告書

最終報告書

メンター報告書

メンター報告書