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