mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			207 lines
		
	
	
	
		
			6.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			207 lines
		
	
	
	
		
			6.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
Changes for 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
 | 
						|
    * 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 takes encoding specified
 | 
						|
          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
 | 
						|
	  o IO#internal_encoding, IO#external_encoding, IO#set_encoding
 | 
						|
	  o IO.pipe takes encoding option
 | 
						|
    * 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 Kernel.to_a
 | 
						|
          o Kernel#getc
 | 
						|
          o Object#type
 | 
						|
          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
 | 
						|
 | 
						|
Compatible
 | 
						|
 | 
						|
    * New syntax and semantics
 | 
						|
          o New literal hash syntax
 | 
						|
          o New syntax for lambdas
 | 
						|
          o .() and calling Procs without #call/#[]
 | 
						|
          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 Enumerable#take_while
 | 
						|
          o Enumerable#drop_while
 | 
						|
          o Enumerator#each
 | 
						|
          o Enumerable#inject (#reduce) without a block
 | 
						|
          o Enumerable#count
 | 
						|
          o Enumerable#reduce
 | 
						|
          o Enumerator#with_index
 | 
						|
          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
 | 
						|
	  o String.encoding, String#force_encoding, String#encode
 | 
						|
    * 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 public_send
 | 
						|
          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
 |