2026 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 April 2027

General-Purpose Macro-like Code Generation for Ruby

Project Summary

A common Ruby metaprogramming technique consists of evaluating dynamically generated strings that contain Ruby source code. Generating those bits of Ruby source code is often complex, error-prone and vulnerable to code injection. This project aims to provide an alternative to this technique by introducing a flexible quote/unquote macro mechanism to Ruby, inspired by the macro facilities of languages such as Lisp and Elixir, along with additional tools for dynamically creating and manipulating Ruby ASTs using a convenient DSL. Ultimately, this project will explore the possible usage of these new tools in popular gems such as ERB, ActiveRecord, Roda etc, as well as their possible integration into the Ruby runtime.

Applicant Name

Sharon Rosner

cjk_index — pure-Ruby full-text search for Chinese, Japanese and Korean

Project Summary

cjk_index is a Ruby library for full-text search of Chinese, Japanese and Korean (CJK) text, with no native extensions. These languages do not put spaces between words, so tokenizers that split on whitespace cannot find a word inside a sentence. On Jekyll sites that use lunr.js with its English defaults, a query in CJK characters returns no results. cjk_index indexes CJK text by overlapping pairs of characters, and treats common variants, such as katakana and hiragana or old and new kanji forms, as the same. The same index can be searched in Ruby or in the browser. This project will add filters and index updates, expanded variant tables, and sharded indexes for larger collections. Alongside the existing Jekyll plugin, it will add a Bridgetown adapter, a command-line tool and an example for Rails.

Applicant Name

Satoru Nakamura

Expanding GPU computing libraries for mruby

Project Summary

mruby had no array library comparable to NumPy or CuPy. CuPy itself requires CUDA or ROCm, so it cannot run on Raspberry Pi or the integrated GPUs of many mini PCs. I have therefore been developing mruby-gpu-narray, a Numo-like GPU array built on Vulkan Compute, and mruby-gpu-kernel, which compiles Ruby blocks into GPU kernels. For now, however, both handle only one-dimensional float32 data.
This project brings to mruby features that NumPy / CuPy already have. It adds two- and three-dimensional arrays and N-dimensional FFT, integer types, axis reductions, and GPU.fuse (cupy.fuse’s counterpart), plus a runtime layer for gem authors (mruby-gpu-runtime, including a profiler) and gems for image processing and camera input. GPU proofs of concept can then be written in mruby, free of CUDA, on sensor-side devices such as Raspberry Pi, mini PCs, and NVIDIA Jetson, and other developers gain a base for GPU-powered mrbgems.

Applicant Name

Yuji Teshima

Optimizing Coderange Detection for UTF-8 Strings in Ruby

Project Summary

This project will accelerate the internal UTF-8 string validation process (coderange detection) used by String#valid_encoding? and other operations in Ruby. By introducing UTF-8-specific processing and SIMD instructions, it aims to reduce CPU time spent on string validation. The project will address potential performance regressions for short ASCII strings, verify performance and compatibility on ARM64 and x86_64, and evaluate the impact on workloads representative of real-world usage before submitting a patch to Ruby.

Applicant Name

Mari Imaizumi

Developing Developer Tools Well Suited to the rbs-inline Ecosystem (Rigor)

Project Summary

While Ruby’s type ecosystem keeps evolving, it has not yet been widely adopted, largely because of practical barriers such as the burden of maintaining type definitions, poor fit with DSLs and metaprogramming, and the learning cost for team members. This project works on Rigor, a static analysis tool for Ruby that aims to improve soundness with as few type signatures as possible, using type inference based on gradual typing. Rigor infers types in Ruby code that already works without raising excessive warnings, and it is designed to work together with plugins and AI agents. The project also develops Zard, a documentation tool that projects can migrate to from YARD. With both tools kept consistent with RBS and rbs-inline, the goal is to lay a foundation where humans and AI agents can write Ruby together.

Applicant Name

Kenta Usami