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 ↑