diff options
Diffstat (limited to 'NEWS')
| -rw-r--r-- | NEWS | 136 |
1 files changed, 0 insertions, 136 deletions
@@ -1,136 +0,0 @@ -# -*- 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. <tt>https://bugs.ruby-lang.org/issues/$FEATURE_OR_BUG_NUMBER</tt>) - -== 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] - - * Fixnum and Bignum are unified into Integer [Feature #12005] - -* String - - * String.new(capacity: size) [Feature #12024] - -* Symbol - - * Symbol#match now returns MatchData. [Bug #11991] - -* MatchData - - * MatchData#named_captures [Feature #11999] - * MatchData#values_at supports named captures[Feature #9179] - -=== 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. [Feature #12217] - 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. - -* Fixnum and Bignum are unified into Integer [Feature #12005] - Fixnum class and Bignum class is removed. - Integer class is changed from abstract class to concrete class. - For example, 0 is an instance of Integer: 0.class returns Integer. - The constants Fixnum and Bignum is bound to Integer. - So obj.kind_of?(Fixnum) works as obj.kind_of?(Integer). - At C-level, rb_cFixnum and rb_cBignum is same as rb_cInteger. - So, class based dispatch, such as klass == rb_cFixnum and - klass == rb_cBignum, should be changed to FIXNUM_P(obj) and - RB_TYPE_P(obj, T_BIGNUM). - -=== 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 - -* FreeBSD < 4 is no longer supported - -=== 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)`. |
