mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	old ChangeLog and NEWS move to doc
* doc/NEWS-2.0.0: moved from NEWS * doc/ChangeLog-2.0.0: moved ChangeLog older than created ruby_2_0_0 branch * NEWS: NEWS for 2.1.0 that describes changes since 2.0.0 * ChangeLog: ChangeLog since created ruby_2_0_0 branch git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									2b847f8187
								
							
						
					
					
						commit
						beafa477f1
					
				
					 4 changed files with 24550 additions and 24514 deletions
				
			
		
							
								
								
									
										519
									
								
								NEWS
									
										
									
									
									
								
							
							
						
						
									
										519
									
								
								NEWS
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,6 +1,5 @@
 | 
			
		|||
# -*- rdoc -*-
 | 
			
		||||
 | 
			
		||||
= NEWS for Ruby 2.0.0
 | 
			
		||||
# -*- rd -*-
 | 
			
		||||
= NEWS for Ruby 2.1.0
 | 
			
		||||
 | 
			
		||||
This document is a list of user visible feature changes made between
 | 
			
		||||
releases except for bug fixes.
 | 
			
		||||
| 
						 | 
				
			
			@ -9,523 +8,11 @@ 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.3 release
 | 
			
		||||
== Changes since the 2.0.0 release
 | 
			
		||||
 | 
			
		||||
=== Language changes
 | 
			
		||||
 | 
			
		||||
* Added keyword arguments.
 | 
			
		||||
 | 
			
		||||
* Added %i and %I for symbol list creation (similar to %w and %W).
 | 
			
		||||
 | 
			
		||||
* Default source encoding is changed to UTF-8. (was US-ASCII)
 | 
			
		||||
 | 
			
		||||
* No warning for unused variables starting with '_'
 | 
			
		||||
 | 
			
		||||
=== Core classes updates (outstanding ones only)
 | 
			
		||||
 | 
			
		||||
* ARGF
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added ARGF#codepoints and ARGF#each_codepoint, like the corresponding
 | 
			
		||||
      methods for IO.
 | 
			
		||||
 | 
			
		||||
* Array
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Array#bsearch for binary search.
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * random parameter of Array#shuffle! and Array#sample now
 | 
			
		||||
      will be called with one argument, maximum value.
 | 
			
		||||
    * when given Range arguments, Array#values_at now returns nil for each
 | 
			
		||||
      value that is out-of-range.
 | 
			
		||||
 | 
			
		||||
* Enumerable
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Enumerable#lazy method for lazy enumeration.
 | 
			
		||||
 | 
			
		||||
* Enumerator
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Enumerator#size for lazy size evaluation.
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Enumerator.new accept an argument for lazy size evaluation.
 | 
			
		||||
  * new class Enumerator::Lazy for lazy enumeration
 | 
			
		||||
 | 
			
		||||
* ENV
 | 
			
		||||
  * aliased method:
 | 
			
		||||
    * ENV.to_h is a new alias for ENV.to_hash
 | 
			
		||||
 | 
			
		||||
* Fiber
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * Fiber#resume cannot resume a fiber which invokes "Fiber#transfer".
 | 
			
		||||
 | 
			
		||||
* File
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * File.fnmatch? now expands braces in the pattern if
 | 
			
		||||
      File::FNM_EXTGLOB option is given.
 | 
			
		||||
 | 
			
		||||
* GC
 | 
			
		||||
  * improvements:
 | 
			
		||||
    * introduced the bitmap marking which suppresses to copy a memory page
 | 
			
		||||
      with Copy-on-Write.
 | 
			
		||||
    * introduced the non-recursive marking which avoids unexpected stack overflow.
 | 
			
		||||
 | 
			
		||||
* GC::Profiler
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added GC::Profiler.raw_data which returns raw profile data for GC.
 | 
			
		||||
 | 
			
		||||
* Hash
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Hash#to_h as explicit conversion method, like Array#to_a.
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Hash#default_proc= can be passed nil to clear the default proc.
 | 
			
		||||
 | 
			
		||||
* IO
 | 
			
		||||
  * deprecated methods:
 | 
			
		||||
    * IO#lines, #bytes, #chars and #codepoints are deprecated.
 | 
			
		||||
 | 
			
		||||
* Kernel
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Kernel#Hash conversion method like Array() or Float().
 | 
			
		||||
    * added Kernel#__dir__ which returns the absolute path of the
 | 
			
		||||
      directory of the file from which this method is called.
 | 
			
		||||
    * added Kernel#caller_locations which returns an array of
 | 
			
		||||
      frame information objects.
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Kernel#warn accepts multiple args in like puts.
 | 
			
		||||
    * Kernel#caller accepts second optional argument `n' which specify
 | 
			
		||||
      required caller size.
 | 
			
		||||
    * Kernel#to_enum and enum_for accept a block for lazy size evaluation.
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * system() and exec() closes non-standard file descriptors
 | 
			
		||||
      (The default of :close_others option is changed to true by default.)
 | 
			
		||||
    * respond_to? against a protected method now returns false unless
 | 
			
		||||
      the second argument is true.
 | 
			
		||||
    * __callee__ has returned to the original behavior, and now
 | 
			
		||||
      returns the called name but not the original name in an
 | 
			
		||||
      aliased method.
 | 
			
		||||
    * Kernel#inspect does not call #to_s anymore
 | 
			
		||||
      (it used to call redefined #to_s).
 | 
			
		||||
 | 
			
		||||
* LoadError
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added LoadError#path method to return the file name that could not be
 | 
			
		||||
      loaded.
 | 
			
		||||
 | 
			
		||||
* Module
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Module#prepend which is similar to Module#include,
 | 
			
		||||
      however a method in the prepended module overrides the
 | 
			
		||||
      corresponding method in the prepending module.
 | 
			
		||||
    * added Module.prepended and Module.prepend_features, similar
 | 
			
		||||
      to included and append_features.
 | 
			
		||||
    * added Module#refine, which extends a class or module locally.
 | 
			
		||||
      [experimental]
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Module#define_method accepts a UnboundMethod from a Module.
 | 
			
		||||
    * Module#const_get accepts a qualified constant string, e.g.
 | 
			
		||||
      Object.const_get("Foo::Bar::Baz")
 | 
			
		||||
 | 
			
		||||
* Mutex
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Mutex#owned? which returns the mutex is held by current
 | 
			
		||||
      thread or not. [experimental]
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize
 | 
			
		||||
      and Mutex#sleep are no longer allowed to be used from trap handler
 | 
			
		||||
      and raise a ThreadError in such case.
 | 
			
		||||
    * Mutex#sleep may spurious wakeup. Check after wakeup.
 | 
			
		||||
 | 
			
		||||
* NilClass
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added nil.to_h which returns {}
 | 
			
		||||
 | 
			
		||||
* ObjectSpace::WeakMap
 | 
			
		||||
  * new low level class to hold weak references to objects.
 | 
			
		||||
 | 
			
		||||
* Proc
 | 
			
		||||
  * incompatible change:
 | 
			
		||||
    * removed Proc#== and #eql? so two procs are == only when they are
 | 
			
		||||
      the same object.
 | 
			
		||||
 | 
			
		||||
* Process
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added getsid for getting session id (unix only).
 | 
			
		||||
 | 
			
		||||
* Range
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Range#size for lazy size evaluation.
 | 
			
		||||
    * added Range#bsearch for binary search.
 | 
			
		||||
 | 
			
		||||
* RubyVM (MRI specific)
 | 
			
		||||
  * added RubyVM::InstructionSequence.of to get the instruction sequence
 | 
			
		||||
    from a method or a block.
 | 
			
		||||
  * added RubyVM::InstructionSequence#path, #absolute_path, #label,
 | 
			
		||||
    #base_label and #first_lineno to retrieve information from where
 | 
			
		||||
    the instruction sequence was defined.
 | 
			
		||||
  * added Environment variables to specify stack usage:
 | 
			
		||||
    * RUBY_THREAD_VM_STACK_SIZE: vm stack size used at thread creation.
 | 
			
		||||
      default: 128KB (32bit CPU) or 256KB (64bit CPU).
 | 
			
		||||
    * RUBY_THREAD_MACHINE_STACK_SIZE: machine stack size used at thread
 | 
			
		||||
      creation. default: 512KB or 1024KB.
 | 
			
		||||
    * RUBY_FIBER_VM_STACK_SIZE: vm stack size used at fiber creation.
 | 
			
		||||
      default: 64KB or 128KB.
 | 
			
		||||
    * RUBY_FIBER_MACHINE_STACK_SIZE: machine stack size used at fiber
 | 
			
		||||
      creation. default: 256KB or 256KB.
 | 
			
		||||
    These variables are checked only at launched time.
 | 
			
		||||
  * added constant DEFAULT_PARAMS to get above default parameters.
 | 
			
		||||
 | 
			
		||||
* Signal
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Signal.signame which returns signal name
 | 
			
		||||
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * Signal.trap raises ArgumentError when :SEGV, :BUS, :ILL, :FPE, :VTALRM
 | 
			
		||||
      are specified.
 | 
			
		||||
 | 
			
		||||
* String
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added String#b returning a copied string whose encoding is ASCII-8BIT.
 | 
			
		||||
  * change return value:
 | 
			
		||||
    * String#lines now returns an array instead of an enumerator.
 | 
			
		||||
    * String#chars now returns an array instead of an enumerator.
 | 
			
		||||
    * String#codepoints now returns an array instead of an enumerator.
 | 
			
		||||
    * String#bytes now returns an array instead of an enumerator.
 | 
			
		||||
 | 
			
		||||
* Struct
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Struct#to_h returning values with keys corresponding to the
 | 
			
		||||
      instance variable names.
 | 
			
		||||
 | 
			
		||||
* Thread
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Thread#thread_variable_get for getting thread local variables
 | 
			
		||||
      (these are different than Fiber local variables).
 | 
			
		||||
    * added Thread#thread_variable_set for setting thread local variables.
 | 
			
		||||
    * added Thread#thread_variables for getting a list of the thread local
 | 
			
		||||
      variable keys.
 | 
			
		||||
    * added Thread#thread_variable? for testing to see if a particular thread
 | 
			
		||||
      variable has been set.
 | 
			
		||||
    * added Thread.handle_interrupt as well as instance and singleton methods
 | 
			
		||||
      pending_interrupt? for asynchronous handling of exceptions
 | 
			
		||||
    * added Thread#backtrace_locations which returns similar information of
 | 
			
		||||
      Kernel#caller_locations.
 | 
			
		||||
  * new class Thread::Backtrace::Location to hold backtrace location
 | 
			
		||||
    information. These are returned by Thread#backtrace_locations and
 | 
			
		||||
    Kernel#caller_locations.
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * Thread#join and Thread#value now raises a ThreadError if target thread
 | 
			
		||||
      is the current or main thread.
 | 
			
		||||
 | 
			
		||||
* Time
 | 
			
		||||
  * change return value:
 | 
			
		||||
    * Time#to_s now returns US-ASCII encoding instead of BINARY.
 | 
			
		||||
 | 
			
		||||
* TracePoint
 | 
			
		||||
  * new class. This class is replacement of set_trace_func.
 | 
			
		||||
    Easy to use and efficient implementation.
 | 
			
		||||
 | 
			
		||||
* toplevel
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added main.define_method which defines a global function.
 | 
			
		||||
    * added main.using, which imports refinements into the current file or
 | 
			
		||||
      eval string. [experimental]
 | 
			
		||||
 | 
			
		||||
=== Core classes compatibility issues (excluding feature bug fixes)
 | 
			
		||||
 | 
			
		||||
* Array#values_at
 | 
			
		||||
 | 
			
		||||
  See above.
 | 
			
		||||
 | 
			
		||||
* String#lines
 | 
			
		||||
* String#chars
 | 
			
		||||
* String#codepoints
 | 
			
		||||
* String#bytes
 | 
			
		||||
 | 
			
		||||
  These methods no longer return an Enumerator, although passing a
 | 
			
		||||
  block is still supported for backwards compatibility.
 | 
			
		||||
 | 
			
		||||
  Code like str.lines.with_index(1) { |line, lineno| ... } no longer
 | 
			
		||||
  works because str.lines returns an array.  Replace lines with
 | 
			
		||||
  each_line in such cases.
 | 
			
		||||
 | 
			
		||||
* IO#lines
 | 
			
		||||
* IO#chars
 | 
			
		||||
* IO#codepoints
 | 
			
		||||
* IO#bytes
 | 
			
		||||
* ARGF#lines
 | 
			
		||||
* ARGF#chars
 | 
			
		||||
* ARGF#bytes
 | 
			
		||||
* StringIO#lines
 | 
			
		||||
* StringIO#chars
 | 
			
		||||
* StringIO#codepoints
 | 
			
		||||
* StringIO#bytes
 | 
			
		||||
* Zlib::GzipReader#lines
 | 
			
		||||
* Zlib::GzipReader#bytes
 | 
			
		||||
 | 
			
		||||
  These methods are deprecated in favor of each_line, each_byte,
 | 
			
		||||
  each_char and each_codepoint.
 | 
			
		||||
 | 
			
		||||
* Proc#==
 | 
			
		||||
* Proc#eql?
 | 
			
		||||
 | 
			
		||||
  These methods were removed. Two procs are == only when they are
 | 
			
		||||
  the same object.
 | 
			
		||||
 | 
			
		||||
* Fixnum
 | 
			
		||||
* Bignum
 | 
			
		||||
* Float
 | 
			
		||||
 | 
			
		||||
  Fixnums, Bignums and Floats are frozen.
 | 
			
		||||
 | 
			
		||||
* Signal.trap
 | 
			
		||||
 | 
			
		||||
  See above.
 | 
			
		||||
 | 
			
		||||
* Merge Onigmo.
 | 
			
		||||
  https://github.com/k-takata/Onigmo
 | 
			
		||||
 | 
			
		||||
* The :close_others option is true by default for system() and exec().
 | 
			
		||||
  Also, the close-on-exec flag is set by default for all new file descriptors.
 | 
			
		||||
  This means file descriptors doesn't inherit to spawned process unless
 | 
			
		||||
  explicitly requested such as system(..., fd=>fd).
 | 
			
		||||
 | 
			
		||||
* Kernel#respond_to? against a protected method now returns false
 | 
			
		||||
  unless the second argument is true.
 | 
			
		||||
 | 
			
		||||
* Kernel#respond_to_missing?
 | 
			
		||||
* Kernel#initialize_clone
 | 
			
		||||
* Kernel#initialize_dup
 | 
			
		||||
 | 
			
		||||
  These methods are now private.
 | 
			
		||||
 | 
			
		||||
* Thread#join, Thread#value
 | 
			
		||||
 | 
			
		||||
  See above.
 | 
			
		||||
 | 
			
		||||
* Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize and Mutex#sleep
 | 
			
		||||
 | 
			
		||||
  See above.
 | 
			
		||||
 | 
			
		||||
=== Stdlib updates (outstanding ones only)
 | 
			
		||||
 | 
			
		||||
* cgi
 | 
			
		||||
  * Add HTML5 tag maker.
 | 
			
		||||
  * CGI#header has been renamed to CGI#http_header and
 | 
			
		||||
    aliased to CGI#header.
 | 
			
		||||
  * When HTML5 tagmaker called, overwrite CGI#header,
 | 
			
		||||
    CGI#header function is to create a <header> element.
 | 
			
		||||
 | 
			
		||||
* CSV
 | 
			
		||||
  * Removed CSV::dump and CSV::load to protect users from dangerous
 | 
			
		||||
    serialization vulnerability
 | 
			
		||||
 | 
			
		||||
* iconv
 | 
			
		||||
  * Iconv has been removed. Use String#encode instead.
 | 
			
		||||
 | 
			
		||||
* io/console
 | 
			
		||||
  * new methods:
 | 
			
		||||
    * added IO#cooked which sets the terminal to cooked mode within the given block.
 | 
			
		||||
    * added IO#cooked! which sets the terminal to cooked.
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * IO#raw, IO#raw!, and IO#getch accept keyword arguments, :min and :time.
 | 
			
		||||
 | 
			
		||||
* io/wait
 | 
			
		||||
  * new features:
 | 
			
		||||
    * added IO#wait_writable method.
 | 
			
		||||
    * added IO#wait_readable method as alias of IO#wait.
 | 
			
		||||
 | 
			
		||||
* json
 | 
			
		||||
  * updated to 1.7.7.
 | 
			
		||||
 | 
			
		||||
* net/http
 | 
			
		||||
  * new features:
 | 
			
		||||
    * Proxies are now automatically detected from the http_proxy environment
 | 
			
		||||
      variable.  See Net::HTTP::new for details.
 | 
			
		||||
    * gzip and deflate compression are now requested for all requests by
 | 
			
		||||
      default.  See Net::HTTP for details.
 | 
			
		||||
    * SSL sessions are now reused across connections for a single instance.
 | 
			
		||||
      This speeds up connection by using a previously negotiated session.
 | 
			
		||||
    * Requests may be created from a URI which sets the request_uri and host
 | 
			
		||||
      header of the request (but does not change the host connected to).
 | 
			
		||||
    * Responses contain the URI requested which allows easier implementation of
 | 
			
		||||
      redirect following.
 | 
			
		||||
  * new methods:
 | 
			
		||||
    * Net::HTTP#local_host
 | 
			
		||||
    * Net::HTTP#local_host=
 | 
			
		||||
    * Net::HTTP#local_port
 | 
			
		||||
    * Net::HTTP#local_port=
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Net::HTTP#connect uses local_host and local_port if specified.
 | 
			
		||||
 | 
			
		||||
* net/imap
 | 
			
		||||
  * new methods:
 | 
			
		||||
    * Net::IMAP.default_port
 | 
			
		||||
    * Net::IMAP.default_imap_port
 | 
			
		||||
    * Net::IMAP.default_tls_port
 | 
			
		||||
    * Net::IMAP.default_ssl_port
 | 
			
		||||
    * Net::IMAP.default_imaps_port
 | 
			
		||||
 | 
			
		||||
* objspace
 | 
			
		||||
  * new method:
 | 
			
		||||
    * ObjectSpace.reachable_objects_from(obj)
 | 
			
		||||
 | 
			
		||||
* openssl
 | 
			
		||||
  * Consistently raise an error when trying to encode nil values. All instances
 | 
			
		||||
    of OpenSSL::ASN1::Primitive now raise TypeError when calling to_der on an
 | 
			
		||||
    instance whose value is nil. All instances of OpenSSL::ASN1::Constructive
 | 
			
		||||
    raise NoMethodError in the same case. Constructing such values is still
 | 
			
		||||
    permitted.
 | 
			
		||||
  * TLS 1.1 & 1.2 support by setting OpenSSL::SSL::SSLContext#ssl_version to
 | 
			
		||||
    :TLSv1_2, :TLSv1_2_server, :TLSv1_2_client or :TLSv1_1, :TLSv1_1_server
 | 
			
		||||
    :TLSv1_1_client. The version being effectively used can be queried
 | 
			
		||||
    with OpenSSL::SSL#ssl_version. Furthermore, it is also possible to
 | 
			
		||||
    blacklist the new TLS versions with OpenSSL::SSL:OP_NO_TLSv1_1 and
 | 
			
		||||
    OpenSSL::SSL::OP_NO_TLSv1_2.
 | 
			
		||||
  * Added OpenSSL::SSL::SSLContext#renegotiation_cb. A user-defined callback
 | 
			
		||||
    may be set which gets called whenever a new handshake is negotiated. This
 | 
			
		||||
    also allows to programmatically decline (client) renegotiation attempts.
 | 
			
		||||
  * Support for "0/n" splitting of records as BEAST mitigation via
 | 
			
		||||
    OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS.
 | 
			
		||||
  * The default options for OpenSSL::SSL::SSLContext have changed to
 | 
			
		||||
    OpenSSL::SSL::OP_ALL & ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS
 | 
			
		||||
    instead of OpenSSL::SSL::OP_ALL only. This enables the countermeasure for
 | 
			
		||||
    the BEAST attack by default.
 | 
			
		||||
  * OpenSSL requires passwords for decrypting PEM-encoded files to be at least
 | 
			
		||||
    four characters long. This led to awkward situations where an export with
 | 
			
		||||
    a password with fewer than four characters was possible, but accessing the
 | 
			
		||||
    file afterwards failed. OpenSSL::PKey::RSA, OpenSSL::PKey::DSA and
 | 
			
		||||
    OpenSSL::PKey::EC therefore now enforce the same check when exporting a
 | 
			
		||||
    private key to PEM with a password - it has to be at least four characters
 | 
			
		||||
    long.
 | 
			
		||||
  * SSL/TLS support for the Next Protocol Negotiation extension. Supported
 | 
			
		||||
    with OpenSSL 1.0.1 and higher.
 | 
			
		||||
  * OpenSSL::OPENSSL_FIPS allows client applications to detect whether OpenSSL
 | 
			
		||||
    is FIPS-enabled. OpenSSL.fips_mode= allows turning on and off FIPS mode
 | 
			
		||||
    manually in order to adapt to situations where FIPS mode would be an
 | 
			
		||||
    explicit requirement.
 | 
			
		||||
  * Authenticated Encryption with Associated Data (AEAD) is supported via
 | 
			
		||||
    Cipher#auth_data= and Cipher#auth_tag/Cipher#auth_tag=.
 | 
			
		||||
    Currently (OpenSSL 1.0.1c), only GCM mode is supported.
 | 
			
		||||
 | 
			
		||||
* ostruct
 | 
			
		||||
  * new methods:
 | 
			
		||||
    * OpenStruct#[], []=
 | 
			
		||||
    * OpenStruct#each_pair
 | 
			
		||||
    * OpenStruct#eql?
 | 
			
		||||
    * OpenStruct#hash
 | 
			
		||||
    * OpenStruct#to_h converts the struct to a hash.
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * OpenStruct.new also accepts an OpenStruct / Struct.
 | 
			
		||||
 | 
			
		||||
* pathname
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Pathname#find returns an enumerator if no block is given.
 | 
			
		||||
 | 
			
		||||
* rake
 | 
			
		||||
  * rake has been updated to version 0.9.5.
 | 
			
		||||
 | 
			
		||||
    This version is backwards-compatible with previous rake versions and
 | 
			
		||||
    contains many bug fixes.
 | 
			
		||||
 | 
			
		||||
    See
 | 
			
		||||
    http://rake.rubyforge.org/doc/release_notes/rake-0_9_5_rdoc.html for a list
 | 
			
		||||
    of changes in rake 0.9.3, 0.9.4 and 0.9.5.
 | 
			
		||||
 | 
			
		||||
* RDoc
 | 
			
		||||
  * RDoc has been updated to version 4.0
 | 
			
		||||
 | 
			
		||||
    This version is largely backwards-compatible with previous rdoc versions.
 | 
			
		||||
    The most notable change is an update to the ri data format (ri data must
 | 
			
		||||
    be regenerated for gems shared across rdoc versions).  Further API changes
 | 
			
		||||
    are internal and won't affect most users.
 | 
			
		||||
 | 
			
		||||
    Notable changes include:
 | 
			
		||||
 | 
			
		||||
    * Page support for ri.  Try `ri ruby:` for a list of pages in ruby or
 | 
			
		||||
      `ri ruby:syntax/literals` for the syntax documentation for literals.
 | 
			
		||||
 | 
			
		||||
      This also works for gems such as `ri rspec:README` for the rspec gem's
 | 
			
		||||
      README file.
 | 
			
		||||
    * Markdown support.  See ri RDoc::Markdown for details.
 | 
			
		||||
 | 
			
		||||
    See https://github.com/rdoc/rdoc/blob/master/History.rdoc for a full list
 | 
			
		||||
    of changes in rdoc 4.0.
 | 
			
		||||
 | 
			
		||||
* resolv
 | 
			
		||||
  * new methods:
 | 
			
		||||
    * Resolv::DNS#timeouts=
 | 
			
		||||
    * Resolv::DNS::Config#timeouts=
 | 
			
		||||
 | 
			
		||||
* rexml
 | 
			
		||||
  * REXML::Document#write supports Hash arguments.
 | 
			
		||||
  * REXML::Document#write supports new :encoding option. It changes
 | 
			
		||||
    XML document encoding. Without :encoding option, encoding in
 | 
			
		||||
    XML declaration is used for XML document encoding.
 | 
			
		||||
 | 
			
		||||
* RubyGems
 | 
			
		||||
  * Updated to 2.0.0
 | 
			
		||||
 | 
			
		||||
    RubyGems 2.0.0 features the following improvements:
 | 
			
		||||
 | 
			
		||||
    * Improved support for default gems shipping with ruby 2.0.0+
 | 
			
		||||
    * A gem can have arbitrary metadata through Gem::Specification#metadata
 | 
			
		||||
    * `gem search` now defaults to --remote and is anchored like gem list.
 | 
			
		||||
    * Added --document to replace --rdoc and --ri.  Use --no-document to
 | 
			
		||||
      disable documentation, --document=rdoc to only generate rdoc.
 | 
			
		||||
    * Only ri-format documentation is generated by default.
 | 
			
		||||
    * `gem server` uses RDoc::Servlet from RDoc 4.0 to generate HTML
 | 
			
		||||
      documentation.
 | 
			
		||||
 | 
			
		||||
    For an expanded list of updates and bug fixes see:
 | 
			
		||||
    https://github.com/rubygems/rubygems/blob/master/History.txt
 | 
			
		||||
 | 
			
		||||
* shellwords
 | 
			
		||||
  * Shellwords#shellescape now stringifies the given object using to_s.
 | 
			
		||||
  * Shellwords#shelljoin accepts non-string objects in the given
 | 
			
		||||
    array, each of which is stringified using to_s.
 | 
			
		||||
 | 
			
		||||
* stringio
 | 
			
		||||
  * deprecated methods:
 | 
			
		||||
    * StringIO#lines, #bytes, #chars and #codepoints are deprecated.
 | 
			
		||||
 | 
			
		||||
* syslog
 | 
			
		||||
  * Added Syslog::Logger which provides a Logger API atop Syslog.
 | 
			
		||||
  * Syslog::Priority, Syslog::Level, Syslog::Option and Syslog::Macros
 | 
			
		||||
    are introduced for easy detection of available constants on a
 | 
			
		||||
    running system.
 | 
			
		||||
 | 
			
		||||
* tmpdir
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * Dir.mktmpdir uses FileUtils.remove_entry instead of
 | 
			
		||||
      FileUtils.remove_entry_secure.  This means that applications should not
 | 
			
		||||
      change the permission of the created temporary directory to make
 | 
			
		||||
      accessible from other users.
 | 
			
		||||
 | 
			
		||||
* yaml
 | 
			
		||||
  * Syck has been removed.  YAML now completely depends on libyaml being
 | 
			
		||||
    installed.
 | 
			
		||||
  * libyaml is now bundled with ruby, for cases where the library is not
 | 
			
		||||
    installed locally.
 | 
			
		||||
 | 
			
		||||
* zlib
 | 
			
		||||
  * Added streaming support for Zlib::Inflate and Zlib::Deflate.  This allows
 | 
			
		||||
    processing of a stream without the use of large amounts of memory.
 | 
			
		||||
  * Added support for the new deflate strategies Zlib::RLE and Zlib::FIXED.
 | 
			
		||||
  * Zlib streams are now processed without the GVL.  This allows gzip, zlib and
 | 
			
		||||
    deflate streams to be processed in parallel.
 | 
			
		||||
  * deprecated methods:
 | 
			
		||||
    * Zlib::GzipReader#lines and #bytes are deprecated.
 | 
			
		||||
 | 
			
		||||
=== Stdlib compatibility issues (excluding feature bug fixes)
 | 
			
		||||
 | 
			
		||||
* OpenStruct new methods can conflict with custom attributes named
 | 
			
		||||
  "each_pair", "eql?", "hash" or "to_h".
 | 
			
		||||
 | 
			
		||||
* Dir.mktmpdir in lib/tmpdir.rb
 | 
			
		||||
 | 
			
		||||
  See above.
 | 
			
		||||
 | 
			
		||||
=== C API updates
 | 
			
		||||
 | 
			
		||||
* NUM2SHORT() and NUM2USHORT() added. They are similar to NUM2INT, but short.
 | 
			
		||||
 | 
			
		||||
* rb_newobj_of() and NEWOBJ_OF() added. They create a new object of a given class.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										24015
									
								
								doc/ChangeLog-2.0.0
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24015
									
								
								doc/ChangeLog-2.0.0
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										531
									
								
								doc/NEWS-2.0.0
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										531
									
								
								doc/NEWS-2.0.0
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,531 @@
 | 
			
		|||
# -*- rdoc -*-
 | 
			
		||||
 | 
			
		||||
= NEWS for Ruby 2.0.0
 | 
			
		||||
 | 
			
		||||
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.3 release
 | 
			
		||||
 | 
			
		||||
=== Language changes
 | 
			
		||||
 | 
			
		||||
* Added keyword arguments.
 | 
			
		||||
 | 
			
		||||
* Added %i and %I for symbol list creation (similar to %w and %W).
 | 
			
		||||
 | 
			
		||||
* Default source encoding is changed to UTF-8. (was US-ASCII)
 | 
			
		||||
 | 
			
		||||
* No warning for unused variables starting with '_'
 | 
			
		||||
 | 
			
		||||
=== Core classes updates (outstanding ones only)
 | 
			
		||||
 | 
			
		||||
* ARGF
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added ARGF#codepoints and ARGF#each_codepoint, like the corresponding
 | 
			
		||||
      methods for IO.
 | 
			
		||||
 | 
			
		||||
* Array
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Array#bsearch for binary search.
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * random parameter of Array#shuffle! and Array#sample now
 | 
			
		||||
      will be called with one argument, maximum value.
 | 
			
		||||
    * when given Range arguments, Array#values_at now returns nil for each
 | 
			
		||||
      value that is out-of-range.
 | 
			
		||||
 | 
			
		||||
* Enumerable
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Enumerable#lazy method for lazy enumeration.
 | 
			
		||||
 | 
			
		||||
* Enumerator
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Enumerator#size for lazy size evaluation.
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Enumerator.new accept an argument for lazy size evaluation.
 | 
			
		||||
  * new class Enumerator::Lazy for lazy enumeration
 | 
			
		||||
 | 
			
		||||
* ENV
 | 
			
		||||
  * aliased method:
 | 
			
		||||
    * ENV.to_h is a new alias for ENV.to_hash
 | 
			
		||||
 | 
			
		||||
* Fiber
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * Fiber#resume cannot resume a fiber which invokes "Fiber#transfer".
 | 
			
		||||
 | 
			
		||||
* File
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * File.fnmatch? now expands braces in the pattern if
 | 
			
		||||
      File::FNM_EXTGLOB option is given.
 | 
			
		||||
 | 
			
		||||
* GC
 | 
			
		||||
  * improvements:
 | 
			
		||||
    * introduced the bitmap marking which suppresses to copy a memory page
 | 
			
		||||
      with Copy-on-Write.
 | 
			
		||||
    * introduced the non-recursive marking which avoids unexpected stack overflow.
 | 
			
		||||
 | 
			
		||||
* GC::Profiler
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added GC::Profiler.raw_data which returns raw profile data for GC.
 | 
			
		||||
 | 
			
		||||
* Hash
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Hash#to_h as explicit conversion method, like Array#to_a.
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Hash#default_proc= can be passed nil to clear the default proc.
 | 
			
		||||
 | 
			
		||||
* IO
 | 
			
		||||
  * deprecated methods:
 | 
			
		||||
    * IO#lines, #bytes, #chars and #codepoints are deprecated.
 | 
			
		||||
 | 
			
		||||
* Kernel
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Kernel#Hash conversion method like Array() or Float().
 | 
			
		||||
    * added Kernel#__dir__ which returns the absolute path of the
 | 
			
		||||
      directory of the file from which this method is called.
 | 
			
		||||
    * added Kernel#caller_locations which returns an array of
 | 
			
		||||
      frame information objects.
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Kernel#warn accepts multiple args in like puts.
 | 
			
		||||
    * Kernel#caller accepts second optional argument `n' which specify
 | 
			
		||||
      required caller size.
 | 
			
		||||
    * Kernel#to_enum and enum_for accept a block for lazy size evaluation.
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * system() and exec() closes non-standard file descriptors
 | 
			
		||||
      (The default of :close_others option is changed to true by default.)
 | 
			
		||||
    * respond_to? against a protected method now returns false unless
 | 
			
		||||
      the second argument is true.
 | 
			
		||||
    * __callee__ has returned to the original behavior, and now
 | 
			
		||||
      returns the called name but not the original name in an
 | 
			
		||||
      aliased method.
 | 
			
		||||
    * Kernel#inspect does not call #to_s anymore
 | 
			
		||||
      (it used to call redefined #to_s).
 | 
			
		||||
 | 
			
		||||
* LoadError
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added LoadError#path method to return the file name that could not be
 | 
			
		||||
      loaded.
 | 
			
		||||
 | 
			
		||||
* Module
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Module#prepend which is similar to Module#include,
 | 
			
		||||
      however a method in the prepended module overrides the
 | 
			
		||||
      corresponding method in the prepending module.
 | 
			
		||||
    * added Module.prepended and Module.prepend_features, similar
 | 
			
		||||
      to included and append_features.
 | 
			
		||||
    * added Module#refine, which extends a class or module locally.
 | 
			
		||||
      [experimental]
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Module#define_method accepts a UnboundMethod from a Module.
 | 
			
		||||
    * Module#const_get accepts a qualified constant string, e.g.
 | 
			
		||||
      Object.const_get("Foo::Bar::Baz")
 | 
			
		||||
 | 
			
		||||
* Mutex
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Mutex#owned? which returns the mutex is held by current
 | 
			
		||||
      thread or not. [experimental]
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize
 | 
			
		||||
      and Mutex#sleep are no longer allowed to be used from trap handler
 | 
			
		||||
      and raise a ThreadError in such case.
 | 
			
		||||
    * Mutex#sleep may spurious wakeup. Check after wakeup.
 | 
			
		||||
 | 
			
		||||
* NilClass
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added nil.to_h which returns {}
 | 
			
		||||
 | 
			
		||||
* ObjectSpace::WeakMap
 | 
			
		||||
  * new low level class to hold weak references to objects.
 | 
			
		||||
 | 
			
		||||
* Proc
 | 
			
		||||
  * incompatible change:
 | 
			
		||||
    * removed Proc#== and #eql? so two procs are == only when they are
 | 
			
		||||
      the same object.
 | 
			
		||||
 | 
			
		||||
* Process
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added getsid for getting session id (unix only).
 | 
			
		||||
 | 
			
		||||
* Range
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Range#size for lazy size evaluation.
 | 
			
		||||
    * added Range#bsearch for binary search.
 | 
			
		||||
 | 
			
		||||
* RubyVM (MRI specific)
 | 
			
		||||
  * added RubyVM::InstructionSequence.of to get the instruction sequence
 | 
			
		||||
    from a method or a block.
 | 
			
		||||
  * added RubyVM::InstructionSequence#path, #absolute_path, #label,
 | 
			
		||||
    #base_label and #first_lineno to retrieve information from where
 | 
			
		||||
    the instruction sequence was defined.
 | 
			
		||||
  * added Environment variables to specify stack usage:
 | 
			
		||||
    * RUBY_THREAD_VM_STACK_SIZE: vm stack size used at thread creation.
 | 
			
		||||
      default: 128KB (32bit CPU) or 256KB (64bit CPU).
 | 
			
		||||
    * RUBY_THREAD_MACHINE_STACK_SIZE: machine stack size used at thread
 | 
			
		||||
      creation. default: 512KB or 1024KB.
 | 
			
		||||
    * RUBY_FIBER_VM_STACK_SIZE: vm stack size used at fiber creation.
 | 
			
		||||
      default: 64KB or 128KB.
 | 
			
		||||
    * RUBY_FIBER_MACHINE_STACK_SIZE: machine stack size used at fiber
 | 
			
		||||
      creation. default: 256KB or 256KB.
 | 
			
		||||
    These variables are checked only at launched time.
 | 
			
		||||
  * added constant DEFAULT_PARAMS to get above default parameters.
 | 
			
		||||
 | 
			
		||||
* Signal
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Signal.signame which returns signal name
 | 
			
		||||
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * Signal.trap raises ArgumentError when :SEGV, :BUS, :ILL, :FPE, :VTALRM
 | 
			
		||||
      are specified.
 | 
			
		||||
 | 
			
		||||
* String
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added String#b returning a copied string whose encoding is ASCII-8BIT.
 | 
			
		||||
  * change return value:
 | 
			
		||||
    * String#lines now returns an array instead of an enumerator.
 | 
			
		||||
    * String#chars now returns an array instead of an enumerator.
 | 
			
		||||
    * String#codepoints now returns an array instead of an enumerator.
 | 
			
		||||
    * String#bytes now returns an array instead of an enumerator.
 | 
			
		||||
 | 
			
		||||
* Struct
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Struct#to_h returning values with keys corresponding to the
 | 
			
		||||
      instance variable names.
 | 
			
		||||
 | 
			
		||||
* Thread
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added Thread#thread_variable_get for getting thread local variables
 | 
			
		||||
      (these are different than Fiber local variables).
 | 
			
		||||
    * added Thread#thread_variable_set for setting thread local variables.
 | 
			
		||||
    * added Thread#thread_variables for getting a list of the thread local
 | 
			
		||||
      variable keys.
 | 
			
		||||
    * added Thread#thread_variable? for testing to see if a particular thread
 | 
			
		||||
      variable has been set.
 | 
			
		||||
    * added Thread.handle_interrupt as well as instance and singleton methods
 | 
			
		||||
      pending_interrupt? for asynchronous handling of exceptions
 | 
			
		||||
    * added Thread#backtrace_locations which returns similar information of
 | 
			
		||||
      Kernel#caller_locations.
 | 
			
		||||
  * new class Thread::Backtrace::Location to hold backtrace location
 | 
			
		||||
    information. These are returned by Thread#backtrace_locations and
 | 
			
		||||
    Kernel#caller_locations.
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * Thread#join and Thread#value now raises a ThreadError if target thread
 | 
			
		||||
      is the current or main thread.
 | 
			
		||||
 | 
			
		||||
* Time
 | 
			
		||||
  * change return value:
 | 
			
		||||
    * Time#to_s now returns US-ASCII encoding instead of BINARY.
 | 
			
		||||
 | 
			
		||||
* TracePoint
 | 
			
		||||
  * new class. This class is replacement of set_trace_func.
 | 
			
		||||
    Easy to use and efficient implementation.
 | 
			
		||||
 | 
			
		||||
* toplevel
 | 
			
		||||
  * added method:
 | 
			
		||||
    * added main.define_method which defines a global function.
 | 
			
		||||
    * added main.using, which imports refinements into the current file or
 | 
			
		||||
      eval string. [experimental]
 | 
			
		||||
 | 
			
		||||
=== Core classes compatibility issues (excluding feature bug fixes)
 | 
			
		||||
 | 
			
		||||
* Array#values_at
 | 
			
		||||
 | 
			
		||||
  See above.
 | 
			
		||||
 | 
			
		||||
* String#lines
 | 
			
		||||
* String#chars
 | 
			
		||||
* String#codepoints
 | 
			
		||||
* String#bytes
 | 
			
		||||
 | 
			
		||||
  These methods no longer return an Enumerator, although passing a
 | 
			
		||||
  block is still supported for backwards compatibility.
 | 
			
		||||
 | 
			
		||||
  Code like str.lines.with_index(1) { |line, lineno| ... } no longer
 | 
			
		||||
  works because str.lines returns an array.  Replace lines with
 | 
			
		||||
  each_line in such cases.
 | 
			
		||||
 | 
			
		||||
* IO#lines
 | 
			
		||||
* IO#chars
 | 
			
		||||
* IO#codepoints
 | 
			
		||||
* IO#bytes
 | 
			
		||||
* ARGF#lines
 | 
			
		||||
* ARGF#chars
 | 
			
		||||
* ARGF#bytes
 | 
			
		||||
* StringIO#lines
 | 
			
		||||
* StringIO#chars
 | 
			
		||||
* StringIO#codepoints
 | 
			
		||||
* StringIO#bytes
 | 
			
		||||
* Zlib::GzipReader#lines
 | 
			
		||||
* Zlib::GzipReader#bytes
 | 
			
		||||
 | 
			
		||||
  These methods are deprecated in favor of each_line, each_byte,
 | 
			
		||||
  each_char and each_codepoint.
 | 
			
		||||
 | 
			
		||||
* Proc#==
 | 
			
		||||
* Proc#eql?
 | 
			
		||||
 | 
			
		||||
  These methods were removed. Two procs are == only when they are
 | 
			
		||||
  the same object.
 | 
			
		||||
 | 
			
		||||
* Fixnum
 | 
			
		||||
* Bignum
 | 
			
		||||
* Float
 | 
			
		||||
 | 
			
		||||
  Fixnums, Bignums and Floats are frozen.
 | 
			
		||||
 | 
			
		||||
* Signal.trap
 | 
			
		||||
 | 
			
		||||
  See above.
 | 
			
		||||
 | 
			
		||||
* Merge Onigmo.
 | 
			
		||||
  https://github.com/k-takata/Onigmo
 | 
			
		||||
 | 
			
		||||
* The :close_others option is true by default for system() and exec().
 | 
			
		||||
  Also, the close-on-exec flag is set by default for all new file descriptors.
 | 
			
		||||
  This means file descriptors doesn't inherit to spawned process unless
 | 
			
		||||
  explicitly requested such as system(..., fd=>fd).
 | 
			
		||||
 | 
			
		||||
* Kernel#respond_to? against a protected method now returns false
 | 
			
		||||
  unless the second argument is true.
 | 
			
		||||
 | 
			
		||||
* Kernel#respond_to_missing?
 | 
			
		||||
* Kernel#initialize_clone
 | 
			
		||||
* Kernel#initialize_dup
 | 
			
		||||
 | 
			
		||||
  These methods are now private.
 | 
			
		||||
 | 
			
		||||
* Thread#join, Thread#value
 | 
			
		||||
 | 
			
		||||
  See above.
 | 
			
		||||
 | 
			
		||||
* Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize and Mutex#sleep
 | 
			
		||||
 | 
			
		||||
  See above.
 | 
			
		||||
 | 
			
		||||
=== Stdlib updates (outstanding ones only)
 | 
			
		||||
 | 
			
		||||
* cgi
 | 
			
		||||
  * Add HTML5 tag maker.
 | 
			
		||||
  * CGI#header has been renamed to CGI#http_header and
 | 
			
		||||
    aliased to CGI#header.
 | 
			
		||||
  * When HTML5 tagmaker called, overwrite CGI#header,
 | 
			
		||||
    CGI#header function is to create a <header> element.
 | 
			
		||||
 | 
			
		||||
* CSV
 | 
			
		||||
  * Removed CSV::dump and CSV::load to protect users from dangerous
 | 
			
		||||
    serialization vulnerability
 | 
			
		||||
 | 
			
		||||
* iconv
 | 
			
		||||
  * Iconv has been removed. Use String#encode instead.
 | 
			
		||||
 | 
			
		||||
* io/console
 | 
			
		||||
  * new methods:
 | 
			
		||||
    * added IO#cooked which sets the terminal to cooked mode within the given block.
 | 
			
		||||
    * added IO#cooked! which sets the terminal to cooked.
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * IO#raw, IO#raw!, and IO#getch accept keyword arguments, :min and :time.
 | 
			
		||||
 | 
			
		||||
* io/wait
 | 
			
		||||
  * new features:
 | 
			
		||||
    * added IO#wait_writable method.
 | 
			
		||||
    * added IO#wait_readable method as alias of IO#wait.
 | 
			
		||||
 | 
			
		||||
* json
 | 
			
		||||
  * updated to 1.7.7.
 | 
			
		||||
 | 
			
		||||
* net/http
 | 
			
		||||
  * new features:
 | 
			
		||||
    * Proxies are now automatically detected from the http_proxy environment
 | 
			
		||||
      variable.  See Net::HTTP::new for details.
 | 
			
		||||
    * gzip and deflate compression are now requested for all requests by
 | 
			
		||||
      default.  See Net::HTTP for details.
 | 
			
		||||
    * SSL sessions are now reused across connections for a single instance.
 | 
			
		||||
      This speeds up connection by using a previously negotiated session.
 | 
			
		||||
    * Requests may be created from a URI which sets the request_uri and host
 | 
			
		||||
      header of the request (but does not change the host connected to).
 | 
			
		||||
    * Responses contain the URI requested which allows easier implementation of
 | 
			
		||||
      redirect following.
 | 
			
		||||
  * new methods:
 | 
			
		||||
    * Net::HTTP#local_host
 | 
			
		||||
    * Net::HTTP#local_host=
 | 
			
		||||
    * Net::HTTP#local_port
 | 
			
		||||
    * Net::HTTP#local_port=
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Net::HTTP#connect uses local_host and local_port if specified.
 | 
			
		||||
 | 
			
		||||
* net/imap
 | 
			
		||||
  * new methods:
 | 
			
		||||
    * Net::IMAP.default_port
 | 
			
		||||
    * Net::IMAP.default_imap_port
 | 
			
		||||
    * Net::IMAP.default_tls_port
 | 
			
		||||
    * Net::IMAP.default_ssl_port
 | 
			
		||||
    * Net::IMAP.default_imaps_port
 | 
			
		||||
 | 
			
		||||
* objspace
 | 
			
		||||
  * new method:
 | 
			
		||||
    * ObjectSpace.reachable_objects_from(obj)
 | 
			
		||||
 | 
			
		||||
* openssl
 | 
			
		||||
  * Consistently raise an error when trying to encode nil values. All instances
 | 
			
		||||
    of OpenSSL::ASN1::Primitive now raise TypeError when calling to_der on an
 | 
			
		||||
    instance whose value is nil. All instances of OpenSSL::ASN1::Constructive
 | 
			
		||||
    raise NoMethodError in the same case. Constructing such values is still
 | 
			
		||||
    permitted.
 | 
			
		||||
  * TLS 1.1 & 1.2 support by setting OpenSSL::SSL::SSLContext#ssl_version to
 | 
			
		||||
    :TLSv1_2, :TLSv1_2_server, :TLSv1_2_client or :TLSv1_1, :TLSv1_1_server
 | 
			
		||||
    :TLSv1_1_client. The version being effectively used can be queried
 | 
			
		||||
    with OpenSSL::SSL#ssl_version. Furthermore, it is also possible to
 | 
			
		||||
    blacklist the new TLS versions with OpenSSL::SSL:OP_NO_TLSv1_1 and
 | 
			
		||||
    OpenSSL::SSL::OP_NO_TLSv1_2.
 | 
			
		||||
  * Added OpenSSL::SSL::SSLContext#renegotiation_cb. A user-defined callback
 | 
			
		||||
    may be set which gets called whenever a new handshake is negotiated. This
 | 
			
		||||
    also allows to programmatically decline (client) renegotiation attempts.
 | 
			
		||||
  * Support for "0/n" splitting of records as BEAST mitigation via
 | 
			
		||||
    OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS.
 | 
			
		||||
  * The default options for OpenSSL::SSL::SSLContext have changed to
 | 
			
		||||
    OpenSSL::SSL::OP_ALL & ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS
 | 
			
		||||
    instead of OpenSSL::SSL::OP_ALL only. This enables the countermeasure for
 | 
			
		||||
    the BEAST attack by default.
 | 
			
		||||
  * OpenSSL requires passwords for decrypting PEM-encoded files to be at least
 | 
			
		||||
    four characters long. This led to awkward situations where an export with
 | 
			
		||||
    a password with fewer than four characters was possible, but accessing the
 | 
			
		||||
    file afterwards failed. OpenSSL::PKey::RSA, OpenSSL::PKey::DSA and
 | 
			
		||||
    OpenSSL::PKey::EC therefore now enforce the same check when exporting a
 | 
			
		||||
    private key to PEM with a password - it has to be at least four characters
 | 
			
		||||
    long.
 | 
			
		||||
  * SSL/TLS support for the Next Protocol Negotiation extension. Supported
 | 
			
		||||
    with OpenSSL 1.0.1 and higher.
 | 
			
		||||
  * OpenSSL::OPENSSL_FIPS allows client applications to detect whether OpenSSL
 | 
			
		||||
    is FIPS-enabled. OpenSSL.fips_mode= allows turning on and off FIPS mode
 | 
			
		||||
    manually in order to adapt to situations where FIPS mode would be an
 | 
			
		||||
    explicit requirement.
 | 
			
		||||
  * Authenticated Encryption with Associated Data (AEAD) is supported via
 | 
			
		||||
    Cipher#auth_data= and Cipher#auth_tag/Cipher#auth_tag=.
 | 
			
		||||
    Currently (OpenSSL 1.0.1c), only GCM mode is supported.
 | 
			
		||||
 | 
			
		||||
* ostruct
 | 
			
		||||
  * new methods:
 | 
			
		||||
    * OpenStruct#[], []=
 | 
			
		||||
    * OpenStruct#each_pair
 | 
			
		||||
    * OpenStruct#eql?
 | 
			
		||||
    * OpenStruct#hash
 | 
			
		||||
    * OpenStruct#to_h converts the struct to a hash.
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * OpenStruct.new also accepts an OpenStruct / Struct.
 | 
			
		||||
 | 
			
		||||
* pathname
 | 
			
		||||
  * extended method:
 | 
			
		||||
    * Pathname#find returns an enumerator if no block is given.
 | 
			
		||||
 | 
			
		||||
* rake
 | 
			
		||||
  * rake has been updated to version 0.9.5.
 | 
			
		||||
 | 
			
		||||
    This version is backwards-compatible with previous rake versions and
 | 
			
		||||
    contains many bug fixes.
 | 
			
		||||
 | 
			
		||||
    See
 | 
			
		||||
    http://rake.rubyforge.org/doc/release_notes/rake-0_9_5_rdoc.html for a list
 | 
			
		||||
    of changes in rake 0.9.3, 0.9.4 and 0.9.5.
 | 
			
		||||
 | 
			
		||||
* RDoc
 | 
			
		||||
  * RDoc has been updated to version 4.0
 | 
			
		||||
 | 
			
		||||
    This version is largely backwards-compatible with previous rdoc versions.
 | 
			
		||||
    The most notable change is an update to the ri data format (ri data must
 | 
			
		||||
    be regenerated for gems shared across rdoc versions).  Further API changes
 | 
			
		||||
    are internal and won't affect most users.
 | 
			
		||||
 | 
			
		||||
    Notable changes include:
 | 
			
		||||
 | 
			
		||||
    * Page support for ri.  Try `ri ruby:` for a list of pages in ruby or
 | 
			
		||||
      `ri ruby:syntax/literals` for the syntax documentation for literals.
 | 
			
		||||
 | 
			
		||||
      This also works for gems such as `ri rspec:README` for the rspec gem's
 | 
			
		||||
      README file.
 | 
			
		||||
    * Markdown support.  See ri RDoc::Markdown for details.
 | 
			
		||||
 | 
			
		||||
    See https://github.com/rdoc/rdoc/blob/master/History.rdoc for a full list
 | 
			
		||||
    of changes in rdoc 4.0.
 | 
			
		||||
 | 
			
		||||
* resolv
 | 
			
		||||
  * new methods:
 | 
			
		||||
    * Resolv::DNS#timeouts=
 | 
			
		||||
    * Resolv::DNS::Config#timeouts=
 | 
			
		||||
 | 
			
		||||
* rexml
 | 
			
		||||
  * REXML::Document#write supports Hash arguments.
 | 
			
		||||
  * REXML::Document#write supports new :encoding option. It changes
 | 
			
		||||
    XML document encoding. Without :encoding option, encoding in
 | 
			
		||||
    XML declaration is used for XML document encoding.
 | 
			
		||||
 | 
			
		||||
* RubyGems
 | 
			
		||||
  * Updated to 2.0.0
 | 
			
		||||
 | 
			
		||||
    RubyGems 2.0.0 features the following improvements:
 | 
			
		||||
 | 
			
		||||
    * Improved support for default gems shipping with ruby 2.0.0+
 | 
			
		||||
    * A gem can have arbitrary metadata through Gem::Specification#metadata
 | 
			
		||||
    * `gem search` now defaults to --remote and is anchored like gem list.
 | 
			
		||||
    * Added --document to replace --rdoc and --ri.  Use --no-document to
 | 
			
		||||
      disable documentation, --document=rdoc to only generate rdoc.
 | 
			
		||||
    * Only ri-format documentation is generated by default.
 | 
			
		||||
    * `gem server` uses RDoc::Servlet from RDoc 4.0 to generate HTML
 | 
			
		||||
      documentation.
 | 
			
		||||
 | 
			
		||||
    For an expanded list of updates and bug fixes see:
 | 
			
		||||
    https://github.com/rubygems/rubygems/blob/master/History.txt
 | 
			
		||||
 | 
			
		||||
* shellwords
 | 
			
		||||
  * Shellwords#shellescape now stringifies the given object using to_s.
 | 
			
		||||
  * Shellwords#shelljoin accepts non-string objects in the given
 | 
			
		||||
    array, each of which is stringified using to_s.
 | 
			
		||||
 | 
			
		||||
* stringio
 | 
			
		||||
  * deprecated methods:
 | 
			
		||||
    * StringIO#lines, #bytes, #chars and #codepoints are deprecated.
 | 
			
		||||
 | 
			
		||||
* syslog
 | 
			
		||||
  * Added Syslog::Logger which provides a Logger API atop Syslog.
 | 
			
		||||
  * Syslog::Priority, Syslog::Level, Syslog::Option and Syslog::Macros
 | 
			
		||||
    are introduced for easy detection of available constants on a
 | 
			
		||||
    running system.
 | 
			
		||||
 | 
			
		||||
* tmpdir
 | 
			
		||||
  * incompatible changes:
 | 
			
		||||
    * Dir.mktmpdir uses FileUtils.remove_entry instead of
 | 
			
		||||
      FileUtils.remove_entry_secure.  This means that applications should not
 | 
			
		||||
      change the permission of the created temporary directory to make
 | 
			
		||||
      accessible from other users.
 | 
			
		||||
 | 
			
		||||
* yaml
 | 
			
		||||
  * Syck has been removed.  YAML now completely depends on libyaml being
 | 
			
		||||
    installed.
 | 
			
		||||
  * libyaml is now bundled with ruby, for cases where the library is not
 | 
			
		||||
    installed locally.
 | 
			
		||||
 | 
			
		||||
* zlib
 | 
			
		||||
  * Added streaming support for Zlib::Inflate and Zlib::Deflate.  This allows
 | 
			
		||||
    processing of a stream without the use of large amounts of memory.
 | 
			
		||||
  * Added support for the new deflate strategies Zlib::RLE and Zlib::FIXED.
 | 
			
		||||
  * Zlib streams are now processed without the GVL.  This allows gzip, zlib and
 | 
			
		||||
    deflate streams to be processed in parallel.
 | 
			
		||||
  * deprecated methods:
 | 
			
		||||
    * Zlib::GzipReader#lines and #bytes are deprecated.
 | 
			
		||||
 | 
			
		||||
=== Stdlib compatibility issues (excluding feature bug fixes)
 | 
			
		||||
 | 
			
		||||
* OpenStruct new methods can conflict with custom attributes named
 | 
			
		||||
  "each_pair", "eql?", "hash" or "to_h".
 | 
			
		||||
 | 
			
		||||
* Dir.mktmpdir in lib/tmpdir.rb
 | 
			
		||||
 | 
			
		||||
  See above.
 | 
			
		||||
 | 
			
		||||
=== C API updates
 | 
			
		||||
 | 
			
		||||
* NUM2SHORT() and NUM2USHORT() added. They are similar to NUM2INT, but short.
 | 
			
		||||
 | 
			
		||||
* rb_newobj_of() and NEWOBJ_OF() added. They create a new object of a given class.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue