Skip to content

Past ideas (~2020) Ideas for Async

Koichi Sasada edited this page Feb 19, 2021 · 1 revision

Async is a new framework for Ruby which uses Fibers to improve concurrency.

Implement support for trailers in Async::HTTP.

We would like to add support for the server-timing trailer.

  • Prerequisites: Understand HTTP/1 and HTTP/2 protocol.
  • Programming areas include: Ruby.
  • Estimated difficulty level: medium-high
  • Potential mentors: @ioquatix

Implement (experimental) support for RESP3 in Async::Redis.

Investigate and implement the RESP3 protocol and expand the interface where required.

  • Prerequisites: Understand Redis protocol.
  • Programming areas include: Ruby.
  • Estimated difficulty level: medium-high
  • Potential mentors: @ioquatix

Refactor file notification libraries (rb-inotify, rb-kqueue).

It would be great to take the existing work done in these gems and rework them into async.

  • Prerequisites: Understand file notification systems and system event mechanisms.
  • Programming areas include: Ruby, C.
  • Estimated difficulty level: medium
  • Potential mentors: @ioquatix

Improved documentation and examples.

Async and related projects are getting more popular. However, documentation is something that is suffering as the code grows. We need improved documentation, including translations to other languages.

In addition, translating blog posts and examples into different languages enables a diverse set of users to understand and use the tools.

  • Prerequisites: Good communication skills, the ability to speak more than one language.
  • Programming areas include: Ruby, C.
  • Estimated difficulty level: medium
  • Potential mentors: @ioquatix

RuboCop extensions for thread safety analysis.

Ruby has existing tooling for code analysis and bug detection. We would like to extend RuboCop with the ability to detect incorrect usage of Mutex and other threading constructs.

  • Prerequisites: Basic understanding of mutex and related data structures. Experience with RuboCop a plus.
  • Programming areas include: Ruby, Parallelism.
  • Estimated difficulty level: medium
  • Potential mentors: @ioquatix

RSpec extensions for concurrency safety analysis.

Ruby has existing tooling for testing code (e.g. RSpec). We would like to extend RSpec with the ability to detect potential concurrency issues including potentially:

expect do
  # ... user code ...
end.to_not be_blocking
expect do
  # ... user code ...
end.to_not modify_global_state
  • Prerequisites: Basic understanding of mutability and concurrency. Experience extending CRuby a plus.
  • Programming areas include: Ruby, C.
  • Estimated difficulty level: medium-high
  • Potential mentors: @ioquatix