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¶ ↑
-
Pin operator now takes an expression. [Feature #17411]
Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #=> [[3, 5], [5, 7], [11, 13]]
Command line options¶ ↑
Core classes updates¶ ↑
Outstanding ones only.
-
-
Array#intersect?
is added. [Feature #15198]
-
-
-
Enumerable#compact
is added. [Feature #17312] -
Enumerable#tally
now accepts an optional hash to count. [Feature #17744]
-
-
-
Enumerator::Lazy#compact
is added. [Feature #17312]
-
-
-
File.dirname
now accepts an optional argument for the level to strip path components. [Feature #12194]
-
-
-
Module#prepend
now modifies the ancestor chain if the receiver already includes the argument.Module#prepend
still does not modify the ancestor chain if the receiver has already prepended the argument. [Bug #17423]
-
-
-
Passing only keyword arguments to Struct#initialize is warned. You need to use a
Hash
literal to set aHash
to a first member. [Feature #16806]
-
-
-
Queue#initialize now accepts an
Enumerable
of initial values. [Feature #17327]
-
-
Thread::Backtrace
-
Thread::Backtrace.limit, which returns the value to limit backtrace length set by
--backtracse-limit
command line option, is added. [Feature #17479]
-
-
$LOAD_PATH
-
$LOAD_PATH.resolve_feature_path does not raise. [Feature #16043]
-
Stdlib updates¶ ↑
Outstanding ones only.
Compatibility issues¶ ↑
Excluding feature bug fixes.
Stdlib compatibility issues¶ ↑
-
ERB#initialize
warnssafe_level
and later arguments even without -w. [Feature #14256]
C API updates¶ ↑
Implementation improvements¶ ↑
JIT¶ ↑
-
RubyVM::MJIT
is renamed toRubyVM::JIT
.