123456789_123456789_123456789_123456789_123456789_

NEWS for Ruby 3.4.0

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

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

Language changes

Core classes updates

Note: We're only listing outstanding class updates.

Stdlib updates

The following default gems are updated.

The following bundled gems are updated.

The following bundled gems are promoted from default gems.

See GitHub releases like GitHub Releases of Logger or changelog for details of the default gems or bundled gems.

Supported platforms

Compatibility issues

New: test.rb:1:in 'Object#foo': undefined method 'time' for an instance of Integer from test.rb:2:in `

'

## Stdlib compatibility issues

## C API updates

* `rb_newobj` and `rb_newobj_of` (and corresponding macros {RB_NEWOBJ}, {RB_NEWOBJ_OF}, {NEWOBJ}, {NEWOBJ_OF}) have been removed. [[Feature #20265]]
* Removed deprecated function `rb_gc_force_recycle`. [[Feature #18290]]

## Implementation improvements

* {Array#each} is rewritten in Ruby for better performance [[Feature #20182]].

## JIT

## Miscellaneous changes

* Passing a block to a method which doesn't use the passed block will show
  a warning on verbose mode (`-w`).
  [[Feature #15554]]

* Redefining some core methods that are specially optimized by the interpeter
  and JIT like {String.freeze} or {Integer#+} now emits a performance class
  warning (`-W:performance` or `Warning[:performance] = true`).
  [[Feature #20429]]