2020 Grant Accomplishment Report

The following projects have been completed, and their deliverables have been accepted by the grant committee.

mini mruby compiler (mmrbc)

Project summary

mmrbc (mini mruby compiler) compiles Ruby scripts into VM code of mruby. Typical operating environment is a one-chip microcontroller with 256 KiB ROM and 128 KiB RAM. It’s too small to run mruby-compiler that comes as a standard library with mruby. By combining mmrbc and mruby/c which is another mruby VM implementation for small resource environments, Ruby can run as an interpreter on a one-chip microcontroller.

Possible uses for this system include an IoT device introductory kit that can be developed without a compilation tool chain, facilitating debugging of the actual device when developing a full-scale embedded application, and a setup for school education integrated with Smalruby.

Applicant

Monstar Lab, inc.

Final report

Final report

Mentor’s report

Mentor’s report

Views support for NumRuby and Ruby-Sparse improvements.

Project summary

NumRuby is the re-implementation of popular dense matrix library NMatrix. It is re-implemented with the primary focus being performance and scalability. It has shown upto 100x speedup for the fundamental functionalities such as elementwise operations. This project aims at adding Views support to the NumRuby library. Views are used to have multi-dimensional data structures that exchange data without creating copies which saves a lot of memory and execution time.

Sparse matrices are an important part of scientific computing. Ruby-Sparse library is aimed to build an efficient and feature-rich end-user intended Sparse matrix library in Ruby with interfaces to popular dense matrix libraries (like Numo-Narray, NumRuby[NMatrix]) with linear algebra support.

Applicant

Udit Gulati

Final report

Final report

Mentor’s report

Mentor’s report

ruby-htslib - High-throughput sequencing data manipulation for Ruby

Project summary

Ruby-htslib is the Ruby bindings to HTSlib, a C library for processing high throughput sequencing (HTS) data. It will provide APIs to read and write file formats such as SAM/BAM and VCF/BCF.

In recent years, next-generation sequencing (NGS) technologies for reading DNA and RNA sequences have become popular in the life science field. We will provide a way to manipulate the HTS file formats from Ruby. We aim to improve the Ruby ecosystem in genomics.

Applicant

kojix2

Final report

Final report

Mentor’s report

Mentor’s report

Happy Eyeballs Version 2 (RFC8305) support for Ruby’s socket library

Project summary

Ruby’s socket library has an issue with connecting to servers that are not reachable via IPv6. It affects RubyGems and other software written in Ruby. To solve this issue, the socket implementation should fallback from unsuccessful connection attempts. In this project, we implement “Happy Eyeballs Version 2” defined as RFC 8305 that enables fallback IPv6 to IPv4.

Applicant

Masaki Matsushita

Final report

Final report

Mentor’s report

Mentor’s report