From: Yukihiro Matsumoto Date: 2007-11-27T23:42:38+09:00 Subject: [ruby-dev:32385] Re: 1.9.1のリリース時期について In message "Re: [ruby-dev:32384] Re: 1.9.1のリリース時期について" on Tue, 27 Nov 2007 23:36:52 +0900, "Akinori MUSHA" writes: | |[1 ] | 最近さぼり気味の武者です。 | | 1.9.1のリリース前に、ぜひとも1.8系のように NEWS ファイルを |用意したいです。(ユーザに見える変更/追加点リスト) | | これを取り込めればいいのかなと思いますが、どうでしょう。 | | http://eigenclass.org/hiki/Changes+in+Ruby+1.9 そこからさらに私がまとめたものです。が、結構見落としがありそ う。最初の一歩くらいにはなるでしょう。 ------ Incompatible (Severe) * New syntax and semantics o Block arguments are always local o Block arguments o New semantics for block arguments o Block local variables [EXPERIMENTAL] * String o No longer an Enumerable o ?c semantics o "One-char-wide" semantics for String#[] and String#[]= [Ruby2] o Encoding-awareness * IO operations o IO#getc Incompatible (Trivial) * New syntax and semantics o Method used for splat arguments: #to_splat o defined? and local variables * Kernel and Object o Kernel#require * 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 Extra subclassing check when binding UnboundMethods * Exceptions o Equality of exceptions o SystemStackError o SecurityError o Removed Exception#to_str [Ruby2] * Array o Array#nitems o Array#[m,n] = nil places nil in the array. * Hash o Hash#to_s is equivalent to Hash#inspect o Semantics for Hash#each and Hash#each_pair o Hash#select * Integer o Integer(nil) raises TypeError * Struct o Struct#inspect * 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? * IO operations o Non-blocking IO o IO#getbyte, IO#readbyte, StringIO#getbyte, StringIO#readbyte o Kernel#open [Ruby2] o IO#initialize now accepts an IO argument o StringIO#readpartial o IO#lines o IO#bytes 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#ungetc, StringIO#ungetc * Time o New format in Time#to_s o Timezone information preserved on Marshal.dump/load * Symbols: restriction on literal symbols * $SAFE and bound methods * Deprecation o VERSION and friends o StringScanner o Kernel.to_a o Kernel#getc o Object#type o File.exists? o Hash#index o ENV.index o Symbol#to_int o Removed Array and Hash #indices, #indexes Compatible * New syntax and semantics o New literal hash syntax [Ruby2] o New syntax for lambdas [VERY EXPERIMENTAL] o .() and calling Procs without #call/#[] [EXPERIMENTAL] 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 * Kernel and Object o BasicObject o #instance_exec o Object#=~ o Object#tap o Kernel#instance_variable_defined? o Kernel#define_singleton_method o Kernel#singleton_methods, Kernel#methods * Class and Module o Module#const_defined?, #const_get and #method_defined? o Module#class_variable_defined? o #class_variable_{set,get} o Class of singleton classes o #module_exec * 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? * Enumerable and Enumerator o Enumerable methods called without a block o Enumerable#cycle o Enumerable#each_with_index o Enumerable#first(n) o Enumerable#group_by o Enumerable#find_index o Enumerable#take o Enumerable#drop o Enumerator#each o Enumerable#inject (#reduce) without a block o Enumerable#count o Enumerable#reduce o Enumerator#with_index [EXPERIMENTAL] o Enumerable##min_by, #max_by o Enumerable#zip o Enumerable#minmax and minmax_by o Enumerator#rewind o Enumerator#next * Regexp#match, String#match o Regexp#match, String#match * Fiber: coroutines/micro-threads * Array o Block argument to Array#index, Array#rindex [Ruby2] o Array#combination o Array#permutation o Array#product o Array#pop, Array#shift o Array#to_s is equivalent to Array#inspect o Array.try_convert * Hash o preserving item insertion order o Hash#_compare_by_identity and Hash#compare_by_identity? o Hash.try_convert * Integer o Integer#odd?, #even? o Integer#pred * Method o Method#receiver o Method#name o Method#owner * Numeric o Numeric#upto, #downto, #times, #step o Numeric#scalar?, Complex#scalar? o Numeric#div o Numeric#fdiv * Range o Range#cover? o Range#include? o Range#min, Range#max * Regexp o Regexp#=== matches symbols o Regexp.try_convert * String o String#clear o String#each_char o String#ord o String#partition, #rpartition o String#lines o String#bytes o String#encoding o String#force_encoding o String#start_with?, #end_with? o String#unpack with a block o String#hash o String#upto o String.try_convert * Symbol o Zero-length symbols allowed o Symbol#=== matches strings o Symbol#intern o Symbol#encoding o Symbol methods similar to those in String * Math o Math#log and Math#log2 * File and Dir operations o New methods * Process o Process.setrlimit o Process.daemon o Process.exec * Misc. new methods o GC.stress, GC.stress= o Method#hash, Proc#hash o __method__ and __callee__ o Symbol#to_proc * Implementation * Memory Diet * Object Compaction - Object, Array, String, Hash, Struct, Class, Module * st_table compaction (inlining small tables) * YARV