File: C:/Ruby27-x64/share/doc/ruby/html/NEWS-1_9_3.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>NEWS-1.9.3 - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "./";
var index_rel_prefix = "./";
</script>
<script src="./js/navigation.js" defer></script>
<script src="./js/search.js" defer></script>
<script src="./js/search_index.js" defer></script>
<script src="./js/searcher.js" defer></script>
<script src="./js/darkfish.js" defer></script>
<link href="./css/fonts.css" rel="stylesheet">
<link href="./css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="file">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="./index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="./table_of_contents.html#pages">Pages</a>
<a href="./table_of_contents.html#classes">Classes</a>
<a href="./table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div class="nav-section">
<h3>Table of Contents</h3>
<ul class="link-list" role="directory">
<li><a href="#label-NEWS+for+Ruby+1.9.3">NEWS for Ruby 1.9.3</a>
<li><a href="#label-Changes+since+the+1.9.2+release">Changes since the 1.9.2 release</a>
<li><a href="#label-License">License</a>
<li><a href="#label-Known+platform+dependent+issues">Known platform dependent issues</a>
<li><a href="#label-OS+X+Lion">OS X Lion</a>
<li><a href="#label-C+API+updates">C API updates</a>
<li><a href="#label-Library+updates+-28outstanding+ones+only-29">Library updates (outstanding ones only)</a>
<li><a href="#label-Language+changes">Language changes</a>
<li><a href="#label-Compatibility+issues+-28excluding+feature+bug+fixes-29">Compatibility issues (excluding feature bug fixes)</a>
</ul>
</div>
<div id="project-metadata">
<div id="fileindex-section" class="nav-section">
<h3>Pages</h3>
<ul class="link-list">
<li><a href="./CONTRIBUTING_md.html">CONTRIBUTING</a>
<li><a href="./COPYING.html">COPYING</a>
<li><a href="./COPYING_ja.html">COPYING.ja</a>
<li><a href="./LEGAL.html">LEGAL</a>
<li><a href="./NEWS.html">NEWS</a>
<li><a href="./NEWS-1_8_7.html">NEWS-1.8.7</a>
<li><a href="./NEWS-1_9_1.html">NEWS-1.9.1</a>
<li><a href="./NEWS-1_9_2.html">NEWS-1.9.2</a>
<li><a href="./NEWS-1_9_3.html">NEWS-1.9.3</a>
<li><a href="./NEWS-2_0_0.html">NEWS-2.0.0</a>
<li><a href="./NEWS-2_1_0.html">NEWS-2.1.0</a>
<li><a href="./NEWS-2_2_0.html">NEWS-2.2.0</a>
<li><a href="./NEWS-2_3_0.html">NEWS-2.3.0</a>
<li><a href="./NEWS-2_4_0.html">NEWS-2.4.0</a>
<li><a href="./NEWS-2_5_0.html">NEWS-2.5.0</a>
<li><a href="./NEWS-2_6_0.html">NEWS-2.6.0</a>
<li><a href="./README_ja_md.html">README.ja</a>
<li><a href="./README_md.html">README</a>
<li><a href="./bug_triaging_rdoc.html">bug_triaging</a>
<li><a href="./contributing_rdoc.html">contributing</a>
<li><a href="./contributors_rdoc.html">contributors</a>
<li><a href="./dtrace_probes_rdoc.html">dtrace_probes</a>
<li><a href="./extension_ja_rdoc.html">extension.ja</a>
<li><a href="./extension_rdoc.html">extension</a>
<li><a href="./globals_rdoc.html">globals</a>
<li><a href="./keywords_rdoc.html">keywords</a>
<li><a href="./lib/racc/pre-setup.html">pre-setup</a>
<li><a href="./lib/racc/rdoc/grammar_en_rdoc.html">grammar.en</a>
<li><a href="./maintainers_rdoc.html">maintainers</a>
<li><a href="./marshal_rdoc.html">marshal</a>
<li><a href="./regexp_rdoc.html">regexp</a>
<li><a href="./security_rdoc.html">security</a>
<li><a href="./signals_rdoc.html">signals</a>
<li><a href="./standard_library_rdoc.html">standard_library</a>
<li><a href="./syntax_rdoc.html">syntax</a>
<li><a href="./syntax/assignment_rdoc.html">assignment</a>
<li><a href="./syntax/calling_methods_rdoc.html">calling_methods</a>
<li><a href="./syntax/comments_rdoc.html">comments</a>
<li><a href="./syntax/control_expressions_rdoc.html">control_expressions</a>
<li><a href="./syntax/exceptions_rdoc.html">exceptions</a>
<li><a href="./syntax/literals_rdoc.html">literals</a>
<li><a href="./syntax/methods_rdoc.html">methods</a>
<li><a href="./syntax/miscellaneous_rdoc.html">miscellaneous</a>
<li><a href="./syntax/modules_and_classes_rdoc.html">modules_and_classes</a>
<li><a href="./syntax/precedence_rdoc.html">precedence</a>
<li><a href="./syntax/refinements_rdoc.html">refinements</a>
<li><a href="./win32/README_win32.html">README.win32</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-label="Page NEWS-1.9.3">
<h1 id="label-NEWS+for+Ruby+1.9.3"><a href="NEWS.html">NEWS</a> for Ruby 1.9.3<span><a href="#label-NEWS+for+Ruby+1.9.3">¶</a> <a href="#top">↑</a></span></h1>
<p>This document is a list of user visible feature changes made between releases except for bug fixes.</p>
<p>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.</p>
<h2 id="label-Changes+since+the+1.9.2+release">Changes since the 1.9.2 release<span><a href="#label-Changes+since+the+1.9.2+release">¶</a> <a href="#top">↑</a></span></h2>
<h3 id="label-License">License<span><a href="#label-License">¶</a> <a href="#top">↑</a></span></h3>
<ul><li>
<p>Ruby's License is changed from a dual license with GPLv2 to a dual license with 2-clause BSDL.</p>
</li></ul>
<h3 id="label-Known+platform+dependent+issues">Known platform dependent issues<span><a href="#label-Known+platform+dependent+issues">¶</a> <a href="#top">↑</a></span></h3>
<h4 id="label-OS+X+Lion">OS X Lion<span><a href="#label-OS+X+Lion">¶</a> <a href="#top">↑</a></span></h4>
<ul><li>
<p>You have to configure ruby with '–with-gcc=gcc-4.2' if you're using Xcode 4.1, or, if you're using Xcode 4.2, you have to configure ruby with '–with-gcc=clang'.</p>
</li></ul>
<h3 id="label-C+API+updates">C API updates<span><a href="#label-C+API+updates">¶</a> <a href="#top">↑</a></span></h3>
<ul><li>
<p>rb_scan_args() is enhanced with support for option hash argument extraction.</p>
</li><li>
<p>ruby_vm_at_exit() added. This enables extension libs to hook a VM termination.</p>
</li><li>
<p>rb_reserved_fd_p() added. If you want to close all file descriptors, check using this API. [ruby-core:37759]</p>
</li></ul>
<h3 id="label-Library+updates+-28outstanding+ones+only-29">Library updates (outstanding ones only)<span><a href="#label-Library+updates+-28outstanding+ones+only-29">¶</a> <a href="#top">↑</a></span></h3>
<ul><li>
<p>builtin classes</p>
<ul><li>
<p><a href="ARGF.html"><code>ARGF</code></a></p>
<ul><li>
<p>new methods:</p>
<ul><li>
<p><a href="ARGF.html#method-i-print"><code>ARGF.print</code></a></p>
</li><li>
<p><a href="ARGF.html#method-i-printf"><code>ARGF.printf</code></a></p>
</li><li>
<p><a href="ARGF.html#method-i-putc"><code>ARGF.putc</code></a></p>
</li><li>
<p><a href="ARGF.html#method-i-puts"><code>ARGF.puts</code></a></p>
</li><li>
<p><a href="ARGF.html#method-i-read_nonblock"><code>ARGF.read_nonblock</code></a></p>
</li><li>
<p><a href="ARGF.html#method-i-to_write_io"><code>ARGF.to_write_io</code></a></p>
</li><li>
<p><a href="ARGF.html#method-i-write"><code>ARGF.write</code></a></p>
</li></ul>
</li></ul>
</li><li>
<p><a href="Array.html"><code>Array</code></a></p>
<ul><li>
<p>extended method:</p>
<ul><li>
<p><a href="Array.html#method-i-pack"><code>Array#pack</code></a> supports endian modifiers</p>
</li></ul>
</li></ul>
</li><li>
<p>Bignum</p>
<ul><li>
<p>Multiplication algorithm for Bignums with a large number of digits over 150 BDIGITs is changed in order to reduce its calculation time. Now such large Bignums are multiplied by using Toom-3 algorithm.</p>
</li></ul>
</li><li>
<p><a href="Encoding.html"><code>Encoding</code></a></p>
<ul><li>
<p>new encodings:</p>
<ul><li>
<p>CP950</p>
</li><li>
<p>CP951</p>
</li><li>
<p>UTF-16</p>
</li><li>
<p>UTF-32</p>
</li></ul>
</li><li>
<p>change alias:</p>
<ul><li>
<p>SJIS is Windows-31J</p>
</li></ul>
</li></ul>
</li><li>
<p><a href="File.html"><code>File</code></a></p>
<ul><li>
<p>new constant:</p>
<ul><li>
<p>File::NULL name of NULL device.</p>
</li><li>
<p>File::DIRECT name of O_DIRECT.</p>
</li></ul>
</li></ul>
</li><li>
<p><a href="IO.html"><code>IO</code></a></p>
<ul><li>
<p>extended method:</p>
<ul><li>
<p><a href="IO.html#method-i-putc"><code>IO#putc</code></a> supports multibyte characters</p>
</li></ul>
</li><li>
<p>new methods:</p>
<ul><li>
<p><a href="IO.html#method-i-advise"><code>IO#advise</code></a></p>
</li><li>
<p><a href="IO.html#method-c-write"><code>IO.write</code></a>(name, string, [offset] ) Write `string` to file `name`. Opposite with <a href="IO.html#method-c-read"><code>File.read</code></a>.</p>
</li><li>
<p><a href="IO.html#method-c-binwrite"><code>IO.binwrite</code></a>(name, string, [offset] ) binary version of <a href="IO.html#method-c-write"><code>IO.write</code></a>.</p>
</li></ul>
</li></ul>
</li><li>
<p><a href="Kernel.html"><code>Kernel</code></a></p>
<ul><li>
<p>move #__id__ to <a href="BasicObject.html"><code>BasicObject</code></a>.</p>
</li><li>
<p>extended method:</p>
<ul><li>
<p><a href="Kernel.html#method-i-rand"><code>Kernel#rand</code></a> supports range argument</p>
</li></ul>
</li></ul>
</li><li>
<p><a href="Module.html"><code>Module</code></a></p>
<ul><li>
<p>new methods:</p>
<ul><li>
<p><a href="Module.html#method-i-private_constant"><code>Module#private_constant</code></a></p>
</li><li>
<p><a href="Module.html#method-i-public_constant"><code>Module#public_constant</code></a></p>
</li></ul>
</li></ul>
</li><li>
<p><a href="Random.html"><code>Random</code></a></p>
<ul><li>
<p>extended method:</p>
<ul><li>
<p><a href="Random.html#method-c-rand"><code>Random.rand</code></a> supports range argument</p>
</li></ul>
</li></ul>
</li><li>
<p><a href="String.html"><code>String</code></a></p>
<ul><li>
<p>extended method:</p>
<ul><li>
<p><a href="String.html#method-i-unpack"><code>String#unpack</code></a> supports endian modifiers</p>
</li></ul>
</li><li>
<p>new method:</p>
<ul><li>
<p><a href="String.html#method-i-prepend"><code>String#prepend</code></a></p>
</li><li>
<p><a href="String.html#method-i-byteslice"><code>String#byteslice</code></a></p>
</li></ul>
</li></ul>
</li><li>
<p><a href="Time.html"><code>Time</code></a></p>
<ul><li>
<p>extended method:</p>
<ul><li>
<p><a href="Time.html#method-i-strftime"><code>Time#strftime</code></a> supports %:z and %::z.</p>
</li></ul>
</li></ul>
</li><li>
<p><a href="Process.html"><code>Process</code></a></p>
<ul><li>
<p>Process#maxgroups and Process#maxgroups= now raise <a href="NotImplementedError.html"><code>NotImplementedError</code></a> if the platform don't support supplementary groups concept.</p>
</li></ul>
</li></ul>
</li><li>
<p>bigdecimal</p>
<ul><li>
<p><a href="BigDecimal.html#method-i-power"><code>BigDecimal#power</code></a> and <a href="BigDecimal.html#method-i-2A"><code>BigDecimal#*</code></a>* support non-integral exponent.</p>
</li><li>
<p><a href="Kernel.html"><code>Kernel</code></a>.BigDecimal and <a href="BasicObject.html#method-c-new"><code>BigDecimal.new</code></a> now accept instances of <a href="Integer.html"><code>Integer</code></a>, <a href="Rational.html"><code>Rational</code></a>, <a href="Float.html"><code>Float</code></a>, and <a href="BigDecimal.html"><code>BigDecimal</code></a>. If you pass a <a href="Rational.html"><code>Rational</code></a> or a <a href="Float.html"><code>Float</code></a> to them, you must specify the precision to produce the digits of a <a href="BigDecimal.html"><code>BigDecimal</code></a>.</p>
</li><li>
<p>The behavior of <a href="BigDecimal.html#method-i-coerce"><code>BigDecimal#coerce</code></a> with a <a href="Rational.html"><code>Rational</code></a> is changed. It uses the precision of the receiver <a href="BigDecimal.html"><code>BigDecimal</code></a> to produce the digits of a <a href="BigDecimal.html"><code>BigDecimal</code></a> from the given <a href="Rational.html"><code>Rational</code></a>.</p>
</li></ul>
</li><li>
<p>bigdecimal/util</p>
<ul><li>
<p><a href="BigDecimal.html#method-i-to_d"><code>BigDecimal#to_d</code></a> and <a href="Integer.html#method-i-to_d"><code>Integer#to_d</code></a> are added.</p>
</li><li>
<p><a href="Float.html#method-i-to_d"><code>Float#to_d</code></a> accepts a precision.</p>
</li><li>
<p><a href="Rational.html#method-i-to_d"><code>Rational#to_d</code></a> raises <a href="ArgumentError.html"><code>ArgumentError</code></a> when passing zero or negative precision.</p>
</li><li>
<p><a href="Rational.html#method-i-to_d"><code>Rational#to_d</code></a></p>
<ul><li>
<p>Zero and an implicit precision is deprecated. This feature is removed at the next release of bigdecimal.</p>
</li><li>
<p>A negative precision isn't supported. Be careful it is an incompatible change.</p>
</li></ul>
</li></ul>
</li><li>
<p>date</p>
<ul><li>
<p>Accepts flonum explicitly with limitations.</p>
<ul><li>
<p>If the given offset is flonum, <a href="DateTime.html"><code>DateTime</code></a> assumes its precision is at most second.</p>
<p><a href="DateTime.html#method-c-new"><code>DateTime.new</code></a>(2001,2,3,0,0,0,3.0/24) == <a href="DateTime.html#method-c-new"><code>DateTime.new</code></a>(2001,2,3,0,0,0,'+03:00')</p>
<pre class="ruby"><span class="ruby-comment">#=> true</span>
</pre>
</li><li>
<p>If the given operand for -/+ is flonum, <a href="DateTime.html"><code>DateTime</code></a> assumes its precision is at most nanosecond.</p>
<p><a href="DateTime.html#method-c-new"><code>DateTime.new</code></a>(2001,2,3) + 0.5 == <a href="DateTime.html#method-c-new"><code>DateTime.new</code></a>(2001,2,3,12)</p>
<pre class="ruby"><span class="ruby-comment">#=> true</span>
</pre>
</li><li>
<p>Precision of offset is always at most second.</p>
<p>Rational('0.5') == Rational('0.500001') #=> false <a href="DateTime.html#method-c-new"><code>DateTime.new</code></a>(2001,2,3,0,0,0,Rational('0.5')) == <a href="DateTime.html#method-c-new"><code>DateTime.new</code></a>(2001,2,3,0,0,0,Rational('0.500001'))</p>
<pre class="ruby"><span class="ruby-comment">#=> true</span>
</pre>
</li></ul>
</li><li>
<p>Ignores long offset and far reform day (with warning).</p>
<ul><li>
<p>Now accepts only:</p>
<p>-1<=offset<=1 (-24:00..+24:00) 2298874<=start<=2426355 or -/+oo</p>
<pre>(proleptic Gregorian/Julian mean -/+oo)</pre>
</li></ul>
</li><li>
<p>A method strftime cannot produce huge output (same as Time's one).</p>
<ul><li>
<p>Even though Date/DateTime can handle far dates, the following causes an exception.</p>
<p><a href="DateTime.html#method-c-new"><code>DateTime.new(1<<10000)</code></a>.strftime('%Y') # Errno::ERANGE</p>
</li></ul>
</li><li>
<p>Changed the format of inspect.</p>
</li><li>
<p>Changed the format of marshal (but, can load old dumps).</p>
</li></ul>
</li><li>
<p>io/console</p>
<ul><li>
<p>new methods:</p>
<ul><li>
<p><a href="IO.html#method-i-noecho"><code>IO#noecho</code></a> {|io| }</p>
</li><li>
<p><a href="IO.html#method-i-echo-3D"><code>IO#echo=</code></a></p>
</li><li>
<p><a href="IO.html#method-i-echo-3F"><code>IO#echo?</code></a></p>
</li><li>
<p><a href="IO.html#method-i-raw"><code>IO#raw</code></a> {|io| }</p>
</li><li>
<p><a href="IO.html#method-i-raw-21"><code>IO#raw!</code></a></p>
</li><li>
<p><a href="IO.html#method-i-getch"><code>IO#getch</code></a></p>
</li><li>
<p><a href="IO.html#method-i-winsize"><code>IO#winsize</code></a></p>
</li><li>
<p><a href="IO.html#method-c-console"><code>IO.console</code></a></p>
</li></ul>
</li></ul>
</li><li>
<p>json</p>
<ul><li>
<p>updated to v1.5.4.</p>
</li></ul>
</li><li>
<p>matrix</p>
<ul><li>
<p>new classes:</p>
<ul><li>
<p><a href="Matrix/EigenvalueDecomposition.html"><code>Matrix::EigenvalueDecomposition</code></a></p>
</li><li>
<p><a href="Matrix/LUPDecomposition.html"><code>Matrix::LUPDecomposition</code></a></p>
</li></ul>
</li><li>
<p>new methods:</p>
<ul><li>
<p><a href="Matrix.html#method-i-diagonal-3F"><code>Matrix#diagonal?</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-eigen"><code>Matrix#eigen</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-eigensystem"><code>Matrix#eigensystem</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-hermitian-3F"><code>Matrix#hermitian?</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-lower_triangular-3F"><code>Matrix#lower_triangular?</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-lup"><code>Matrix#lup</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-lup_decomposition"><code>Matrix#lup_decomposition</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-normal-3F"><code>Matrix#normal?</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-orthogonal-3F"><code>Matrix#orthogonal?</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-permutation-3F"><code>Matrix#permutation?</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-round"><code>Matrix#round</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-symmetric-3F"><code>Matrix#symmetric?</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-unitary-3F"><code>Matrix#unitary?</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-upper_triangular-3F"><code>Matrix#upper_triangular?</code></a></p>
</li><li>
<p><a href="Matrix.html#method-i-zero-3F"><code>Matrix#zero?</code></a></p>
</li><li>
<p><a href="Vector.html#method-i-magnitude"><code>Vector#magnitude</code></a>, norm</p>
</li><li>
<p><a href="Vector.html#method-i-normalize"><code>Vector#normalize</code></a></p>
</li></ul>
</li><li>
<p>extended methods:</p>
<ul><li>
<p><a href="Matrix.html#method-i-each"><code>Matrix#each</code></a> and each_with_index can iterate on a subset of the elements</p>
</li><li>
<p><a href="Matrix.html#method-i-find_index"><code>Matrix#find_index</code></a> returns [row, column] and can iterate on a subset of the elements</p>
</li><li>
<p><a href="Matrix.html#method-i-2A"><code>Matrix#*</code></a>* implements <a href="Numeric.html"><code>Numeric</code></a> exponents (using the eigensystem)</p>
</li><li>
<p><a href="Matrix.html#method-c-zero"><code>Matrix.zero</code></a> can build rectangular matrices</p>
</li></ul>
</li></ul>
</li><li>
<p>minitest</p>
<ul><li>
<p>Minitest has been updated to version 2.2.2.</p>
</li><li>
<p>For full details, see <a href="https://github.com/seattlerb/minitest/blob/master/History.txt">github.com/seattlerb/minitest/blob/master/History.txt</a></p>
</li></ul>
</li><li>
<p>net/http</p>
<ul><li>
<p>SNI (Server Name Indication) supported for HTTPS.</p>
</li><li>
<p>Allow to configure to wait server returning '100 continue' response before sending HTTP request body. <a href="Set.html"><code>Set</code></a> <a href="Net/HTTP.html#attribute-i-continue_timeout"><code>Net::HTTP#continue_timeout</code></a> AND pass 'expect' => '100-continue' to a extra HTTP header.</p>
<p>For example, the following code sends HTTP header and waits for getting '100 continue' response before sending HTTP request body. When 0.5 [sec] timeout occurs or the server send '100 continue', the client sends HTTP request body.</p>
<pre class="ruby"><span class="ruby-identifier">http</span>.<span class="ruby-identifier">continue_timeout</span> = <span class="ruby-value">0.5</span>
<span class="ruby-identifier">http</span>.<span class="ruby-identifier">request_post</span>(<span class="ruby-string">'/continue'</span>, <span class="ruby-string">'body=BODY'</span>, <span class="ruby-string">'expect'</span> <span class="ruby-operator">=></span> <span class="ruby-string">'100-continue'</span>)
</pre>
</li><li>
<p>new method:</p>
<ul><li>
<p><a href="Net/HTTPHeader.html#method-i-set_form"><code>Net::HTTPRequest#set_form</code></a>): Added to support both application/x-www-form-urlencoded and multipart/form-data.</p>
</li></ul>
</li></ul>
</li><li>
<p>objspace</p>
<ul><li>
<p>new method:</p>
<ul><li>
<p><a href="ObjectSpace.html#method-c-memsize_of_all"><code>ObjectSpace::memsize_of_all</code></a></p>
</li></ul>
</li></ul>
</li><li>
<p>openssl</p>
<ul><li>
<p>PKey::RSA and PKey::DSA now use the generic X.509 encoding scheme (e.g. used in a X.509 certificate's Subject Public Key Info) when exporting public keys to DER or PEM. Backward compatibility is ensured by (already existing) fallbacks during creation.</p>
</li><li>
<p>OpenSSL::ASN1::Constructive#new and OpenSSL::ASN1::Primitive#new (and the constructors of their sub-classes) will no longer force tagging to be set to :EXPLICIT when tag and/or tag_class are passed as parameters. tagging must be set explicitly.</p>
</li><li>
<p>Support for infinite length encodings via infinite_length attribute.</p>
</li><li>
<p><a href="OpenSSL/PKey.html#method-c-read"><code>OpenSSL::PKey.read</code></a>( file | string [, pwd] ) allows to read arbitrary public/private keys in DER-/PEM-encoded form with an optional password for encrypted PEM encodings.</p>
</li><li>
<p>Add new method <a href="OpenSSL/X509/Name.html#method-i-hash_old"><code>OpenSSL::X509::Name#hash_old</code></a> as a wrapper of X509_NAME_hash_old() defined from <a href="OpenSSL.html"><code>OpenSSL</code></a> 1.0.0. It returns <a href="OpenSSL.html"><code>OpenSSL</code></a> 0.9.8 compatible hash value.</p>
</li></ul>
</li><li>
<p>optparse</p>
<ul><li>
<p>support for bash/zsh completion.</p>
</li></ul>
</li><li>
<p>Rake</p>
<ul><li>
<p>Rake has been upgraded from 0.8.7 to 0.9.2.2. For full release notes see <a href="https://github.com/jimweirich/rake/blob/master/CHANGES">github.com/jimweirich/rake/blob/master/CHANGES</a></p>
</li></ul>
</li><li>
<p><a href="RDoc.html"><code>RDoc</code></a></p>
<ul><li>
<p><a href="RDoc.html"><code>RDoc</code></a> has been upgraded to version 3.9.4. For full release notes see <a href="http://docs.seattlerb.org/rdoc/History_txt.html">docs.seattlerb.org/rdoc/History_txt.html</a></p>
</li></ul>
</li><li>
<p>rexml</p>
<ul><li>
<p>Support Ruby native encoding mechanism and iconv dependency is dropped.</p>
</li></ul>
</li><li>
<p>RubyGems</p>
<ul><li>
<p>RubyGems has been upgraded to version 1.8.10. For full release notes see <a href="http://rubygems.rubyforge.org/rubygems-update/History_txt.html">rubygems.rubyforge.org/rubygems-update/History_txt.html</a></p>
</li></ul>
</li><li>
<p>stringio</p>
<ul><li>
<p>extended method:</p>
<ul><li>
<p><a href="StringIO.html#method-i-set_encoding"><code>StringIO#set_encoding</code></a> can get 2nd argument and optional hash.</p>
</li></ul>
</li></ul>
</li><li>
<p>test/unit</p>
<ul><li>
<p>New arguments:</p>
<ul><li>
<p>-j N, –jobs=N: Allow run N testcases at once.</p>
</li><li>
<p>–jobs-status: Show status of jobs when parallel running.</p>
</li><li>
<p>–no-retry: Don't retry testcases which failed when parallel running.</p>
</li><li>
<p>–ruby=RUBY: path to ruby for job(worker) process. optional.</p>
</li><li>
<p>–hide-skip: Hide skip messages. You'll see the number of skips at end of test result.</p>
</li></ul>
</li></ul>
</li><li>
<p>uri</p>
<ul><li>
<p>new methods:</p>
<ul><li>
<p><a href="URI/Generic.html#method-i-hostname"><code>URI::Generic#hostname</code></a></p>
</li><li>
<p><a href="URI/Generic.html#method-i-hostname-3D"><code>URI::Generic#hostname=</code></a></p>
</li></ul>
</li></ul>
</li><li>
<p>webrick</p>
<ul><li>
<p>new method:</p>
<ul><li>
<p>WEBrick::HTTPRequest#continue for generating '100 continue' response.</p>
</li></ul>
</li><li>
<p>new logging directive:</p>
<ul><li>
<p>%{remote}p for remote (client) port number.</p>
</li></ul>
</li></ul>
</li><li>
<p>yaml</p>
<ul><li>
<p>The default YAML engine is now <a href="Psych.html"><code>Psych</code></a>. You may downgrade to syck by setting YAML::ENGINE.yamler = 'syck'.</p>
</li></ul>
</li><li>
<p>zlib</p>
<ul><li>
<p>new methods:</p>
<ul><li>
<p><a href="Zlib.html#method-c-deflate"><code>Zlib.deflate</code></a></p>
</li><li>
<p><a href="Zlib.html#method-c-inflate"><code>Zlib.inflate</code></a></p>
</li></ul>
</li></ul>
</li><li>
<p><a href="FileUtils.html"><code>FileUtils</code></a></p>
<ul><li>
<p>extended method:</p>
<ul><li>
<p><a href="FileUtils.html#method-i-chmod"><code>FileUtils#chmod</code></a> supports symbolic mode argument.</p>
</li></ul>
</li></ul>
</li></ul>
<h3 id="label-Language+changes">Language changes<span><a href="#label-Language+changes">¶</a> <a href="#top">↑</a></span></h3>
<ul><li>
<p>Regexps now support Unicode 6.0. (new characters and scripts)</p>
</li><li><dl class="rdoc-list label-list"><dt>experimental
<dd>
<p>Regexps now support Age property.</p>
</dd></dl>
<p>Unlike Perl, current implementation takes interpretation of the interpretation of UTS #18. <a href="http://www.unicode.org/reports/tr18">www.unicode.org/reports/tr18</a>/</p>
</li><li>
<p>Turning on/off indentation warnings with directives. (“# -*- warn-indent: true -*-” / “# -*- warn-indent: false -*-”)</p>
</li></ul>
<h3 id="label-Compatibility+issues+-28excluding+feature+bug+fixes-29">Compatibility issues (excluding feature bug fixes)<span><a href="#label-Compatibility+issues+-28excluding+feature+bug+fixes-29">¶</a> <a href="#top">↑</a></span></h3>
<pre>* Rational#to_d
See above.</pre>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.1.1.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>