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
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
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
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
※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