This document is a list of user visible feature changes made between
releases except for bug fixes.

Note that each entry is kept so brief that no reason behind or reference
information is supplied with. For a full list of changes with all
sufficient information, see the ChangeLog file or Redmine (e.g.
https://bugs.ruby-lang.org/issues/$FEATURE_OR_BUG_NUMBER)

This method returns the source location of the binding, a 2-element array
of __FILE__ and __LINE__. Traditionally, the same
information could be retrieved by eval("[__FILE__,
__LINE__]", binding), but we are planning to change this
behavior so that Kernel#eval
ignores binding's source location [Bug #4352]. So, users should use
this newly-introduced method instead of Kernel#eval.

This is a new class to represent a generator of an arithmetic sequence,
that is a number sequence defined by a common difference. It can be used
for representing what is similar to Python's slice. You can get an
instance of this class from Numeric#step and Range#step.

Kernel#system and Kernel#exec do not close non-standard
file descriptors (The default of the :close_others option is
changed to false, but we still set the FD_CLOEXEC
flag on descriptors we create). [Misc #14907]

A oneshot_lines mode is added. [Feature #15022] This mode checks “whether
each line was executed at least once or not”, instead of “how many times
each line was executed”. A hook for each line is fired at most once, and
after it is fired the hook flag is removed, i.e., it runs with zero
overhead.

--jit command line option is added to enable JIT.
--jit-verbose=1 is good for inspection. See ruby
--help for others.

To generate machine code, this JIT compiler uses C compiler used for
building the interpreter. Currently GCC, Clang, and Microsoft Visual C++
are supported for it.

--disable-mjit-support option is added to configure. This is
added for JIT debugging, but if you get an error on building a header file
for JIT, you can use this option to skip building it as a workaround.

rb_waitpid reimplemented on Unix-like platforms to maintain compatibility
with processes created for JIT [Bug #14867]

On macOS, shared libraries no longer include a full version number of Ruby
in their names. This eliminates the burden of each teeny upgrade on the
platform that users need to rebuild every extension library.