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@20685 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			204 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			204 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
= NEWS
 | 
						|
 | 
						|
This document is a list of user visible feature changes made between
 | 
						|
releases except for bug fixes.
 | 
						|
 | 
						|
Note that each entry is kept so brief that no reason behind or
 | 
						|
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
 | 
						|
 | 
						|
=== Compatibility issues
 | 
						|
 | 
						|
* language core
 | 
						|
 | 
						|
    * 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
 | 
						|
 | 
						|
* builtin classes and objects
 | 
						|
 | 
						|
    * 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 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_all 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
 | 
						|
    * IO operations
 | 
						|
          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 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#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
 | 
						|
    * Struct
 | 
						|
          o Struct#inspect
 | 
						|
    * 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
 | 
						|
 | 
						|
* bundled libraries
 | 
						|
 | 
						|
    * Readline
 | 
						|
          o If Readline uses libedit, Readline::HISTORY[0] returns the first of the history.
 | 
						|
 | 
						|
=== Language core changes
 | 
						|
 | 
						|
    * 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
 | 
						|
 | 
						|
=== Library updates
 | 
						|
 | 
						|
    * Kernel and Object
 | 
						|
          o BasicObject
 | 
						|
          o Object#=~
 | 
						|
          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
 | 
						|
    * 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#each_with_object [experimental]
 | 
						|
          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
 | 
						|
    * 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
 | 
						|
    * Range
 | 
						|
          o Range#cover?
 | 
						|
          o Range#include? iterates over elements and compares the
 | 
						|
            given value with each element unless the range is numeric.
 | 
						|
            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
 | 
						|
    * String
 | 
						|
          o String#clear
 | 
						|
          o String#ord
 | 
						|
          o String#getbyte, String#setbyte
 | 
						|
          o String#encoding
 | 
						|
          o String#force_encoding
 | 
						|
          o String#unpack with a block
 | 
						|
          o String#hash
 | 
						|
          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.daemon
 | 
						|
    * Readline
 | 
						|
          o Readline.vi_editing_mode?
 | 
						|
          o Readline.emacs_editing_mode?
 | 
						|
          o Readline::HISTORY.clear
 | 
						|
    * Misc. new methods
 | 
						|
          o public_send
 | 
						|
          o GC.count
 | 
						|
          o ObjectSpace.count_objects
 | 
						|
          o Method#hash, Proc#hash
 | 
						|
          o __callee__
 | 
						|
 | 
						|
=== Implementation changes
 | 
						|
 | 
						|
    * Memory Diet
 | 
						|
      * Object Compaction - Object, Array, String, Hash, Struct, Class, Module
 | 
						|
      * st_table compaction (inlining small tables)
 | 
						|
    * YARV
 |