U:RDoc::TopLevel[ i I" NEWS:ETcRDoc::Parser::Simpleo:RDoc::Markup::Document:@parts[(S:RDoc::Markup::Heading:
leveli: textI"NEWS for Ruby 2.4.0;To:RDoc::Markup::BlankLine o:RDoc::Markup::Paragraph;[I"JThis document is a list of user visible feature changes made between ;TI"#releases except for bug fixes.;T@
o;
;[ I"DNote that each entry is kept so brief that no reason behind or ;TI"Ireference information is supplied with. For a full list of changes ;TI"Hwith all sufficient information, see the ChangeLog file or Redmine ;TI"M(e.g. https://bugs.ruby-lang.org/issues/$FEATURE_OR_BUG_NUMBER);T@
S; ;
i;I"$Changes since the 2.3.0 release;T@
S; ;
i;I"Language changes;T@
o:RDoc::Markup::List:
@type:BULLET:@items[
o:RDoc::Markup::ListItem:@label0;[o;
;[I"BMultiple assignment in conditional expression is now allowed.;To;;:
LABEL;[o;;[I"Feature #10617;T;[@
o;;0;[o;
;[I"IRefinements is enabled at method by Symbol#to_proc. [Feature #9451];T@
o;;0;[o;
;[I"FRefinements is enabled with Kernel#send and BasicObject#__send__.;To;;;;[o;;[I"Feature #11476;T;[@
o;;0;[o;
;[I"8Rescue modifier now applicable to method arguments.;To;;;;[o;;[I"Feature #12686;T;[@
o;;0;[o;
;[I"5Toplevel return is now allowed. [Feature #4840];T@
S; ;
i;I"1Core classes updates (outstanding ones only);T@
o;;;;[o;;0;[o;
;[I"
Array;T@
o;;;;[ o;;0;[o;
;[I"#Array#concat [Feature #12333] ;TI""Now takes multiple arguments.;T@
o;;0;[o;
;[ I"0Array#max and Array#min. [Feature #12172] ;TI"Thread#report_on_exception and Thread.report_on_exception;To;;;;[o;;[I"Feature #6647;T;[@
o;;0;[o;
;[I"TracePoint;T@
o;;;;[o;;0;[o;
;[I"*TracePoint#callee_id [Feature #12747];T@
o;;0;[o;
;[I"Warning;T@
o;;;;[o;;0;[o;
;[I"ENew module named Warning is introduced. By default it has only ;TI"Cone singleton method, named warn. This makes it possible for ;TI"A3rd-party libraries to control the way warnings are handled.;To;;;;[o;;[I"Feature #12299;T;[@
S; ;
i;I"+Stdlib updates (outstanding ones only);T@
o;;;;[o;;0;[o;
;[I"CGI;T@
o;;;;[o;;0;[o;
;[I".Don't allow , as a separator [Bug #12791];T@
o;;0;[o;
;[I"CSV;T@
o;;;;[o;;0;[o;
;[I"3Add a liberal_parsing option. [Feature #11839];T@
o;;0;[o;
;[I"IPAddr;T@
o;;;;[o;;0;[o;
;[I"MIPAddr#== and IPAddr#<=> no longer raise an exception if coercion fails.;To;;;;[o;;[I"Bug #12799;T;[@
o;;0;[o;
;[I"IRB;T@
o;;;;[o;;0;[o;
;[I"DBinding#irb: Start a REPL session like `binding.pry` at r56624.;T@
o;;0;[o;
;[I"Logger;T@
o;;;;[o;;0;[o;
;[I"Add a new optional argument pathname to Net::FTP#status. ;TI"8Contributed by soleboxy. [GH-1478] [Feature #12965];T@
o;;0;[o;
;[I"OpenSSL;T@
o;;;;[o;;0;[o;
;[ I"KIncludes Ruby/OpenSSL 2.0. OpenSSL has been extracted as a Gem and is ;TI"Omaintained at a separate repository now: https://github.com/ruby/openssl. ;TI";It still remains as a 'default gem'. [Feature #9612] ;TI"?Refer to ext/openssl/History.md for the full release note.;T@
o;;0;[o;
;[I"
optparse;T@
o;;;;[o;;0;[o;
;[I")Add an into option. [Feature #11191];T@
o;;0;[o;
;[I"
pathname;T@
o;;;;[o;;0;[o;
;[I"1New method: Pathname#empty? [Feature #12596];T@
o;;0;[o;
;[I"
Readline;T@
o;;;;[o;;0;[o;
;[I"IReadline.quoting_detection_proc and Readline.quoting_detection_proc=;To;;;;[o;;[I"Feature #12659;T;[@
o;;0;[o;
;[I"
REXML;T@
o;;;;[o;;0;[o;
;[I"DREXML::Element#[]: If String or Symbol is specified, attribute ;TI"Bvalue is returned. Otherwise, Nth child is returned. This is ;TI" backward compatible change.;T@
o;;0;[o;
;[I"set;T@
o;;;;[o;;0;[o;
;[I"GNew methods: Set#compare_by_identity and Set#compare_by_identity?.;To;;;;[o;;[I"Feature #12210;T;[@
o;;0;[o;
;[I"WEBrick;T@
o;;;;[o;;0;[o;
;[I".Don't allow , as a separator [Bug #12791];T@
S; ;
i;I"7Compatibility issues (excluding feature bug fixes);T@
o;;;;[ o;;0;[o;
;[
I"EArray#sum and Enumerable#sum are implemented. [Feature #12217] ;TI"RRuby itself has no compatibility problem because Ruby didn't have sum method ;TI"!for arrays before Ruby 2.4. ;TI"NHowever many third party gems, activesupport, facets, simple_stats, etc, ;TI"Jdefines sum method. These implementations are mostly compatible but ;TI"#there are subtle differences. ;TI"KRuby's sum method should be mostly compatible but it is impossible to ;TI".be perfectly compatible with all of them.;T@
o;;0;[o;
;[I"BFixnum and Bignum are unified into Integer [Feature #12005] ;TI"/Fixnum class and Bignum class is removed. ;TI"EInteger class is changed from abstract class to concrete class. ;TI"HFor example, 0 is an instance of Integer: 0.class returns Integer. ;TI":The constants Fixnum and Bignum is bound to Integer. ;TI"=So obj.kind_of?(Fixnum) works as obj.kind_of?(Integer). ;TI"LAt C-level, Fixnum object and Bignum object should be distinguished by ;TI"1FIXNUM_P(obj) and RB_TYPE_P(obj, T_BIGNUM). ;TI"MRUBY_INTEGER_UNIFICATION can be used to detect this feature at C-level. ;TI"J0.class == Integer can be used to detect this feature at Ruby-level. ;TI"DThe C-level constants, rb_cFixnum and rb_cBignum, are removed. ;TI"(They can cause compilation failure.;T@
o;;0;[o;
;[I"NString/Symbol#upcase/downcase/swapcase/capitalize(!) now work for all of ;TI"3Unicode, not only for ASCII. [Feature #10085] ;TI"MNo change is needed if the data is in ASCII anyway or if the limitation ;TI"Tto ASCII was only tolerated while waiting for a more extensive implementation. ;TI"NA change (using the :ascii option) is needed in cases where Unicode data ;TI"Fis processed, but the operation has to be limited to ASCII only. ;TI"?A good example of this are internationalized domain names.;T@
o;;0;[o;
;[I"TRUE / FALSE / NIL ;TI"9These constants are now obsoleted. [Feature #12574] ;TI"*Use true / false / nil resp. instead.;T@
S; ;
i;I">Stdlib compatibility issues (excluding feature bug fixes);T@
o;;;;[o;;0;[o;
;[I"
DateTime;T@
o;;;;[o;;0;[o;
;[I";DateTime#to_time now preserves timezone. [Bug #12189];T@
o;;0;[o;
;[I"
PSych;T@
o;;;;[o;;0;[o;
;[I"Update Psych 2.2.2;T@
o;;0;[o;
;[I" RDoc;T@
o;;;;[o;;0;[o;
;[I"Update RDoc 5.0.0;T@
o;;0;[o;
;[I"
RubyGems;T@
o;;;;[o;;0;[o;
;[I"Update RubyGems 2.6.8;T@
o;;0;[o;
;[I"shellwords;T@
o;;;;[o;;0;[o;
;[I"GShellwords.shellwords (shellsplit) treats the backslash as escape ;TI"Fcharacter only when followed by one of the following characters: ;TI"$ ` " \ ;To;;;;[o;;[I"Bug #10055;T;[@
o;;0;[o;
;[I" Time;T@
o;;;;[o;;0;[o;
;[I"7Time#to_time now preserves timezone. [Bug #12271];T@
o;;0;[o;
;[I"thread;T@
o;;;;[o;;0;[o;
;[I"Kthe extension library is removed. Till 2.0 it was a pure ruby script ;TI"O"thread.rb", which has precedence over "thread.so", and has been provided ;TI"#in $LOADED_FEATURES since 2.1.;T@
o;;0;[o;
;[I"Tk;T@
o;;;;[o;;0;[o;
;[I"1Tk is removed from stdlib. [Feature #8539] ;TI"4https://github.com/ruby/tk is the new upstream.;T@
o;;0;[o;
;[I"XMLRPC;T@
o;;;;[o;;0;[o;
;[I"ZXMLRPC is removed from stdlib, and bundled as gem. [Feature #12160][ruby-core:74239] ;TI"8https://github.com/ruby/xmlrpc is the new upstream.;T@
o;;0;[o;
;[I" Zlib;T@
o;;;;[o;;0;[o;
;[I"/Zlib.gzip and Zlib.gunzip [Feature #13020];T@
S; ;
i;I"C API updates;T@
o;;;;[o;;0;[o;
;[I">ruby_show_version() will no longer exits the process, if ;TI"JRUBY_SHOW_COPYRIGHT_TO_DIE is set to 0. This will be the default in ;TI"the future.;T@
o;;0;[o;
;[I"1rb_gc_adjust_memory_usage() [Feature #12690];T@
S; ;
i;I"Supported platform changes;T@
o;;;;[o;;0;[o;
;[I"'FreeBSD < 4 is no longer supported;T@
S; ;
i;I" Implementation improvements;T@
o;;;;[ o;;0;[o;
;[I"DIn some condition, `[x, y].max` and `[x, y].min` are optimized ;TI"Iso that a temporal array is not created. The concrete condition is ;TI"Ian implementation detail: currently, the array literal must have no ;TI"Ksplat, must have at least one expression but literal, the length must ;TI"Mbe <= 0x100, and Array#max and min must not be redefined. It will work ;TI"Kin most casual and real-life use case where it is written with intent ;TI"to `Math.max(x, y)`.;T@
o;;0;[o;
;[I"XThread deadlock detection now shows their backtrace and dependency. [Feature #8214];T@
o;;0;[o;
;[I"Jst_table (st.c) internal data structure is improved. [Feature #12142];T@
o;;0;[o;
;[I"8Rational is extensively optimized. [Feature #12484];T@
S; ;
i;I"Miscellaneous changes;T@
o;;;;[o;;0;[o;
;[
I"/ChangeLog is removed from the repository. ;TI"HIt is generated from commit messages in Subversion by `make dist`. ;TI"GAlso note that now people should follow Git style commit message. ;TI" The template is written at ;TI"X[Short (50 chars or less) summary of changes](https://git-scm.com/book/ch5-2.html).;To;;;;[o;;[I"Feature #12283;T;[ :
@file@:0@omit_headings_from_table_of_contents_below0