Skip to content

Latest commit

 

History

History
119 lines (74 loc) · 3.25 KB

NEWS

File metadata and controls

119 lines (74 loc) · 3.25 KB

# -*- rdoc -*-

NEWS for Ruby 2.4.0

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)

Changes since the 2.3.0 release

Language changes

  • Multiple assignment in conditional expression is now allowed.

    Feature #10617

Core classes updates (outstanding ones only)

  • Array

    • Array#max and Array#min. [Feature #12172] This may cause a tiny incompatibility: if you redefine Enumerable#max and call max to an Array, your redefinition will be now ignored. You should also redefine Array#max.

    • Array#sum [Feature #12217]

  • Dir

    • Dir.empty?. [Feature #10121]

  • File

    • File.empty?. [Feature #9969]

  • Float

    • Float#ceil, Float#floor, and Float#truncate now take an optional digits, as well as Float#round. [Feature #12245]

  • Integer

    • Integer#ceil, Integer#floor, and Integer#truncate now take an optional digits, as well as Integer#round. [Feature #12245]

  • String

    • String.new(capacity: size) [Feature #12024]

  • Symbol

    • Symbol#match now returns MatchData. [Bug #11991]

  • MatchData

    • MatchData#named_captures [Feature #11999]

Stdlib updates (outstanding ones only)

  • CSV

    • Add a liberal_parsing option. [Feature #11839]

  • Logger

* Allow specifying logger parameters in constructor such as level, progname, datetime_format, formatter. [Feature #12224] * Add shift_period_suffix option. [Feature #10772]

  • optparse

    • Add an into option. [Feature #11191]

Compatibility issues (excluding feature bug fixes)

  • Array#sum is implemented. Ruby itself has no compatibility problem because Ruby didn’t have sum method for arrays before Ruby 2.4. However many third party gems, activesupport, facets, simple_stats, etc, defines sum method. These implementations are mostly compatible but there are subtle differences. Ruby’s sum method should be mostly compatible but it is impossible to be perfectly compatible with all of them.

Stdlib compatibility issues (excluding feature bug fixes)

  • Time

    • Time#to_time now preserves timezone. [Bug #12271]

  • DateTime

    • DateTime#to_time now preserves timezone. [Bug #12189]

  • thread

    • the extension library is removed. Till 2.0 it was a pure ruby script “thread.rb”, which has precedence over “thread.so”, and has been provided in $LOADED_FEATURES since 2.1.

C API updates

  • ruby_show_version() will no longer exits the process, if RUBY_SHOW_COPYRIGHT_TO_DIE is set to 0. This will be the default in the future.

Supported platform changes

Implementation improvements

  • In some condition, ‘[x, y].max` and `[x, y].min` are optimized so that a temporal array is not created. The concrete condition is an implementation detail: currently, the array literal must have no splat, must have at least one expression but literal, the length must be <= 0x100, and Array#max and min must not be redefined. It will work in most casual and real-life use case where it is written with intent to `Math.max(x, y)`.