Skip to content

Past ideas (~2020) Ideas for MRI (Matz Ruby Interpreter)

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

MRI is the most commonly used Ruby interpreter and is also often referred to as "CRuby". As the de-facto Ruby implementation, MRI sets the standard for what "Ruby" as a language actually is. Changes to MRI effectively represent changes to the Ruby language itself.

Improve RBS toolchain

There are many chances to improve RBS toolchain. The followings are examples of the projects:

  • RBS generation from JSON schema.
  • API document generation from RBS files.

You can propose any idea to improve the RBS toolchain. (You will find a missing piece easily if you try to use the tools. 💨)

  • Recommendation: RBS is included in Ruby 3, which is released last December. These projects will help Ruby developers by making our type checking solution much more practical.
  • Prerequisites: Ruby
  • Programming areas include: Data structure
  • Estimated difficulty level: Easy/Medium
  • Potential mentors: @soutaro

Language Server for RBS

Language Server Protocol is one of the most widely adopted solutions to implement IDE/editor integrations with programming languages. A language server for RBS editing will be really helpful for reading/writing RBS files using IDEs.

The features we want to support are:

  • Completion for type names.
  • Navigations (jump to definition) through RBS files.
  • Find usages of types in RBS files.

Steep provides some of the features above, and you can refer to the implementation to start working on this project.

  • Recommendation: RBS is included in Ruby 3, which is released last December. The IDE integration will help Ruby developers reading/writing RBS files and make a big impact on Ruby programming experience.
  • Prerequisites: Ruby
  • Programming areas include: LSP/Unix
  • Estimated difficulty level: Medium/Hard
  • Potential mentors: @soutaro

XDG compliant for the toolchains

The toolchains of the ruby language like rubygems, rdoc and irb is not compliant with XDG configuration. You code the users can use the XDG for their configurations

You can take over https://github.com/ruby/ruby/pull/2174 or implement the new pull-request.

  • Prerequisites: Understand the linux configuration basics like dotfiles.
  • Programming areas include: Ruby.
  • Estimated difficulty level: easy-medium
  • Potential mentors: @hsbt and @aycabta

Improve TypeProf

TypeProf is a type analyzer which is bundled in Ruby 3.0. It is a kind of type inference tool; it reads a non-type-annotated Ruby program and generates a type signature of the program. See the following materials for TypeProf:

As TypeProf is still preliminary, there is room for improvement. Please try TypeProf first, and propose any idea to enhance it.

  • Prerequisites: Ruby
  • Estimated difficulty level: Medium/Hard
  • Potential mentors: @mame