U:RDoc::TopLevel[ iI"NEWS-1.8.7:EFcRDoc::Parser::Simpleo:RDoc::Markup::Document: @parts[*S:RDoc::Markup::Heading: leveli: textI"NEWS for Ruby 1.8.7;To:RDoc::Markup::BlankLineo: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"=with all sufficient information, see the ChangeLog file.;T@ S; ; i; I"$Changes since the 1.8.6 release;T@ S; ; i; I"Configuration changes;T@ o:RDoc::Markup::List: @type: BULLET: @items[o:RDoc::Markup::ListItem: @label0;[ o; ;[I"default C flags;T@ o; ;[I"ESome C compiler flags may be added by default depending on your ;TI"Henvironment. Specify optflags=.. and warnflags=.. as necessary to ;TI"override them.;T@ o;;0;[ o; ;[I"vendor_ruby directory;T@ o; ;[ I"BA new library directory named `vendor_ruby' is introduced in ;TI"Aaddition to `site_ruby'. The idea is to separate libraries ;TI"Ginstalled by the package system (`vendor') from manually (`site') ;TI"Hinstalled libraries preventing the former from getting overwritten ;TI"Hby the latter, while preserving the user option to override vendor ;TI"Glibraries with site libraries. (`site_ruby' takes precedence over ;TI"`vendor_ruby');T@ o; ;[I"JIf you are a package maintainer, make each library package configure ;TI"Gthe library passing the `--vendor' option to `extconf.rb' so that ;TI">the library files will get installed under `vendor_ruby'.;T@ o; ;[I"IYou can change the directory locations using configure options such ;TI"8as `--with-sitedir=DIR' and `--with-vendordir=DIR'.;T@ S; ; i; I"Global constants;T@ o;;;;[o;;0;[o; ;[I"new constants;T@ o;;;;[o;;0;[o; ;[I"RUBY_COPYRIGHT;To;;0;[o; ;[I"RUBY_DESCRIPTION;T@ S; ; i; I",Library updates (outstanding ones only);T@ o;;;;[o;;0;[o; ;[I"new library;T@ o;;;;[o;;0;[o; ;[I"securerandom;T@ o;;0;[o; ;[I"builtin classes;T@ o;;;;[o;;0;[o; ;[I"Array#flatten;To;;0;[ o; ;[I"Array#flatten!;T@ o; ;[I"GTakes an optional argument that determines the level of recursion ;TI"to flatten.;T@ o;;0;[o; ;[I"Array#eql?;To;;0;[o; ;[I"Array#hash;To;;0;[o; ;[I" Array#==;To;;0;[ o; ;[I"Array#<=>;T@ o; ;[I"$Handle recursive data properly.;T@ o;;0;[o; ;[I"Array#index;To;;0;[ o; ;[I"Array#rindex;T@ o; ;[I"/Use a given block if no argument is given.;T@ o;;0;[o; ;[I"Array#collect!;To;;0;[o; ;[I"Array#map!;To;;0;[o; ;[I"Array#each;To;;0;[o; ;[I"Array#each_index;To;;0;[o; ;[I"Array#reverse_each;To;;0;[o; ;[I"Array#reject;To;;0;[o; ;[I"Array#reject!;To;;0;[o; ;[I"Array#delete_if;To;;0;[ o; ;[I"Array#select;T@ o; ;[I"/Return an enumerator if no block is given.;T@ o; ;[I"GNote that #map and #collect still return an array unlike Ruby 1.9 ;TI"to keep compatibility.;T@ o;;0;[o; ;[I"Array#pop;To;;0;[ o; ;[I"Array#shift;T@ o; ;[I"DTake an optional argument specifying the number of elements to ;TI" remove.;T@ o;;0;[o; ;[I"Array#choice;To;;0;[o; ;[I"Array#combination;To;;0;[o; ;[I"Array#cycle;To;;0;[o; ;[I"Array#drop;To;;0;[o; ;[I"Array#drop_while;To;;0;[o; ;[I"Array#permutation;To;;0;[o; ;[I"Array#product;To;;0;[o; ;[I"Array#shuffle;To;;0;[o; ;[I"Array#shuffle!;To;;0;[o; ;[I"Array#take,;To;;0;[ o; ;[I"Array#take_while;T@ o; ;[I"New methods.;T@ o;;0;[ o; ;[I"Binding#eval;T@ o; ;[I"New method.;T@ o;;0;[o; ;[I" Dir#each;To;;0;[ o; ;[I"Dir#foreach;T@ o; ;[I"/Return an enumerator if no block is given.;T@ o;;0;[ o; ;[I"Enumerable::Enumerator;T@ o; ;[I"INew class for various enumeration defined by the enumerator library.;T@ o;;0;[o; ;[I"Enumerable#each_slice;To;;0;[o; ;[I"Enumerable#each_cons;To;;0;[o; ;[I"Object#to_enum;To;;0;[ o; ;[I"Object#enum_for;T@ o; ;[I"KNew methods for various enumeration defined by the enumerator library.;T@ o;;0;[o; ;[I"Enumerable#count;To;;0;[o; ;[I"Enumerable#cycle;To;;0;[o; ;[I"Enumerable#drop;To;;0;[o; ;[I"Enumerable#drop_while;To;;0;[o; ;[I"Enumerable#find_index;To;;0;[o; ;[I"Enumerable#first;To;;0;[o; ;[I"Enumerable#group_by;To;;0;[o; ;[I"Enumerable#max_by;To;;0;[o; ;[I"Enumerable#min_by;To;;0;[o; ;[I"Enumerable#minmax;To;;0;[o; ;[I"Enumerable#minmax_by;To;;0;[o; ;[I"Enumerable#none?;To;;0;[o; ;[I"Enumerable#one?;To;;0;[o; ;[I"Enumerable#take;To;;0;[ o; ;[I"Enumerable#take_while;T@ o; ;[I"New methods.;T@ o;;0;[o; ;[I"Enumerable#find;To;;0;[o; ;[I"Enumerable#find_all;To;;0;[o; ;[I"Enumerable#partition;To;;0;[o; ;[I"Enumerable#reject;To;;0;[o; ;[I"Enumerable#select;To;;0;[ o; ;[I"Enumerable#sort_by;T@ o; ;[I"/Return an enumerator if no block is given.;T@ o; ;[I"GNote that #map and #collect still return an array unlike Ruby 1.9 ;TI"to keep compatibility.;T@ o;;0;[ o; ;[I"Enumerable#inject;T@ o; ;[I"2Accepts a binary operator instead of a block.;T@ o;;0;[ o; ;[I"Enumerable#reduce;T@ o; ;[I"New alias to #inject.;T@ o;;0;[ o; ;[I"Enumerable#to_a;T@ o; ;[I"8Can take optional arguments and pass them to #each.;T@ o;;0;[o; ;[I"Hash#eql?;To;;0;[o; ;[I"Hash#hash;To;;0;[ o; ;[I" Hash#==;T@ o; ;[I"$Handle recursive data properly.;T@ o;;0;[o; ;[I"Hash#delete_if;To;;0;[o; ;[I"Hash#each;To;;0;[o; ;[I"Hash#each_key;To;;0;[o; ;[I"Hash#each_pair;To;;0;[o; ;[I"Hash#each_value;To;;0;[o; ;[I"Hash#reject!;To;;0;[o; ;[I"Hash#select;To;;0;[o; ;[I"ENV.delete_if;To;;0;[o; ;[I" ENV.each;To;;0;[o; ;[I"ENV.each_key;To;;0;[o; ;[I"ENV.each_pair;To;;0;[o; ;[I"ENV.each_value;To;;0;[o; ;[I"ENV.reject!;To;;0;[ o; ;[I"ENV.select;T@ o; ;[I"/Return an enumerator if no block is given.;T@ o;;0;[o; ;[I"GC.stress;To;;0;[ o; ;[I"GC.stress=;T@ o; ;[I"New methods.;T@ o;;0;[o; ;[I"Integer#ord;To;;0;[o; ;[I"Integer#odd?;To;;0;[o; ;[I"Integer#even?;To;;0;[ o; ;[I"Integer#pred;T@ o; ;[I"New methods.;T@ o;;0;[o; ;[I"Integer#downto;To;;0;[o; ;[I"Integer#times;To;;0;[ o; ;[I"Integer#upto;T@ o; ;[I"/Return an enumerator if no block is given.;T@ o;;0;[o; ;[I" IO#each;To;;0;[o; ;[I"IO#each_line;To;;0;[o; ;[I"IO#each_byte;To;;0;[o; ;[I"IO.foreach;To;;0;[o; ;[I"ARGF.each;To;;0;[o; ;[I"ARGF.each_line;To;;0;[ o; ;[I"ARGF.each_byte;T@ o; ;[I"/Return an enumerator if no block is given.;T@ o;;0;[o; ;[I" IO#bytes;To;;0;[o; ;[I" IO#chars;To;;0;[o; ;[I"IO#each_char;To;;0;[o; ;[I"IO#getbyte;To;;0;[o; ;[I" IO#lines;To;;0;[o; ;[I"IO#readbyte;To;;0;[o; ;[I"ARGF.bytes;To;;0;[o; ;[I"ARGF.chars;To;;0;[o; ;[I"ARGF.each_char;To;;0;[o; ;[I"ARGF.getbyte;To;;0;[o; ;[I"ARGF.lines;To;;0;[ o; ;[I"ARGF.readbyte;T@ o; ;[I"New methods.;T@ o;;0;[o; ;[I"Method#name;To;;0;[o; ;[I"Method#owner;To;;0;[o; ;[I"Method#receiver;To;;0;[o; ;[I"UnboundMethod#name;To;;0;[ o; ;[I"UnboundMethod#owner;T@ o; ;[I"New methods.;T@ o;;0;[o; ;[I"Module#class_exec;To;;0;[ o; ;[I"Module#module_exec;T@ o; ;[I"New methods.;T@ o;;0;[ o; ;[I"Numeric#step;T@ o; ;[I"/Return an enumerator if no block is given.;T@ o;;0;[o; ;[I"Object#instance_exec;To;;0;[ o; ;[I"Object#tap;T@ o; ;[I"New methods.;T@ o;;0;[ o; ;[I"ObjectSpace.each_object;T@ o; ;[I"/Return an enumerator if no block is given.;T@ o;;0;[o; ;[I"Process.exec implemented.;T@ o;;0;[o; ;[I"Range#each;To;;0;[ o; ;[I"Range#step;T@ o; ;[I"/Return an enumerator if no block is given.;T@ o;;0;[o; ;[I"/Regexp.union accepts an array of patterns.;T@ o;;0;[ o; ;[I"String#bytes;T@ o; ;[I"New method;T@ o;;0;[ o; ;[I"String#bytesize;T@ o; ;[I"ENew method, returning the size in bytes. (alias length and size);T@ o;;0;[o; ;[I"String#chars;To;;0;[o; ;[I"String#each_char;To;;0;[o; ;[I"String#lines;To;;0;[o; ;[I"String#partition;To;;0;[o; ;[I"String#rpartition;To;;0;[o; ;[I"String#start_with?;To;;0;[ o; ;[I"String#end_with?;T@ o; ;[I"ENew methods. These are $KCODE aware unlike #index, #rindex and ;TI"#include?.;T@ o;;0;[o; ;[I"String#each_byte;To;;0;[o; ;[I"String#each;To;;0;[o; ;[I"String#each_line;To;;0;[ o; ;[I"String#gsub(pattern);T@ o; ;[I"/Return an enumerator if no block is given.;T@ o;;0;[ o; ;[I"String#upto;T@ o; ;[I"GAn optional second argument is added to specify if the last value ;TI"should be included.;T@ o;;0;[ o; ;[I"StopIteration;T@ o; ;[I"HNew exception class that causes Kernel#loop to stop iteration when ;TI" raised.;T@ o;;0;[o; ;[I"Struct#each;To;;0;[ o; ;[I"Struct#each_pair;T@ o; ;[I"/Return an enumerator if no block is given.;T@ o;;0;[ o; ;[I"Symbol#to_proc;T@ o; ;[I"New method.;T@ o;;0;[ o; ;[I"__method__;T@ o; ;[I"HNew global function that returns the name of the current method as ;TI"a Symbol.;T@ o;;0;[o; ;[I"enumerator;T@ o;;;;[o;;0;[o; ;[I"AEnumerator is now a built-in module. The #next and #rewind ;TI"Fmethods are implemented using the "generator" library. Use with ;TI"/care and be aware of the performance loss.;T@ o;;0;[o; ;[I" ipaddr;T@ o;;;;[o;;0;[o; ;[I"New methods;To;;;;[o;;0;[o; ;[I"IPAddr#<=>;To;;0;[ o; ;[I"IPAddr#succ;T@ o; ;[I"CIPAddr objects are now comparable and enumerable having these ;TI"Cmethods. This also means that it is possible to have a Range ;TI"'object between two IPAddr objects.;T@ o;;0;[ o; ;[I"IPAddr#to_range;T@ o; ;[I"EA new method to create a Range object for the (network) address.;T@ o;;0;[o; ;[I"Type coercion support;To;;;;[ o;;0;[o; ;[I" IPAddr#&;To;;0;[o; ;[I" IPAddr#|;To;;0;[o; ;[I"IPAddr#==;To;;0;[ o; ;[I"IPAddr#include?;T@ o; ;[I"CThese methods now accept a string or an integer instead of an ;TI"#IPAddr object as the argument.;T@ o;;0;[o; ;[I" net/smtp;T@ o;;;;[o;;0;[o; ;[I"Support SSL/TLS.;T@ o;;0;[o; ;[I" openssl;T@ o;;;;[ o;;0;[o; ;[I"New classes;To;;;;[ o;;0;[o; ;[I"OpenSSL::PKey::EC;To;;0;[o; ;[I"OpenSSL::PKey::EC::Group;To;;0;[o; ;[I"OpenSSL::PKey::EC::Point;To;;0;[o; ;[I"OpenSSL::PKey::PKCS5;To;;0;[o; ;[I"OpenSSL::SSL::Session;T@ o;;0;[o; ;[I"Documentation!;T@ o;;0;[o; ;[I"-Various new methods (see documentation).;T@ o;;0;[o; ;[I"IRemove redundant module namespace in Cipher, Digest, PKCS7, PKCS12. ;TI"JCompatibility classes are provided which will be removed in Ruby 1.9.;T@ o;;0;[o; ;[I"shellwords;T@ o;;;;[o;;0;[o; ;[I"6Add methods for escaping shell-unsafe characters:;To;;;;[ o;;0;[o; ;[I"Shellwords.join;To;;0;[o; ;[I"Shellwords.escape;To;;0;[o; ;[I"Array#shelljoin;To;;0;[o; ;[I"String#shellescape;T@ o;;0;[o; ;[I"Add shorthand methods:;To;;;;[o;;0;[o; ;[I"(Shellwords.split (alias shellwords);To;;0;[o; ;[I"String#shellsplit;T@ o;;0;[o; ;[I" stringio;T@ o;;;;[ o;;0;[o; ;[I"StringIO#getbyte;To;;0;[ o; ;[I"StringIO#readbyte;T@ o; ;[I"6New methods. (aliases for compatibility with 1.9);T@ o;;0;[o; ;[I"StringIO#each_char;To;;0;[ o; ;[I"StringIO#chars;T@ o; ;[I"New methods.;T@ o;;0;[o; ;[I"StringIO#each;To;;0;[o; ;[I"StringIO#each_line;To;;0;[ o; ;[I"StringIO#each_byte;T@ o; ;[I"/Return an enumerator if no block is given.;T@ o;;0;[o; ;[I" tempfile;T@ o;;;;[o;;0;[o; ;[I"@Tempfile.open and Tempfile.new now accept a suffix for the ;TI"Gtemporary file to be created. To specify a suffix, pass an array ;TI"1of [basename, suffix] as the first argument.;T@ o:RDoc::Markup::Verbatim;[I"8Tempfile.open(['image', 'jpg']) { |tempfile| ... } ;T: @format0o;;0;[o; ;[I" tmpdir;T@ o;;;;[o;;0;[o; ;[I"New method:;T@ o;;;;[o;;0;[o; ;[I"Dir.mktmpdir;T@ o;;0;[o; ;[I"uri;T@ o;;;;[o;;0;[o; ;[I"added LDAPS scheme.;To;;0;[o; ;[I"Change for RFC3986:;To;;;;[o;;0;[o; ;[I"FTP;To;;;;[o;;0;[o; ;[I"0URI('ftp://example.com/foo').path #=> 'foo';To;;0;[o; ;[I"4URI('ftp://example.com/%2Ffoo').path #=> '/foo';To;;0;[o; ;[I"eURI::FTP.build([nil, 'example.com', nil, '/foo', 'i').to_s #=> 'ftp://example.com/%2Ffoo;type=i';To;;0;[o; ;[I"URI merge;To;;;;[ o;;0;[o; ;[I"GURI('http://a/b/c/d;p?q').merge('?y') == URI('http://a/b/c/d;p?y');To;;0;[o; ;[I"AURI('http://a/b/c/d;p?q').merge('/./g') == URI('http://a/g');To;;0;[o; ;[I"BURI('http://a/b/c/d;p?q').merge('/../g') == URI('http://a/g');To;;0;[o; ;[I"GURI('http://a/b/c/d;p?q').merge('../../../g') == URI('http://a/g');To;;0;[o; ;[I"JURI('http://a/b/c/d;p?q').merge('../../../../g') == URI('http://a/g');T@ o;;0;[o; ;[I"rss;T@ o;;;;[ o;;0;[o; ;[I"0.1.6 -> 0.2.4;T@ o;;0;[o; ;[I"Fix image module URI;T@ o;;0;[o; ;[I"Atom support;T@ o;;0;[o; ;[I"ITunes module support;T@ o;;0;[o; ;[I"Slash module support;T@ o;;0;[o; ;[I")content:encoded with RSS 2.0 support;T@ S; ; i; I"Interpreter Implementation;T@ o;;;;[o;;0;[ o; ;[I"-passing a block to a Proc [experimental];T@ o; ;[I"GThis implementation in current shape is known to be buggy/broken, ;TI"?especially with nested block invocation. Take this as an ;TI"experimental feature.;T@ o;;0;[ o; ;[I"stack trace;T@ o; ;[I"BOn non-SystemStackError exception, full stack trace is shown.;T@ S; ; i; I"7Compatibility issues (excluding feature bug fixes);T@ o;;;;[ o;;0;[o; ;[ I"HString#slice! had some unintentional bugs and they have been fixed ;TI"Jbecause either they disagreed with documentation or their respective ;TI":behavior of #slice. Unfortunately, this causes some ;TI">incompatibilities in the following (somewhat rare) cases.;T@ o;;;;[o;;0;[o; ;[I"G#slice! no longer expands the array when an out-of-boundary value ;TI"is given.;T@ o;;[I"# Ruby 1.8.6 ;TI"a = [1,2] ;TI"a.slice!(4,0) #=> nil ;TI"'a #=> [1,2,nil,nil] ;TI" ;TI"# Ruby 1.8.7 ;TI"a = [1,2] ;TI"a.slice!(4,0) #=> nil ;TI"a #=> [1,2] ;T;0o;;0;[o; ;[I"B#slice! no longer raises an exception but returns nil when a ;TI"Cnegative length or out-of-boundary negative position is given.;T@ o;;[I"# Ruby 1.8.6 ;TI"a = [1,2] ;TI"-a.slice!(1,-1) #=> (raises IndexError) ;TI"-a.slice!(-5,1) #=> (raises IndexError) ;TI" ;TI"# Ruby 1.8.7 ;TI"a = [1,2] ;TI"a.slice!(1,-1) #=> nil ;TI"a.slice!(-5,1) #=> nil ;T;0o;;0;[ o; ;[I"HString#to_i, String#hex and String#oct no longer accept a sequence ;TI"/of underscores (`__') as part of a number.;T@ o;;[I"# Ruby 1.8.6 ;TI"'1__0'.to_i #=> 10 ;TI"#'1__0'.to_i(2) #=> 2 # 0b10 ;TI""'1__0'.oct #=> 8 # 010 ;TI"#'1__0'.hex #=> 16 # 0x10 ;TI" ;TI"# Ruby 1.8.7 ;TI"'1__0'.to_i #=> 1 ;TI"'1__0'.to_i(2) #=> 1 ;TI"'1__0'.oct #=> 1 ;TI"'1__0'.hex #=> 1 ;T;0o; ;[I"JThe old behavior was inconsistent with Ruby syntax and considered as ;TI" a bug.;T@ o;;0;[o; ;[I" date;T@ o;;;;[o;;0;[ o; ;[I"Date.parse;T@ o; ;[ I"G'##.##.##' (where each '#' is a digit) is now taken as 'YY.MM.DD' ;TI"Ginstead of 'MM.DD.YY'. While the change may confuse you, you can ;TI"Calways use Date.strptime() when you know what you are dealing ;TI" with.;T@ o;;0;[o; ;[I" REXML;T@ o;;;;[o;;0;[ o; ;[I",REXML::Document.entity_expansion_limit=;T@ o; ;[I"KNew method to set the entity expansion limit. By default the limit is ;TI"6set to 10000. See the following URL for details.;T@ o; ;[I"Lhttp://www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/;T@ o;;0;[o; ;[I" stringio;T@ o;;;;[o;;0;[ o; ;[I"StringIO#each_byte;T@ o; ;[I"BThe return value changed from nil to self. This is what the ;TI"4document says and the same as each_line() does.;T@ o;;0;[o; ;[I" tempfile;T@ o;;;;[o;;0;[o; ;[I"HThe file name format has changed. No dots are included by default ;TI"Gin temporary file names any more. See above for how to specify a ;TI" suffix.;T@ o;;0;[o; ;[I"uri;T@ o;;;;[o;;0;[o; ;[I"See above for details.;T@ S; ; i; I"$Changes since the 1.8.5 release;T@ S; ; i; I"&New platforms/build tools support;T@ o;;;;[o;;0;[o; ;[I"IA64 HP-UX;T@ o;;0;[o; ;[I"Visual C++ 8 SP1;T@ o;;0;[o; ;[I"autoconf 2.6x;T@ S; ; i; I"Global constants;T@ o;;;;[o;;0;[ o; ;[I"RUBY_PATCHLEVEL;T@ o; ;[I"!New constant since 1.8.5-p1.;T@ S; ; i; I",Library updates (outstanding ones only);T@ o;;;;[ o;;0;[o; ;[I"builtin classes;T@ o;;;;[o;;0;[o; ;[I"2New method: Kernel#instance_variable_defined?;T@ o;;0;[o; ;[I"/New method: Module#class_variable_defined?;T@ o;;0;[o; ;[I"ENew feature: Dir::glob() can now take an array of glob patterns.;T@ o;;0;[o; ;[I" date;T@ o;;;;[o;;0;[o; ;[I""Updated based on date2 4.0.3.;T@ o;;0;[o; ;[I" digest;T@ o;;;;[ o;;0;[o; ;[I"&New internal APIs for C and Ruby.;T@ o;;0;[o; ;[I"Support for autoloading.;T@ o;;[ I"require 'digest' ;TI" ;TI"# autoloads digest/md5 ;TI"'md = Digest::MD5.digest("string") ;T;0o;;0;[o; ;[I"#New digest class methods: file;T@ o;;0;[o; ;[I">New digest instance methods: clone, reset, new, inspect, ;TI"9digest_length (alias size or length), block_length();T@ o;;0;[o; ;[I"%New library: digest/bubblebabble;T@ o;;0;[o; ;[I"New function: Digest(name);T@ o;;0;[o; ;[I"fileutils;T@ o;;;;[o;;0;[o; ;[I"9New option for FileUtils.cp_r(): :remove_destination;T@ o;;0;[o; ;[I"nkf;T@ o;;;;[o;;0;[o; ;[I"+Updated based on nkf as of 2007-01-28.;T@ o;;0;[o; ;[I" thread;T@ o;;;;[o;;0;[o; ;[I"FReplaced with much faster mutex implementation in C. The former ;TI"Cimplementation, which is slow but considered to be stable, is ;TI">available with a configure option `--disable-fastthread'.;T@ o;;0;[o; ;[I"tk;T@ o;;;;[o;;0;[o; ;[I"8Updated Tile extension support based on Tile 0.7.8.;T@ o;;0;[o; ;[I"DSupport --without-X11 configure option for non-X11 versions of ;TI"Tcl/Tk (e.g. Tcl/Tk Aqua).;T@ o;;0;[o; ;[I"HNew sample script: irbtkw.rbw -- IRB on Ruby/Tk. It has no trouble ;TI"%about STDIN blocking on Windows.;T@ o;;0;[o; ;[I" webrick;T@ o;;;;[o;;0;[o; ;[I"4New method: WEBrick::Cookie.parse_set_cookies();T@ S; ; i; I"7Compatibility issues (excluding feature bug fixes);T@ o;;;;[ o;;0;[o; ;[I"builtin classes;T@ o;;;;[o;;0;[o; ;[I"HString#intern now raises SecurityError when $SAFE level is greater ;TI"than zero.;T@ o;;0;[o; ;[I" date;T@ o;;;;[o;;0;[o; ;[ I"ETime#to_date and Time#to_datetime are added as private methods. ;TI"FThey cause name conflict error in ActiveSupport 1.4.1 and prior, ;TI"Ewhich comes with Rails 1.2.2 and prior. Updating ActiveSupport ;TI";and/or Rails to the latest versions fixes the problem.;T@ o;;0;[o; ;[I" digest;T@ o;;;;[o;;0;[o; ;[I"DThe constructor does no longer take an initial string to feed. ;TI"0The following examples show how to migrate:;T@ o;;[I"# Before ;TI"$md = Digest::MD5.new("string") ;TI"&# After (works with any version) ;TI"+md = Digest::MD5.new.update("string") ;TI" ;TI"# Before ;TI".hd = Digest::MD5.new("string").hexdigest ;TI"&# After (works with any version) ;TI"*hd = Digest::MD5.hexdigest("string") ;T;0o;;0;[o; ;[I"Digest::Base#==;T@ o;;;;[o;;0;[ o; ;[I"self == string;T@ o; ;[I"FAutomatic detection between binary digest values and hexadecimal ;TI"Bdigest values has been dropped. It is always assumed that a ;TI"6hexadecimal digest value is given for comparison.;T@ o;;0;[ o; ;[I"self == md;T@ o; ;[I"EDigest objects are compared by the resulting digest values, not ;TI" by the exact vector states.;T@ o;;0;[o; ;[I"fileutils;T@ o;;;;[o;;0;[o; ;[I"8A minor implementation change breaks Rake <=0.7.1. ;TI"8Updating Rake to 0.7.2 or higher fixes the problem.;T@ o;;0;[o; ;[I"tk;T@ o;;;;[o;;0;[o; ;[I"CTk::X_Scrollable (Y_Scrollable) is renamed to Tk::XScrollable ;TI"H(YScrollable). Tk::X_Scrollable (Y_Scrollable) is still available, ;TI"but it is an alias name.;T: @file@:0@omit_headings_from_table_of_contents_below0