2025 Grant Accomplishment Report

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

Pure Ruby Apache Arrow implementation

Project Summary

Apache Arrow is a standardized data format designed for exchanging large in-memory table data with low cost and processing large in-memory table data efficiently. Many modern data-processing tools adopt Apache Arrow as one of their core components. It increases interoperability among them. In Ruby, there are libraries that support Apache Arrow such as Red Arrow and Ruby Polars. They are implemented as C++/Rust bindings. They are fast and feature-rich but installation is more difficult than pure Ruby libraries.
This project implements a pure Ruby Apache Arrow serializer/deserializer library. It focus on only low cost large in-memory table data exchange. By implementing it in pure Ruby, we aim to make it easier to use Apache Arrow in Ruby and to lay the groundwork for a growing ecosystem of Ruby data processing libraries.

Applicant Name

ClearCode Inc.

Final report

Final report

Mentor’s report

Mentor’s report

UringMachine - bringing low-level I/O with io_uring to Ruby

Project Summary

Io_uring is a relatively new Linux API, permitting the invocation of Linux system calls asynchronously. UringMachine is a gem that brings low-level access to the io_uring interface to Ruby programs, and permits not only asynchronous I/O on files and sockets, but also timeouts, futex wait/wake, statx etc, with support for fiber-based concurrency. This project will work to enhance UringMachine to include a FiberScheduler implementation for usage with the standard Ruby I/O classes, to have builtin support for SSL, to support more io_uring ops such as writev, splice, fsync, mkdir, fadvise, etc.

Applicant Name

Sharon Rosner

Final report

Final report

Mentor’s report

Mentor’s report

Development of Lightweight Type Information LSP

Project Summary

This project is to develop an LSP server that provides useful type information without compromising Ruby’s flexibility. By leveraging heuristic type inference (such as estimating types from called method lists and variable name patterns) instead of precise type inference, and without requiring explicit type declarations, it aims to create a development experience that performs smoothly even in large-scale applications and provides practical type information for everyday development.

Applicant Name

SIM SANGYONG

Final report

Final report

Mentor’s report

Mentor’s report

Optimizing CRuby with Prior Shape Construction and Method Specialization

Project Summary

In the paper Integrating Static Optimization and Dynamic Nature in JavaScript, the applicant and others proposed a technique involving shapes (hidden classes) and optimization. This technique is expected to be applicable not only to JavaScript but also to other dynamic object-oriented languages.
This project will explore its feasibility in CRuby, evaluate its impact while aiming to improve performance. It will also investigate and improve related implementations as necessary.

Applicant Name

Tadashi Saito

Intermediate report

Intermediate report

※This project has been discontinued due to various circumstances, and an interim report is published in place of the final report. Please note that some of the content in the report was later found to be incorrect; however, it is presented as it was at the time the interim report was submitted.

TutorialKit.rb

Project Summary

TutorialKit.rb is a framework for building interactive, browser-based tutorials for the Ruby ecosystem. It lets developers create hands-on environments where users can experiment with Ruby gems and frameworks like Rails directly in the browser - no local setup required. The environment runs via WebAssembly and provides a full Ruby development setup with an editor, terminal, and configurable gem dependencies, making Ruby education, documentation, and onboarding more accessible and reproducible.

Applicant Name

Evil Martians

Final report

Final report

Mentor’s report

Mentor’s report