diff options
Diffstat (limited to 'NEWS')
| -rw-r--r-- | NEWS | 205 |
1 files changed, 0 insertions, 205 deletions
@@ -1,205 +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] - This is different from Enumerable#sum in that Array#sum doesn't depend on - the definition of each method. - -* Comparable - - * Comparable#clamp. [Feature #10594] - -* Dir - - * Dir.empty?. [Feature #10121] - -* Enumerable - - * Enumerable#sum [Feature #12217] - * Enumerable#uniq [Feature #11090] - -* Enumerator::Lazy - - * Enumerator::Lazy#uniq [Feature #11090] - -* 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] - - * Integer#digits for extracting columns of place-value notation [Feature #12447] - -* Kernel - - * Kernel#clone now takes an optional keyword argument, freeze flag. - [Feature #12300] - -* MatchData - - * MatchData#named_captures [Feature #11999] - * MatchData#values_at supports named captures [Feature #9179] - -* Regexp - - * Regexp#match? [Feature #8110] - This returns bool and doesn't save backref. - -* RubyVM::Env - - * RubyVM::Env was removed. - -* String - - * String#upcase, String#downcase, String#capitalize, String#swapcase and - their bang variants work for all of Unicode, and are no longer limited - to ASCII. Supported encodings are UTF-8, UTF-16BE/LE, UTF-32BE/LE, and - ISO-8859-1~16. Variations are available with options. See the documentation - of String#downcase for details. [Feature #10085] - - * String.new(capacity: size) [Feature #12024] - -* Symbol - - * Symbol#match now returns MatchData. [Bug #11991] - - * Symbol#upcase, Symbol#downcase, Symbol#capitalize, and Symbol#swapcase now - work for all of Unicode. See the documentation of String#downcase - for details. [Feature #10085] - -* Thread - - * Thread#report_on_exception and Thread.report_on_exception - [Feature #6647] - -=== 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] - -* OpenSSL - - * OpenSSL is extracted as a gem and the upstream has been migrated to - https://github.com/ruby/openssl. OpenSSL still remains as a default gem. - Refer to its History.md for the full release note. [Feature #9612] - -* optparse - - * Add an into option. [Feature #11191] - -=== Compatibility issues (excluding feature bug fixes) - -* Array#sum and Enumerable#sum are 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, Fixnum object and Bignum object should be distinguished by - FIXNUM_P(obj) and RB_TYPE_P(obj, T_BIGNUM). - RUBY_INTEGER_UNIFICATION can be used to detect this feature. - ruby-2.4.0-preview1 (temporally) removes rb_cFixnum and rb_cBignum - to check the effect of incompatibility. - (rb_cFixnum and rb_cBignum may be defined as rb_cInteger later if - compilation failure of extension library is too big problem.) - -* String/Symbol#upcase/downcase/swapcase/capitalize(!) now work for all of - Unicode, not only for ASCII. [Feature #10085] - No change is needed if the data is in ASCII anyway or if the limitation - to ASCII was only tolerated while waiting for a more extensive implementation. - A change (using the :ascii option) is needed in cases where Unicode data - is processed, but the operation has to be limited to ASCII only. - A good example of this are internationalized domain names. - -=== Stdlib compatibility issues (excluding feature bug fixes) - -* DateTime - - * DateTime#to_time now preserves timezone. [Bug #12189] - -* Time - - * Time#to_time now preserves timezone. [Bug #12271] - -* 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. - -* Tk - * Tk is removed from stdlib. [Feature #8539] - https://github.com/ruby/tk is the new upstream. - -=== 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)`. - -* Thread deadlock detection now shows their backtrace and dependency. [Feature #8214] |
