2023 Grant Accomplishment Report

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

Namespace on read

Project Summary

This project is to develop a patch of Ruby language to introduce virtual top-level namespaces, which provide a feature to require/load libraries into a separate namespace.
Libraries in the namespace will be separated/isolated from the global namespace so that namespaces can solve problems about name conflicts between libraries, unexpected modification of globally shared module/class instances, and in the future, library version conflicts between application’s dependencies.

Applicant Name

Satoshi Tagomori (tagomoris)

Final report

Final report

Mentor’s report

Mentor’s report

Introduction of Happy Eyeballs Version 2 (RFC8305) to the Socket library

Project Summary

Ruby’s socket library has methods that return a client socket connected to a remote server.
Currently, these have the following two issues:
(1) For address resolution, they query DNS servers synchronously for each address family. It causes the program to stop until all addresses have been resolved.
(2) While the IP address is trying to connect to the destination host and is taking time, the program stops, and other resolved IP addresses cannot try to connect.
RFC8305 specifies Happy Eyeballs Version 2 algorithm to solve them and ensure better connectivity. For solving (1), the client sends DNS queries asynchronously for each address family. And for (2), connections will attempt sequentially using resolved IP addresses.
This project aims to solve the above issues by introducing Happy Eyeballs Version 2 to Ruby’s socket library.

Applicant Name

Misaki Shioi

Final report

Final report

Mentor’s report

Mentor’s report

Enhancing performance profiling for Ruby

Project Summary

This project aims to develop a new performance profiler for Ruby.
Profiling is crucial for writing efficient programs, and the profiler plays a significant role in achieving this.
To support practical analysis, our profiler will have improved visualization and will aim to provide more detailed information through integration with the target program and the Ruby interpreter itself.
Additionally, we will also share insights about the implementation of profilers and work on enhancing existing profilers.

Applicant Name

Daisuke Aritomo (osyoyu)

Final report

Final report

Mentor’s report

Mentor’s report

Ruby Playground for CRuby Developer

Project Summary

In programming language development, running an experimental language implementation is a common way to discuss language features. Especially for new syntax or method proposals, it would give some insights like edge cases. On the other hand, to run an experimental implementation, we need to make a build with the proposed changes applied and it’s not easy. This project aims to encourage discussion in Ruby development by providing a handy playground for Ruby developers.

Applicant Name

Yuta Saito

Final report

Final report

Mentor’s report

Mentor’s report

Processing Gem for CRuby, working towards better compatibility with the original Processing

Project Summary

Frameworks such as Processing and p5.js are widely used in the creative coding world.
By using them, you can easily create art and interactive applications that make full use of graphics and visual expression.

This project is developing a Processing Gem for CRuby compatible with the Processing/p5.js API from scratch, and currently has about 70-80% of the main Processing features implemented.
This effort will develop the remaining unimplemented features and help Ruby programmers to use the widely known Processing API for graphics programming.

Applicant Name

tokujiros

Final report

Final report

Mentor’s report

Mentor’s report