# Ruby Association Grant 2019 Mentor's report

Project: Asynchronous Ruby
Developer: Samuel Williams
Mentor: Koichi Sasada (author of this report), Yukihiro Matsumoto

# Abstract

This project enhances the MRI to support Fiber scheduling API on
blocking I/O operations. In short, we can switch waiting fibers (Async
fibers) on the blocking I/O operations. Compare with the Ruby's threads,
Async fibers are lightweight to create. Also we don't need to care about
thread-safety.

At the end of the project, the design and implementation are proposed as
MRI ticket. We are discussing how to merge it to Ruby's master branch.

# Projec evaluation

This project specified Thread scheduler API described in the final
report and provided reference implementation. They evaluated their
proposal on their Async library and the result is great improvement on
their HTTP client benchmark. The development results are as expected for
the project goal.

# Mentor's position

A developer and mentors discussed about specification on off-line and
on-line several times. By discussion with a developer, a mentor Koichi
Sasada accepted to delay the final report to the beginning of April.

# Future expectation

To introduce the APIs we need to discuss more about corner cases. We
hope the results will be introduced into future Ruby.

# Conclusion

A developer proposed Fiber shceduler API and implementation for the
lightweight concurrency on Ruby language. This feature will help the
high load web applications and so on.
