NEWS for Ruby 3.1.0

This document is a list of user-visible feature changes since the 3.0.0 release, except for bug fixes.

Note that each entry is kept to a minimum, see links for details.

Language changes

Command line options

Core classes updates

Note: We’re only listing outstanding class updates.

Stdlib updates

Compatibility issues

Note: Excluding feature bug fixes.

Stdlib compatibility issues

C API updates

Implementation improvements

JIT

MJIT

YJIT: New experimental in-process JIT compiler

New JIT compiler available as an experimental feature. [Feature #18229]

See this blog post introducing the project.

Static analysis

RBS

See the CHANGELOG.md for more information.

TypeProf

Debugger

error_highlight

A built-in gem called error_highlight has been introduced. It shows fine-grained error locations in the backtrace.

Example: title = json[:article][:title]

If json is nil, it shows:

$ ruby test.rb
test.rb:2:in `<main>': undefined method `[]' for nil:NilClass (NoMethodError)

title = json[:article][:title]
            ^^^^^^^^^^

If json[:article] returns nil, it shows:

$ ruby test.rb
test.rb:2:in `<main>': undefined method `[]' for nil:NilClass (NoMethodError)

title = json[:article][:title]
                      ^^^^^^^^

This feature is enabled by default. You can disable it by using a command-line option --disable-error_highlight. See the repository in detail.

IRB Autocomplete and Document Display

The IRB now has an autocomplete feature, where you can just type in the code, and the completion candidates dialog will appear. You can use Tab and Shift+Tab to move up and down.

If documents are installed when you select a completion candidate, the documentation dialog will appear next to the completion candidates dialog, showing part of the content. You can read the full document by pressing Alt+d.

Miscellaneous changes