From 385b6a15ff7bb0c2bbc6fdcc958d382769948e10 Mon Sep 17 00:00:00 2001 From: knu Date: Thu, 12 Feb 2009 15:04:41 +0000 Subject: Update with branches/ruby_1_9_1/NEWS. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- doc/NEWS-1.9.1 | 380 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 298 insertions(+), 82 deletions(-) (limited to 'doc/NEWS-1.9.1') diff --git a/doc/NEWS-1.9.1 b/doc/NEWS-1.9.1 index bfc9ed1817..05752330eb 100644 --- a/doc/NEWS-1.9.1 +++ b/doc/NEWS-1.9.1 @@ -8,6 +8,7 @@ reference information is supplied with. For a full list of changes with all sufficient information, see the ChangeLog file. == Changes since the 1.8.7 release +See doc/NEWS-1.8.7 for changes between 1.8.6 and 1.8.7. === Compatibility issues @@ -15,144 +16,273 @@ with all sufficient information, see the ChangeLog file. * New syntax and semantics o Block arguments are always local - o Block arguments o New semantics for block arguments - o Block local variables - o Method used for splat arguments: #to_splat o defined? and local variables + o Parser expects that your source code has only valid byte + sequence in some character encoding. Use magic comments + to tell the parser which encoding you use. + o New semantics for constant definition in instance_eval + or in module_eval. + + * Deprecated syntax + o colon (:) instead of "then" in if/unless or case expression. + o retry in a loop or an iterator. * builtin classes and objects * Kernel and Object - o Kernel#require + o Kernel#methods and #singleton_methods used to return an + array of strings but now they return an array of symbols. * Class and Module - o Class variables behavior - o Module#attr is an alias of attr_reader - o Module#instance_methods, #private_instance_methods, #public_instance_methods + o Module#attr works as Module#attr_reader by default. + Optional boolean argument is obsolete. + o Module#instance_methods, #private_instance_methods and + #public_instance_methods used to return an array of + strings but now they return an array of symbols. o Extra subclassing check when binding UnboundMethods + * Exceptions - o Equality of exceptions - o SystemStackError - o SecurityError + o Exceptions are equal to each other if they belong to + the same class and have the same message and backtrace. + o SystemStackError used to be a subclass of StandardError + but not it is a direct subclass of Exception. + o SecurityError: ditto o Removed Exception#to_str [Ruby2] + * Enumerable and Enumerator + o Enumerable::Enumerator, compatibility alias of Enumerator, + is removed. + o Enumerable#{map,collect} called without a block returns + an enumerator. + o Even more builtin and bundled libraries have been made to + return an enumerator when called without a block. * Array o Array#nitems was removed (use count {|i| !i.nil?}) o Array#choice was removed (use sample) o Array#[m,n] = nil places nil in the array. - * Enumerable and Enumerator - o Enumerable#map,collect called without a block returns - an enumerator. - * File and Dir operations - o #to_path in File.path, File.chmod, File.lchmod, File.chown, File.lchown, File.utime, File.unlink... [Ruby2] - o Dir.[], Dir.glob - o Dir.exist? - * String - o No longer an Enumerable - o ?c semantics - o "One-char-wide" semantics for String#[] and String#[]= [Ruby2] - o Encoding-awareness * Hash o Hash#to_s is equivalent to Hash#inspect o Semantics for Hash#each and Hash#each_pair o Hash#select returns a hash - o Hash#key is the new name for #index which has been deprecated. - o Most of the changes in Hash apply to hash like interfaces such as - ENV and *DBM. - * Integer - o Integer(nil) raises TypeError + o Hash#key is the new name for #index which has been + deprecated. + o Hash preserves order. It enumerates its elements in the + order in which the keys are inserted. + o Most of the changes in Hash apply to hash like interfaces + such as ENV and *DBM. * IO operations + o Many methods used to act byte-wise but now some of those act + character-wise. You can use alternate byte-wise methods. o IO#getc o Non-blocking IO o Kernel#open takes "t" for newline conversion o Kernel#open takes encoding specified - o IO#initialize now accepts an IO argument + o IO automatically converts byte sequence from a character + encodings into another if specified. o StringIO#readpartial o IO.try_convert - o Limit input in IO#gets, IO#readline, IO#readlines, IO#each_line, IO#lines, IO.foreach, IO.readlines, StringIO#gets, StringIO#readline, StringIO#each, StringIO#readlines + o IO.binread + o IO.copy_stream + o IO#binmode? + o IO#close_on_exec= and IO#close_on_exec? + o Limit input in IO#gets, IO#readline, IO#readlines, + IO#each_line, IO#lines, IO.foreach, IO.readlines, + StringIO#gets, StringIO#readline, StringIO#each, + StringIO#readlines o IO#ungetc, StringIO#ungetc - o IO#internal_encoding, IO#external_encoding, IO#set_encoding - o IO.pipe takes encoding option + o IO#ungetbyte, StringIO#ungetbyte + o IO#internal_encoding, IO#external_encoding, + IO#set_encoding + o IO.pipe takes encoding option + o Directive %u behaves like %d for negative values in + printf-style formatting. + * File and Dir operations + o #to_path is called as necessary in File.path, File.chmod, + File.lchmod, File.chown, File.lchown, File.utime, + File.unlink, etc.. + o File.world_readable? + o File.world_writable? + o Dir.[], Dir.glob + o Dir.exist? + o Dir.exists? + * File::Stat + o File::Stat#world_readable? + o File::Stat#world_writable? + * String + o No longer an Enumerable: use each_line/lines for line + oriented operation + o Encoding-awareness + o Character-wise semantics in many methods instead of + byte-wise. + o String#[]: Indexing a String with an integer returns a + single character String instead of an integer. + o String#[]=: No longer takes an integer as right + side value. Note that "str[i] = ?c" because of + the following change. + o ?c is evaluated to a single character string + instead of an integer. + * Regexp + o Encoding-awareness + o Regexp matches only with strings which is encoded in a + compatible character encoding to the regexp's. + o Regexp#kcode is removed. use Regexp#encoding. + * Symbols: restriction on literal symbols + * Numeric + o Numeric#div always rounds as Integer#div has done. + o Numeric#fdiv: ditto. + * Integer + o Integer(nil) raises TypeError + * Fixnum + o Fixnum#id2name removed + o Fixnum#to_sym removed + * Struct + o Struct#inspect * Time o New format in Time#to_s o Timezone information preserved on Marshal.dump/load - * Struct - o Struct#inspect - * Symbols: restriction on literal symbols * $SAFE and bound methods + o New trusted/untrusted model in addition to + tainted/untainted model. + * Deprecation - o VERSION and friends - o Kernel.to_a - o Kernel#getc + o $= (global flag for case-sensitiveness on string matching) + o Kernel#to_a + o Kernel#getc, #gsub, #sub + o Kernel#callcc and Continuation now become 'continuation' + bundled library. o Object#type + o Removed Array and Hash #indices, #indexes o Hash#index o ENV.index - o Symbol#to_int - o Removed Array and Hash #indices, #indexes - o libraries: base64, mailread, getopts, parsearg, soap, wsdl + o Process::Status#to_int + o Numeric#rdiv + o Precision is removed. Don't cry, it will be redesigned + and come back in future version. + o Symbol#to_int and Symbol#to_i + o $KCODE is no longer effective. Use Encoding related + features of each class. + o VERSION and friends * bundled libraries + * Pathname + o No longer has #to_str nor #=~. + * time and date + o Time.parse and Date.parse interprets slashed numerical dates + as "dd/mm/yyyy". * Readline - o If Readline uses libedit, Readline::HISTORY[0] returns the first of the history. + o If Readline uses libedit, Readline::HISTORY[0] returns the + first of the history. + * Continuation + o as above + + * Deprecation + o Complex#image: use Complex#imag + o All SSL-related class methods in Net::SMTP + o Prime#cache, Prime#primes, Prime#primes_so_far + o mailread library: use tmail gem. + o cgi-lib library: use cgi. + o date2 library: use date. + o eregex library + o finalize library: use ObjectSpace.define_finalizer if you + really need a finalizer. really? + o ftools library: use fileutils. + o generator library: use Enumerator. + o importenv library and Env library + o jcode library: use multilingualization support of String + o parsedate library + o ping library + o readbytes library + o getopts library and parsearg library: use optparse or + getoptlong. + o soap, wsdl and xsd libraries: use soap4r gem. + o Win32API library: use dl. + o dl library: Reimplemented and API changed. use the new + version of dl or ffi gem. + o rubyunit library and runit library: use minitest or + test/unit. Or use anything you love through RubyGems. + o test/unit is reimplemented on top of minitest. This is + not fully compatible with the original. === Language core changes * New syntax and semantics - o New literal hash syntax + o Magic comments to declare in which encoding your source + code is written + o New literal hash syntax and new syntax for hash style + arguments o New syntax for lambdas o .() and calling Procs without #call/#[] + o Block in block arguments + o Block local variables o Mandatory arguments after optional arguments allowed o Multiple splats allowed - o Arguments to #[] - o printf-style formatted strings (%) - o Newlines allowed before ternary colon + o #[] can take splatted arguments, hash style arguments + and a block. + o New directives in printf-style formatted strings (%). + o Newlines allowed before ternary colon operator (:) and + method call dot operator (.) + o Negative operators such as !, != and !~ are now + overloadable + o Encoding.default_external and default_internal + o __ENCODING__: New pseudo variable to hold the current + script's encoding === Library updates +* builtin classes and objects * Kernel and Object o BasicObject - o Object#=~ - o Kernel#instance_variable_defined? + o Object#=~ returns nil instead of false by default. o Kernel#define_singleton_method - o Kernel#singleton_methods, Kernel#methods + o Kernel#load can load a library from the highest versions + of gems by default. * Class and Module o Module#const_defined?, #const_get and #method_defined? - o Module#class_variable_defined? - o #class_variable_{set,get} + take an optional parameter. + o #class_variable_{set,get} are public. o Class of singleton classes + + * Errno::EXXX + o All of those are always defined. Errno::EXXX will be + defined as an alias to Errno::NOERROR if your platform + does not have one. + * Binding#eval * Blocks and Procs o Arity of blocks without arguments o proc is now a synonym of Proc.new - * Blocks and Procs o Proc#yield o Passing blocks to #[] o Proc#lambda? + o Proc#curry + * Fiber: coroutines/micro-threads + * Thread + o Thread.critical and Thread.critical= removed + o Thread#exit!, Thread#kill! and Thread#terminate! removed. + * Enumerable and Enumerator - o Enumerable#each_with_object [experimental] + o Enumerator#enum_cons and Enumerator#enum_slice are + removed. Use #each_cons and #each_slice without a block. + o Enumerable#each_with_index can take optional arguments + and passes them to #each. + o Enumerable#each_with_object o Enumerator#with_object o Enumerator.new { ... } - * Regexp#match, String#match - o Regexp#match, String#match - * Encoding - * Encoding::Converter - * Fiber: coroutines/micro-threads * Array o Array#delete returns a deleted element rather than a given object o Array#to_s is equivalent to Array#inspect o Array.try_convert + o Array#pack('m0') complies with RFC 4648. * Hash o preserving item insertion order o Hash#default_proc= o Hash#_compare_by_identity and Hash#compare_by_identity? o Hash.try_convert - * Numeric - o Numeric#upto, #downto, #times, #step - o Numeric#real?, Complex#real? - o Numeric#div - o Numeric#fdiv + o Hash#assoc + o Hash#rassoc + o Hash#flatten * Range o Range#cover? o Range#include? iterates over elements and compares the @@ -160,45 +290,131 @@ with all sufficient information, see the ChangeLog file. Use Range#cover? for the old behavior, i.e. comparison with boundary values. o Range#min, Range#max - * Regexp - o Regexp#=== matches symbols - o Regexp.try_convert + + * File and Dir operations + o New methods + * Process + o Process.spawn + o Process.daemon * String o String#clear o String#ord o String#getbyte, String#setbyte - o String#encoding - o String#force_encoding + o String#chars and String#each_char act as character-wise. + o String#codepoints, String#each_codepoint o String#unpack with a block o String#hash o String.try_convert - o String.encoding, String#force_encoding, String#encode + o String#encoding + o String#force_encoding, String#encode and String#encode! + o String#ascii_only? + o String#valid_encoding? + o String#match * Symbol o Zero-length symbols allowed - o Symbol#=== matches strings o Symbol#intern o Symbol#encoding o Symbol methods similar to those in String + * Regexp + o Regexp#=== matches symbols + o Regexp.try_convert + o Regexp#match + o Regexp#fixed_encoding? + o Regexp#encoding + o Regexp#named_captures + o Regexp#names + * MatchData + o MatchData#names + o MatchData#regexp + * Encoding + * Encoding::Converter + o supports conversion between many encodings + * Numeric + o Numeric#upto, #downto, #times, #step + o Numeric#real?, Complex#real? + o Numeric#magnitude + * Rational / Complex + o They are in the core library now * Math - o Math#log and Math#log2 - * File and Dir operations - o New methods - * Process - o Process.daemon - * Readline - o Readline.vi_editing_mode? - o Readline.emacs_editing_mode? - o Readline::HISTORY.clear + o Math#log takes an optional argument. + o Math#log2 + o Math#cbrt, Math#lgamma, Math#gamma + * Time + o Time.times removed. Use Process.times. + o Time#sunday? + o Time#monday? + o Time#tuesday? + o Time#wednesday? + o Time#thursday? + o Time#friday? + o Time#saturday? + o Time#tv_nsec and Time#nsec * Misc. new methods + o RUBY_ENGINE to distinguish between Ruby processor implementation + o public_method o public_send o GC.count o ObjectSpace.count_objects o Method#hash, Proc#hash + o Method#source_location, UnboundMethod#source_location and + Proc#source_location o __callee__ + o Elements in $LOAD_PATH and $LOADED_FEATURES are expanded + +* bundled libraries + * RubyGems + o Package management system for Ruby. + o Integrated with Ruby's library loader. + * Rake + o Ruby make. A simple ruby build program with capabilities + similar to make. + * minitest + o Our new testing library which is faster, cleaner and easier + to read than the old test/unit. + o You can introduce the old test/unit as testunit gem through + RubyGems if you want. + * CMath + o Complex number version of Math + * Prime + o Extracted from Mathn and improved. You can easily enumerate + prime numbers. + o Prime.new is obsolete. Use its class methods. + * ripper + o Ruby script parser + * Readline + o Readline.vi_editing_mode? + o Readline.emacs_editing_mode? + o Readline::HISTORY.clear + * Tk + o TkXXX widget classes are removed and redefined as aliases of + Tk::XXX classes. + * RDoc + o Updated to version 2.2.2. See: + http://rubyforge.org/frs/shownotes.php?group_id=627&release_id=26434 + +* commandline options + * -E, --encoding + * -U + * --enable-gems, --disable-gems + * --enable-rubyopt, --disable-rubyopt + * long options are allowed in RUBYOPT environment variable. === Implementation changes - * Memory Diet - * Object Compaction - Object, Array, String, Hash, Struct, Class, Module - * st_table compaction (inlining small tables) - * YARV +* Memory Diet + * Object Compaction - Object, Array, String, Hash, Struct, Class, + Module + * st_table compaction (inlining small tables) +* YARV + * Ruby codes are compiled into opcodes before executed. + * Native thread + +* Platform supports + * Support levels + (0) Supported + (1) Best effort + (2) Perhaps + (3) Not supported + * Dropped + o No longer supports djgpp, bcc32, human68k, MacOS 9 or earlier, + VMS nor Windows CE. -- cgit v1.2.3