mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 7728a17a27
			
		
	
	
		7728a17a27
		
	
	
	
	
		
			
			[ruby-talk:346154] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25058 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			293 lines
		
	
	
	
		
			7.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			293 lines
		
	
	
	
		
			7.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| = 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.9.1 release
 | |
| === Library updates (outstanding ones only)
 | |
| 
 | |
| * builtin classes
 | |
| 
 | |
|   * Array
 | |
|     * new method:
 | |
|       * Array#sort_by!
 | |
| 
 | |
|   * Dir
 | |
|     * new method:
 | |
|       * Dir.home
 | |
| 
 | |
|   * Enumerable
 | |
|     * New methods:
 | |
|       * Enumerable#join
 | |
|       * Enumerable#chunk
 | |
|       * Enumerable#slice_before
 | |
| 
 | |
|   * Enumerator
 | |
|     * new methods:
 | |
|       * Enumerator#peek
 | |
|       * Enumerator#next_values
 | |
|       * Enumerator#peek_values
 | |
|       * Enumerator#feed
 | |
|       * StopIteration#result
 | |
| 
 | |
|     * extended methods:
 | |
|       * #with_index accepts an optional argument that specifies the
 | |
|         index number to start with, defaulted to 0.
 | |
| 
 | |
|     * incompatible changes:
 | |
|       * #rewind now calls the "rewind" method of the enclosed object
 | |
|         if defined.
 | |
|       * #next doesn't clear the position at end.
 | |
| 
 | |
|   * ENV
 | |
|     * Uses locale's encoding
 | |
| 
 | |
|   * IO
 | |
|     * new method:
 | |
|       * IO#fdatasync
 | |
| 
 | |
|     * extended methods:
 | |
|       * IO.pipe can take a block.
 | |
| 
 | |
|     * new modules:
 | |
|       * IO::WaitReadable
 | |
|       * IO::WaitWritable
 | |
|         They are used to extend non-blocking exceptions.
 | |
| 
 | |
|   * MatchData
 | |
|     * New method:
 | |
|       * MatchData#==
 | |
| 
 | |
|   * Process
 | |
|     * extended methods:
 | |
|       * Process.spawn accepts [:child, FD] for a redirect target.
 | |
| 
 | |
|   * Random (new library for generating pseudo-random numbers)
 | |
| 
 | |
|   * String
 | |
|     * extended methods:
 | |
|       * string[regexp, name] is supported for named capture.
 | |
| 
 | |
|   * Time
 | |
|     * extended feature:
 | |
|       * time_t restriction is removed to represent before 1901 and after 2038.
 | |
|         Proleptic Gregorian calendar is used for old dates.
 | |
|       * Time.new have optional arguments to specify date with time offset.
 | |
|       * Time#getlocal, Time#localtime have optional time offset argument.
 | |
| 
 | |
|     * new method:
 | |
|       * Time#to_r
 | |
| 
 | |
|     * incompatible changes:
 | |
|       * The year argument of Time.{utc,gm,local,mktime} is now interpreted as
 | |
|         the value itself.  For example, Time.utc(99) means the year 99 AD,
 | |
|         not 1999 AD.
 | |
| 
 | |
|   * Kernel
 | |
|     * new method:
 | |
|       * Kernel#require_relative
 | |
| 
 | |
|     * extended methods:
 | |
|       * respond_to? can be used to detect methods not implemented.
 | |
|         For example, Process.respond_to?(:fork) returns false on Windows.
 | |
| 
 | |
| * rss
 | |
| 
 | |
|   * 0.2.4 -> 0.2.7.
 | |
| 
 | |
|   * RSS::Maker.make
 | |
|     * raise an exception not returns nil for invalid feed making.
 | |
|     * requires block.
 | |
| 
 | |
|   * RSS::Maker.[]
 | |
|     * new method to return maker class.
 | |
| 
 | |
|   * RSS::Maker.supported?(version)
 | |
|     * new method to check whether given version is supported.
 | |
| 
 | |
|   * RSS::Maker: item.guid.permanent_link?
 | |
|     * new alias of item.guid.isPermaLink
 | |
|   * RSS::Maker: item.guid.permanent_link=
 | |
|     * new alias of item.guid.isPermaLink=
 | |
| 
 | |
| * JSON
 | |
|   * Update to JSON 1.1.9
 | |
| 
 | |
| * REXML
 | |
| 
 | |
|   * REXML::Document.entity_expansion_limit=
 | |
| 
 | |
|     New method to set the entity expansion limit. By default the limit is
 | |
|     set to 10000.  See the following URL for details.
 | |
| 
 | |
|     http://www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/
 | |
| 
 | |
| * logger
 | |
| 
 | |
|   * imported upstream version (logger/1.2.7)
 | |
|     * do not raise an exception even if log writing failed.
 | |
|     * do not raise ShiftingError if an aged file already exists.
 | |
|       (no ShiftingError will be raised from 1.2.7, just warn() instead)
 | |
| 
 | |
| * open3
 | |
|   * new methods:
 | |
|     * Open3.popen2
 | |
|     * Open3.popen2e
 | |
|     * Open3.capture3
 | |
|     * Open3.capture2
 | |
|     * Open3.capture2e
 | |
|     * Open3.pipeline_rw
 | |
|     * Open3.pipeline_r
 | |
|     * Open3.pipeline_w
 | |
|     * Open3.pipeline_start
 | |
|     * Open3.pipeline
 | |
| 
 | |
| * pty
 | |
|   * new method:
 | |
|     * PTY.open
 | |
| 
 | |
| * openssl
 | |
|   * new methods:
 | |
|     * OpenSSL::Buffering#read_nonblock
 | |
|     * OpenSSL::Buffering#write_nonblock
 | |
|     * OpenSSL::SSL::SSLSocket#connect_nonblock
 | |
|     * OpenSSL::SSL::SSLSocket#accept_nonblock
 | |
| 
 | |
| * socket
 | |
| 
 | |
|   * incompatible changes:
 | |
|     * Socket#{recvfrom,recvfrom_nonblock,accept,accept_nonblock,sysaccept}
 | |
|       returns a sender address as Addrinfo object instead of a binary sockaddr string.
 | |
|       Addrinfo#to_s returns the old binary sockaddr string.
 | |
|     * BasicSocket#getsockopt returns Socket::Option object instead of a binary string.
 | |
|       Socket::Option#to_s returns the old binary string.
 | |
| 
 | |
|   * new class:
 | |
|     * Addrinfo
 | |
|     * Socket::Option
 | |
|     * Socket::AncillaryData
 | |
| 
 | |
|   * new methods:
 | |
|     * Socket.ip_address_list
 | |
|     * Socket.tcp
 | |
|     * Socket.tcp_server_loop
 | |
|     * Socket.tcp_server_sockets
 | |
|     * Socket.udp_server_sockets
 | |
|     * Socket.udp_server_loop_on
 | |
|     * Socket.udp_server_loop
 | |
|     * Socket.unix
 | |
|     * Socket.unix_server_loop
 | |
|     * Socket.unix_server_socket
 | |
|     * Socket.accept_loop
 | |
|     * Socket#ipv6only!
 | |
|     * BasicSocket#local_address
 | |
|     * BasicSocket#remote_address
 | |
|     * BasicSocket#connect_address
 | |
|     * BasicSocket#sendmsg
 | |
|     * BasicSocket#sendmsg_nonblock
 | |
|     * BasicSocket#recvmsg
 | |
|     * BasicSocket#recvmsg_nonblock
 | |
|     * BasicSocket#getpeereid
 | |
| 
 | |
|   * extended methods:
 | |
|     * Socket.new's 3rd argument is optional now.
 | |
|     * Socket.pair's 3rd argument is optional now.
 | |
|     * Socket.pair and UNIXSocket.pair can take a block.
 | |
|     * BasicSocket#send, UDPSocket#send, Socket.getnameinfo, Socket#bind, and
 | |
|       Socket#{connect,connect_nonblock} accepts an Addrinfo object as sockaddr.
 | |
|     * BasicSocket#getsockopt accepts a Socket::Option object.
 | |
| 
 | |
|     * constant names can be accepted as well as constant values.
 | |
|       i.e. Socket.new(:PF_INET, :SOCK_STREAM, 0)
 | |
|       The constant names can be specified without the prefix.
 | |
|       i.e. Socket.new(:INET, :STREAM, 0)
 | |
|       * protocol/address family
 | |
|       * socket type
 | |
|       * socket option protocol level
 | |
|       * socket option name
 | |
|       * shutdown's argument
 | |
| 
 | |
| * pathname
 | |
|   * new methods:
 | |
|     * Pathname#binread
 | |
|     * Pathname#realdirpath
 | |
|     * Pathname#each_child
 | |
| 
 | |
| * Readline
 | |
|   * new methods:
 | |
|     * Readline.set_screen_size
 | |
|     * Readline.get_screen_size
 | |
| 
 | |
|   * extended methods:
 | |
|     * Readline.completion_proc= accepts nil.
 | |
|       nil means to use default completion proc.
 | |
| 
 | |
| * time
 | |
|   * incompatible changes:
 | |
|     * Time.parse raises ArgumentError when no date information.
 | |
| 
 | |
| * thread
 | |
|   * extended method:
 | |
|     * ConditionVariable#wait takes timeout argument.
 | |
| 
 | |
| * securerandom
 | |
|   * new methods:
 | |
|     * SecureRandom.urlsafe_base64
 | |
| 
 | |
| * URI
 | |
|   * Obsoleted methods:
 | |
|     * URI#escape
 | |
|     * URI#unescape
 | |
| 
 | |
| * etc
 | |
|   * new methods:
 | |
|     * Etc::Passwd.each
 | |
|     * Etc::Group.each
 | |
| 
 | |
| * zlib
 | |
|   * new methods:
 | |
|     * Zlib::GzipFile#path
 | |
| 
 | |
| === Language changes
 | |
| 
 | |
| * Regexp properties (\p{}) names now ignore underscores, spaces, and case, so
 | |
|   \p{ol chiki} is the same as \p{Ol_Chiki}
 | |
| * Regexps now support Unicode 5.1 (new characters and scripts)
 | |
| * \d, \s, and \w are now ASCII only; use POSIX bracket classes and \p{} for
 | |
|   Unicode semantics
 | |
| * $: no longer includes the current directory, use require_relative
 | |
| 
 | |
| === Compilation options
 | |
| 
 | |
| * --program-prefix and --program-suffix no longer act on the shared object
 | |
|   names nor paths to libraries.
 | |
| 
 | |
|   use --with-rubylibprefix='${libruby}/${RUBY_INSTALL_NAME}' and
 | |
|   --with-soname='${RUBY_INSTALL_NAME}' for the same result as Ruby 1.9.1.
 | |
| 
 | |
| * --with-arch is added for universal binary, instead of
 | |
|   --enable-fat-binary option.
 | |
| 
 | |
| === Compatibility issues (excluding feature bug fixes)
 | |
| 
 | |
|   * Enumerator#rewind
 | |
|   * Socket#recvfrom
 | |
|   * Socket#recvfrom_nonblock
 | |
|   * Socket#accept
 | |
|   * Socket#accept_nonblock
 | |
|   * Socket#sysaccept
 | |
|   * BasicSocket#getsockopt
 | |
|   * Time.utc
 | |
|   * Time.gm
 | |
|   * Time.local
 | |
|   * Time.mktime
 | |
|   * Time.parse
 | |
|   * --program-prefix and --program-suffix
 | |
|   * --enable-fat-binary
 | |
|   * $:
 | |
| 
 | |
|     See above.
 |