<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/spec/ruby/library/net/ftp/fixtures/puttextfile, branch v3_0_4</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>Move spec/rubyspec to spec/ruby for consistency</title>
<updated>2017-09-20T20:18:52+00:00</updated>
<author>
<name>eregon</name>
<email>eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2017-09-20T20:18:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1d15d5f08032acf1b7bceacbb450d617ff6e0931'/>
<id>1d15d5f08032acf1b7bceacbb450d617ff6e0931</id>
<content type='text'>
* Other ruby implementations use the spec/ruby directory.
  [Misc #13792] [ruby-core:82287]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Other ruby implementations use the spec/ruby directory.
  [Misc #13792] [ruby-core:82287]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
</feed>
ue='ruby_1_9_1'>ruby_1_9_1</option>
<option value='ruby_1_9_2'>ruby_1_9_2</option>
<option value='ruby_1_9_3'>ruby_1_9_3</option>
<option value='ruby_2_0_0'>ruby_2_0_0</option>
<option value='ruby_2_1'>ruby_2_1</option>
<option value='ruby_2_2'>ruby_2_2</option>
<option value='ruby_2_3'>ruby_2_3</option>
<option value='ruby_2_4'>ruby_2_4</option>
<option value='ruby_2_5'>ruby_2_5</option>
<option value='ruby_2_6'>ruby_2_6</option>
<option value='ruby_2_7'>ruby_2_7</option>
<option value='ruby_3_0'>ruby_3_0</option>
<option value='ruby_3_1'>ruby_3_1</option>
<option value='ruby_3_2'>ruby_3_2</option>
<option value='ruby_3_3'>ruby_3_3</option>
<option value='ruby_3_4'>ruby_3_4</option>
<option value='ruby_4_0'>ruby_4_0</option>
<option value='v1_0r'>v1_0r</option>
<option value='v1_1dev'>v1_1dev</option>
<option value='v1_1r'>v1_1r</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>The Ruby Programming Language</td><td class='sub right'></td></tr></table>
<table class='tabs'><tr><td>
<a href='/ruby.git/?h=v2_4_0_preview2'>summary</a><a href='/ruby.git/refs/?h=v2_4_0_preview2'>refs</a><a href='/ruby.git/log/?h=v2_4_0_preview2'>log</a><a href='/ruby.git/tree/?h=v2_4_0_preview2'>tree</a><a href='/ruby.git/commit/?h=v2_4_0_preview2'>commit</a><a class='active' href='/ruby.git/diff/?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>diff</a></td><td class='form'><form class='right' method='get' action='/ruby.git/log/'>
<input type='hidden' name='h' value='v2_4_0_preview2'/><input type='hidden' name='id2' value='a627fdfaaffd456de871ead092c1770d220aec98'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='h' value='v2_4_0_preview2'/><input type='hidden' name='id2' value='a627fdfaaffd456de871ead092c1770d220aec98'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><div class='diffstat-header'><a href='/ruby.git/diff/?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>Diffstat</a></div><table summary='diffstat' class='diffstat'><tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/.document?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>.document</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/.gdbinit?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>.gdbinit</a></td><td class='right'>334</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.9%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/.gitattributes?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>.gitattributes</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/.gitignore?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>.gitignore</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/.travis.yml?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>.travis.yml</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/COPYING?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>COPYING</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ChangeLog?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ChangeLog</a></td><td class='right'>15435</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 14.4%;'/><td class='rem' style='width: 29.2%;'/><td class='none' style='width: 56.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/KNOWNBUGS.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>KNOWNBUGS.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/LEGAL?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>LEGAL</a></td><td class='right'>194</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/Makefile.in?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>Makefile.in</a></td><td class='right'>139</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/NEWS?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>NEWS</a></td><td class='right'>453</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/README.EXT?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>README.EXT</a></td><td class='right'>1731</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 4.9%;'/><td class='none' style='width: 95.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/README.EXT.ja?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>README.EXT.ja</a></td><td class='right'>1720</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 4.9%;'/><td class='none' style='width: 95.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/README.ja.md?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>README.ja.md</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/README.md?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>README.md</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/acinclude.m4?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>acinclude.m4</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/aclocal.m4?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>aclocal.m4</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/addr2line.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>addr2line.c</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/appveyor.yml?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>appveyor.yml</a></td><td class='right'>37</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/array.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>array.c</a></td><td class='right'>686</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.5%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 98.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='add'><a href='/ruby.git/diff/basictest/runner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>basictest/runner.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='add'><a href='/ruby.git/diff/basictest/test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>basictest/test.rb</a></td><td class='right'>2367</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 6.7%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 93.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/benchmark/bm_app_aobench.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_app_aobench.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_array_shift.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_array_shift.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_hash_aref_dsym.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_hash_aref_dsym.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_hash_aref_dsym_long.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_hash_aref_dsym_long.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_hash_aref_fix.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_hash_aref_fix.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_hash_shift_u16.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_hash_shift_u16.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_hash_shift_u24.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_hash_shift_u24.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_hash_shift_u32.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_hash_shift_u32.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_hash_to_proc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_hash_to_proc.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_io_nonblock_noex.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_io_nonblock_noex.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_io_nonblock_noex2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_io_nonblock_noex2.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_marshal_dump_load_geniv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_marshal_dump_load_geniv.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_marshal_dump_load_time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_marshal_dump_load_time.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_require.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_require.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_require_thread.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_require_thread.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/benchmark/bm_so_meteor_contest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_so_meteor_contest.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/benchmark/bm_vm1_gc_wb_ary.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm1_gc_wb_ary.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm1_gc_wb_ary_promoted.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm1_gc_wb_ary_promoted.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/benchmark/bm_vm1_gc_wb_obj.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm1_gc_wb_obj.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm1_gc_wb_obj_promoted.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm1_gc_wb_obj_promoted.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm2_case_lit.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm2_case_lit.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/benchmark/bm_vm2_mutex.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm2_mutex.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm2_string_literal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm2_string_literal.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm2_struct_big_href_hi.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm2_struct_big_href_hi.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm2_struct_big_href_lo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm2_struct_big_href_lo.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm2_struct_big_hset.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm2_struct_big_hset.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm2_struct_small_href.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm2_struct_small_href.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm2_struct_small_hset.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm2_struct_small_hset.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--<span class='modechange'>[-rwxr-xr-x]</span></td><td class='upd'><a href='/ruby.git/diff/benchmark/bm_vm3_gc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm3_gc.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm3_gc_old_full.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm3_gc_old_full.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm3_gc_old_immediate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm3_gc_old_immediate.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm3_gc_old_lazy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm3_gc_old_lazy.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/bm_vm_symbol_block_pass.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm_symbol_block_pass.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/benchmark/bm_vm_thread_mutex1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm_thread_mutex1.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/benchmark/bm_vm_thread_mutex2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm_thread_mutex2.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/benchmark/bm_vm_thread_mutex3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm_thread_mutex3.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/benchmark/bm_vm_thread_pipe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm_thread_pipe.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/benchmark/bm_vm_thread_queue.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm_thread_queue.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/benchmark/driver.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/driver.rb</a></td><td class='right'>144</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/memory_wrapper.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/memory_wrapper.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/prepare_require.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/prepare_require.rb</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/benchmark/prepare_require_thread.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/prepare_require_thread.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/bignum.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>bignum.c</a></td><td class='right'>887</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.9%;'/><td class='rem' style='width: 1.6%;'/><td class='none' style='width: 97.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/bin/erb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>bin/erb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='del'><a href='/ruby.git/diff/bin/rake?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>bin/rake</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/bootstraptest/runner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/runner.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/bootstraptest/test_eval.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_eval.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/bootstraptest/test_fork.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_fork.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/bootstraptest/test_literal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_literal.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/bootstraptest/test_method.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_method.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/bootstraptest/test_objectspace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_objectspace.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/bootstraptest/test_syntax.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_syntax.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/bootstraptest/test_thread.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_thread.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ccan/list/list.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ccan/list/list.h</a></td><td class='right'>194</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/class.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>class.c</a></td><td class='right'>663</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 98.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/common.mk?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>common.mk</a></td><td class='right'>622</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.3%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 98.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/compar.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>compar.c</a></td><td class='right'>108</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/compile.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>compile.c</a></td><td class='right'>3940</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 8.6%;'/><td class='rem' style='width: 2.5%;'/><td class='none' style='width: 88.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/complex.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>complex.c</a></td><td class='right'>245</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/configure.in?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>configure.in</a></td><td class='right'>944</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.9%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 97.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/constant.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>constant.h</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/cont.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>cont.c</a></td><td class='right'>151</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/cygwin/GNUmakefile.in?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>cygwin/GNUmakefile.in</a></td><td class='right'>37</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/debug.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>debug.c</a></td><td class='right'>53</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/defs/default_gems?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>defs/default_gems</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/defs/gmake.mk?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>defs/gmake.mk</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/defs/id.def?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>defs/id.def</a></td><td class='right'>59</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/defs/keywords?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>defs/keywords</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/defs/lex.c.src?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>defs/lex.c.src</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/defs/opt_insn_unif.def?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>defs/opt_insn_unif.def</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/dir.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>dir.c</a></td><td class='right'>448</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/dln.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>dln.c</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/dln_find.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>dln_find.c</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/dmydln.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>dmydln.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/doc/ChangeLog-0.06_to_0.52?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/ChangeLog-0.06_to_0.52</a></td><td class='right'>1147</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 3.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 96.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/doc/ChangeLog-0.50_to_0.60?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/ChangeLog-0.50_to_0.60</a></td><td class='right'>462</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/doc/ChangeLog-0.60_to_1.1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/ChangeLog-0.60_to_1.1</a></td><td class='right'>3955</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 11.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 88.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/ChangeLog-1.8.0?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/ChangeLog-1.8.0</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/ChangeLog-1.9.3?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/ChangeLog-1.9.3</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/doc/ChangeLog-2.2.0?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/ChangeLog-2.2.0</a></td><td class='right'>12157</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 34.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 65.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/doc/ChangeLog-2.3.0?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/ChangeLog-2.3.0</a></td><td class='right'>12187</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 34.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 65.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/ChangeLog-YARV?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/ChangeLog-YARV</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/doc/NEWS-2.2.0?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/NEWS-2.2.0</a></td><td class='right'>361</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/doc/NEWS-2.3.0?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/NEWS-2.3.0</a></td><td class='right'>404</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/contributing.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/contributing.rdoc</a></td><td class='right'>64</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/contributors.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/contributors.rdoc</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/dtrace_probes.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/dtrace_probes.rdoc</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/etc.rd.ja?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/etc.rd.ja</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/doc/extension.ja.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/extension.ja.rdoc</a></td><td class='right'>1802</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 5.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 94.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/doc/extension.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/extension.rdoc</a></td><td class='right'>1841</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 5.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 94.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/maintainers.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/maintainers.rdoc</a></td><td class='right'>130</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/marshal.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/marshal.rdoc</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/regexp.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/regexp.rdoc</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/security.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/security.rdoc</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/standard_library.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/standard_library.rdoc</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/syntax/assignment.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/syntax/assignment.rdoc</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/syntax/calling_methods.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/syntax/calling_methods.rdoc</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/syntax/control_expressions.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/syntax/control_expressions.rdoc</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/syntax/exceptions.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/syntax/exceptions.rdoc</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/syntax/literals.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/syntax/literals.rdoc</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/syntax/methods.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/syntax/methods.rdoc</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/syntax/miscellaneous.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/syntax/miscellaneous.rdoc</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/syntax/modules_and_classes.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/syntax/modules_and_classes.rdoc</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/doc/syntax/refinements.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>doc/syntax/refinements.rdoc</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/Makefile.in?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/Makefile.in</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/ascii.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/ascii.c</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/big5.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/big5.c</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/cp949.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/cp949.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/depend</a></td><td class='right'>136</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/enc/ebcdic.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/ebcdic.h</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/emacs_mule.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/emacs_mule.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/euc_jp.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/euc_jp.c</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/euc_kr.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/euc_kr.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/euc_tw.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/euc_tw.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/gb18030.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/gb18030.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/gbk.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/gbk.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_2022_jp.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_2022_jp.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/enc/iso_8859.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859.h</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_1.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_1.c</a></td><td class='right'>64</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_10.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_10.c</a></td><td class='right'>51</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_11.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_11.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_13.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_13.c</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_14.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_14.c</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_15.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_15.c</a></td><td class='right'>57</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_16.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_16.c</a></td><td class='right'>60</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_2.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_2.c</a></td><td class='right'>63</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_3.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_3.c</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_4.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_4.c</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_5.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_5.c</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_6.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_6.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_7.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_7.c</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_8.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_8.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/iso_8859_9.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/iso_8859_9.c</a></td><td class='right'>72</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/koi8_r.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/koi8_r.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/koi8_u.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/koi8_u.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/enc/make_encmake.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/make_encmake.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/shift_jis.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/shift_jis.c</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/trans/JIS/JISX0201-KANA%25UCS.src?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/trans/JIS/JISX0201-KANA%UCS.src</a></td><td class='right'>51</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/trans/JIS/JISX0208@1990%25UCS.src?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/trans/JIS/JISX0208@1990%UCS.src</a></td><td class='right'>54</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/trans/JIS/JISX0212%25UCS.src?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/trans/JIS/JISX0212%UCS.src</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/trans/JIS/UCS%25JISX0201-KANA.src?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/trans/JIS/UCS%JISX0201-KANA.src</a></td><td class='right'>52</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/trans/JIS/UCS%25JISX0208@1990.src?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/trans/JIS/UCS%JISX0208@1990.src</a></td><td class='right'>53</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/trans/JIS/UCS%25JISX0212.src?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/trans/JIS/UCS%JISX0212.src</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/enc/trans/ebcdic.trans?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/trans/ebcdic.trans</a></td><td class='right'>278</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.8%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/unicode.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/unicode.c</a></td><td class='right'>323</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/enc/unicode/9.0.0/casefold.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/unicode/9.0.0/casefold.h</a></td><td class='right'>7068</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 20.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 80.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/enc/unicode/9.0.0/name2ctype.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/unicode/9.0.0/name2ctype.h</a></td><td class='right'>35389</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 100.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 0.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/enc/unicode/case-folding.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/unicode/case-folding.rb</a></td><td class='right'>248</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/enc/unicode/casefold.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/unicode/casefold.h</a></td><td class='right'>5619</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 15.9%;'/><td class='none' style='width: 84.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/enc/unicode/name2ctype.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/unicode/name2ctype.h</a></td><td class='right'>32679</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 92.3%;'/><td class='none' style='width: 7.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/enc/unicode/name2ctype.h.blt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/unicode/name2ctype.h.blt</a></td><td class='right'>28722</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 81.2%;'/><td class='none' style='width: 18.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/enc/unicode/name2ctype.kwd?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/unicode/name2ctype.kwd</a></td><td class='right'>26550</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 75.0%;'/><td class='none' style='width: 25.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/enc/unicode/name2ctype.src?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/unicode/name2ctype.src</a></td><td class='right'>26550</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 75.0%;'/><td class='none' style='width: 25.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/us_ascii.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/us_ascii.c</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/utf_16_32.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/utf_16_32.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/utf_16be.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/utf_16be.c</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/utf_16le.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/utf_16le.c</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/utf_32be.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/utf_32be.c</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/utf_32le.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/utf_32le.c</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/utf_7.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/utf_7.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/utf_8.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/utf_8.c</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/enc/windows_1250.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/windows_1250.c</a></td><td class='right'>270</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.8%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/windows_1251.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/windows_1251.c</a></td><td class='right'>44</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/enc/windows_1252.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/windows_1252.c</a></td><td class='right'>259</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/enc/windows_1253.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/windows_1253.c</a></td><td class='right'>296</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.8%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/enc/windows_1254.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/windows_1254.c</a></td><td class='right'>245</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/enc/windows_1257.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/windows_1257.c</a></td><td class='right'>304</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.9%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/windows_31j.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/windows_31j.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enc/x_emoji.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enc/x_emoji.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/encindex.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>encindex.h</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/encoding.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>encoding.c</a></td><td class='right'>208</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enum.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enum.c</a></td><td class='right'>967</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 97.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/enumerator.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>enumerator.c</a></td><td class='right'>116</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/error.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>error.c</a></td><td class='right'>532</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 98.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/eval.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>eval.c</a></td><td class='right'>424</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/eval_error.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>eval_error.c</a></td><td class='right'>186</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/eval_intern.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>eval_intern.h</a></td><td class='right'>136</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/eval_jump.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>eval_jump.c</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/array/resize/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/array/resize/depend</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/array/resize/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/array/resize/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/auto_ext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/auto_ext.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/bignum/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/bignum/depend</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/bignum/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/bignum/extconf.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/bignum/mul.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/bignum/mul.c</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/bug-3571/bug.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/bug-3571/bug.c</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/bug-3571/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/bug-3571/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/-test-/bug-3662/bug.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/bug-3662/bug.c</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/-test-/bug-3662/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/bug-3662/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/bug-5832/bug.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/bug-5832/bug.c</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/bug-5832/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/bug-5832/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/bug_reporter/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/bug_reporter/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/class/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/class/depend</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/class/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/class/extconf.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/debug/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/debug/depend</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/debug/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/debug/extconf.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/dln/empty/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/dln/empty/depend</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='mov'><a href='/ruby.git/diff/ext/-test-/dln/empty/empty.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/dln/empty/empty.c</a> (renamed from ext/-test-/win32/dln/empty/empty.c)</td><td class='right'>0</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/dln/empty/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/dln/empty/extconf.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/exception/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/exception/depend</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/exception/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/exception/extconf.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/fatal/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/fatal/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/file/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/file/depend</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/file/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/file/extconf.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/file/fs.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/file/fs.c</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/float/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/float/extconf.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/funcall/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/funcall/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/funcall/passing_block.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/funcall/passing_block.c</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/gvl/call_without_gvl/call_without_gvl.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/gvl/call_without_gvl/call_without_gvl.c</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/gvl/call_without_gvl/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/gvl/call_without_gvl/depend</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/gvl/call_without_gvl/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/gvl/call_without_gvl/extconf.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/hash/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/hash/extconf.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/integer/core_ext.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/integer/core_ext.c</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/integer/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/integer/depend</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/integer/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/integer/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/integer/init.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/integer/init.c</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/integer/my_integer.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/integer/my_integer.c</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/iseq_load/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/iseq_load/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/iter/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/iter/extconf.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/load/dot.dot/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/load/dot.dot/depend</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/load/dot.dot/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/load/dot.dot/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/marshal/compat/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/marshal/compat/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/marshal/internal_ivar/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/marshal/internal_ivar/extconf.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/marshal/internal_ivar/internal_ivar.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/marshal/internal_ivar/internal_ivar.c</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/marshal/usr/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/marshal/usr/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/method/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/method/extconf.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/notimplement/bug.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/notimplement/bug.c</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/notimplement/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/notimplement/extconf.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/num2int/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/num2int/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/path_to_class/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/path_to_class/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/popen_deadlock/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/popen_deadlock/extconf.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/popen_deadlock/infinite_loop_dlsym.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/popen_deadlock/infinite_loop_dlsym.c</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/postponed_job/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/postponed_job/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/printf/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/printf/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/proc/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/proc/extconf.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/rational/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/rational/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/rational/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/rational/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/recursion/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/recursion/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/st/foreach/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/st/foreach/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/st/numhash/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/st/numhash/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/st/numhash/numhash.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/st/numhash/numhash.c</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/st/update/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/st/update/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/string/capacity.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/string/capacity.c</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/string/cstr.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/string/cstr.c</a></td><td class='right'>97</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/string/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/string/depend</a></td><td class='right'>49</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/string/enc_associate.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/string/enc_associate.c</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/string/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/string/extconf.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/string/fstring.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/string/fstring.c</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/struct/duplicate.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/struct/duplicate.c</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/struct/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/struct/extconf.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/symbol/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/symbol/extconf.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/time/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/time/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/time/init.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/time/init.c</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/time/new.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/time/new.c</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/tracepoint/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/tracepoint/depend</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/tracepoint/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/tracepoint/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/typeddata/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/typeddata/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/vm/at_exit.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/vm/at_exit.c</a></td><td class='right'>44</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/vm/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/vm/depend</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/vm/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/vm/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/wait_for_single_fd/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/wait_for_single_fd/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/wait_for_single_fd/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/wait_for_single_fd/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/win32/console/attribute.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/win32/console/attribute.c</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/win32/console/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/win32/console/extconf.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/-test-/win32/dln/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/win32/dln/depend</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/-test-/win32/dln/empty/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/win32/dln/empty/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/win32/dln/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/win32/dln/extconf.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/-test-/win32/fd_setsize/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/-test-/win32/fd_setsize/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/Setup?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/Setup</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/Setup.atheos?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/Setup.atheos</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/Setup.emx?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/Setup.emx</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/Setup.nacl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/Setup.nacl</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/Setup.nt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/Setup.nt</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/bigdecimal.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/bigdecimal.c</a></td><td class='right'>210</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/bigdecimal.gemspec?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/bigdecimal.gemspec</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/bigdecimal.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/bigdecimal.h</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/depend</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/extconf.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/lib/bigdecimal/jacobian.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/lib/bigdecimal/jacobian.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/lib/bigdecimal/ludcmp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/lib/bigdecimal/ludcmp.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/lib/bigdecimal/math.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/lib/bigdecimal/math.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/lib/bigdecimal/newton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/lib/bigdecimal/newton.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/lib/bigdecimal/util.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/lib/bigdecimal/util.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/sample/linear.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/sample/linear.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/sample/nlsolve.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/sample/nlsolve.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/bigdecimal/sample/pi.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/bigdecimal/sample/pi.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/cgi/escape/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/cgi/escape/depend</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/cgi/escape/escape.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/cgi/escape/escape.c</a></td><td class='right'>421</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/cgi/escape/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/cgi/escape/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/continuation/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/continuation/depend</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/continuation/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/continuation/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/coverage/coverage.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/coverage/coverage.c</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/coverage/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/coverage/depend</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/coverage/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/coverage/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/date/date_core.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/date/date_core.c</a></td><td class='right'>618</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 98.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/date/date_parse.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/date/date_parse.c</a></td><td class='right'>137</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/date/date_strftime.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/date/date_strftime.c</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/date/date_strptime.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/date/date_strptime.c</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/date/date_tmx.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/date/date_tmx.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/date/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/date/depend</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/date/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/date/extconf.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/date/lib/date.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/date/lib/date.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/date/prereq.mk?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/date/prereq.mk</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/date/zonetab.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/date/zonetab.h</a></td><td class='right'>902</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.5%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 97.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/date/zonetab.list?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/date/zonetab.list</a></td><td class='right'>181</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/dbm/dbm.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/dbm/dbm.c</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/dbm/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/dbm/depend</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/dbm/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/dbm/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/bubblebabble/bubblebabble.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/bubblebabble/bubblebabble.c</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/bubblebabble/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/bubblebabble/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/bubblebabble/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/bubblebabble/extconf.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/digest.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/digest.c</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/digest.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/digest.h</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/digest/digest_conf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/digest_conf.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/lib/digest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/lib/digest.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/md5/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/md5/depend</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/md5/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/md5/extconf.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/md5/md5.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/md5/md5.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/digest/md5/md5cc.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/md5/md5cc.h</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/md5/md5init.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/md5/md5init.c</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/digest/md5/md5ossl.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/md5/md5ossl.c</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/md5/md5ossl.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/md5/md5ossl.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/rmd160/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/rmd160/depend</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/rmd160/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/rmd160/extconf.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/rmd160/rmd160.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/rmd160/rmd160.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/rmd160/rmd160init.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/rmd160/rmd160init.c</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/digest/rmd160/rmd160ossl.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/rmd160/rmd160ossl.c</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/rmd160/rmd160ossl.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/rmd160/rmd160ossl.h</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/sha1/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha1/depend</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/sha1/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha1/extconf.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/sha1/sha1.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha1/sha1.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/digest/sha1/sha1cc.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha1/sha1cc.h</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/sha1/sha1init.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha1/sha1init.c</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/digest/sha1/sha1ossl.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha1/sha1ossl.c</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/sha1/sha1ossl.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha1/sha1ossl.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/sha2/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha2/depend</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/sha2/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha2/extconf.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/sha2/lib/sha2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha2/lib/sha2.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/sha2/sha2.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha2/sha2.c</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/digest/sha2/sha2cc.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha2/sha2cc.h</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/sha2/sha2init.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha2/sha2init.c</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/digest/sha2/sha2ossl.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha2/sha2ossl.c</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/digest/sha2/sha2ossl.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/digest/sha2/sha2ossl.h</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/etc/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/etc/depend</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/etc/etc.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/etc/etc.c</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/etc/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/etc/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/etc/mkconstants.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/etc/mkconstants.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/ext/extmk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/extmk.rb</a></td><td class='right'>210</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/fcntl/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fcntl/depend</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fcntl/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fcntl/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/fiber/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiber/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiber/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiber/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/closure.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/closure.c</a></td><td class='right'>96</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/conversions.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/conversions.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/depend</a></td><td class='right'>115</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/extconf.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/function.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/function.c</a></td><td class='right'>106</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/handle.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/handle.c</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/lib/fiddle.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/lib/fiddle.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/lib/fiddle/closure.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/lib/fiddle/closure.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/lib/fiddle/cparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/lib/fiddle/cparser.rb</a></td><td class='right'>158</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/lib/fiddle/function.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/lib/fiddle/function.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/lib/fiddle/import.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/lib/fiddle/import.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/lib/fiddle/pack.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/lib/fiddle/pack.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/lib/fiddle/struct.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/lib/fiddle/struct.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/lib/fiddle/types.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/lib/fiddle/types.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/lib/fiddle/value.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/lib/fiddle/value.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/pointer.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/pointer.c</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/win32/libffi-3.2.1-mswin.patch?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/win32/libffi-3.2.1-mswin.patch</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/ext/fiddle/win32/libffi-config.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/fiddle/win32/libffi-config.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/gdbm/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/gdbm/depend</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/gdbm/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/gdbm/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/gdbm/gdbm.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/gdbm/gdbm.c</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='add'><a href='/ruby.git/diff/ext/io/console/buildgem.sh?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/console/buildgem.sh</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/io/console/console.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/console/console.c</a></td><td class='right'>277</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/io/console/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/console/depend</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/io/console/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/console/extconf.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/io/console/io-console.gemspec?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/console/io-console.gemspec</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/io/console/lib/console/size.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/console/lib/console/size.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/io/console/win32_vk.chksum?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/console/win32_vk.chksum</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/io/console/win32_vk.inc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/console/win32_vk.inc</a></td><td class='right'>1400</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 4.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 96.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/io/console/win32_vk.list?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/console/win32_vk.list</a></td><td class='right'>166</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/io/nonblock/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/nonblock/depend</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/io/nonblock/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/nonblock/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/io/nonblock/nonblock.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/nonblock/nonblock.c</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/io/wait/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/wait/depend</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/io/wait/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/wait/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/io/wait/wait.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/io/wait/wait.c</a></td><td class='right'>155</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/generator/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/generator/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/generator/generator.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/generator/generator.c</a></td><td class='right'>131</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/generator/generator.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/generator/generator.h</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/json/json.gemspec?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/json.gemspec</a></td><td class='right'>bin</td><td class='graph'>0 -> 5473 bytes<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/bigdecimal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/bigdecimal.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/complex.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/complex.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/core.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/core.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/date.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/date.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/date_time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/date_time.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/exception.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/exception.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/ostruct.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/ostruct.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/range.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/range.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/rational.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/rational.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/regexp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/regexp.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/struct.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/struct.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/symbol.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/symbol.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/add/time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/add/time.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/common.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/common.rb</a></td><td class='right'>82</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/ext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/ext.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/generic_object.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/generic_object.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/lib/json/version.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/lib/json/version.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/parser/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/parser/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/parser/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/parser/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/parser/parser.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/parser/parser.c</a></td><td class='right'>775</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.9%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 97.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/parser/parser.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/parser/parser.h</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/json/parser/parser.rl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/json/parser/parser.rl</a></td><td class='right'>256</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/mathn/complex/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/mathn/complex/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/mathn/rational/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/mathn/rational/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/nkf/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/nkf/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/nkf/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/nkf/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/nkf/lib/kconv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/nkf/lib/kconv.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/nkf/nkf-utf8/nkf.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/nkf/nkf-utf8/nkf.c</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/nkf/nkf-utf8/utf8tbl.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/nkf/nkf-utf8/utf8tbl.c</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/nkf/nkf-utf8/utf8tbl.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/nkf/nkf-utf8/utf8tbl.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/objspace/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/objspace/depend</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/objspace/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/objspace/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/objspace/objspace.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/objspace/objspace.c</a></td><td class='right'>285</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/objspace/objspace_dump.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/objspace/objspace_dump.c</a></td><td class='right'>112</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/depend</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/deprecation.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/deprecation.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/extconf.rb</a></td><td class='right'>188</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/lib/openssl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/lib/openssl.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/lib/openssl/bn.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/lib/openssl/bn.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/lib/openssl/buffering.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/lib/openssl/buffering.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/lib/openssl/cipher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/lib/openssl/cipher.rb</a></td><td class='right'>48</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/lib/openssl/config.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/lib/openssl/config.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/lib/openssl/digest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/lib/openssl/digest.rb</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/openssl/lib/openssl/pkey.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/lib/openssl/pkey.rb</a></td><td class='right'>44</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/lib/openssl/ssl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/lib/openssl/ssl.rb</a></td><td class='right'>204</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/lib/openssl/x509.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/lib/openssl/x509.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/openssl/openssl.gemspec?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/openssl.gemspec</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/openssl_missing.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/openssl_missing.c</a></td><td class='right'>373</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/openssl_missing.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/openssl_missing.h</a></td><td class='right'>252</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl.c</a></td><td class='right'>287</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl.h</a></td><td class='right'>89</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_asn1.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_asn1.c</a></td><td class='right'>196</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_asn1.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_asn1.h</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_bio.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_bio.c</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_bio.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_bio.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_bn.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_bn.c</a></td><td class='right'>584</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.2%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 98.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_bn.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_bn.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_cipher.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_cipher.c</a></td><td class='right'>418</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_cipher.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_cipher.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_config.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_config.c</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_config.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_config.h</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_digest.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_digest.c</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_digest.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_digest.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_engine.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_engine.c</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_engine.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_engine.h</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_hmac.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_hmac.c</a></td><td class='right'>140</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_hmac.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_hmac.h</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_ns_spki.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_ns_spki.c</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_ns_spki.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_ns_spki.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_ocsp.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_ocsp.c</a></td><td class='right'>1105</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.6%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 96.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_ocsp.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_ocsp.h</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_pkcs12.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_pkcs12.c</a></td><td class='right'>85</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_pkcs12.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_pkcs12.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_pkcs5.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_pkcs5.c</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_pkcs7.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_pkcs7.c</a></td><td class='right'>93</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_pkcs7.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_pkcs7.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_pkey.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_pkey.c</a></td><td class='right'>136</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_pkey.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_pkey.h</a></td><td class='right'>159</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_pkey_dh.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_pkey_dh.c</a></td><td class='right'>302</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_pkey_dsa.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_pkey_dsa.c</a></td><td class='right'>261</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_pkey_ec.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_pkey_ec.c</a></td><td class='right'>1125</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.7%;'/><td class='rem' style='width: 1.4%;'/><td class='none' style='width: 96.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_pkey_rsa.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_pkey_rsa.c</a></td><td class='right'>303</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_rand.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_rand.c</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_rand.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_rand.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_ssl.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_ssl.c</a></td><td class='right'>1489</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.7%;'/><td class='rem' style='width: 1.5%;'/><td class='none' style='width: 95.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_ssl.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_ssl.h</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_ssl_session.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_ssl_session.c</a></td><td class='right'>104</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_version.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_version.h</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_x509.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_x509.c</a></td><td class='right'>104</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_x509.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_x509.h</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_x509attr.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_x509attr.c</a></td><td class='right'>153</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_x509cert.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_x509cert.c</a></td><td class='right'>98</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_x509crl.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_x509crl.c</a></td><td class='right'>106</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_x509ext.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_x509ext.c</a></td><td class='right'>153</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_x509name.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_x509name.c</a></td><td class='right'>69</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_x509req.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_x509req.c</a></td><td class='right'>60</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_x509revoked.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_x509revoked.c</a></td><td class='right'>78</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ossl_x509store.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ossl_x509store.c</a></td><td class='right'>330</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/openssl/ruby_missing.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/openssl/ruby_missing.h</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/pathname/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/pathname/depend</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/pathname/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/pathname/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/pathname/lib/pathname.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/pathname/lib/pathname.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/pathname/pathname.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/pathname/pathname.c</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/depend</a></td><td class='right'>95</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/class_loader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/class_loader.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/coder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/coder.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/core_ext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/core_ext.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/deprecated.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/deprecated.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/exception.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/exception.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/handler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/handler.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/handlers/document_stream.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/handlers/document_stream.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/handlers/recorder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/handlers/recorder.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/json/ruby_events.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/json/ruby_events.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/json/stream.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/json/stream.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/json/tree_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/json/tree_builder.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/json/yaml_events.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/json/yaml_events.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/nodes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/nodes.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/nodes/alias.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/nodes/alias.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/nodes/document.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/nodes/document.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/nodes/mapping.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/nodes/mapping.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/nodes/node.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/nodes/node.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/nodes/scalar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/nodes/scalar.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/nodes/sequence.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/nodes/sequence.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/nodes/stream.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/nodes/stream.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/omap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/omap.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/parser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/scalar_scanner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/scalar_scanner.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/stream.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/stream.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/streaming.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/streaming.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/syntax_error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/syntax_error.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/tree_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/tree_builder.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/psych/lib/psych/versions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/versions.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/visitors.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/visitors.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/visitors/depth_first.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/visitors/depth_first.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/visitors/emitter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/visitors/emitter.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/visitors/json_tree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/visitors/json_tree.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/visitors/to_ruby.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/visitors/to_ruby.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/visitors/visitor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/visitors/visitor.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/visitors/yaml_tree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/visitors/yaml_tree.rb</a></td><td class='right'>145</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/lib/psych/y.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/lib/psych/y.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/psych.gemspec?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/psych.gemspec</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/psych_emitter.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/psych_emitter.c</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/psych_parser.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/psych_parser.c</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/yaml/loader.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/yaml/loader.c</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/psych/yaml/scanner.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/psych/yaml/scanner.c</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/pty/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/pty/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/pty/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/pty/extconf.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/pty/lib/expect.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/pty/lib/expect.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/pty/pty.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/pty/pty.c</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/racc/cparse/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/racc/cparse/depend</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/racc/cparse/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/racc/cparse/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/rbconfig/sizeof/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/rbconfig/sizeof/depend</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/rbconfig/sizeof/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/rbconfig/sizeof/extconf.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/readline/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/readline/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/readline/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/readline/extconf.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/readline/readline.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/readline/readline.c</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/depend</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/eventids2.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/eventids2.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/lib/ripper.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/lib/ripper.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/lib/ripper/core.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/lib/ripper/core.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/lib/ripper/filter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/lib/ripper/filter.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/lib/ripper/lexer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/lib/ripper/lexer.rb</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/lib/ripper/sexp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/lib/ripper/sexp.rb</a></td><td class='right'>90</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/tools/generate-param-macros.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/tools/generate-param-macros.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/tools/generate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/tools/generate.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/tools/preproc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/tools/preproc.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/ext/ripper/tools/strip.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/ripper/tools/strip.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/sdbm/_sdbm.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/sdbm/_sdbm.c</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/sdbm/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/sdbm/depend</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/sdbm/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/sdbm/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/sdbm/init.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/sdbm/init.c</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/ancdata.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/ancdata.c</a></td><td class='right'>270</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/basicsocket.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/basicsocket.c</a></td><td class='right'>102</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/constants.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/constants.c</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/depend</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/extconf.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/getaddrinfo.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/getaddrinfo.c</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/getnameinfo.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/getnameinfo.c</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/ifaddr.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/ifaddr.c</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/init.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/init.c</a></td><td class='right'>178</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/ipsocket.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/ipsocket.c</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/lib/socket.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/lib/socket.rb</a></td><td class='right'>524</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 98.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/mkconstants.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/mkconstants.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/option.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/option.c</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/raddrinfo.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/raddrinfo.c</a></td><td class='right'>98</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/rubysocket.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/rubysocket.h</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/socket.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/socket.c</a></td><td class='right'>419</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/tcpserver.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/tcpserver.c</a></td><td class='right'>44</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/tcpsocket.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/tcpsocket.c</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/udpsocket.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/udpsocket.c</a></td><td class='right'>184</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/unixserver.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/unixserver.c</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/socket/unixsocket.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/socket/unixsocket.c</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/stringio/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/stringio/README</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/stringio/README.md?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/stringio/README.md</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/stringio/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/stringio/depend</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/stringio/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/stringio/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/stringio/stringio.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/stringio/stringio.c</a></td><td class='right'>230</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/strscan/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/strscan/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/strscan/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/strscan/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/strscan/strscan.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/strscan/strscan.c</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/syslog/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/syslog/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/syslog/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/syslog/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/syslog/lib/syslog/logger.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/syslog/lib/syslog/logger.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/syslog/syslog.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/syslog/syslog.c</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/thread/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/thread/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/thread/thread.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/thread/thread.c</a></td><td class='right'>656</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.9%;'/><td class='none' style='width: 98.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/ChangeLog.tkextlib?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/ChangeLog.tkextlib</a></td><td class='right'>949</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.7%;'/><td class='none' style='width: 97.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/MANUAL_tcltklib.eng?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/MANUAL_tcltklib.eng</a></td><td class='right'>473</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/MANUAL_tcltklib.ja?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/MANUAL_tcltklib.ja</a></td><td class='right'>584</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.7%;'/><td class='none' style='width: 98.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/README.1st?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/README.1st</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/README.ActiveTcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/README.ActiveTcl</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/README.fork?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/README.fork</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/README.macosx-aqua?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/README.macosx-aqua</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/README.tcltklib?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/README.tcltklib</a></td><td class='right'>152</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/config_list.in?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/config_list.in</a></td><td class='right'>41</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/depend</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/extconf.rb</a></td><td class='right'>2094</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 5.9%;'/><td class='none' style='width: 94.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/README</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/multi-tk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/multi-tk.rb</a></td><td class='right'>3754</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 10.6%;'/><td class='none' style='width: 89.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/remote-tk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/remote-tk.rb</a></td><td class='right'>530</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.5%;'/><td class='none' style='width: 98.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tcltk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tcltk.rb</a></td><td class='right'>367</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.0%;'/><td class='none' style='width: 99.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk.rb</a></td><td class='right'>5775</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 16.3%;'/><td class='none' style='width: 83.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/after.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/after.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/autoload.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/autoload.rb</a></td><td class='right'>762</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.2%;'/><td class='none' style='width: 97.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/bgerror.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/bgerror.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/bindtag.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/bindtag.rb</a></td><td class='right'>138</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/busy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/busy.rb</a></td><td class='right'>118</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/button.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/button.rb</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/canvas.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/canvas.rb</a></td><td class='right'>846</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.4%;'/><td class='none' style='width: 97.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/canvastag.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/canvastag.rb</a></td><td class='right'>459</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/checkbutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/checkbutton.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/clipboard.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/clipboard.rb</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/clock.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/clock.rb</a></td><td class='right'>71</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/composite.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/composite.rb</a></td><td class='right'>484</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.4%;'/><td class='none' style='width: 98.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/console.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/console.rb</a></td><td class='right'>52</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/dialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/dialog.rb</a></td><td class='right'>326</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/encodedstr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/encodedstr.rb</a></td><td class='right'>187</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/entry.rb</a></td><td class='right'>120</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/event.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/event.rb</a></td><td class='right'>562</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.6%;'/><td class='none' style='width: 98.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/font.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/font.rb</a></td><td class='right'>2351</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 6.6%;'/><td class='none' style='width: 93.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/fontchooser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/fontchooser.rb</a></td><td class='right'>180</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/frame.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/frame.rb</a></td><td class='right'>132</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/grid.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/grid.rb</a></td><td class='right'>279</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/image.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/image.rb</a></td><td class='right'>395</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/itemconfig.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/itemconfig.rb</a></td><td class='right'>1222</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 3.5%;'/><td class='none' style='width: 96.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/itemfont.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/itemfont.rb</a></td><td class='right'>327</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/kinput.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/kinput.rb</a></td><td class='right'>71</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/label.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/label.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/labelframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/labelframe.rb</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/listbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/listbox.rb</a></td><td class='right'>284</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/macpkg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/macpkg.rb</a></td><td class='right'>80</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/menu.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/menu.rb</a></td><td class='right'>718</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.0%;'/><td class='none' style='width: 98.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/menubar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/menubar.rb</a></td><td class='right'>137</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/menuspec.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/menuspec.rb</a></td><td class='right'>456</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/message.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/message.rb</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/mngfocus.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/mngfocus.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/msgcat.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/msgcat.rb</a></td><td class='right'>299</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/namespace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/namespace.rb</a></td><td class='right'>546</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.5%;'/><td class='none' style='width: 98.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/optiondb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/optiondb.rb</a></td><td class='right'>377</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/optionobj.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/optionobj.rb</a></td><td class='right'>212</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/pack.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/pack.rb</a></td><td class='right'>107</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/package.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/package.rb</a></td><td class='right'>143</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/palette.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/palette.rb</a></td><td class='right'>55</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/panedwindow.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/panedwindow.rb</a></td><td class='right'>260</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/place.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/place.rb</a></td><td class='right'>128</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/radiobutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/radiobutton.rb</a></td><td class='right'>73</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/root.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/root.rb</a></td><td class='right'>95</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/scale.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/scale.rb</a></td><td class='right'>112</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/scrollable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/scrollable.rb</a></td><td class='right'>82</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/scrollbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/scrollbar.rb</a></td><td class='right'>183</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/scrollbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/scrollbox.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/selection.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/selection.rb</a></td><td class='right'>86</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/spinbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/spinbox.rb</a></td><td class='right'>144</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/tagfont.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/tagfont.rb</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/text.rb</a></td><td class='right'>1604</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 4.5%;'/><td class='none' style='width: 95.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/textimage.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/textimage.rb</a></td><td class='right'>88</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/textmark.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/textmark.rb</a></td><td class='right'>204</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/texttag.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/texttag.rb</a></td><td class='right'>321</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/textwindow.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/textwindow.rb</a></td><td class='right'>154</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/timer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/timer.rb</a></td><td class='right'>669</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.9%;'/><td class='none' style='width: 98.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/tk_mac.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/tk_mac.rb</a></td><td class='right'>158</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/toplevel.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/toplevel.rb</a></td><td class='right'>264</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/ttk_selector.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/ttk_selector.rb</a></td><td class='right'>98</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/txtwin_abst.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/txtwin_abst.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/validation.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/validation.rb</a></td><td class='right'>397</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/variable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/variable.rb</a></td><td class='right'>1799</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 5.1%;'/><td class='none' style='width: 94.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/virtevent.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/virtevent.rb</a></td><td class='right'>139</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/winfo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/winfo.rb</a></td><td class='right'>392</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/winpkg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/winpkg.rb</a></td><td class='right'>156</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/wm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/wm.rb</a></td><td class='right'>552</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.6%;'/><td class='none' style='width: 98.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tk/xim.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tk/xim.rb</a></td><td class='right'>122</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkafter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkafter.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkbgerror.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkbgerror.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkcanvas.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkcanvas.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkclass.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkclass.rb</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkconsole.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkconsole.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkdialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkdialog.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkentry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkentry.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/ICONS.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/ICONS.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/ICONS/icons.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/ICONS/icons.rb</a></td><td class='right'>129</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/ICONS/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/ICONS/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/SUPPORT_STATUS?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/SUPPORT_STATUS</a></td><td class='right'>193</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt.rb</a></td><td class='right'>189</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/barchart.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/barchart.rb</a></td><td class='right'>79</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/bitmap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/bitmap.rb</a></td><td class='right'>112</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/busy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/busy.rb</a></td><td class='right'>83</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/component.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/component.rb</a></td><td class='right'>2218</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 6.3%;'/><td class='none' style='width: 93.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/container.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/container.rb</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/cutbuffer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/cutbuffer.rb</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/dragdrop.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/dragdrop.rb</a></td><td class='right'>269</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/eps.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/eps.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/graph.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/graph.rb</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/htext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/htext.rb</a></td><td class='right'>112</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/spline.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/spline.rb</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/stripchart.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/stripchart.rb</a></td><td class='right'>74</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/table.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/table.rb</a></td><td class='right'>412</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.2%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/tabnotebook.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/tabnotebook.rb</a></td><td class='right'>110</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/tabset.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/tabset.rb</a></td><td class='right'>504</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.4%;'/><td class='none' style='width: 98.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/ted.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/ted.rb</a></td><td class='right'>68</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/tile.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/tile.rb</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/tile/button.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/tile/button.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/tile/checkbutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/tile/checkbutton.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/tile/frame.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/tile/frame.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/tile/label.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/tile/label.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/tile/radiobutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/tile/radiobutton.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/tile/scrollbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/tile/scrollbar.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/tile/toplevel.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/tile/toplevel.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/tree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/tree.rb</a></td><td class='right'>1058</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 3.0%;'/><td class='none' style='width: 97.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/treeview.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/treeview.rb</a></td><td class='right'>1287</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 3.6%;'/><td class='none' style='width: 96.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/unix_dnd.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/unix_dnd.rb</a></td><td class='right'>141</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/vector.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/vector.rb</a></td><td class='right'>256</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/watch.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/watch.rb</a></td><td class='right'>175</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/win_printer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/win_printer.rb</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/blt/winop.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/blt/winop.rb</a></td><td class='right'>107</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget.rb</a></td><td class='right'>153</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/arrowbutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/arrowbutton.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/bitmap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/bitmap.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/button.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/button.rb</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/buttonbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/buttonbox.rb</a></td><td class='right'>90</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/combobox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/combobox.rb</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/dialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/dialog.rb</a></td><td class='right'>194</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/dragsite.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/dragsite.rb</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/dropsite.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/dropsite.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/dynamichelp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/dynamichelp.rb</a></td><td class='right'>63</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/entry.rb</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/label.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/label.rb</a></td><td class='right'>41</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/labelentry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/labelentry.rb</a></td><td class='right'>80</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/labelframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/labelframe.rb</a></td><td class='right'>52</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/listbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/listbox.rb</a></td><td class='right'>361</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.0%;'/><td class='none' style='width: 99.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/mainframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/mainframe.rb</a></td><td class='right'>132</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/messagedlg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/messagedlg.rb</a></td><td class='right'>192</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/notebook.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/notebook.rb</a></td><td class='right'>166</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/pagesmanager.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/pagesmanager.rb</a></td><td class='right'>73</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/panedwindow.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/panedwindow.rb</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/panelframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/panelframe.rb</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/passwddlg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/passwddlg.rb</a></td><td class='right'>44</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/progressbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/progressbar.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/progressdlg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/progressdlg.rb</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/scrollableframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/scrollableframe.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/scrolledwindow.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/scrolledwindow.rb</a></td><td class='right'>48</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/scrollview.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/scrollview.rb</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/selectcolor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/selectcolor.rb</a></td><td class='right'>73</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/selectfont.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/selectfont.rb</a></td><td class='right'>91</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/separator.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/separator.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/spinbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/spinbox.rb</a></td><td class='right'>98</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/statusbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/statusbar.rb</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/titleframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/titleframe.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/tree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/tree.rb</a></td><td class='right'>500</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.4%;'/><td class='none' style='width: 98.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/bwidget/widget.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/bwidget/widget.rb</a></td><td class='right'>129</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/itcl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/itcl.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/itcl/incr_tcl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/itcl/incr_tcl.rb</a></td><td class='right'>178</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/itcl/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/itcl/setup.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/itk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/itk.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/itk/incr_tk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/itk/incr_tk.rb</a></td><td class='right'>446</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/itk/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/itk/setup.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets.rb</a></td><td class='right'>94</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/buttonbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/buttonbox.rb</a></td><td class='right'>121</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/calendar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/calendar.rb</a></td><td class='right'>125</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/canvasprintbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/canvasprintbox.rb</a></td><td class='right'>53</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/canvasprintdialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/canvasprintdialog.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/checkbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/checkbox.rb</a></td><td class='right'>130</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/combobox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/combobox.rb</a></td><td class='right'>104</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/dateentry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/dateentry.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/datefield.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/datefield.rb</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/dialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/dialog.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/dialogshell.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/dialogshell.rb</a></td><td class='right'>121</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/disjointlistbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/disjointlistbox.rb</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/entryfield.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/entryfield.rb</a></td><td class='right'>185</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/extbutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/extbutton.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/extfileselectionbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/extfileselectionbox.rb</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/extfileselectiondialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/extfileselectiondialog.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/feedback.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/feedback.rb</a></td><td class='right'>35</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/fileselectionbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/fileselectionbox.rb</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/fileselectiondialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/fileselectiondialog.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/finddialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/finddialog.rb</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/hierarchy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/hierarchy.rb</a></td><td class='right'>365</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.0%;'/><td class='none' style='width: 99.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/hyperhelp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/hyperhelp.rb</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/labeledframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/labeledframe.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/labeledwidget.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/labeledwidget.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/mainwindow.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/mainwindow.rb</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/menubar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/menubar.rb</a></td><td class='right'>212</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/messagebox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/messagebox.rb</a></td><td class='right'>93</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/messagedialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/messagedialog.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/notebook.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/notebook.rb</a></td><td class='right'>175</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/optionmenu.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/optionmenu.rb</a></td><td class='right'>92</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/panedwindow.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/panedwindow.rb</a></td><td class='right'>134</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/promptdialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/promptdialog.rb</a></td><td class='right'>131</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/pushbutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/pushbutton.rb</a></td><td class='right'>35</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/radiobox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/radiobox.rb</a></td><td class='right'>121</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/scopedobject.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/scopedobject.rb</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb</a></td><td class='right'>353</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.0%;'/><td class='none' style='width: 99.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/scrolledframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/scrolledframe.rb</a></td><td class='right'>59</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/scrolledhtml.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/scrolledhtml.rb</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb</a></td><td class='right'>207</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb</a></td><td class='right'>568</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.6%;'/><td class='none' style='width: 98.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/scrolledwidget.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/scrolledwidget.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/selectionbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/selectionbox.rb</a></td><td class='right'>102</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb</a></td><td class='right'>92</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/shell.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/shell.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/spindate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/spindate.rb</a></td><td class='right'>48</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/spinint.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/spinint.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/spinner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/spinner.rb</a></td><td class='right'>169</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/spintime.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/spintime.rb</a></td><td class='right'>48</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb</a></td><td class='right'>181</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/tabset.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/tabset.rb</a></td><td class='right'>145</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/timeentry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/timeentry.rb</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/timefield.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/timefield.rb</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/toolbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/toolbar.rb</a></td><td class='right'>112</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/iwidgets/watch.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/iwidgets/watch.rb</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/pkg_checker.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/pkg_checker.rb</a></td><td class='right'>184</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib.rb</a></td><td class='right'>105</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/README</a></td><td class='right'>135</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/autoscroll.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/autoscroll.rb</a></td><td class='right'>158</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/calendar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/calendar.rb</a></td><td class='right'>55</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/canvas_sqmap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/canvas_sqmap.rb</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/canvas_zoom.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/canvas_zoom.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/chatwidget.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/chatwidget.rb</a></td><td class='right'>151</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/crosshair.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/crosshair.rb</a></td><td class='right'>117</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/ctext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/ctext.rb</a></td><td class='right'>160</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/cursor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/cursor.rb</a></td><td class='right'>97</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/dateentry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/dateentry.rb</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/datefield.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/datefield.rb</a></td><td class='right'>57</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/diagrams.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/diagrams.rb</a></td><td class='right'>224</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/dialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/dialog.rb</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/getstring.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/getstring.rb</a></td><td class='right'>134</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/history.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/history.rb</a></td><td class='right'>73</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/ico.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/ico.rb</a></td><td class='right'>146</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/ip_entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/ip_entry.rb</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/khim.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/khim.rb</a></td><td class='right'>68</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/menuentry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/menuentry.rb</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/ntext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/ntext.rb</a></td><td class='right'>146</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/panelframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/panelframe.rb</a></td><td class='right'>78</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/plotchart.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/plotchart.rb</a></td><td class='right'>1404</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 4.0%;'/><td class='none' style='width: 96.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/ruler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/ruler.rb</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/screenruler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/screenruler.rb</a></td><td class='right'>68</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/scrolledwindow.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/scrolledwindow.rb</a></td><td class='right'>57</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/scrollwin.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/scrollwin.rb</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/statusbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/statusbar.rb</a></td><td class='right'>79</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/style.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/style.rb</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/superframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/superframe.rb</a></td><td class='right'>51</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/swaplist.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/swaplist.rb</a></td><td class='right'>150</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/tablelist.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/tablelist.rb</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/tablelist_core.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/tablelist_core.rb</a></td><td class='right'>1072</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 3.0%;'/><td class='none' style='width: 97.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/tablelist_tile.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/tablelist_tile.rb</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/tkpiechart.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/tkpiechart.rb</a></td><td class='right'>314</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/toolbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/toolbar.rb</a></td><td class='right'>175</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/tooltip.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/tooltip.rb</a></td><td class='right'>104</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/validator.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/validator.rb</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tcllib/widget.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tcllib/widget.rb</a></td><td class='right'>82</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tclx.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tclx.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tclx/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tclx/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tclx/tclx.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tclx/tclx.rb</a></td><td class='right'>74</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile.rb</a></td><td class='right'>449</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/dialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/dialog.rb</a></td><td class='right'>102</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/sizegrip.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/sizegrip.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/style.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/style.rb</a></td><td class='right'>336</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tbutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tbutton.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tcheckbutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tcheckbutton.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tcombobox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tcombobox.rb</a></td><td class='right'>55</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tentry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tentry.rb</a></td><td class='right'>49</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tframe.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tlabel.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tlabel.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tlabelframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tlabelframe.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tmenubutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tmenubutton.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tnotebook.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tnotebook.rb</a></td><td class='right'>147</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tpaned.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tpaned.rb</a></td><td class='right'>245</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tprogressbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tprogressbar.rb</a></td><td class='right'>57</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tradiobutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tradiobutton.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/treeview.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/treeview.rb</a></td><td class='right'>1336</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 3.8%;'/><td class='none' style='width: 96.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tscale.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tscale.rb</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tscrollbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tscrollbar.rb</a></td><td class='right'>63</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tseparator.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tseparator.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tspinbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tspinbox.rb</a></td><td class='right'>107</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tile/tsquare.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tile/tsquare.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkDND.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkDND.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkDND/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkDND/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkDND/shape.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkDND/shape.rb</a></td><td class='right'>125</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkDND/tkdnd.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkDND/tkdnd.rb</a></td><td class='right'>182</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkHTML.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkHTML.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkHTML/htmlwidget.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkHTML/htmlwidget.rb</a></td><td class='right'>453</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkHTML/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkHTML/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg.rb</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/README</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/bmp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/bmp.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/dted.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/dted.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/gif.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/gif.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/ico.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/ico.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/jpeg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/jpeg.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/pcx.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/pcx.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/pixmap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/pixmap.rb</a></td><td class='right'>44</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/png.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/png.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/ppm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/ppm.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/ps.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/ps.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/raw.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/raw.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/sgi.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/sgi.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/sun.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/sun.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/tga.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/tga.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/tiff.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/tiff.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/window.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/window.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/xbm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/xbm.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tkimg/xpm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tkimg/xpm.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tktable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tktable.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tktable/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tktable/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tktable/tktable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tktable/tktable.rb</a></td><td class='right'>966</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.7%;'/><td class='none' style='width: 97.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tktrans.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tktrans.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tktrans/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tktrans/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/tktrans/tktrans.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/tktrans/tktrans.rb</a></td><td class='right'>64</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/treectrl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/treectrl.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/treectrl/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/treectrl/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/treectrl/tktreectrl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/treectrl/tktreectrl.rb</a></td><td class='right'>2522</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 7.1%;'/><td class='none' style='width: 92.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/trofs.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/trofs.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/trofs/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/trofs/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/trofs/trofs.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/trofs/trofs.rb</a></td><td class='right'>51</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/version.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/version.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/vu.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/vu.rb</a></td><td class='right'>48</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/vu/bargraph.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/vu/bargraph.rb</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/vu/charts.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/vu/charts.rb</a></td><td class='right'>53</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/vu/dial.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/vu/dial.rb</a></td><td class='right'>102</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/vu/pie.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/vu/pie.rb</a></td><td class='right'>286</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/vu/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/vu/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/vu/spinbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/vu/spinbox.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/winico.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/winico.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/winico/setup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/winico/setup.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkextlib/winico/winico.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkextlib/winico/winico.rb</a></td><td class='right'>224</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkfont.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkfont.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkmacpkg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkmacpkg.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkmenubar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkmenubar.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkmngfocus.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkmngfocus.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkpalette.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkpalette.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkscrollbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkscrollbox.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tktext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tktext.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkvirtevent.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkvirtevent.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/lib/tkwinpkg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/lib/tkwinpkg.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/old-README.tcltklib.ja?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/old-README.tcltklib.ja</a></td><td class='right'>159</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/old-extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/old-extconf.rb</a></td><td class='right'>440</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.2%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/24hr_clock.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/24hr_clock.rb</a></td><td class='right'>286</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/binding_sample.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/binding_sample.rb</a></td><td class='right'>87</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/bindtag_sample.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/bindtag_sample.rb</a></td><td class='right'>127</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/binstr_usage.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/binstr_usage.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/btn_with_frame.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/btn_with_frame.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/cd_timer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/cd_timer.rb</a></td><td class='right'>81</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/cmd_res_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/cmd_res_test.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/cmd_resource?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/cmd_resource</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/ChangeLog?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/ChangeLog</a></td><td class='right'>64</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/ChangeLog.prev?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/ChangeLog.prev</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/README</a></td><td class='right'>138</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/README.1st?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/README.1st</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/README.tkencoding?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/README.tkencoding</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/anilabel.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/anilabel.rb</a></td><td class='right'>174</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/aniwave.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/aniwave.rb</a></td><td class='right'>118</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/arrow.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/arrow.rb</a></td><td class='right'>249</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/bind.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/bind.rb</a></td><td class='right'>127</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/bitmap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/bitmap.rb</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/browse1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/browse1</a></td><td class='right'>63</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/browse2?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/browse2</a></td><td class='right'>82</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/button.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/button.rb</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/check.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/check.rb</a></td><td class='right'>72</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/check2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/check2.rb</a></td><td class='right'>109</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/clrpick.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/clrpick.rb</a></td><td class='right'>87</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/colors.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/colors.rb</a></td><td class='right'>158</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/combo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/combo.rb</a></td><td class='right'>96</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/cscroll.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/cscroll.rb</a></td><td class='right'>136</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/ctext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/ctext.rb</a></td><td class='right'>207</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/dialog1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/dialog1.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/dialog2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/dialog2.rb</a></td><td class='right'>41</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/doc.org/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/doc.org/README</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/doc.org/README.JP?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/doc.org/README.JP</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/doc.org/README.tk80?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/doc.org/README.tk80</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/doc.org/license.terms?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/doc.org/license.terms</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/doc.org/license.terms.tk80?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/doc.org/license.terms.tk80</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/entry1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/entry1.rb</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/entry2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/entry2.rb</a></td><td class='right'>93</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/entry3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/entry3.rb</a></td><td class='right'>220</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/filebox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/filebox.rb</a></td><td class='right'>102</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/floor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/floor.rb</a></td><td class='right'>1723</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 4.9%;'/><td class='none' style='width: 95.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/floor2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/floor2.rb</a></td><td class='right'>1722</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 4.9%;'/><td class='none' style='width: 95.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/form.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/form.rb</a></td><td class='right'>64</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/goldberg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/goldberg.rb</a></td><td class='right'>2006</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 5.7%;'/><td class='none' style='width: 94.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/hello?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/hello</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/hscale.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/hscale.rb</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/icon.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/icon.rb</a></td><td class='right'>105</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/image1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/image1.rb</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/image2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/image2.rb</a></td><td class='right'>107</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/image3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/image3.rb</a></td><td class='right'>125</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/items.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/items.rb</a></td><td class='right'>381</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/ixset?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/ixset</a></td><td class='right'>333</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/ixset2?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/ixset2</a></td><td class='right'>367</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.0%;'/><td class='none' style='width: 99.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/knightstour.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/knightstour.rb</a></td><td class='right'>271</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/label.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/label.rb</a></td><td class='right'>72</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/labelframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/labelframe.rb</a></td><td class='right'>95</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/mclist.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/mclist.rb</a></td><td class='right'>117</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/menu.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/menu.rb</a></td><td class='right'>196</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/menu84.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/menu84.rb</a></td><td class='right'>215</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/menubu.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/menubu.rb</a></td><td class='right'>237</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/msgbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/msgbox.rb</a></td><td class='right'>90</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/msgbox2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/msgbox2.rb</a></td><td class='right'>91</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/paned1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/paned1.rb</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/paned2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/paned2.rb</a></td><td class='right'>94</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/pendulum.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/pendulum.rb</a></td><td class='right'>240</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/plot.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/plot.rb</a></td><td class='right'>124</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/puzzle.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/puzzle.rb</a></td><td class='right'>134</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/radio.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/radio.rb</a></td><td class='right'>86</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/radio2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/radio2.rb</a></td><td class='right'>109</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/radio3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/radio3.rb</a></td><td class='right'>117</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/rmt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/rmt</a></td><td class='right'>268</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/rolodex?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/rolodex</a></td><td class='right'>320</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/ruler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/ruler.rb</a></td><td class='right'>205</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/sayings.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/sayings.rb</a></td><td class='right'>106</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/search.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/search.rb</a></td><td class='right'>187</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/spin.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/spin.rb</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/square?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/square</a></td><td class='right'>81</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/states.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/states.rb</a></td><td class='right'>80</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/style.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/style.rb</a></td><td class='right'>231</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/tcolor?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/tcolor</a></td><td class='right'>526</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.5%;'/><td class='none' style='width: 98.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/text.rb</a></td><td class='right'>128</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/textpeer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/textpeer.rb</a></td><td class='right'>76</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/timer?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/timer</a></td><td class='right'>136</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/tkencoding.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/tkencoding.rb</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/toolbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/toolbar.rb</a></td><td class='right'>130</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/tree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/tree.rb</a></td><td class='right'>119</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/ttkbut.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/ttkbut.rb</a></td><td class='right'>139</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/ttkmenu.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/ttkmenu.rb</a></td><td class='right'>85</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/ttknote.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/ttknote.rb</a></td><td class='right'>89</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/ttkpane.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/ttkpane.rb</a></td><td class='right'>213</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/ttkprogress.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/ttkprogress.rb</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/twind.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/twind.rb</a></td><td class='right'>291</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/twind2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/twind2.rb</a></td><td class='right'>384</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/unicodeout.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/unicodeout.rb</a></td><td class='right'>114</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/vscale.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/vscale.rb</a></td><td class='right'>79</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-en/widget?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-en/widget</a></td><td class='right'>1087</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 3.1%;'/><td class='none' style='width: 96.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/README</a></td><td class='right'>54</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/README.1st?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/README.1st</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/anilabel.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/anilabel.rb</a></td><td class='right'>177</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/aniwave.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/aniwave.rb</a></td><td class='right'>120</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/arrow.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/arrow.rb</a></td><td class='right'>247</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/bind.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/bind.rb</a></td><td class='right'>125</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/bitmap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/bitmap.rb</a></td><td class='right'>74</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/browse1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/browse1</a></td><td class='right'>63</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/browse2?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/browse2</a></td><td class='right'>82</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/button.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/button.rb</a></td><td class='right'>83</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/check.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/check.rb</a></td><td class='right'>70</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/check2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/check2.rb</a></td><td class='right'>110</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/clrpick.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/clrpick.rb</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/colors.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/colors.rb</a></td><td class='right'>155</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/combo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/combo.rb</a></td><td class='right'>98</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/cscroll.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/cscroll.rb</a></td><td class='right'>134</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/ctext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/ctext.rb</a></td><td class='right'>204</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/dialog1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/dialog1.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/dialog2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/dialog2.rb</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/doc.org/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/doc.org/README</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/doc.org/README.JP?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/doc.org/README.JP</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/doc.org/README.tk80?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/doc.org/README.tk80</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/doc.org/license.terms?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/doc.org/license.terms</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/doc.org/license.terms.tk80?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/doc.org/license.terms.tk80</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/entry1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/entry1.rb</a></td><td class='right'>60</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/entry2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/entry2.rb</a></td><td class='right'>91</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/entry3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/entry3.rb</a></td><td class='right'>225</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/filebox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/filebox.rb</a></td><td class='right'>102</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/floor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/floor.rb</a></td><td class='right'>1721</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 4.9%;'/><td class='none' style='width: 95.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/floor2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/floor2.rb</a></td><td class='right'>1719</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 4.9%;'/><td class='none' style='width: 95.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/form.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/form.rb</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/goldberg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/goldberg.rb</a></td><td class='right'>2011</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 5.7%;'/><td class='none' style='width: 94.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/hello?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/hello</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/hscale.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/hscale.rb</a></td><td class='right'>78</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/icon.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/icon.rb</a></td><td class='right'>103</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/image1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/image1.rb</a></td><td class='right'>64</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/image2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/image2.rb</a></td><td class='right'>106</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/image3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/image3.rb</a></td><td class='right'>127</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/items.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/items.rb</a></td><td class='right'>379</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/ixset?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/ixset</a></td><td class='right'>333</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/ixset2?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/ixset2</a></td><td class='right'>369</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.0%;'/><td class='none' style='width: 99.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/knightstour.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/knightstour.rb</a></td><td class='right'>273</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/label.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/label.rb</a></td><td class='right'>69</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/labelframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/labelframe.rb</a></td><td class='right'>102</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/mclist.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/mclist.rb</a></td><td class='right'>121</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/menu.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/menu.rb</a></td><td class='right'>201</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/menu84.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/menu84.rb</a></td><td class='right'>213</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/menu8x.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/menu8x.rb</a></td><td class='right'>233</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/menubu.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/menubu.rb</a></td><td class='right'>238</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/msgbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/msgbox.rb</a></td><td class='right'>89</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/msgbox2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/msgbox2.rb</a></td><td class='right'>90</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/paned1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/paned1.rb</a></td><td class='right'>52</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/paned2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/paned2.rb</a></td><td class='right'>100</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/pendulum.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/pendulum.rb</a></td><td class='right'>242</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/plot.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/plot.rb</a></td><td class='right'>126</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/puzzle.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/puzzle.rb</a></td><td class='right'>131</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/radio.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/radio.rb</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/radio2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/radio2.rb</a></td><td class='right'>112</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/radio3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/radio3.rb</a></td><td class='right'>119</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/rmt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/rmt</a></td><td class='right'>268</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/rolodex?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/rolodex</a></td><td class='right'>320</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/rolodex-j?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/rolodex-j</a></td><td class='right'>300</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/ruler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/ruler.rb</a></td><td class='right'>203</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/sayings.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/sayings.rb</a></td><td class='right'>103</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/search.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/search.rb</a></td><td class='right'>184</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/spin.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/spin.rb</a></td><td class='right'>71</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/square?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/square</a></td><td class='right'>81</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/states.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/states.rb</a></td><td class='right'>74</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/style.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/style.rb</a></td><td class='right'>270</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/tcolor?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/tcolor</a></td><td class='right'>534</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.5%;'/><td class='none' style='width: 98.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/text.rb</a></td><td class='right'>120</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/textpeer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/textpeer.rb</a></td><td class='right'>82</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/timer?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/timer</a></td><td class='right'>136</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/toolbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/toolbar.rb</a></td><td class='right'>136</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/tree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/tree.rb</a></td><td class='right'>120</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/ttkbut.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/ttkbut.rb</a></td><td class='right'>145</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/ttkmenu.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/ttkmenu.rb</a></td><td class='right'>91</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/ttknote.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/ttknote.rb</a></td><td class='right'>97</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/ttkpane.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/ttkpane.rb</a></td><td class='right'>216</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/ttkprogress.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/ttkprogress.rb</a></td><td class='right'>71</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/twind.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/twind.rb</a></td><td class='right'>292</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/twind2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/twind2.rb</a></td><td class='right'>384</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/unicodeout.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/unicodeout.rb</a></td><td class='right'>119</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/vscale.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/vscale.rb</a></td><td class='right'>80</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/demos-jp/widget?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/demos-jp/widget</a></td><td class='right'>1122</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 3.2%;'/><td class='none' style='width: 96.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/editable_listbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/editable_listbox.rb</a></td><td class='right'>148</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/encstr_usage.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/encstr_usage.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/figmemo_sample.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/figmemo_sample.rb</a></td><td class='right'>456</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/earth.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/earth.gif</a></td><td class='right'>bin</td><td class='graph'>51712 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/earthris.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/earthris.gif</a></td><td class='right'>bin</td><td class='graph'>6343 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/face.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/face.xbm</a></td><td class='right'>173</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/flagdown.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/flagdown.xbm</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/flagup.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/flagup.xbm</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/gray25.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/gray25.xbm</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/grey.25?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/grey.25</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/grey.5?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/grey.5</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/letters.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/letters.xbm</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/noletter.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/noletter.xbm</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/pattern.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/pattern.xbm</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/tcllogo.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/tcllogo.gif</a></td><td class='right'>bin</td><td class='graph'>2341 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/images/teapot.ppm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/images/teapot.ppm</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/irbtk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/irbtk.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/irbtkw.rbw?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/irbtkw.rbw</a></td><td class='right'>156</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/iso2022-kr.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/iso2022-kr.txt</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/menubar1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/menubar1.rb</a></td><td class='right'>51</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/menubar2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/menubar2.rb</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/menubar3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/menubar3.rb</a></td><td class='right'>72</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/README</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/cs.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/cs.msg</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/de.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/de.msg</a></td><td class='right'>88</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/el.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/el.msg</a></td><td class='right'>98</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/en.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/en.msg</a></td><td class='right'>83</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/en_gb.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/en_gb.msg</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/eo.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/eo.msg</a></td><td class='right'>87</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/es.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/es.msg</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/fr.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/fr.msg</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/it.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/it.msg</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/ja.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/ja.msg</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/nl.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/nl.msg</a></td><td class='right'>123</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/pl.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/pl.msg</a></td><td class='right'>87</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb/ru.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb/ru.msg</a></td><td class='right'>87</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb2/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb2/README</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb2/de.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb2/de.msg</a></td><td class='right'>88</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_rb2/ja.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_rb2/ja.msg</a></td><td class='right'>85</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/README</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/cs.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/cs.msg</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/de.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/de.msg</a></td><td class='right'>88</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/el.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/el.msg</a></td><td class='right'>103</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/en.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/en.msg</a></td><td class='right'>83</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/en_gb.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/en_gb.msg</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/eo.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/eo.msg</a></td><td class='right'>87</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/es.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/es.msg</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/fr.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/fr.msg</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/it.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/it.msg</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/ja.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/ja.msg</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/license.terms?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/license.terms</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/nl.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/nl.msg</a></td><td class='right'>123</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/pl.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/pl.msg</a></td><td class='right'>87</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/msgs_tk/ru.msg?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/msgs_tk/ru.msg</a></td><td class='right'>87</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/multi-ip_sample.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/multi-ip_sample.rb</a></td><td class='right'>103</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/multi-ip_sample2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/multi-ip_sample2.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/optobj_sample.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/optobj_sample.rb</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/propagate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/propagate.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/remote-ip_sample.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/remote-ip_sample.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/remote-ip_sample2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/remote-ip_sample2.rb</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/resource.en?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/resource.en</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/resource.ja?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/resource.ja</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/safe-tk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/safe-tk.rb</a></td><td class='right'>134</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/scrollframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/scrollframe.rb</a></td><td class='right'>249</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tcltklib/batsu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tcltklib/batsu.gif</a></td><td class='right'>bin</td><td class='graph'>538 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tcltklib/lines0.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tcltklib/lines0.tcl</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tcltklib/lines1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tcltklib/lines1.rb</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tcltklib/lines2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tcltklib/lines2.rb</a></td><td class='right'>54</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tcltklib/lines3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tcltklib/lines3.rb</a></td><td class='right'>54</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tcltklib/lines4.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tcltklib/lines4.rb</a></td><td class='right'>54</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tcltklib/maru.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tcltklib/maru.gif</a></td><td class='right'>bin</td><td class='graph'>481 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tcltklib/safeTk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tcltklib/safeTk.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tcltklib/sample0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tcltklib/sample0.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tcltklib/sample1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tcltklib/sample1.rb</a></td><td class='right'>634</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.8%;'/><td class='none' style='width: 98.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tcltklib/sample2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tcltklib/sample2.rb</a></td><td class='right'>451</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkalignbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkalignbox.rb</a></td><td class='right'>235</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkballoonhelp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkballoonhelp.rb</a></td><td class='right'>220</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkbiff.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkbiff.rb</a></td><td class='right'>155</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkbrowse.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkbrowse.rb</a></td><td class='right'>79</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkcombobox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkcombobox.rb</a></td><td class='right'>497</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.4%;'/><td class='none' style='width: 98.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkdialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkdialog.rb</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/ICONS/Orig_LICENSE.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/ICONS/Orig_LICENSE.txt</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/ICONS/tkIcons?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/ICONS/tkIcons</a></td><td class='right'>195</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/ICONS/tkIcons-sample.kde?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/ICONS/tkIcons-sample.kde</a></td><td class='right'>658</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.9%;'/><td class='none' style='width: 98.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/ICONS/tkIcons.kde?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/ICONS/tkIcons.kde</a></td><td class='right'>195</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/ICONS/viewIcons.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/ICONS/viewIcons.rb</a></td><td class='right'>329</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/barchart5.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/barchart5.rb</a></td><td class='right'>101</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/calendar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/calendar.rb</a></td><td class='right'>117</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/graph6.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/graph6.rb</a></td><td class='right'>2222</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 6.3%;'/><td class='none' style='width: 93.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/graph7.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/graph7.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/graph7a.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/graph7a.rb</a></td><td class='right'>63</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/graph7b.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/graph7b.rb</a></td><td class='right'>41</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/graph7c.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/graph7c.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/images/buckskin.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/images/buckskin.gif</a></td><td class='right'>bin</td><td class='graph'>7561 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/images/chalk.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/images/chalk.gif</a></td><td class='right'>bin</td><td class='graph'>4378 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/images/qv100.t.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/images/qv100.t.gif</a></td><td class='right'>bin</td><td class='graph'>2694 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/images/rain.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/images/rain.gif</a></td><td class='right'>bin</td><td class='graph'>3785 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/images/sample.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/images/sample.gif</a></td><td class='right'>bin</td><td class='graph'>186103 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/pareto.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/pareto.rb</a></td><td class='right'>90</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/plot1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/plot1.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/plot1b.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/plot1b.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/readme.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/readme.txt</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/scripts/stipples.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/scripts/stipples.rb</a></td><td class='right'>156</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/winop1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/winop1.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/blt/winop2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/blt/winop2.rb</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/bwidget/Orig_LICENSE.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/bwidget/Orig_LICENSE.txt</a></td><td class='right'>53</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/bwidget/basic.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/bwidget/basic.rb</a></td><td class='right'>198</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/bwidget/bwidget.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/bwidget/bwidget.xbm</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/bwidget/demo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/bwidget/demo.rb</a></td><td class='right'>243</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/bwidget/dnd.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/bwidget/dnd.rb</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/bwidget/manager.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/bwidget/manager.rb</a></td><td class='right'>150</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/bwidget/select.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/bwidget/select.rb</a></td><td class='right'>82</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/bwidget/tmpldlg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/bwidget/tmpldlg.rb</a></td><td class='right'>221</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/bwidget/tree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/bwidget/tree.rb</a></td><td class='right'>289</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/bwidget/x1.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/bwidget/x1.xbm</a></td><td class='right'>2258</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 6.4%;'/><td class='none' style='width: 93.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/Orig_LICENSE.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/Orig_LICENSE.txt</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/box.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/box.xbm</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/clear.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/clear.gif</a></td><td class='right'>bin</td><td class='graph'>279 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/close.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/close.gif</a></td><td class='right'>bin</td><td class='graph'>249 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/copy.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/copy.gif</a></td><td class='right'>bin</td><td class='graph'>269 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/cut.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/cut.gif</a></td><td class='right'>bin</td><td class='graph'>179 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/exit.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/exit.gif</a></td><td class='right'>bin</td><td class='graph'>396 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/find.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/find.gif</a></td><td class='right'>bin</td><td class='graph'>386 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/help.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/help.gif</a></td><td class='right'>bin</td><td class='graph'>591 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/line.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/line.xbm</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/mag.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/mag.gif</a></td><td class='right'>bin</td><td class='graph'>183 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/new.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/new.gif</a></td><td class='right'>bin</td><td class='graph'>212 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/open.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/open.gif</a></td><td class='right'>bin</td><td class='graph'>258 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/oval.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/oval.xbm</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/paste.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/paste.gif</a></td><td class='right'>bin</td><td class='graph'>376 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/points.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/points.xbm</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/poly.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/poly.gif</a></td><td class='right'>bin</td><td class='graph'>141 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/print.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/print.gif</a></td><td class='right'>bin</td><td class='graph'>263 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/ruler.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/ruler.gif</a></td><td class='right'>bin</td><td class='graph'>174 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/save.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/save.gif</a></td><td class='right'>bin</td><td class='graph'>270 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/select.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/select.gif</a></td><td class='right'>bin</td><td class='graph'>124 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/text.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/text.xbm</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/buttonbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/buttonbox.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/calendar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/calendar.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/canvasprintbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/canvasprintbox.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/canvasprintdialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/canvasprintdialog.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/checkbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/checkbox.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/combobox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/combobox.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/dateentry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/dateentry.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/datefield.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/datefield.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/dialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/dialog.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/dialogshell.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/dialogshell.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/disjointlistbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/disjointlistbox.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/entryfield-1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/entryfield-1.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/entryfield-2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/entryfield-2.rb</a></td><td class='right'>44</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/entryfield-3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/entryfield-3.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/extbutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/extbutton.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/extfileselectionbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/extfileselectionbox.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/extfileselectiondialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/extfileselectiondialog.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/feedback.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/feedback.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/fileselectionbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/fileselectionbox.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/fileselectiondialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/fileselectiondialog.rb</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/finddialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/finddialog.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/hierarchy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/hierarchy.rb</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/hyperhelp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/hyperhelp.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/labeledframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/labeledframe.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/labeledwidget.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/labeledwidget.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/mainwindow.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/mainwindow.rb</a></td><td class='right'>64</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/menubar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/menubar.rb</a></td><td class='right'>124</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/menubar2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/menubar2.rb</a></td><td class='right'>44</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/messagebox1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/messagebox1.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/messagebox2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/messagebox2.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/messagedialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/messagedialog.rb</a></td><td class='right'>44</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/notebook.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/notebook.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/notebook2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/notebook2.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/optionmenu.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/optionmenu.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/panedwindow.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/panedwindow.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/panedwindow2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/panedwindow2.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/promptdialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/promptdialog.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/pushbutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/pushbutton.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/radiobox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/radiobox.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/scrolledcanvas.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/scrolledcanvas.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/scrolledframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/scrolledframe.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/scrolledhtml.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/scrolledhtml.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/scrolledlistbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/scrolledlistbox.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/scrolledtext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/scrolledtext.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/selectionbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/selectionbox.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/selectiondialog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/selectiondialog.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/shell.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/shell.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/spindate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/spindate.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/spinint.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/spinint.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/spinner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/spinner.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/spintime.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/spintime.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/tabnotebook.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/tabnotebook.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/tabnotebook2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/tabnotebook2.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/tabset.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/tabset.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/timeentry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/timeentry.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/timefield.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/timefield.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/toolbar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/toolbar.rb</a></td><td class='right'>152</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/iwidgets/sample/watch.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/iwidgets/sample/watch.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tcllib/Orig_LICENSE.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tcllib/Orig_LICENSE.txt</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tcllib/datefield.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tcllib/datefield.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tcllib/plotdemos1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tcllib/plotdemos1.rb</a></td><td class='right'>158</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tcllib/plotdemos2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tcllib/plotdemos2.rb</a></td><td class='right'>71</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tcllib/plotdemos3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tcllib/plotdemos3.rb</a></td><td class='right'>83</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tcllib/xyplot.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tcllib/xyplot.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/Orig_LICENSE.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/Orig_LICENSE.txt</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/demo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/demo.rb</a></td><td class='right'>983</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.8%;'/><td class='none' style='width: 97.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/iconlib.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/iconlib.tcl</a></td><td class='right'>110</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/readme.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/readme.txt</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/repeater.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/repeater.tcl</a></td><td class='right'>117</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue.tcl</a></td><td class='right'>149</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowdown-h.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowdown-h.gif</a></td><td class='right'>bin</td><td class='graph'>315 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowdown-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowdown-p.gif</a></td><td class='right'>bin</td><td class='graph'>312 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowdown.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowdown.gif</a></td><td class='right'>bin</td><td class='graph'>313 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowleft-h.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowleft-h.gif</a></td><td class='right'>bin</td><td class='graph'>329 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowleft-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowleft-p.gif</a></td><td class='right'>bin</td><td class='graph'>327 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowleft.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowleft.gif</a></td><td class='right'>bin</td><td class='graph'>323 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowright-h.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowright-h.gif</a></td><td class='right'>bin</td><td class='graph'>330 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowright-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowright-p.gif</a></td><td class='right'>bin</td><td class='graph'>327 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowright.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowright.gif</a></td><td class='right'>bin</td><td class='graph'>324 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowup-h.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowup-h.gif</a></td><td class='right'>bin</td><td class='graph'>309 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowup-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowup-p.gif</a></td><td class='right'>bin</td><td class='graph'>313 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowup.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowup.gif</a></td><td class='right'>bin</td><td class='graph'>314 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/button-h.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/button-h.gif</a></td><td class='right'>bin</td><td class='graph'>696 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/button-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/button-n.gif</a></td><td class='right'>bin</td><td class='graph'>770 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/button-n.xcf?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/button-n.xcf</a></td><td class='right'>bin</td><td class='graph'>1942 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/button-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/button-p.gif</a></td><td class='right'>bin</td><td class='graph'>769 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/check-hc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/check-hc.gif</a></td><td class='right'>bin</td><td class='graph'>254 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/check-hu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/check-hu.gif</a></td><td class='right'>bin</td><td class='graph'>234 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/check-nc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/check-nc.gif</a></td><td class='right'>bin</td><td class='graph'>249 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/check-nu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/check-nu.gif</a></td><td class='right'>bin</td><td class='graph'>229 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-hc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-hc.gif</a></td><td class='right'>bin</td><td class='graph'>1098 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-hu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-hu.gif</a></td><td class='right'>bin</td><td class='graph'>626 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-nc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-nc.gif</a></td><td class='right'>bin</td><td class='graph'>389 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-nu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-nu.gif</a></td><td class='right'>bin</td><td class='graph'>401 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-thumb-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-thumb-p.gif</a></td><td class='right'>bin</td><td class='graph'>343 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-thumb.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-thumb.gif</a></td><td class='right'>bin</td><td class='graph'>316 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-vthumb-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-vthumb-p.gif</a></td><td class='right'>bin</td><td class='graph'>333 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-vthumb.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-vthumb.gif</a></td><td class='right'>bin</td><td class='graph'>308 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/slider-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/slider-p.gif</a></td><td class='right'>bin</td><td class='graph'>182 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/slider.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/slider.gif</a></td><td class='right'>bin</td><td class='graph'>182 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/vslider-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/vslider-p.gif</a></td><td class='right'>bin</td><td class='graph'>183 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/blue/vslider.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/blue/vslider.gif</a></td><td class='right'>bin</td><td class='graph'>283 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/blue/pkgIndex.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/blue/pkgIndex.tcl</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik.tcl</a></td><td class='right'>194</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowdown-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowdown-n.gif</a></td><td class='right'>bin</td><td class='graph'>273 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowdown-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowdown-p.gif</a></td><td class='right'>bin</td><td class='graph'>258 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowleft-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowleft-n.gif</a></td><td class='right'>bin</td><td class='graph'>292 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowleft-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowleft-p.gif</a></td><td class='right'>bin</td><td class='graph'>272 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowright-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowright-n.gif</a></td><td class='right'>bin</td><td class='graph'>274 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowright-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowright-p.gif</a></td><td class='right'>bin</td><td class='graph'>258 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowup-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowup-n.gif</a></td><td class='right'>bin</td><td class='graph'>286 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowup-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowup-p.gif</a></td><td class='right'>bin</td><td class='graph'>271 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-d.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-d.gif</a></td><td class='right'>bin</td><td class='graph'>1266 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-h.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-h.gif</a></td><td class='right'>bin</td><td class='graph'>896 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-n.gif</a></td><td class='right'>bin</td><td class='graph'>881 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-p.gif</a></td><td class='right'>bin</td><td class='graph'>625 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-s.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-s.gif</a></td><td class='right'>bin</td><td class='graph'>859 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/check-c.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/check-c.gif</a></td><td class='right'>bin</td><td class='graph'>434 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/check-u.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/check-u.gif</a></td><td class='right'>bin</td><td class='graph'>423 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/hsb-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/hsb-n.gif</a></td><td class='right'>bin</td><td class='graph'>401 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/hsb-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/hsb-p.gif</a></td><td class='right'>bin</td><td class='graph'>395 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/hslider-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/hslider-n.gif</a></td><td class='right'>bin</td><td class='graph'>592 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-a.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-a.gif</a></td><td class='right'>bin</td><td class='graph'>1116 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-arrow-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-arrow-n.gif</a></td><td class='right'>bin</td><td class='graph'>61 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-d.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-d.gif</a></td><td class='right'>bin</td><td class='graph'>1057 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-n.gif</a></td><td class='right'>bin</td><td class='graph'>1095 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/radio-c.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/radio-c.gif</a></td><td class='right'>bin</td><td class='graph'>695 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/radio-u.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/radio-u.gif</a></td><td class='right'>bin</td><td class='graph'>686 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tab-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tab-n.gif</a></td><td class='right'>bin</td><td class='graph'>383 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tab-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tab-p.gif</a></td><td class='right'>bin</td><td class='graph'>878 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tbar-a.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tbar-a.gif</a></td><td class='right'>bin</td><td class='graph'>907 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tbar-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tbar-n.gif</a></td><td class='right'>bin</td><td class='graph'>238 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tbar-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tbar-p.gif</a></td><td class='right'>bin</td><td class='graph'>927 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/vsb-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/vsb-n.gif</a></td><td class='right'>bin</td><td class='graph'>405 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/vsb-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/vsb-p.gif</a></td><td class='right'>bin</td><td class='graph'>399 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/keramik/vslider-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/keramik/vslider-n.gif</a></td><td class='right'>bin</td><td class='graph'>587 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/keramik/pkgIndex.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/keramik/pkgIndex.tcl</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc.rb</a></td><td class='right'>226</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc.tcl</a></td><td class='right'>163</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc/button-h.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc/button-h.gif</a></td><td class='right'>bin</td><td class='graph'>522 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc/button-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc/button-n.gif</a></td><td class='right'>bin</td><td class='graph'>554 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc/button-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc/button-p.gif</a></td><td class='right'>bin</td><td class='graph'>548 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-hc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-hc.gif</a></td><td class='right'>bin</td><td class='graph'>281 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-hu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-hu.gif</a></td><td class='right'>bin</td><td class='graph'>273 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-nc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-nc.gif</a></td><td class='right'>bin</td><td class='graph'>303 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-nu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-nu.gif</a></td><td class='right'>bin</td><td class='graph'>294 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-hc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-hc.gif</a></td><td class='right'>bin</td><td class='graph'>652 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-hu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-hu.gif</a></td><td class='right'>bin</td><td class='graph'>644 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-nc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-nc.gif</a></td><td class='right'>bin</td><td class='graph'>632 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-nu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-nu.gif</a></td><td class='right'>bin</td><td class='graph'>621 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/kroc/pkgIndex.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/kroc/pkgIndex.tcl</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/pkgIndex.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/pkgIndex.tcl</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik.tcl</a></td><td class='right'>125</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowdown-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowdown-n.gif</a></td><td class='right'>bin</td><td class='graph'>362 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowdown-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowdown-p.gif</a></td><td class='right'>bin</td><td class='graph'>250 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowleft-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowleft-n.gif</a></td><td class='right'>bin</td><td class='graph'>378 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowleft-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowleft-p.gif</a></td><td class='right'>bin</td><td class='graph'>267 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowright-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowright-n.gif</a></td><td class='right'>bin</td><td class='graph'>379 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowright-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowright-p.gif</a></td><td class='right'>bin</td><td class='graph'>266 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowup-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowup-n.gif</a></td><td class='right'>bin</td><td class='graph'>363 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowup-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowup-p.gif</a></td><td class='right'>bin</td><td class='graph'>251 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/button-h.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/button-h.gif</a></td><td class='right'>bin</td><td class='graph'>439 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/button-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/button-n.gif</a></td><td class='right'>bin</td><td class='graph'>443 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/button-p.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/button-p.gif</a></td><td class='right'>bin</td><td class='graph'>302 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-hc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-hc.gif</a></td><td class='right'>bin</td><td class='graph'>169 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-hu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-hu.gif</a></td><td class='right'>bin</td><td class='graph'>170 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-nc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-nc.gif</a></td><td class='right'>bin</td><td class='graph'>235 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-nu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-nu.gif</a></td><td class='right'>bin</td><td class='graph'>226 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-pc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-pc.gif</a></td><td class='right'>bin</td><td class='graph'>169 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/hsb-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/hsb-n.gif</a></td><td class='right'>bin</td><td class='graph'>269 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/hslider-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/hslider-n.gif</a></td><td class='right'>bin</td><td class='graph'>342 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-hc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-hc.gif</a></td><td class='right'>bin</td><td class='graph'>178 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-hu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-hu.gif</a></td><td class='right'>bin</td><td class='graph'>179 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-nc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-nc.gif</a></td><td class='right'>bin</td><td class='graph'>236 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-nu.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-nu.gif</a></td><td class='right'>bin</td><td class='graph'>178 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-pc.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-pc.gif</a></td><td class='right'>bin</td><td class='graph'>178 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/vsb-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/vsb-n.gif</a></td><td class='right'>bin</td><td class='graph'>366 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/themes/plastik/plastik/vslider-n.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/themes/plastik/plastik/vslider-n.gif</a></td><td class='right'>bin</td><td class='graph'>336 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tile/toolbutton.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tile/toolbutton.tcl</a></td><td class='right'>152</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/Orig_COPYRIGHT.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/Orig_COPYRIGHT.txt</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/README?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/README</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/hv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/hv.rb</a></td><td class='right'>313</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image1</a></td><td class='right'>bin</td><td class='graph'>8995 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image10?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image10</a></td><td class='right'>bin</td><td class='graph'>3095 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image11?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image11</a></td><td class='right'>bin</td><td class='graph'>1425 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image12?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image12</a></td><td class='right'>bin</td><td class='graph'>2468 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image13?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image13</a></td><td class='right'>bin</td><td class='graph'>4073 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image14?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image14</a></td><td class='right'>bin</td><td class='graph'>53 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image2?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image2</a></td><td class='right'>bin</td><td class='graph'>42 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image3?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image3</a></td><td class='right'>bin</td><td class='graph'>3473 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image4?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image4</a></td><td class='right'>bin</td><td class='graph'>1988 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image5?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image5</a></td><td class='right'>bin</td><td class='graph'>973 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image6?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image6</a></td><td class='right'>bin</td><td class='graph'>2184 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image7?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image7</a></td><td class='right'>bin</td><td class='graph'>2022 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image8?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image8</a></td><td class='right'>bin</td><td class='graph'>1186 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/image9?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/image9</a></td><td class='right'>bin</td><td class='graph'>139 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page1/index.html?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page1/index.html</a></td><td class='right'>115</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image1</a></td><td class='right'>bin</td><td class='graph'>1966 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image10?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image10</a></td><td class='right'>bin</td><td class='graph'>255 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image11?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image11</a></td><td class='right'>bin</td><td class='graph'>590 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image12?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image12</a></td><td class='right'>bin</td><td class='graph'>254 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image13?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image13</a></td><td class='right'>bin</td><td class='graph'>493 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image14?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image14</a></td><td class='right'>bin</td><td class='graph'>195 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image15?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image15</a></td><td class='right'>bin</td><td class='graph'>68 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image16?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image16</a></td><td class='right'>bin</td><td class='graph'>157 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image17?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image17</a></td><td class='right'>bin</td><td class='graph'>81 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image18?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image18</a></td><td class='right'>bin</td><td class='graph'>545 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image19?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image19</a></td><td class='right'>bin</td><td class='graph'>53 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image2?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image2</a></td><td class='right'>bin</td><td class='graph'>49 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image20?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image20</a></td><td class='right'>bin</td><td class='graph'>533 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image21?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image21</a></td><td class='right'>bin</td><td class='graph'>564 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image22?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image22</a></td><td class='right'>bin</td><td class='graph'>81 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image23?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image23</a></td><td class='right'>bin</td><td class='graph'>539 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image24?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image24</a></td><td class='right'>bin</td><td class='graph'>151 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image25?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image25</a></td><td class='right'>bin</td><td class='graph'>453 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image26?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image26</a></td><td class='right'>bin</td><td class='graph'>520 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image27?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image27</a></td><td class='right'>bin</td><td class='graph'>565 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image28?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image28</a></td><td class='right'>bin</td><td class='graph'>416 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image29?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image29</a></td><td class='right'>bin</td><td class='graph'>121 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image3?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image3</a></td><td class='right'>bin</td><td class='graph'>10835 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image30?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image30</a></td><td class='right'>bin</td><td class='graph'>663 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image31?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image31</a></td><td class='right'>bin</td><td class='graph'>78 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image32?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image32</a></td><td class='right'>bin</td><td class='graph'>556 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image33?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image33</a></td><td class='right'>bin</td><td class='graph'>598 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image34?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image34</a></td><td class='right'>bin</td><td class='graph'>496 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image35?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image35</a></td><td class='right'>bin</td><td class='graph'>724 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image36?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image36</a></td><td class='right'>bin</td><td class='graph'>404 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image37?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image37</a></td><td class='right'>bin</td><td class='graph'>124 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image38?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image38</a></td><td class='right'>bin</td><td class='graph'>8330 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image39?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image39</a></td><td class='right'>bin</td><td class='graph'>369 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image4?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image4</a></td><td class='right'>bin</td><td class='graph'>268 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image5?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image5</a></td><td class='right'>bin</td><td class='graph'>492 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image6?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image6</a></td><td class='right'>bin</td><td class='graph'>246 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image7?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image7</a></td><td class='right'>bin</td><td class='graph'>551 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image8?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image8</a></td><td class='right'>bin</td><td class='graph'>497 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/image9?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/image9</a></td><td class='right'>bin</td><td class='graph'>492 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page2/index.html?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page2/index.html</a></td><td class='right'>433</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.2%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image1</a></td><td class='right'>bin</td><td class='graph'>113 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image10?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image10</a></td><td class='right'>bin</td><td class='graph'>5088 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image11?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image11</a></td><td class='right'>bin</td><td class='graph'>4485 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image12?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image12</a></td><td class='right'>bin</td><td class='graph'>3579 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image13?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image13</a></td><td class='right'>bin</td><td class='graph'>5119 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image14?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image14</a></td><td class='right'>bin</td><td class='graph'>3603 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image2?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image2</a></td><td class='right'>bin</td><td class='graph'>74 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image3?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image3</a></td><td class='right'>bin</td><td class='graph'>681 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image4?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image4</a></td><td class='right'>bin</td><td class='graph'>3056 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image5?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image5</a></td><td class='right'>bin</td><td class='graph'>2297 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image6?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image6</a></td><td class='right'>bin</td><td class='graph'>79 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image7?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image7</a></td><td class='right'>bin</td><td class='graph'>1613 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image8?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image8</a></td><td class='right'>bin</td><td class='graph'>864 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/image9?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/image9</a></td><td class='right'>bin</td><td class='graph'>2379 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page3/index.html?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page3/index.html</a></td><td class='right'>2787</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 7.9%;'/><td class='none' style='width: 92.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page4/image1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page4/image1</a></td><td class='right'>bin</td><td class='graph'>42 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page4/image2?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page4/image2</a></td><td class='right'>bin</td><td class='graph'>14343 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page4/image3?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page4/image3</a></td><td class='right'>bin</td><td class='graph'>17750 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page4/image4?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page4/image4</a></td><td class='right'>bin</td><td class='graph'>61 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page4/image5?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page4/image5</a></td><td class='right'>bin</td><td class='graph'>201 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page4/image6?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page4/image6</a></td><td class='right'>bin</td><td class='graph'>214 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page4/image7?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page4/image7</a></td><td class='right'>bin</td><td class='graph'>149 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page4/image8?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page4/image8</a></td><td class='right'>bin</td><td class='graph'>203 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page4/image9?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page4/image9</a></td><td class='right'>bin</td><td class='graph'>1504 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/page4/index.html?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/page4/index.html</a></td><td class='right'>768</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.2%;'/><td class='none' style='width: 97.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkHTML/ss.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkHTML/ss.rb</a></td><td class='right'>436</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.2%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkimg/demo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkimg/demo.rb</a></td><td class='right'>1478</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 4.2%;'/><td class='none' style='width: 95.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkimg/license_terms_of_Img_extension?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkimg/license_terms_of_Img_extension</a></td><td class='right'>41</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tkimg/readme.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tkimg/readme.txt</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tktable/Orig_LICENSE.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tktable/Orig_LICENSE.txt</a></td><td class='right'>52</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tktable/basic.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tktable/basic.rb</a></td><td class='right'>60</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tktable/buttons.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tktable/buttons.rb</a></td><td class='right'>76</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tktable/command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tktable/command.rb</a></td><td class='right'>89</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tktable/debug.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tktable/debug.rb</a></td><td class='right'>101</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tktable/dynarows.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tktable/dynarows.rb</a></td><td class='right'>99</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tktable/maxsize.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tktable/maxsize.rb</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tktable/spreadsheet.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tktable/spreadsheet.rb</a></td><td class='right'>137</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tktable/tcllogo.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tktable/tcllogo.gif</a></td><td class='right'>bin</td><td class='graph'>2341 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/tktable/valid.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/tktable/valid.rb</a></td><td class='right'>88</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/bitmaps.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/bitmaps.rb</a></td><td class='right'>76</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/demo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/demo.rb</a></td><td class='right'>1305</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 3.7%;'/><td class='none' style='width: 96.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/explorer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/explorer.rb</a></td><td class='right'>430</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.2%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/help.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/help.rb</a></td><td class='right'>404</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/imovie.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/imovie.rb</a></td><td class='right'>130</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/layout.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/layout.rb</a></td><td class='right'>159</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/mailwasher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/mailwasher.rb</a></td><td class='right'>269</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/outlook-folders.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/outlook-folders.rb</a></td><td class='right'>124</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/outlook-newgroup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/outlook-newgroup.rb</a></td><td class='right'>448</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/big-dll.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/big-dll.gif</a></td><td class='right'>bin</td><td class='graph'>437 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/big-exe.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/big-exe.gif</a></td><td class='right'>bin</td><td class='graph'>368 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/big-file.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/big-file.gif</a></td><td class='right'>bin</td><td class='graph'>466 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/big-folder.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/big-folder.gif</a></td><td class='right'>bin</td><td class='graph'>459 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/big-txt.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/big-txt.gif</a></td><td class='right'>bin</td><td class='graph'>392 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/checked.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/checked.gif</a></td><td class='right'>bin</td><td class='graph'>78 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/file.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/file.gif</a></td><td class='right'>bin</td><td class='graph'>279 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/folder-closed.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/folder-closed.gif</a></td><td class='right'>bin</td><td class='graph'>111 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/folder-open.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/folder-open.gif</a></td><td class='right'>bin</td><td class='graph'>120 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/help-book-closed.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/help-book-closed.gif</a></td><td class='right'>bin</td><td class='graph'>115 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/help-book-open.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/help-book-open.gif</a></td><td class='right'>bin</td><td class='graph'>128 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/help-page.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/help-page.gif</a></td><td class='right'>bin</td><td class='graph'>132 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/imovie-01.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/imovie-01.gif</a></td><td class='right'>bin</td><td class='graph'>5406 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/imovie-02.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/imovie-02.gif</a></td><td class='right'>bin</td><td class='graph'>5912 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/imovie-03.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/imovie-03.gif</a></td><td class='right'>bin</td><td class='graph'>4696 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/imovie-04.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/imovie-04.gif</a></td><td class='right'>bin</td><td class='graph'>5783 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/imovie-05.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/imovie-05.gif</a></td><td class='right'>bin</td><td class='graph'>3238 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/imovie-06.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/imovie-06.gif</a></td><td class='right'>bin</td><td class='graph'>3509 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/imovie-07.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/imovie-07.gif</a></td><td class='right'>bin</td><td class='graph'>2091 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/internet-check-off.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/internet-check-off.gif</a></td><td class='right'>bin</td><td class='graph'>70 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/internet-check-on.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/internet-check-on.gif</a></td><td class='right'>bin</td><td class='graph'>76 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/internet-print.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/internet-print.gif</a></td><td class='right'>bin</td><td class='graph'>124 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/internet-radio-off.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/internet-radio-off.gif</a></td><td class='right'>bin</td><td class='graph'>68 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/internet-radio-on.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/internet-radio-on.gif</a></td><td class='right'>bin</td><td class='graph'>71 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/internet-search.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/internet-search.gif</a></td><td class='right'>bin</td><td class='graph'>114 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/internet-security.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/internet-security.gif</a></td><td class='right'>bin</td><td class='graph'>108 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/mac-collapse.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/mac-collapse.gif</a></td><td class='right'>bin</td><td class='graph'>275 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/mac-expand.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/mac-expand.gif</a></td><td class='right'>bin</td><td class='graph'>277 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-arrow.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-arrow.gif</a></td><td class='right'>bin</td><td class='graph'>73 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-clip.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-clip.gif</a></td><td class='right'>bin</td><td class='graph'>73 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-deleted.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-deleted.gif</a></td><td class='right'>bin</td><td class='graph'>138 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-draft.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-draft.gif</a></td><td class='right'>bin</td><td class='graph'>134 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-folder.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-folder.gif</a></td><td class='right'>bin</td><td class='graph'>133 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-group.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-group.gif</a></td><td class='right'>bin</td><td class='graph'>144 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-inbox.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-inbox.gif</a></td><td class='right'>bin</td><td class='graph'>133 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-local.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-local.gif</a></td><td class='right'>bin</td><td class='graph'>146 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-main.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-main.gif</a></td><td class='right'>bin</td><td class='graph'>174 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-outbox.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-outbox.gif</a></td><td class='right'>bin</td><td class='graph'>136 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-read-2.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-read-2.gif</a></td><td class='right'>bin</td><td class='graph'>343 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-read.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-read.gif</a></td><td class='right'>bin</td><td class='graph'>304 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-sent.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-sent.gif</a></td><td class='right'>bin</td><td class='graph'>132 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-server.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-server.gif</a></td><td class='right'>bin</td><td class='graph'>163 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-unread.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-unread.gif</a></td><td class='right'>bin</td><td class='graph'>303 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/outlook-watch.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/outlook-watch.gif</a></td><td class='right'>bin</td><td class='graph'>98 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/sky.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/sky.gif</a></td><td class='right'>bin</td><td class='graph'>6454 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/small-dll.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/small-dll.gif</a></td><td class='right'>bin</td><td class='graph'>311 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/small-exe.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/small-exe.gif</a></td><td class='right'>bin</td><td class='graph'>115 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/small-file.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/small-file.gif</a></td><td class='right'>bin</td><td class='graph'>338 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/small-folder.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/small-folder.gif</a></td><td class='right'>bin</td><td class='graph'>307 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/small-txt.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/small-txt.gif</a></td><td class='right'>bin</td><td class='graph'>302 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/pics/unchecked.gif?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/pics/unchecked.gif</a></td><td class='right'>bin</td><td class='graph'>72 -> 0 bytes<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/random.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/random.rb</a></td><td class='right'>508</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.4%;'/><td class='none' style='width: 98.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/readme.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/readme.txt</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/treectrl/www-options.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/treectrl/www-options.rb</a></td><td class='right'>303</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/vu/Orig_LICENSE.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/vu/Orig_LICENSE.txt</a></td><td class='right'>51</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/vu/README.txt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/vu/README.txt</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/vu/canvItems.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/vu/canvItems.rb</a></td><td class='right'>90</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/vu/canvSticker.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/vu/canvSticker.rb</a></td><td class='right'>82</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/vu/canvSticker2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/vu/canvSticker2.rb</a></td><td class='right'>101</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/vu/dial_demo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/vu/dial_demo.rb</a></td><td class='right'>113</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/vu/m128_000.xbm?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/vu/m128_000.xbm</a></td><td class='right'>174</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/vu/oscilloscope.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/vu/oscilloscope.rb</a></td><td class='right'>68</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/vu/pie.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/vu/pie.rb</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkextlib/vu/vu_demo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkextlib/vu/vu_demo.rb</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkfrom.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkfrom.rb</a></td><td class='right'>132</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkhello.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkhello.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkline.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkline.rb</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkmenubutton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkmenubutton.rb</a></td><td class='right'>135</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkmsgcat-load_rb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkmsgcat-load_rb.rb</a></td><td class='right'>102</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkmsgcat-load_rb2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkmsgcat-load_rb2.rb</a></td><td class='right'>102</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkmsgcat-load_tk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkmsgcat-load_tk.rb</a></td><td class='right'>118</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkmulticolumnlist.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkmulticolumnlist.rb</a></td><td class='right'>743</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.1%;'/><td class='none' style='width: 97.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkmultilistbox.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkmultilistbox.rb</a></td><td class='right'>654</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.8%;'/><td class='none' style='width: 98.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkmultilistframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkmultilistframe.rb</a></td><td class='right'>940</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.7%;'/><td class='none' style='width: 97.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkoptdb-safeTk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkoptdb-safeTk.rb</a></td><td class='right'>73</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkoptdb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkoptdb.rb</a></td><td class='right'>106</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tkrttimer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tkrttimer.rb</a></td><td class='right'>77</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tksleep_sample.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tksleep_sample.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tktextframe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tktextframe.rb</a></td><td class='right'>281</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tktextio.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tktextio.rb</a></td><td class='right'>1060</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 3.0%;'/><td class='none' style='width: 97.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tktimer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tktimer.rb</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tktimer2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tktimer2.rb</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tktimer3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tktimer3.rb</a></td><td class='right'>59</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tktree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tktree.rb</a></td><td class='right'>103</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/tktree.tcl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/tktree.tcl</a></td><td class='right'>305</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/sample/ttk_wrapper.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/sample/ttk_wrapper.rb</a></td><td class='right'>154</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/stubs.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/stubs.c</a></td><td class='right'>592</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.7%;'/><td class='none' style='width: 98.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/stubs.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/stubs.h</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/tcltklib.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/tcltklib.c</a></td><td class='right'>11130</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 31.5%;'/><td class='none' style='width: 68.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/tkutil/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/tkutil/depend</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/tkutil/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/tkutil/extconf.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/ext/tk/tkutil/tkutil.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/tk/tkutil/tkutil.c</a></td><td class='right'>1878</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 5.3%;'/><td class='none' style='width: 94.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32/lib/Win32API.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32/lib/Win32API.rb</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32/lib/win32/importer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32/lib/win32/importer.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32/lib/win32/registry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32/lib/win32/registry.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32/lib/win32/resolv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32/lib/win32/resolv.rb</a></td><td class='right'>308</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/win32/lib/win32/resolv9x.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32/lib/win32/resolv9x.rb</a></td><td class='right'>253</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32/lib/win32/sspi.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32/lib/win32/sspi.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/win32/resolv/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32/resolv/extconf.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ext/win32/resolv/resolv.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32/resolv/resolv.c</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/extconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/lib/win32ole/property.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/lib/win32ole/property.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/sample/excel1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/sample/excel1.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/sample/excel2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/sample/excel2.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/sample/excel3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/sample/excel3.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/sample/ie.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/sample/ie.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/sample/ieconst.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/sample/ieconst.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/sample/ienavi.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/sample/ienavi.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/sample/ienavi2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/sample/ienavi2.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/sample/oledirs.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/sample/oledirs.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/sample/olegen.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/sample/olegen.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/sample/xml.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/sample/xml.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/win32ole.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/win32ole.c</a></td><td class='right'>204</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/win32ole_error.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/win32ole_error.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/win32ole_event.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/win32ole_event.c</a></td><td class='right'>41</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/win32ole_record.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/win32ole_record.c</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/win32ole_typelib.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/win32ole_typelib.c</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/win32ole/win32ole_variant.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/win32ole/win32ole_variant.c</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/zlib/depend?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/zlib/depend</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/zlib/extconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/zlib/extconf.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ext/zlib/zlib.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ext/zlib/zlib.c</a></td><td class='right'>80</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/file.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>file.c</a></td><td class='right'>655</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 98.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/gc.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>gc.c</a></td><td class='right'>2037</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 3.8%;'/><td class='rem' style='width: 1.9%;'/><td class='none' style='width: 94.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/gc.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>gc.h</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/gem_prelude.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>gem_prelude.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/gems/bundled_gems?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>gems/bundled_gems</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/goruby.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>goruby.c</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/hash.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>hash.c</a></td><td class='right'>736</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.6%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 97.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/id_table.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>id_table.c</a></td><td class='right'>1592</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 4.5%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 95.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/id_table.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>id_table.h</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/include/ruby/backward.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/backward.h</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/backward/classext.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/backward/classext.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/backward/rubyio.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/backward/rubyio.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/backward/rubysig.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/backward/rubysig.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/backward/st.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/backward/st.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/backward/util.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/backward/util.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/defines.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/defines.h</a></td><td class='right'>98</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/encoding.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/encoding.h</a></td><td class='right'>211</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/intern.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/intern.h</a></td><td class='right'>189</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/io.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/io.h</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/missing.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/missing.h</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/oniguruma.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/oniguruma.h</a></td><td class='right'>57</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/ruby.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/ruby.h</a></td><td class='right'>1331</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.7%;'/><td class='rem' style='width: 1.0%;'/><td class='none' style='width: 96.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/st.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/st.h</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/util.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/util.h</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/version.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/version.h</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/include/ruby/win32.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>include/ruby/win32.h</a></td><td class='right'>88</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/inits.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>inits.c</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/insns.def?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>insns.def</a></td><td class='right'>629</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.8%;'/><td class='rem' style='width: 1.0%;'/><td class='none' style='width: 98.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/internal.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>internal.h</a></td><td class='right'>845</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.9%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 97.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/io.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>io.c</a></td><td class='right'>1140</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.8%;'/><td class='rem' style='width: 1.4%;'/><td class='none' style='width: 96.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/iseq.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>iseq.c</a></td><td class='right'>1409</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.1%;'/><td class='rem' style='width: 1.9%;'/><td class='none' style='width: 96.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/iseq.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>iseq.h</a></td><td class='right'>146</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lex.c.blt?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lex.c.blt</a></td><td class='right'>197</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/English.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/English.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/abbrev.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/abbrev.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/base64.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/base64.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/benchmark.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/benchmark.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/cgi.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/cgi.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/cgi/cookie.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/cgi/cookie.rb</a></td><td class='right'>60</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/cgi/core.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/cgi/core.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/cgi/html.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/cgi/html.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/cgi/session.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/cgi/session.rb</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/cgi/session/pstore.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/cgi/session/pstore.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/cgi/util.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/cgi/util.rb</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/cmath.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/cmath.rb</a></td><td class='right'>171</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/csv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/csv.rb</a></td><td class='right'>168</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/debug.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/debug.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/delegate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/delegate.rb</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb/acl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb/acl.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb/drb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb/drb.rb</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb/eq.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb/eq.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb/extserv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb/extserv.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb/extservm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb/extservm.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb/gw.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb/gw.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb/invokemethod.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb/invokemethod.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb/observer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb/observer.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb/ssl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb/ssl.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb/timeridconv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb/timeridconv.rb</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/drb/unix.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/drb/unix.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/e2mmap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/e2mmap.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/erb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/erb.rb</a></td><td class='right'>174</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/fileutils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/fileutils.rb</a></td><td class='right'>433</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/find.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/find.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/forwardable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/forwardable.rb</a></td><td class='right'>78</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/getoptlong.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/getoptlong.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/ipaddr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/ipaddr.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/cmd/chws.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/cmd/chws.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/cmd/fork.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/cmd/fork.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/cmd/help.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/cmd/help.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/cmd/load.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/cmd/load.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/cmd/nop.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/cmd/nop.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/cmd/pushws.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/cmd/pushws.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/cmd/subirb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/cmd/subirb.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/completion.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/completion.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/context.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/context.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ext/change-ws.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ext/change-ws.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ext/history.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ext/history.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ext/loader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ext/loader.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ext/math-mode.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ext/math-mode.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ext/multi-irb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ext/multi-irb.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ext/save-history.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ext/save-history.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ext/tracer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ext/tracer.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ext/use-loader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ext/use-loader.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ext/workspaces.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ext/workspaces.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/extend-command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/extend-command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/frame.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/frame.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/help.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/help.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/init.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/init.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/input-method.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/input-method.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/inspector.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/inspector.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/lc/error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/lc/error.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/lc/ja/encoding_aliases.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/lc/ja/encoding_aliases.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/lc/ja/error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/lc/ja/error.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/locale.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/locale.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/magic-file.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/magic-file.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/notifier.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/notifier.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/output-method.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/output-method.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ruby-lex.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ruby-lex.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ruby-token.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ruby-token.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/slex.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/slex.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/src_encoding.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/src_encoding.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/version.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/version.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/workspace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/workspace.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/ws-for-case-2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/ws-for-case-2.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/irb/xmp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/irb/xmp.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/logger.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/logger.rb</a></td><td class='right'>198</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/mathn.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/mathn.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/matrix.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/matrix.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/matrix/eigenvalue_decomposition.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/matrix/eigenvalue_decomposition.rb</a></td><td class='right'>209</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/matrix/lup_decomposition.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/matrix/lup_decomposition.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/mkmf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/mkmf.rb</a></td><td class='right'>226</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/monitor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/monitor.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/mutex_m.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/mutex_m.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/ftp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/ftp.rb</a></td><td class='right'>393</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.8%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/http.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/http.rb</a></td><td class='right'>95</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/http/backward.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/http/backward.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/http/exceptions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/http/exceptions.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/http/generic_request.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/http/generic_request.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/http/header.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/http/header.rb</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/http/proxy_delta.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/http/proxy_delta.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/http/request.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/http/request.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/http/requests.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/http/requests.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/http/response.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/http/response.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/http/responses.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/http/responses.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/https.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/https.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/imap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/imap.rb</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/pop.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/pop.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/protocol.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/protocol.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/net/smtp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/smtp.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/net/telnet.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/net/telnet.rb</a></td><td class='right'>763</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.2%;'/><td class='none' style='width: 97.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/observer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/observer.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/open-uri.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/open-uri.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/open3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/open3.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/optionparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/optionparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/optparse.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/optparse.rb</a></td><td class='right'>325</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/optparse/ac.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/optparse/ac.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/optparse/date.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/optparse/date.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/optparse/shellwords.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/optparse/shellwords.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/optparse/time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/optparse/time.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/optparse/uri.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/optparse/uri.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/optparse/version.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/optparse/version.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/ostruct.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/ostruct.rb</a></td><td class='right'>78</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/pp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/pp.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/prettyprint.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/prettyprint.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/prime.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/prime.rb</a></td><td class='right'>100</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/profile.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/profile.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/profiler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/profiler.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/pstore.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/pstore.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/racc/parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/racc/parser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/racc/rdoc/grammar.en.rdoc?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/racc/rdoc/grammar.en.rdoc</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake.rb</a></td><td class='right'>79</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/alt_system.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/alt_system.rb</a></td><td class='right'>110</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/application.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/application.rb</a></td><td class='right'>790</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.2%;'/><td class='none' style='width: 97.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/backtrace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/backtrace.rb</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/clean.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/clean.rb</a></td><td class='right'>76</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/cloneable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/cloneable.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/contrib/.document?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/contrib/.document</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/contrib/compositepublisher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/contrib/compositepublisher.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/contrib/ftptools.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/contrib/ftptools.rb</a></td><td class='right'>137</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/contrib/publisher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/contrib/publisher.rb</a></td><td class='right'>81</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/contrib/rubyforgepublisher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/contrib/rubyforgepublisher.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/contrib/sshpublisher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/contrib/sshpublisher.rb</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/contrib/sys.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/contrib/sys.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/cpu_counter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/cpu_counter.rb</a></td><td class='right'>125</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/default_loader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/default_loader.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/dsl_definition.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/dsl_definition.rb</a></td><td class='right'>201</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/early_time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/early_time.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/ext/core.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/ext/core.rb</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/ext/module.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/ext/module.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/ext/pathname.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/ext/pathname.rb</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/ext/string.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/ext/string.rb</a></td><td class='right'>173</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/ext/time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/ext/time.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/file_creation_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/file_creation_task.rb</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/file_list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/file_list.rb</a></td><td class='right'>428</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.2%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/file_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/file_task.rb</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/file_utils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/file_utils.rb</a></td><td class='right'>128</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/file_utils_ext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/file_utils_ext.rb</a></td><td class='right'>144</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/gempackagetask.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/gempackagetask.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/invocation_chain.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/invocation_chain.rb</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/invocation_exception_mixin.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/invocation_exception_mixin.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/late_time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/late_time.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/linked_list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/linked_list.rb</a></td><td class='right'>103</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/loaders/makefile.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/loaders/makefile.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/multi_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/multi_task.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/name_space.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/name_space.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/packagetask.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/packagetask.rb</a></td><td class='right'>199</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/pathmap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/pathmap.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/phony.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/phony.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/private_reader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/private_reader.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/promise.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/promise.rb</a></td><td class='right'>99</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/pseudo_status.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/pseudo_status.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/rake_module.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/rake_module.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/rake_test_loader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/rake_test_loader.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/rdoctask.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/rdoctask.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/ruby182_test_unit_fix.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/ruby182_test_unit_fix.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/rule_recursion_overflow_error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/rule_recursion_overflow_error.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/runtest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/runtest.rb</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/scope.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/scope.rb</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/task.rb</a></td><td class='right'>383</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/task_argument_error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/task_argument_error.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/task_arguments.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/task_arguments.rb</a></td><td class='right'>98</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/task_manager.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/task_manager.rb</a></td><td class='right'>310</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/tasklib.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/tasklib.rb</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/testtask.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/testtask.rb</a></td><td class='right'>212</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/thread_history_display.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/thread_history_display.rb</a></td><td class='right'>48</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/thread_pool.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/thread_pool.rb</a></td><td class='right'>164</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/trace_output.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/trace_output.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/version.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/version.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rake/win32.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rake/win32.rb</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rbconfig/datadir.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rbconfig/datadir.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/alias.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/alias.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/anon_class.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/anon_class.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/any_method.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/any_method.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/attr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/attr.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/class_module.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/class_module.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/code_object.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/code_object.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/code_objects.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/code_objects.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/comment.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/comment.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/constant.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/constant.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/context.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/context.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/context/section.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/context/section.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/cross_reference.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/cross_reference.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/encoding.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/encoding.rb</a></td><td class='right'>87</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/erb_partial.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/erb_partial.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/erbio.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/erbio.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/extend.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/extend.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/darkfish.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/darkfish.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/json_index.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/json_index.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/markup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/markup.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/pot.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/pot.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/pot/message_extractor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/pot/message_extractor.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/pot/po.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/pot/po.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/pot/po_entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/pot/po_entry.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/ri.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/ri.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/template/darkfish/_head.rhtml?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/template/darkfish/_head.rhtml</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/template/darkfish/css/fonts.css?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/template/darkfish/css/fonts.css</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/template/darkfish/js/darkfish.js?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/template/darkfish/js/darkfish.js</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/generator/template/json_index/js/searcher.js?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/generator/template/json_index/js/searcher.js</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/ghost_method.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/ghost_method.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/i18n.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/i18n.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/i18n/locale.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/i18n/locale.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/i18n/text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/i18n/text.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/include.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/include.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/known_classes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/known_classes.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markdown.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markdown.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markdown/entities.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markdown/entities.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rdoc/markdown/literals.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markdown/literals.rb</a></td><td class='right'>417</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rdoc/markdown/literals_1_9.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markdown/literals_1_9.rb</a></td><td class='right'>420</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.2%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/attr_changer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/attr_changer.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/attr_span.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/attr_span.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/attribute_manager.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/attribute_manager.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/attributes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/attributes.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/blank_line.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/blank_line.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/block_quote.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/block_quote.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/document.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/document.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/formatter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/formatter.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/formatter_test_case.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/formatter_test_case.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/hard_break.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/hard_break.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/heading.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/heading.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/include.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/include.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/indented_paragraph.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/indented_paragraph.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/inline.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/inline.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/list.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/list_item.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/list_item.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/paragraph.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/paragraph.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/parser.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/pre_process.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/pre_process.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/raw.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/raw.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/rule.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/rule.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/special.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/special.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/text_formatter_test_case.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/text_formatter_test_case.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_ansi.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_ansi.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_bs.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_bs.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_html.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_html.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_html_crossref.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_html_crossref.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_html_snippet.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_html_snippet.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_joined_paragraph.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_joined_paragraph.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_label.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_label.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_markdown.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_markdown.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_rdoc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_rdoc.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_table_of_contents.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_table_of_contents.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_test.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/to_tt_only.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/to_tt_only.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/markup/verbatim.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/markup/verbatim.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/meta_method.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/meta_method.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/method_attr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/method_attr.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/mixin.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/mixin.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/normal_class.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/normal_class.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/normal_module.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/normal_module.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/options.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/options.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/parser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/parser/c.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/parser/c.rb</a></td><td class='right'>109</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/parser/changelog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/parser/changelog.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/parser/markdown.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/parser/markdown.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/parser/rd.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/parser/rd.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/parser/ruby.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/parser/ruby.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/parser/ruby_tools.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/parser/ruby_tools.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/parser/simple.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/parser/simple.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/parser/text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/parser/text.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/rd.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/rd.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/rd/block_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/rd/block_parser.rb</a></td><td class='right'>100</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/rd/inline.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/rd/inline.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/rd/inline_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/rd/inline_parser.rb</a></td><td class='right'>314</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rdoc/rdoc.gemspec?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/rdoc.gemspec</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/rdoc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/rdoc.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/require.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/require.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/ri.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/ri.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/ri/driver.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/ri/driver.rb</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/ri/formatter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/ri/formatter.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/ri/paths.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/ri/paths.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/ri/store.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/ri/store.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/ri/task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/ri/task.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/ruby_lex.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/ruby_lex.rb</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/ruby_token.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/ruby_token.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/rubygems_hook.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/rubygems_hook.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/servlet.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/servlet.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/single_class.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/single_class.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/stats.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/stats.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/stats/normal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/stats/normal.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/stats/quiet.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/stats/quiet.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/stats/verbose.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/stats/verbose.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/store.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/store.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/task.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/test_case.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/test_case.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/text.rb</a></td><td class='right'>35</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/token_stream.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/token_stream.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/tom_doc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/tom_doc.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rdoc/top_level.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rdoc/top_level.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/resolv-replace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/resolv-replace.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/resolv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/resolv.rb</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/attlistdecl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/attlistdecl.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/attribute.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/attribute.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/cdata.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/cdata.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/child.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/child.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/comment.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/comment.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/doctype.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/doctype.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/document.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/document.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/dtd/attlistdecl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/dtd/attlistdecl.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/dtd/dtd.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/dtd/dtd.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/dtd/elementdecl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/dtd/elementdecl.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/dtd/entitydecl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/dtd/entitydecl.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/dtd/notationdecl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/dtd/notationdecl.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/element.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/element.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/encoding.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/encoding.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/entity.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/entity.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/formatters/default.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/formatters/default.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/formatters/pretty.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/formatters/pretty.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/formatters/transitive.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/formatters/transitive.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/functions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/functions.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/instruction.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/instruction.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/light/node.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/light/node.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/namespace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/namespace.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/node.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/node.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/output.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/output.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/parent.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/parent.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/parseexception.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/parseexception.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/parsers/baseparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/parsers/baseparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/parsers/lightparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/parsers/lightparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/parsers/pullparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/parsers/pullparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/parsers/sax2parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/parsers/sax2parser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/parsers/streamparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/parsers/streamparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/parsers/treeparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/parsers/treeparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/parsers/ultralightparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/parsers/ultralightparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/parsers/xpathparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/parsers/xpathparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/quickpath.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/quickpath.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/rexml.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/rexml.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/sax2listener.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/sax2listener.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/security.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/security.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/source.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/source.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/streamlistener.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/streamlistener.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/syncenumerator.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/syncenumerator.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/text.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/undefinednamespaceexception.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/undefinednamespaceexception.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/validation/relaxng.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/validation/relaxng.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/validation/validation.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/validation/validation.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/validation/validationexception.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/validation/validationexception.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/xmldecl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/xmldecl.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/xmltokens.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/xmltokens.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/xpath.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/xpath.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rexml/xpath_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rexml/xpath_parser.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rinda/rinda.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rinda/rinda.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rinda/ring.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rinda/ring.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rinda/tuplespace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rinda/tuplespace.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/0.9.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/0.9.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/1.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/1.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/2.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/2.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/atom.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/atom.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/content.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/content.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/content/1.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/content/1.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/content/2.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/content/2.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/converter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/converter.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/dublincore.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/dublincore.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/dublincore/1.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/dublincore/1.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/dublincore/2.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/dublincore/2.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/dublincore/atom.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/dublincore/atom.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/image.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/image.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/itunes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/itunes.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/0.9.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/0.9.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/1.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/1.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/2.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/2.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/atom.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/atom.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/base.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/base.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/content.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/content.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/dublincore.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/dublincore.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/entry.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/feed.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/feed.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/image.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/image.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/itunes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/itunes.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/slash.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/slash.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/syndication.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/syndication.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/taxonomy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/taxonomy.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/maker/trackback.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/maker/trackback.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/parser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/rexmlparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/rexmlparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/rss.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/rss.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/slash.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/slash.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/syndication.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/syndication.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/taxonomy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/taxonomy.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/trackback.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/trackback.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/utils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/utils.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/xml-stylesheet.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/xml-stylesheet.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/xml.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/xml.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/xmlparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/xmlparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rss/xmlscanner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rss/xmlscanner.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems.rb</a></td><td class='right'>179</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/available_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/available_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/basic_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/basic_specification.rb</a></td><td class='right'>146</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/command.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/command_manager.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/command_manager.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/build_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/build_command.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/cert_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/cert_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/check_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/check_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/cleanup_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/cleanup_command.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/contents_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/contents_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/dependency_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/dependency_command.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/environment_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/environment_command.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/fetch_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/fetch_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/generate_index_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/generate_index_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/help_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/help_command.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/install_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/install_command.rb</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/list_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/list_command.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/lock_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/lock_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/mirror_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/mirror_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/open_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/open_command.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/outdated_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/outdated_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/owner_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/owner_command.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/pristine_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/pristine_command.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/push_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/push_command.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/query_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/query_command.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/rdoc_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/rdoc_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/search_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/search_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/server_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/server_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/setup_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/setup_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/sources_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/sources_command.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/specification_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/specification_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/stale_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/stale_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/uninstall_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/uninstall_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/unpack_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/unpack_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/update_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/update_command.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/which_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/which_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/commands/yank_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/commands/yank_command.rb</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/compatibility.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/compatibility.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/config_file.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/config_file.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/core_ext/kernel_gem.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/core_ext/kernel_gem.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/core_ext/kernel_require.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/core_ext/kernel_require.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/defaults.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/defaults.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/dependency.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/dependency.rb</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/dependency_installer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/dependency_installer.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/dependency_list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/dependency_list.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/deprecate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/deprecate.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/doctor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/doctor.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/errors.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/errors.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/exceptions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/exceptions.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/ext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ext.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/ext/build_error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ext/build_error.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/ext/builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ext/builder.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/ext/cmake_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ext/cmake_builder.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/ext/configure_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ext/configure_builder.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/ext/ext_conf_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ext/ext_conf_builder.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/ext/rake_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ext/rake_builder.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/gem_runner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/gem_runner.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/gemcutter_utilities.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/gemcutter_utilities.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/indexer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/indexer.rb</a></td><td class='right'>118</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/install_default_message.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/install_default_message.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/install_message.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/install_message.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/install_update_options.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/install_update_options.rb</a></td><td class='right'>53</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/installer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/installer.rb</a></td><td class='right'>122</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/installer_test_case.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/installer_test_case.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/local_remote_options.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/local_remote_options.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/mock_gem_ui.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/mock_gem_ui.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/name_tuple.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/name_tuple.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package/digest_io.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package/digest_io.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package/file_source.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package/file_source.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package/io_source.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package/io_source.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package/old.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package/old.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package/source.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package/source.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package/tar_header.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package/tar_header.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package/tar_reader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package/tar_reader.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package/tar_reader/entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package/tar_reader/entry.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package/tar_test_case.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package/tar_test_case.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package/tar_writer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package/tar_writer.rb</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/package_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/package_task.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/path_support.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/path_support.rb</a></td><td class='right'>57</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/platform.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/platform.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/psych_additions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/psych_additions.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/psych_tree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/psych_tree.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/rdoc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/rdoc.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/remote_fetcher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/remote_fetcher.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/request.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/request.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/request/connection_pools.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/request/connection_pools.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/request/http_pool.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/request/http_pool.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/request/https_pool.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/request/https_pool.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/request_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/request_set.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/request_set/gem_dependency_api.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/request_set/gem_dependency_api.rb</a></td><td class='right'>72</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/request_set/lockfile.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/request_set/lockfile.rb</a></td><td class='right'>524</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 98.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/request_set/lockfile/parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/request_set/lockfile/parser.rb</a></td><td class='right'>354</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/request_set/lockfile/tokenizer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/request_set/lockfile/tokenizer.rb</a></td><td class='right'>112</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/requirement.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/requirement.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver.rb</a></td><td class='right'>291</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/activation_request.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/activation_request.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/api_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/api_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/api_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/api_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/best_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/best_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/composed_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/composed_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/conflict.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/conflict.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/current_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/current_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/dependency_request.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/dependency_request.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/git_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/git_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/git_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/git_specification.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/index_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/index_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/index_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/index_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/installed_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/installed_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/installer_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/installer_set.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/local_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/local_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/lock_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/lock_set.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/lock_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/lock_specification.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb</a></td><td class='right'>80</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb</a></td><td class='right'>203</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb</a></td><td class='right'>35</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb</a></td><td class='right'>53</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb</a></td><td class='right'>114</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb</a></td><td class='right'>35</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb</a></td><td class='right'>123</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb</a></td><td class='right'>100</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb</a></td><td class='right'>460</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/molinillo/lib/molinillo/state.rb</a></td><td class='right'>54</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/requirement_list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/requirement_list.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/resolver/source_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/source_set.rb</a></td><td class='right'>48</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/spec_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/spec_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/specification.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/stats.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/stats.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/vendor_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/vendor_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/resolver/vendor_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/resolver/vendor_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/security.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/security.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/security/policies.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/security/policies.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/security/policy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/security/policy.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/security/signer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/security/signer.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/security/trust_dir.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/security/trust_dir.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/server.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/server.rb</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/source.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/source.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/source/git.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/source/git.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/source/installed.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/source/installed.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/source/local.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/source/local.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/source/lock.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/source/lock.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/source/specific_file.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/source/specific_file.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/source/vendor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/source/vendor.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/source_list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/source_list.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/source_local.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/source_local.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/source_specific_file.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/source_specific_file.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/spec_fetcher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/spec_fetcher.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/specification.rb</a></td><td class='right'>455</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rubygems/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rubygems/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rubygems/ssl_certs/GeoTrustGlobalCA.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ssl_certs/GeoTrustGlobalCA.pem</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='mov'><a href='/ruby.git/diff/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem</a> (renamed from lib/rubygems/ssl_certs/DigiCertHighAssuranceEVRootCA.pem)</td><td class='right'>0</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='mov'><a href='/ruby.git/diff/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem</a> (renamed from lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem)</td><td class='right'>0</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/stub_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/stub_specification.rb</a></td><td class='right'>168</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/syck_hack.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/syck_hack.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/test_case.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/test_case.rb</a></td><td class='right'>146</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/test_utilities.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/test_utilities.rb</a></td><td class='right'>37</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/text.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/uninstaller.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/uninstaller.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/uri_formatter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/uri_formatter.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/user_interaction.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/user_interaction.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/util.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/util.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/lib/rubygems/util/licenses.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/util/licenses.rb</a></td><td class='right'>343</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/util/list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/util/list.rb</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/rubygems/util/stringio.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/util/stringio.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/validator.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/validator.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/version.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/version.rb</a></td><td class='right'>70</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/rubygems/version_option.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/rubygems/version_option.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/scanf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/scanf.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/securerandom.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/securerandom.rb</a></td><td class='right'>206</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/set.rb</a></td><td class='right'>127</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/shell.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/shell.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/shell/builtin-command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/shell/builtin-command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/shell/command-processor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/shell/command-processor.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/shell/error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/shell/error.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/shell/filter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/shell/filter.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/shell/process-controller.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/shell/process-controller.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/shell/system-command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/shell/system-command.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/shell/version.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/shell/version.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/shellwords.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/shellwords.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/singleton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/singleton.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/sync.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/sync.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/tempfile.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/tempfile.rb</a></td><td class='right'>96</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/thwait.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/thwait.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/time.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/timeout.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/timeout.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/tmpdir.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/tmpdir.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/tracer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/tracer.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/tsort.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/tsort.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/ubygems.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/ubygems.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/un.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/un.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/unicode_normalize.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/unicode_normalize.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/unicode_normalize/normalize.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/unicode_normalize/normalize.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/unicode_normalize/tables.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/unicode_normalize/tables.rb</a></td><td class='right'>1826</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.6%;'/><td class='rem' style='width: 2.6%;'/><td class='none' style='width: 94.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/uri.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/uri.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/uri/common.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/uri/common.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/uri/ftp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/uri/ftp.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/uri/generic.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/uri/generic.rb</a></td><td class='right'>55</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/uri/http.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/uri/http.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/uri/https.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/uri/https.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/uri/ldap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/uri/ldap.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/uri/ldaps.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/uri/ldaps.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/uri/mailto.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/uri/mailto.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/uri/rfc2396_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/uri/rfc2396_parser.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/uri/rfc3986_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/uri/rfc3986_parser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/weakref.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/weakref.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/accesslog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/accesslog.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/cgi.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/cgi.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/compat.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/compat.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/config.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/config.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/cookie.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/cookie.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/htmlutils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/htmlutils.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpauth.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpauth.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpauth/authenticator.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpauth/authenticator.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpauth/basicauth.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpauth/basicauth.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpauth/digestauth.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpauth/digestauth.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpauth/htdigest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpauth/htdigest.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpauth/htgroup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpauth/htgroup.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpauth/htpasswd.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpauth/htpasswd.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpauth/userdb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpauth/userdb.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpproxy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpproxy.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httprequest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httprequest.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpresponse.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpresponse.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/https.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/https.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpserver.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpserver.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpservlet.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpservlet.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpservlet/abstract.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpservlet/abstract.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpservlet/cgi_runner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpservlet/cgi_runner.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpservlet/cgihandler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpservlet/cgihandler.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpservlet/erbhandler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpservlet/erbhandler.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpservlet/filehandler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpservlet/filehandler.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpservlet/prochandler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpservlet/prochandler.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpstatus.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpstatus.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httputils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httputils.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/httpversion.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/httpversion.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/log.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/log.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/server.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/server.rb</a></td><td class='right'>53</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/ssl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/ssl.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/utils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/utils.rb</a></td><td class='right'>130</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/webrick/version.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/webrick/version.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/xmlrpc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/xmlrpc.rb</a></td><td class='right'>301</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/xmlrpc/base64.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/xmlrpc/base64.rb</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/xmlrpc/client.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/xmlrpc/client.rb</a></td><td class='right'>614</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.7%;'/><td class='none' style='width: 98.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/xmlrpc/config.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/xmlrpc/config.rb</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/xmlrpc/create.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/xmlrpc/create.rb</a></td><td class='right'>286</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/xmlrpc/datetime.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/xmlrpc/datetime.rb</a></td><td class='right'>129</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/xmlrpc/marshal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/xmlrpc/marshal.rb</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/xmlrpc/parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/xmlrpc/parser.rb</a></td><td class='right'>870</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.5%;'/><td class='none' style='width: 97.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/xmlrpc/server.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/xmlrpc/server.rb</a></td><td class='right'>707</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 2.0%;'/><td class='none' style='width: 98.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/lib/xmlrpc/utils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/xmlrpc/utils.rb</a></td><td class='right'>171</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/yaml.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/yaml.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/yaml/dbm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/yaml/dbm.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/lib/yaml/store.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>lib/yaml/store.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/load.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>load.c</a></td><td class='right'>257</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/localeinit.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>localeinit.c</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/man/erb.1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>man/erb.1</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/man/goruby.1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>man/goruby.1</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/man/irb.1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>man/irb.1</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/man/rake.1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>man/rake.1</a></td><td class='right'>141</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/man/ri.1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>man/ri.1</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/man/ruby.1?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>man/ruby.1</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/marshal.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>marshal.c</a></td><td class='right'>234</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/math.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>math.c</a></td><td class='right'>322</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/method.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>method.h</a></td><td class='right'>193</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/miniinit.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>miniinit.c</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/misc/ruby-additional.el?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>misc/ruby-additional.el</a></td><td class='right'>63</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/misc/ruby-electric.el?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>misc/ruby-electric.el</a></td><td class='right'>280</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/misc/ruby-mode.el?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>misc/ruby-mode.el</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/misc/ruby-style.el?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>misc/ruby-style.el</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/missing/crypt.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>missing/crypt.c</a></td><td class='right'>546</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.8%;'/><td class='none' style='width: 98.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/missing/crypt.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>missing/crypt.h</a></td><td class='right'>248</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/missing/des_tables.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>missing/des_tables.c</a></td><td class='right'>1616</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 4.6%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 95.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/missing/explicit_bzero.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>missing/explicit_bzero.c</a></td><td class='right'>88</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/missing/lgamma_r.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>missing/lgamma_r.c</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/missing/os2.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>missing/os2.c</a></td><td class='right'>138</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/missing/setproctitle.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>missing/setproctitle.c</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/missing/strlcat.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>missing/strlcat.c</a></td><td class='right'>86</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/missing/strlcpy.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>missing/strlcpy.c</a></td><td class='right'>77</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/node.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>node.c</a></td><td class='right'>220</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/node.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>node.h</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/numeric.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>numeric.c</a></td><td class='right'>1942</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 4.3%;'/><td class='rem' style='width: 1.2%;'/><td class='none' style='width: 94.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/object.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>object.c</a></td><td class='right'>573</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 98.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/pack.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>pack.c</a></td><td class='right'>293</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/parse.y?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>parse.y</a></td><td class='right'>2622</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 4.0%;'/><td class='rem' style='width: 3.4%;'/><td class='none' style='width: 92.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/prelude.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>prelude.rb</a></td><td class='right'>122</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/probes.d?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>probes.d</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/probes_helper.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>probes_helper.h</a></td><td class='right'>70</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/proc.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>proc.c</a></td><td class='right'>1316</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.3%;'/><td class='rem' style='width: 1.5%;'/><td class='none' style='width: 96.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/process.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>process.c</a></td><td class='right'>1180</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.7%;'/><td class='rem' style='width: 1.7%;'/><td class='none' style='width: 96.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/random.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>random.c</a></td><td class='right'>714</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.4%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 98.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/range.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>range.c</a></td><td class='right'>181</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/rational.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>rational.c</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/re.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>re.c</a></td><td class='right'>567</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.2%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 98.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/regcomp.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>regcomp.c</a></td><td class='right'>98</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/regenc.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>regenc.c</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/regenc.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>regenc.h</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/regexec.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>regexec.c</a></td><td class='right'>760</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.3%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 97.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/regint.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>regint.h</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/regparse.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>regparse.c</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/regparse.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>regparse.h</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ruby-runner.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ruby-runner.c</a></td><td class='right'>35</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ruby.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ruby.c</a></td><td class='right'>648</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.2%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 98.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/ruby_assert.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ruby_assert.h</a></td><td class='right'>54</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/ruby_atomic.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>ruby_atomic.h</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/rubystub.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>rubystub.c</a></td><td class='right'>60</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/safe.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>safe.c</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sample/drb/dhasen.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/drb/dhasen.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sample/drb/dlogd.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/drb/dlogd.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sample/drb/dqueue.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/drb/dqueue.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sample/drb/http0serv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/drb/http0serv.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sample/drb/name.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/drb/name.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sample/exyacc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/exyacc.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/iseq_loader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/iseq_loader.rb</a></td><td class='right'>243</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sample/list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/list.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sample/openssl/cipher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/openssl/cipher.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sample/philos.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/philos.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/sample/test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/test.rb</a></td><td class='right'>2365</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 6.7%;'/><td class='none' style='width: 93.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sample/trick2013/README.md?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2013/README.md</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sample/trick2013/kinaba/remarks.markdown?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2013/kinaba/remarks.markdown</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/README.md?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/README.md</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/eregon/authors.markdown?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/eregon/authors.markdown</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/eregon/entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/eregon/entry.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/eregon/remarks.markdown?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/eregon/remarks.markdown</a></td><td class='right'>70</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/kinaba/authors.markdown?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/kinaba/authors.markdown</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/kinaba/entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/kinaba/entry.rb</a></td><td class='right'>150</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/kinaba/remarks.markdown?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/kinaba/remarks.markdown</a></td><td class='right'>85</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/ksk_1/authors.markdown?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/ksk_1/authors.markdown</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/ksk_1/entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/ksk_1/entry.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/ksk_1/remarks.markdown?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/ksk_1/remarks.markdown</a></td><td class='right'>120</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/ksk_2/abnormal.cnf?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/ksk_2/abnormal.cnf</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/ksk_2/authors.markdown?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/ksk_2/authors.markdown</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/ksk_2/entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/ksk_2/entry.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/ksk_2/quinn.cnf?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/ksk_2/quinn.cnf</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/ksk_2/remarks.markdown?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/ksk_2/remarks.markdown</a></td><td class='right'>204</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/ksk_2/sample.cnf?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/ksk_2/sample.cnf</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/ksk_2/uf20-01.cnf?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/ksk_2/uf20-01.cnf</a></td><td class='right'>99</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/ksk_2/unsat.cnf?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/ksk_2/unsat.cnf</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/monae/authors.markdown?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/monae/authors.markdown</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/monae/entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/monae/entry.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/sample/trick2015/monae/remarks.markdown?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sample/trick2015/monae/remarks.markdown</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/signal.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>signal.c</a></td><td class='right'>78</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/spec/default.mspec?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>spec/default.mspec</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/sprintf.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>sprintf.c</a></td><td class='right'>160</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/st.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>st.c</a></td><td class='right'>323</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/strftime.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>strftime.c</a></td><td class='right'>276</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/string.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>string.c</a></td><td class='right'>2095</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 4.1%;'/><td class='rem' style='width: 1.8%;'/><td class='none' style='width: 94.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/struct.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>struct.c</a></td><td class='right'>436</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.8%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/symbol.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>symbol.c</a></td><td class='right'>181</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/symbol.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>symbol.h</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/template/GNUmakefile.in?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>template/GNUmakefile.in</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/template/fake.rb.in?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>template/fake.rb.in</a></td><td class='right'>54</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/template/id.c.tmpl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>template/id.c.tmpl</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/template/id.h.tmpl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>template/id.h.tmpl</a></td><td class='right'>51</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/template/prelude.c.tmpl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>template/prelude.c.tmpl</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/template/ruby-runner.h.in?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>template/ruby-runner.h.in</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/template/sizes.c.tmpl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>template/sizes.c.tmpl</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/template/unicode_norm_gen.tmpl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>template/unicode_norm_gen.tmpl</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/template/verconf.h.tmpl?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>template/verconf.h.tmpl</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/array/test_resize.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/array/test_resize.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/bignum/test_big2str.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/bignum/test_big2str.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/bignum/test_bigzero.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/bignum/test_bigzero.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/bignum/test_div.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/bignum/test_div.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/bignum/test_mul.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/bignum/test_mul.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/bignum/test_pack.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/bignum/test_pack.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/bignum/test_str2big.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/bignum/test_str2big.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/bug_reporter/test_bug_reporter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/bug_reporter/test_bug_reporter.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/class/test_class2name.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/class/test_class2name.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/debug/test_debug.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/debug/test_debug.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/debug/test_profile_frames.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/debug/test_profile_frames.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/exception/test_data_error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/exception/test_data_error.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/exception/test_enc_raise.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/exception/test_enc_raise.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/exception/test_ensured.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/exception/test_ensured.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/file/test_stat.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/file/test_stat.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/float/test_nextafter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/float/test_nextafter.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/funcall/test_passing_block.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/funcall/test_passing_block.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/-ext-/gvl/test_last_thread.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/gvl/test_last_thread.rb</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/hash/test_delete.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/hash/test_delete.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/-ext-/integer/test_integer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/integer/test_integer.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/-ext-/integer/test_my_integer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/integer/test_my_integer.rb</a></td><td class='right'>48</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/iseq_load/test_iseq_load.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/iseq_load/test_iseq_load.rb</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/iter/test_iter_break.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/iter/test_iter_break.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/iter/test_yield_block.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/iter/test_yield_block.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/load/test_dot_dot.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/load/test_dot_dot.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/-ext-/marshal/test_internal_ivar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/marshal/test_internal_ivar.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/marshal/test_usrmarshal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/marshal/test_usrmarshal.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/method/test_arity.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/method/test_arity.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/num2int/test_num2int.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/num2int/test_num2int.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/path_to_class/test_path_to_class.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/path_to_class/test_path_to_class.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/-ext-/popen_deadlock/test_popen_deadlock.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/popen_deadlock/test_popen_deadlock.rb</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/postponed_job/test_postponed_job.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/postponed_job/test_postponed_job.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/proc/test_bmethod.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/proc/test_bmethod.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/rational/test_rat.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/rational/test_rat.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/st/test_foreach.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/st/test_foreach.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/st/test_numhash.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/st/test_numhash.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/st/test_update.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/st/test_update.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/-ext-/string/test_capacity.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_capacity.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/string/test_coderange.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_coderange.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/string/test_cstr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_cstr.rb</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/string/test_ellipsize.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_ellipsize.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/string/test_enc_associate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_enc_associate.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/string/test_enc_str_buf_cat.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_enc_str_buf_cat.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/-ext-/string/test_fstring.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_fstring.rb</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/string/test_modify_expand.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_modify_expand.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/string/test_nofree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_nofree.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/string/test_normalize.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_normalize.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/string/test_qsort.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_qsort.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/string/test_set_len.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/string/test_set_len.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/-ext-/struct/test_duplicate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/struct/test_duplicate.rb</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/struct/test_member.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/struct/test_member.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/symbol/test_inadvertent_creation.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/symbol/test_inadvertent_creation.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/symbol/test_type.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/symbol/test_type.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/test_bug-3571.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/test_bug-3571.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/-ext-/test_bug-3662.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/test_bug-3662.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/test_bug-5832.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/test_bug-5832.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/-ext-/test_notimplement.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/test_notimplement.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/test_printf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/test_printf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/test_recursion.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/test_recursion.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/-ext-/time/test_new.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/time/test_new.rb</a></td><td class='right'>44</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/tracepoint/test_tracepoint.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/tracepoint/test_tracepoint.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/typeddata/test_typeddata.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/typeddata/test_typeddata.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/-ext-/vm/test_at_exit.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/vm/test_at_exit.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/win32/test_console_attr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/win32/test_console_attr.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/win32/test_dln.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/win32/test_dln.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/-ext-/win32/test_fd_setsize.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/-ext-/win32/test_fd_setsize.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/base64/test_base64.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/base64/test_base64.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/benchmark/test_benchmark.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/benchmark/test_benchmark.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/bigdecimal/test_bigdecimal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/bigdecimal/test_bigdecimal.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/bigdecimal/test_bigdecimal_util.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/bigdecimal/test_bigdecimal_util.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/bigdecimal/test_bigmath.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/bigdecimal/test_bigmath.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/bigdecimal/testbase.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/bigdecimal/testbase.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/cgi/test_cgi_cookie.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/cgi/test_cgi_cookie.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/cgi/test_cgi_core.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/cgi/test_cgi_core.rb</a></td><td class='right'>71</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/cgi/test_cgi_header.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/cgi/test_cgi_header.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/cgi/test_cgi_modruby.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/cgi/test_cgi_modruby.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/cgi/test_cgi_multipart.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/cgi/test_cgi_multipart.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/cgi/test_cgi_session.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/cgi/test_cgi_session.rb</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/cgi/test_cgi_tag_helper.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/cgi/test_cgi_tag_helper.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/cgi/test_cgi_util.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/cgi/test_cgi_util.rb</a></td><td class='right'>94</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/cgi/update_env.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/cgi/update_env.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/colors?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/colors</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/coverage/test_coverage.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/coverage/test_coverage.rb</a></td><td class='right'>68</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/csv/base.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/csv/base.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/test/csv/test_csv_parsing.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/csv/test_csv_parsing.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/test/csv/test_csv_writing.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/csv/test_csv_writing.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/test/csv/test_data_converters.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/csv/test_data_converters.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/test/csv/test_encodings.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/csv/test_encodings.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/test/csv/test_features.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/csv/test_features.rb</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/test/csv/test_headers.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/csv/test_headers.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/test/csv/test_interface.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/csv/test_interface.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/test/csv/test_row.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/csv/test_row.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/test/csv/test_table.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/csv/test_table.rb</a></td><td class='right'>63</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/csv/ts_all.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/csv/ts_all.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_date.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_date.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_date_arith.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_date_arith.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_date_attr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_date_attr.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_date_base.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_date_base.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_date_compat.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_date_compat.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_date_conv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_date_conv.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_date_marshal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_date_marshal.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_date_new.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_date_new.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_date_parse.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_date_parse.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_date_strftime.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_date_strftime.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_date_strptime.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_date_strptime.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/date/test_switch_hitter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/date/test_switch_hitter.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dbm/test_dbm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dbm/test_dbm.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/digest/digest/foo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/digest/digest/foo.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/digest/test_digest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/digest/test_digest.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/digest/test_digest_extend.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/digest/test_digest_extend.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/drbtest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/drbtest.rb</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ignore_test_drb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ignore_test_drb.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/test_acl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/test_acl.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/test_drb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/test_drb.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/test_drbssl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/test_drbssl.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/test_drbunix.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/test_drbunix.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_array.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_array.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_array_drbssl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_array_drbssl.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_array_drbunix.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_array_drbunix.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_drb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_drb.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_drb_drbssl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_drb_drbssl.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_drb_drbunix.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_drb_drbunix.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_eq.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_eq.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_eval.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_eval.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_large.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_large.rb</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_port.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_port.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_safe1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_safe1.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/drb/ut_timerholder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/drb/ut_timerholder.rb</a></td><td class='right'>103</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/dummy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/dummy.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/helper.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/helper.rb</a></td><td class='right'>41</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_array_create.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_array_create.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_cmethod.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_cmethod.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_function_entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_function_entry.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_gc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_gc.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_hash_create.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_hash_create.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_load.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_load.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_method_cache.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_method_cache.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_object_create_start.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_object_create_start.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_raise.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_raise.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_require.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_require.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_singleton_function.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_singleton_function.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/dtrace/test_string.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/dtrace/test_string.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/erb/test_erb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/erb/test_erb.rb</a></td><td class='right'>140</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/erb/test_erb_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/erb/test_erb_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/erb/test_erb_m17n.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/erb/test_erb_m17n.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/etc/test_etc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/etc/test_etc.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/excludes/TestException.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/excludes/TestException.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/excludes/TestIO_Console.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/excludes/TestIO_Console.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/excludes/TestISeq.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/excludes/TestISeq.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/excludes/TestThread.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/excludes/TestThread.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fiddle/helper.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fiddle/helper.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fiddle/test_c_struct_entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fiddle/test_c_struct_entry.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fiddle/test_c_union_entity.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fiddle/test_c_union_entity.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fiddle/test_closure.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fiddle/test_closure.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fiddle/test_cparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fiddle/test_cparser.rb</a></td><td class='right'>178</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fiddle/test_fiddle.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fiddle/test_fiddle.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fiddle/test_func.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fiddle/test_func.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fiddle/test_function.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fiddle/test_function.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fiddle/test_handle.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fiddle/test_handle.rb</a></td><td class='right'>107</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fiddle/test_import.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fiddle/test_import.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fiddle/test_pointer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fiddle/test_pointer.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fileutils/clobber.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fileutils/clobber.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fileutils/fileasserts.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fileutils/fileasserts.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fileutils/test_dryrun.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fileutils/test_dryrun.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fileutils/test_fileutils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fileutils/test_fileutils.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fileutils/test_nowrite.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fileutils/test_nowrite.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fileutils/test_verbose.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fileutils/test_verbose.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/fileutils/visibility_tests.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/fileutils/visibility_tests.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/gdbm/test_gdbm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/gdbm/test_gdbm.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/io/console/test_io_console.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/io/console/test_io_console.rb</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/io/nonblock/test_flush.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/io/nonblock/test_flush.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/io/wait/test_io_wait.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/io/wait/test_io_wait.rb</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/irb/test_completion.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/irb/test_completion.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/irb/test_option.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/irb/test_option.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/irb/test_raise_no_backtrace_exception.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/irb/test_raise_no_backtrace_exception.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/json/fixtures/fail1.json?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/fixtures/fail1.json</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/json/fixtures/obsolete_fail1.json?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/fixtures/obsolete_fail1.json</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/json/json_addition_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/json_addition_test.rb</a></td><td class='right'>193</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/json/json_common_interface_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/json_common_interface_test.rb</a></td><td class='right'>126</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/json/json_encoding_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/json_encoding_test.rb</a></td><td class='right'>105</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/json/json_ext_parser_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/json_ext_parser_test.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/json/json_fixtures_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/json_fixtures_test.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='add'><a href='/ruby.git/diff/test/json/json_generator_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/json_generator_test.rb</a></td><td class='right'>377</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/json/json_generic_object_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/json_generic_object_test.rb</a></td><td class='right'>82</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/json/json_parser_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/json_parser_test.rb</a></td><td class='right'>466</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/json/json_string_matching_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/json_string_matching_test.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/json/setup_variant.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/setup_variant.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/json/test_helper.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/test_helper.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='del'><a href='/ruby.git/diff/test/json/test_json.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/test_json.rb</a></td><td class='right'>557</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.6%;'/><td class='none' style='width: 98.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='del'><a href='/ruby.git/diff/test/json/test_json_addition.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/test_json_addition.rb</a></td><td class='right'>196</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/json/test_json_encoding.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/test_json_encoding.rb</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='del'><a href='/ruby.git/diff/test/json/test_json_fixtures.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/test_json_fixtures.rb</a></td><td class='right'>35</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='del'><a href='/ruby.git/diff/test/json/test_json_generate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/test_json_generate.rb</a></td><td class='right'>322</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/json/test_json_generic_object.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/test_json_generic_object.rb</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/json/test_json_string_matching.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/test_json_string_matching.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='del'><a href='/ruby.git/diff/test/json/test_json_unicode.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/json/test_json_unicode.rb</a></td><td class='right'>72</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/lib/-test-/integer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/-test-/integer.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/envutil.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/envutil.rb</a></td><td class='right'>429</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/find_executable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/find_executable.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/lib/iseq_loader_checker.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/iseq_loader_checker.rb</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/leakchecker.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/leakchecker.rb</a></td><td class='right'>52</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/memory_status.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/memory_status.rb</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/minitest/autorun.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/minitest/autorun.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/minitest/benchmark.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/minitest/benchmark.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/minitest/mock.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/minitest/mock.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/minitest/unit.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/minitest/unit.rb</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/profile_test_all.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/profile_test_all.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/test/unit.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/test/unit.rb</a></td><td class='right'>759</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.3%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 97.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/test/unit/assertions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/test/unit/assertions.rb</a></td><td class='right'>406</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/test/unit/parallel.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/test/unit/parallel.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/test/unit/testcase.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/test/unit/testcase.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/tracepointchecker.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/tracepointchecker.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/lib/with_different_ofs.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/with_different_ofs.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/lib/zombie_hunter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/lib/zombie_hunter.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/logger/test_logdevice.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/logger/test_logdevice.rb</a></td><td class='right'>267</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/logger/test_logger.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/logger/test_logger.rb</a></td><td class='right'>93</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/logger/test_severity.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/logger/test_severity.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/matrix/test_matrix.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/matrix/test_matrix.rb</a></td><td class='right'>41</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/matrix/test_vector.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/matrix/test_vector.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/minitest/metametameta.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/minitest/metametameta.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/minitest/test_minitest_benchmark.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/minitest/test_minitest_benchmark.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/minitest/test_minitest_mock.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/minitest/test_minitest_mock.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/minitest/test_minitest_unit.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/minitest/test_minitest_unit.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/misc/test_ruby_mode.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/misc/test_ruby_mode.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/base.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/base.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_config.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_config.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_constant.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_constant.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_convertible.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_convertible.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_find_executable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_find_executable.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_flags.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_flags.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_framework.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_framework.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_have_func.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_have_func.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_have_library.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_have_library.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_have_macro.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_have_macro.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_libs.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_libs.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_signedness.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_signedness.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/mkmf/test_sizeof.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/mkmf/test_sizeof.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/monitor/test_monitor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/monitor/test_monitor.rb</a></td><td class='right'>35</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/ftp/test_buffered_socket.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/ftp/test_buffered_socket.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/ftp/test_ftp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/ftp/test_ftp.rb</a></td><td class='right'>850</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 97.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/net/ftp/test_mlsx_entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/ftp/test_mlsx_entry.rb</a></td><td class='right'>98</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/http/test_buffered_io.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/http/test_buffered_io.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/http/test_http.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/http/test_http.rb</a></td><td class='right'>136</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/http/test_http_request.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/http/test_http_request.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/http/test_httpheader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/http/test_httpheader.rb</a></td><td class='right'>64</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/http/test_httpresponse.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/http/test_httpresponse.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/http/test_httpresponses.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/http/test_httpresponses.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/http/test_https.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/http/test_https.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/http/test_https_proxy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/http/test_https_proxy.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/http/utils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/http/utils.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/imap/test_imap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/imap/test_imap.rb</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/imap/test_imap_response_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/imap/test_imap_response_parser.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/pop/test_pop.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/pop/test_pop.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/protocol/test_protocol.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/protocol/test_protocol.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/smtp/test_response.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/smtp/test_response.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/smtp/test_smtp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/smtp/test_smtp.rb</a></td><td class='right'>54</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/net/smtp/test_ssl_socket.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/net/smtp/test_ssl_socket.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/nkf/test_kconv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/nkf/test_kconv.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/nkf/test_nkf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/nkf/test_nkf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/objspace/test_objspace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/objspace/test_objspace.rb</a></td><td class='right'>138</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/open-uri/test_open-uri.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/open-uri/test_open-uri.rb</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/open-uri/test_ssl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/open-uri/test_ssl.rb</a></td><td class='right'>147</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_asn1.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_asn1.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_bn.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_bn.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_buffering.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_buffering.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_cipher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_cipher.rb</a></td><td class='right'>170</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_config.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_config.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_digest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_digest.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_engine.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_engine.rb</a></td><td class='right'>127</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_fips.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_fips.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_hmac.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_hmac.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_ns_spki.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_ns_spki.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_ocsp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_ocsp.rb</a></td><td class='right'>293</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.8%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_pair.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_pair.rb</a></td><td class='right'>149</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/openssl/test_partial_record_read.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_partial_record_read.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_pkcs12.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_pkcs12.rb</a></td><td class='right'>120</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_pkcs5.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_pkcs5.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_pkcs7.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_pkcs7.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/openssl/test_pkey.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_pkey.rb</a></td><td class='right'>49</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_pkey_dh.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_pkey_dh.rb</a></td><td class='right'>72</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_pkey_dsa.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_pkey_dsa.rb</a></td><td class='right'>278</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_pkey_ec.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_pkey_ec.rb</a></td><td class='right'>422</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_pkey_rsa.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_pkey_rsa.rb</a></td><td class='right'>340</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/openssl/test_random.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_random.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_ssl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_ssl.rb</a></td><td class='right'>828</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.7%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 97.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_ssl_session.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_ssl_session.rb</a></td><td class='right'>52</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/openssl/test_x509attr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_x509attr.rb</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_x509cert.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_x509cert.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_x509crl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_x509crl.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_x509ext.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_x509ext.rb</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_x509name.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_x509name.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_x509req.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_x509req.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/test_x509store.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/test_x509store.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/openssl/ut_eof.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/ut_eof.rb</a></td><td class='right'>129</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/openssl/utils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/openssl/utils.rb</a></td><td class='right'>101</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/optparse/test_acceptable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_acceptable.rb</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/optparse/test_autoconf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_autoconf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/optparse/test_bash_completion.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_bash_completion.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/optparse/test_cclass.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_cclass.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/optparse/test_getopts.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_getopts.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/optparse/test_noarg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_noarg.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/optparse/test_optarg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_optarg.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/optparse/test_optparse.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_optparse.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/optparse/test_placearg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_placearg.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/optparse/test_reqarg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_reqarg.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/optparse/test_summary.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_summary.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/optparse/test_zsh_completion.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/optparse/test_zsh_completion.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ostruct/test_ostruct.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ostruct/test_ostruct.rb</a></td><td class='right'>49</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/pathname/test_pathname.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/pathname/test_pathname.rb</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/handlers/test_recorder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/handlers/test_recorder.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/helper.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/helper.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/json/test_stream.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/json/test_stream.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/nodes/test_enumerable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/nodes/test_enumerable.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_alias_and_anchor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_alias_and_anchor.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_array.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_array.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_boolean.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_boolean.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_class.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_class.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_coder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_coder.rb</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_date_time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_date_time.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_deprecated.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_deprecated.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_document.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_document.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_emitter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_emitter.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_encoding.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_encoding.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_exception.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_exception.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_hash.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_hash.rb</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_json_tree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_json_tree.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_marshalable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_marshalable.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_merge_keys.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_merge_keys.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_nil.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_nil.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_null.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_null.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_numeric.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_numeric.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_object.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_object.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_object_references.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_object_references.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_omap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_omap.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_parser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_psych.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_psych.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_safe_load.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_safe_load.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_scalar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_scalar.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_scalar_scanner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_scalar_scanner.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_serialize_subclasses.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_serialize_subclasses.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_stream.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_stream.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_string.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_string.rb</a></td><td class='right'>69</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_struct.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_struct.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_symbol.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_symbol.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_tainted.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_tainted.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_to_yaml_properties.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_to_yaml_properties.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_tree_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_tree_builder.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_yaml.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_yaml.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_yamldbm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_yamldbm.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/test_yamlstore.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/test_yamlstore.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/visitors/test_depth_first.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/visitors/test_depth_first.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/visitors/test_emitter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/visitors/test_emitter.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/visitors/test_to_ruby.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/visitors/test_to_ruby.rb</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/psych/visitors/test_yaml_tree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/psych/visitors/test_yaml_tree.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/file_creation.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/file_creation.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/helper.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/helper.rb</a></td><td class='right'>129</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/support/rakefile_definitions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/support/rakefile_definitions.rb</a></td><td class='right'>478</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.4%;'/><td class='none' style='width: 98.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/support/ruby_runner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/support/ruby_runner.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_private_reader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_private_reader.rb</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_application.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_application.rb</a></td><td class='right'>643</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.8%;'/><td class='none' style='width: 98.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_application_options.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_application_options.rb</a></td><td class='right'>466</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_backtrace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_backtrace.rb</a></td><td class='right'>119</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_clean.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_clean.rb</a></td><td class='right'>61</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_cpu_counter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_cpu_counter.rb</a></td><td class='right'>68</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_definitions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_definitions.rb</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_directory_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_directory_task.rb</a></td><td class='right'>76</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_dsl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_dsl.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_early_time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_early_time.rb</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_extension.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_extension.rb</a></td><td class='right'>59</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_file_creation_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_file_creation_task.rb</a></td><td class='right'>56</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_file_list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_file_list.rb</a></td><td class='right'>655</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.9%;'/><td class='none' style='width: 98.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_file_list_path_map.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_file_list_path_map.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_file_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_file_task.rb</a></td><td class='right'>197</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_file_utils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_file_utils.rb</a></td><td class='right'>309</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_ftp_file.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_ftp_file.rb</a></td><td class='right'>74</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_functional.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_functional.rb</a></td><td class='right'>482</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.4%;'/><td class='none' style='width: 98.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_invocation_chain.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_invocation_chain.rb</a></td><td class='right'>64</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_late_time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_late_time.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_linked_list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_linked_list.rb</a></td><td class='right'>84</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_makefile_loader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_makefile_loader.rb</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_multi_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_multi_task.rb</a></td><td class='right'>64</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_name_space.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_name_space.rb</a></td><td class='right'>57</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_package_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_package_task.rb</a></td><td class='right'>79</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_path_map.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_path_map.rb</a></td><td class='right'>168</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_path_map_explode.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_path_map_explode.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_path_map_partial.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_path_map_partial.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_pathname_extensions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_pathname_extensions.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_pseudo_status.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_pseudo_status.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_rake_test_loader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_rake_test_loader.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_reduce_compat.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_reduce_compat.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_require.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_require.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_rules.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_rules.rb</a></td><td class='right'>388</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_scope.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_scope.rb</a></td><td class='right'>44</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_task.rb</a></td><td class='right'>393</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 98.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_task_argument_parsing.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_task_argument_parsing.rb</a></td><td class='right'>119</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_task_arguments.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_task_arguments.rb</a></td><td class='right'>127</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_task_lib.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_task_lib.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_task_manager.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_task_manager.rb</a></td><td class='right'>178</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_task_manager_argument_resolution.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_task_manager_argument_resolution.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_task_with_arguments.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_task_with_arguments.rb</a></td><td class='right'>172</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_test_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_test_task.rb</a></td><td class='right'>146</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_thread_pool.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_thread_pool.rb</a></td><td class='right'>145</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_top_level_functions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_top_level_functions.rb</a></td><td class='right'>71</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_rake_win32.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_rake_win32.rb</a></td><td class='right'>72</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_thread_history_display.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_thread_history_display.rb</a></td><td class='right'>101</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/rake/test_trace_output.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rake/test_trace_output.rb</a></td><td class='right'>52</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_alias.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_alias.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_any_method.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_any_method.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_attr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_attr.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_class_module.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_class_module.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_code_object.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_code_object.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_comment.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_comment.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_constant.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_constant.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_context.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_context.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_context_section.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_context_section.rb</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_cross_reference.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_cross_reference.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_encoding.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_encoding.rb</a></td><td class='right'>59</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_extend.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_extend.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_generator_darkfish.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_generator_darkfish.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_generator_json_index.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_generator_json_index.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_generator_markup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_generator_markup.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_generator_pot.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_generator_pot.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_generator_pot_po.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_generator_pot_po.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_generator_pot_po_entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_generator_pot_po_entry.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_generator_ri.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_generator_ri.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_i18n_locale.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_i18n_locale.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_i18n_text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_i18n_text.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_include.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_include.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markdown.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markdown.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markdown_test.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markdown_test.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_attribute_manager.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_attribute_manager.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_attributes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_attributes.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_document.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_document.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_formatter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_formatter.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_hard_break.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_hard_break.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_heading.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_heading.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_include.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_include.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_indented_paragraph.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_indented_paragraph.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_paragraph.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_paragraph.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_parser.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_pre_process.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_pre_process.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_raw.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_raw.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_to_ansi.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_to_ansi.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_to_bs.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_to_bs.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_to_html.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_to_html.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_to_html_crossref.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_to_html_crossref.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_to_html_snippet.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_to_html_snippet.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_to_joined_paragraph.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_to_joined_paragraph.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_to_label.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_to_label.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_to_markdown.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_to_markdown.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_to_rdoc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_to_rdoc.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_to_table_of_contents.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_to_table_of_contents.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_to_tt_only.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_to_tt_only.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_markup_verbatim.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_markup_verbatim.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_method_attr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_method_attr.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_normal_class.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_normal_class.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_normal_module.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_normal_module.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_options.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_options.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_parser.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_parser_c.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_parser_c.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_parser_changelog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_parser_changelog.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_parser_markdown.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_parser_markdown.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_parser_rd.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_parser_rd.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_parser_ruby.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_parser_ruby.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_parser_simple.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_parser_simple.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_rd.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_rd.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_rd_block_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_rd_block_parser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_rd_inline.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_rd_inline.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_rd_inline_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_rd_inline_parser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_rdoc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_rdoc.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_require.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_require.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_ri_driver.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_ri_driver.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_ri_paths.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_ri_paths.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_ruby_lex.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_ruby_lex.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_ruby_token.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_ruby_token.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_rubygems_hook.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_rubygems_hook.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_servlet.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_servlet.rb</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_single_class.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_single_class.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_stats.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_stats.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_store.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_store.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_task.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_text.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_token_stream.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_token_stream.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_tom_doc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_tom_doc.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/test_rdoc_top_level.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/test_rdoc_top_level.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/xref_data.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/xref_data.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rdoc/xref_test_case.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rdoc/xref_test_case.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/readline/test_readline.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/readline/test_readline.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/readline/test_readline_history.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/readline/test_readline_history.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/resolv/test_addr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/resolv/test_addr.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/resolv/test_dns.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/resolv/test_dns.rb</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/resolv/test_resource.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/resolv/test_resource.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/listener.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/listener.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/parse/test_document_type_declaration.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/parse/test_document_type_declaration.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/parse/test_notation_declaration.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/parse/test_notation_declaration.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/parser/test_sax2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/parser/test_sax2.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/parser/test_tree.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/parser/test_tree.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/parser/test_ultra_light.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/parser/test_ultra_light.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/rexml_test_utils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/rexml_test_utils.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_attributes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_attributes.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_attributes_mixin.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_attributes_mixin.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_changing_encoding.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_changing_encoding.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_comment.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_comment.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_contrib.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_contrib.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_core.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_core.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_doctype.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_doctype.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_document.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_document.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_elements.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_elements.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_encoding.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_encoding.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_entity.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_entity.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_functions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_functions.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_functions_number.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_functions_number.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_jaxen.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_jaxen.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_light.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_light.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_lightparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_lightparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_listener.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_listener.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_martin_fowler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_martin_fowler.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_namespace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_namespace.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_order.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_order.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_preceding_sibling.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_preceding_sibling.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_pullparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_pullparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_rexml_issuezilla.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_rexml_issuezilla.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_sax.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_sax.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_stream.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_stream.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_text.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_ticket_80.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_ticket_80.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_validation_rng.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_validation_rng.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/test_xml_declaration.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/test_xml_declaration.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/xpath/test_attribute.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/xpath/test_attribute.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/xpath/test_axis_preceding_sibling.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/xpath/test_axis_preceding_sibling.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/xpath/test_base.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/xpath/test_base.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/xpath/test_node.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/xpath/test_node.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/xpath/test_predicate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/xpath/test_predicate.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rexml/xpath/test_text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rexml/xpath/test_text.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rinda/test_rinda.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rinda/test_rinda.rb</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rinda/test_tuplebag.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rinda/test_tuplebag.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ripper/dummyparser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ripper/dummyparser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ripper/test_files.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ripper/test_files.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ripper/test_filter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ripper/test_filter.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ripper/test_parser_events.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ripper/test_parser_events.rb</a></td><td class='right'>138</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ripper/test_ripper.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ripper/test_ripper.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ripper/test_scanner_events.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ripper/test_scanner_events.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ripper/test_sexp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ripper/test_sexp.rb</a></td><td class='right'>41</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/rss-assertions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/rss-assertions.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/rss-testcase.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/rss-testcase.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_1.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_1.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_2.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_2.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_accessor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_accessor.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_atom.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_atom.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_content.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_content.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_dublincore.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_dublincore.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_image.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_image.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_inherit.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_inherit.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_itunes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_itunes.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_0.9.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_0.9.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_1.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_1.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_2.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_2.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_atom_entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_atom_entry.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_atom_feed.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_atom_feed.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_content.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_content.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_dc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_dc.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_image.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_image.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_itunes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_itunes.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_slash.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_slash.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_sy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_sy.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_taxo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_taxo.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_trackback.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_trackback.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_maker_xml-stylesheet.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_maker_xml-stylesheet.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_parser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_parser_1.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_parser_1.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_parser_2.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_parser_2.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_parser_atom_entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_parser_atom_entry.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_parser_atom_feed.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_parser_atom_feed.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_setup_maker_0.9.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_setup_maker_0.9.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_setup_maker_1.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_setup_maker_1.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_setup_maker_2.0.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_setup_maker_2.0.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_setup_maker_atom_entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_setup_maker_atom_entry.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_setup_maker_atom_feed.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_setup_maker_atom_feed.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_setup_maker_itunes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_setup_maker_itunes.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_setup_maker_slash.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_setup_maker_slash.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_slash.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_slash.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_syndication.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_syndication.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_taxonomy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_taxonomy.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_to_s.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_to_s.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_trackback.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_trackback.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_version.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_version.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rss/test_xml-stylesheet.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rss/test_xml-stylesheet.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/allpairs.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/allpairs.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/beginmainend.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/beginmainend.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/ruby/bug-11928.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/bug-11928.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_big5.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_big5.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/ruby/enc/test_case_comprehensive.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_case_comprehensive.rb</a></td><td class='right'>302</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.9%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/ruby/enc/test_case_mapping.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_case_mapping.rb</a></td><td class='right'>173</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/ruby/enc/test_case_options.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_case_options.rb</a></td><td class='right'>81</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_cp949.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_cp949.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_emoji.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_emoji.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_euc_jp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_euc_jp.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_euc_kr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_euc_kr.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_euc_tw.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_euc_tw.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_gb18030.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_gb18030.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_gbk.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_gbk.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_iso_8859.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_iso_8859.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_koi8.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_koi8.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/ruby/enc/test_regex_casefold.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_regex_casefold.rb</a></td><td class='right'>118</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_shift_jis.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_shift_jis.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_utf16.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_utf16.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_utf32.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_utf32.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/enc/test_windows_1251.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_windows_1251.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/ruby/enc/test_windows_1252.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/enc/test_windows_1252.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/ruby/endblockwarn_rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/endblockwarn_rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/lbtest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/lbtest.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/marshaltestlib.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/marshaltestlib.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/sentence.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/sentence.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_alias.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_alias.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_argf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_argf.rb</a></td><td class='right'>63</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_arity.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_arity.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_array.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_array.rb</a></td><td class='right'>323</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.9%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_assignment.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_assignment.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_autoload.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_autoload.rb</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_backtrace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_backtrace.rb</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_basicinstructions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_basicinstructions.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_beginendblock.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_beginendblock.rb</a></td><td class='right'>185</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_bignum.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_bignum.rb</a></td><td class='right'>221</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_call.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_call.rb</a></td><td class='right'>59</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_case.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_case.rb</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_class.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_class.rb</a></td><td class='right'>211</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_clone.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_clone.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_comparable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_comparable.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_complex.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_complex.rb</a></td><td class='right'>140</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_complex2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_complex2.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_complexrational.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_complexrational.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_condition.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_condition.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_const.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_const.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_continuation.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_continuation.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_defined.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_defined.rb</a></td><td class='right'>41</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_dir.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_dir.rb</a></td><td class='right'>83</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_dir_m17n.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_dir_m17n.rb</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_econv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_econv.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_encoding.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_encoding.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_enum.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_enum.rb</a></td><td class='right'>328</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.8%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_enumerator.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_enumerator.rb</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_env.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_env.rb</a></td><td class='right'>151</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_eval.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_eval.rb</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_exception.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_exception.rb</a></td><td class='right'>215</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/ruby/test_extlibs.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_extlibs.rb</a></td><td class='right'>85</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_fiber.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_fiber.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_file.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_file.rb</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_file_exhaustive.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_file_exhaustive.rb</a></td><td class='right'>1167</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.2%;'/><td class='rem' style='width: 1.1%;'/><td class='none' style='width: 96.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_fixnum.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_fixnum.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_flip.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_flip.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_float.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_float.rb</a></td><td class='right'>132</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_fnmatch.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_fnmatch.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_gc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_gc.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_hash.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_hash.rb</a></td><td class='right'>159</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_ifunless.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_ifunless.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_integer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_integer.rb</a></td><td class='right'>199</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_integer_comb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_integer_comb.rb</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_io.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_io.rb</a></td><td class='right'>330</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_io_m17n.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_io_m17n.rb</a></td><td class='right'>98</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_iseq.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_iseq.rb</a></td><td class='right'>139</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_iterator.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_iterator.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_keyword.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_keyword.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_lambda.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_lambda.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_lazy_enumerator.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_lazy_enumerator.rb</a></td><td class='right'>53</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_literal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_literal.rb</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_m17n.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_m17n.rb</a></td><td class='right'>105</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_m17n_comb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_m17n_comb.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_marshal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_marshal.rb</a></td><td class='right'>114</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_math.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_math.rb</a></td><td class='right'>148</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_metaclass.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_metaclass.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_method.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_method.rb</a></td><td class='right'>144</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_mixed_unicode_escapes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_mixed_unicode_escapes.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_module.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_module.rb</a></td><td class='right'>258</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_not.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_not.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_notimp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_notimp.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_numeric.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_numeric.rb</a></td><td class='right'>200</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_object.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_object.rb</a></td><td class='right'>65</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_objectspace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_objectspace.rb</a></td><td class='right'>94</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_optimization.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_optimization.rb</a></td><td class='right'>243</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_pack.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_pack.rb</a></td><td class='right'>95</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_parse.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_parse.rb</a></td><td class='right'>142</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_path.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_path.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_pipe.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_pipe.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_primitive.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_primitive.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_proc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_proc.rb</a></td><td class='right'>41</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_process.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_process.rb</a></td><td class='right'>426</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 98.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_rand.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_rand.rb</a></td><td class='right'>45</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_range.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_range.rb</a></td><td class='right'>53</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_rational.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_rational.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_rational2.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_rational2.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_readpartial.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_readpartial.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_refinement.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_refinement.rb</a></td><td class='right'>328</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.8%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_regexp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_regexp.rb</a></td><td class='right'>125</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_require.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_require.rb</a></td><td class='right'>91</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_rubyoptions.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_rubyoptions.rb</a></td><td class='right'>285</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_rubyvm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_rubyvm.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_settracefunc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_settracefunc.rb</a></td><td class='right'>174</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_signal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_signal.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_sleep.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_sleep.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_sprintf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_sprintf.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_sprintf_comb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_sprintf_comb.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_string.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_string.rb</a></td><td class='right'>270</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_stringchar.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_stringchar.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_struct.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_struct.rb</a></td><td class='right'>31</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_super.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_super.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_symbol.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_symbol.rb</a></td><td class='right'>157</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_syntax.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_syntax.rb</a></td><td class='right'>288</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.8%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_system.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_system.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_thread.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_thread.rb</a></td><td class='right'>203</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_threadgroup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_threadgroup.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_time.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_time_tz.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_time_tz.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_trace.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_trace.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_transcode.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_transcode.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_undef.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_undef.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_unicode_escape.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_unicode_escape.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_variable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_variable.rb</a></td><td class='right'>52</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_weakmap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_weakmap.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_whileuntil.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_whileuntil.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/test_yield.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/test_yield.rb</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/ruby/ut_eof.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/ruby/ut_eof.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/alternate_cert.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/alternate_cert.pem</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/alternate_cert_32.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/alternate_cert_32.pem</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/bad_rake.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/bad_rake.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/bogussources.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/bogussources.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/child_cert.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/child_cert.pem</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/child_cert_32.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/child_cert_32.pem</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/encrypted_private_key.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/encrypted_private_key.pem</a></td><td class='right'>52</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/expired_cert.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/expired_cert.pem</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/fake_certlib/openssl.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/fake_certlib/openssl.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/fix_openssl_warnings.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/fix_openssl_warnings.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/foo/discover.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/foo/discover.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/future_cert.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/future_cert.pem</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/future_cert_32.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/future_cert_32.pem</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/good_rake.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/good_rake.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/grandchild_cert.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/grandchild_cert.pem</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/grandchild_cert_32.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/grandchild_cert_32.pem</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/invalid_issuer_cert.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/invalid_issuer_cert.pem</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/invalid_issuer_cert_32.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/invalid_issuer_cert_32.pem</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/invalid_signer_cert.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/invalid_signer_cert.pem</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/invalid_signer_cert_32.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/invalid_signer_cert_32.pem</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/invalidchild_cert.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/invalidchild_cert.pem</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/invalidchild_cert_32.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/invalidchild_cert_32.pem</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/plugin/exception/rubygems_plugin.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/plugin/exception/rubygems_plugin.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/plugin/load/rubygems_plugin.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/plugin/load/rubygems_plugin.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/plugin/standarderror/rubygems_plugin.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/plugin/standarderror/rubygems_plugin.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/public_cert.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/public_cert.pem</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/public_cert_32.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/public_cert_32.pem</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/rubygems/commands/crash_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/rubygems/commands/crash_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/rubygems_plugin.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/rubygems_plugin.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/sff/discover.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/sff/discover.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/simple_gem.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/simple_gem.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='mov'><a href='/ruby.git/diff/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec</a> (renamed from test/rubygems/specifications/foo-0.0.1.gemspec)</td><td class='right'>bin</td><td class='graph'>269 -> 269 bytes<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_bundled_ca.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_bundled_ca.rb</a></td><td class='right'>83</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_config.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_config.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_deprecate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_deprecate.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem.rb</a></td><td class='right'>223</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_available_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_available_set.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_command.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_command_manager.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_command_manager.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_build_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_build_command.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_cert_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_cert_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_check_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_check_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_cleanup_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_cleanup_command.rb</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_contents_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_contents_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_dependency_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_dependency_command.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_environment_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_environment_command.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_fetch_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_fetch_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_generate_index_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_generate_index_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_help_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_help_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_install_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_install_command.rb</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_list_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_list_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_lock_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_lock_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_mirror.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_mirror.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_open_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_open_command.rb</a></td><td class='right'>32</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_outdated_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_outdated_command.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_owner_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_owner_command.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_pristine_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_pristine_command.rb</a></td><td class='right'>43</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_push_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_push_command.rb</a></td><td class='right'>82</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_query_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_query_command.rb</a></td><td class='right'>309</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_search_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_search_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_server_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_server_command.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_setup_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_setup_command.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_sources_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_sources_command.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_specification_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_specification_command.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_stale_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_stale_command.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_uninstall_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_uninstall_command.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_unpack_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_unpack_command.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_update_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_update_command.rb</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_which_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_which_command.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_commands_yank_command.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_commands_yank_command.rb</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_config_file.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_config_file.rb</a></td><td class='right'>26</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_dependency.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_dependency.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_dependency_installer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_dependency_installer.rb</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_dependency_list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_dependency_list.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_dependency_resolution_error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_dependency_resolution_error.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_doctor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_doctor.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_ext_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_ext_builder.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_ext_cmake_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_ext_cmake_builder.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_ext_configure_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_ext_configure_builder.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_ext_ext_conf_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_ext_ext_conf_builder.rb</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_ext_rake_builder.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_ext_rake_builder.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_gem_runner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_gem_runner.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_gemcutter_utilities.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_gemcutter_utilities.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_impossible_dependencies_error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_impossible_dependencies_error.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_indexer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_indexer.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_install_update_options.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_install_update_options.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_installer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_installer.rb</a></td><td class='right'>278</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_local_remote_options.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_local_remote_options.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_name_tuple.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_name_tuple.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_package.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_package.rb</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_package_old.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_package_old.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_package_tar_header.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_package_tar_header.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_package_tar_reader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_package_tar_reader.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_package_tar_reader_entry.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_package_tar_reader_entry.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_package_tar_writer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_package_tar_writer.rb</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_package_task.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_package_task.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_path_support.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_path_support.rb</a></td><td class='right'>49</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_platform.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_platform.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_rdoc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_rdoc.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_remote_fetcher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_remote_fetcher.rb</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_request.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_request.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_request_connection_pools.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_request_connection_pools.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_request_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_request_set.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_request_set_gem_dependency_api.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_request_set_gem_dependency_api.rb</a></td><td class='right'>94</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_request_set_lockfile.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_request_set_lockfile.rb</a></td><td class='right'>850</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 2.3%;'/><td class='none' style='width: 97.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/rubygems/test_gem_request_set_lockfile_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_request_set_lockfile_parser.rb</a></td><td class='right'>549</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.6%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 98.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_request_set_lockfile_tokenizer.rb</a></td><td class='right'>306</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.9%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_requirement.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_requirement.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver.rb</a></td><td class='right'>58</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_activation_request.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_activation_request.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_api_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_api_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_api_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_api_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_best_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_best_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_composed_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_composed_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_conflict.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_conflict.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_dependency_request.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_dependency_request.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_git_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_git_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_git_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_git_specification.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_index_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_index_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_index_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_index_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_installed_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_installed_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_installer_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_installer_set.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_local_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_local_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_lock_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_lock_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_lock_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_lock_specification.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_requirement_list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_requirement_list.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_vendor_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_vendor_set.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_resolver_vendor_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_resolver_vendor_specification.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_security.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_security.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_security_policy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_security_policy.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_security_signer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_security_signer.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_security_trust_dir.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_security_trust_dir.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_server.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_server.rb</a></td><td class='right'>5</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_silent_ui.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_silent_ui.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_source.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_source.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_source_fetch_problem.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_source_fetch_problem.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_source_git.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_source_git.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_source_installed.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_source_installed.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_source_list.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_source_list.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_source_local.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_source_local.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_source_lock.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_source_lock.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_source_specific_file.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_source_specific_file.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_source_vendor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_source_vendor.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_spec_fetcher.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_spec_fetcher.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_specification.rb</a></td><td class='right'>644</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.5%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 98.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_stream_ui.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_stream_ui.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_stub_specification.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_stub_specification.rb</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_text.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_text.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_uninstaller.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_uninstaller.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_unsatisfiable_dependency_error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_unsatisfiable_dependency_error.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_uri_formatter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_uri_formatter.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_util.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_util.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_validator.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_validator.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_version.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_version.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_gem_version_option.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_gem_version_option.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_kernel.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_kernel.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/rubygems/test_remote_fetch_error.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_remote_fetch_error.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/test_require.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/test_require.rb</a></td><td class='right'>317</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/wrong_key_cert.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/wrong_key_cert.pem</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/rubygems/wrong_key_cert_32.pem?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/rubygems/wrong_key_cert_32.pem</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/runner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/runner.rb</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/scanf/test_scanf.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/scanf/test_scanf.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/scanf/test_scanfblocks.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/scanf/test_scanfblocks.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/scanf/test_scanfio.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/scanf/test_scanfio.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/sdbm/test_sdbm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/sdbm/test_sdbm.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/shell/test_command_processor.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/shell/test_command_processor.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/socket/test_addrinfo.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/socket/test_addrinfo.rb</a></td><td class='right'>37</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/socket/test_ancdata.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/socket/test_ancdata.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/socket/test_basicsocket.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/socket/test_basicsocket.rb</a></td><td class='right'>89</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/socket/test_nonblock.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/socket/test_nonblock.rb</a></td><td class='right'>104</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/socket/test_socket.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/socket/test_socket.rb</a></td><td class='right'>82</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/socket/test_sockopt.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/socket/test_sockopt.rb</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/socket/test_tcp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/socket/test_tcp.rb</a></td><td class='right'>12</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/socket/test_udp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/socket/test_udp.rb</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/socket/test_unix.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/socket/test_unix.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/stringio/test_stringio.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/stringio/test_stringio.rb</a></td><td class='right'>122</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/strscan/test_stringscanner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/strscan/test_stringscanner.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/syslog/test_syslog_logger.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/syslog/test_syslog_logger.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_abbrev.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_abbrev.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_cmath.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_cmath.rb</a></td><td class='right'>68</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_delegate.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_delegate.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_find.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_find.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/test_forwardable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_forwardable.rb</a></td><td class='right'>328</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.9%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_ipaddr.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_ipaddr.rb</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_mathn.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_mathn.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_mutex_m.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_mutex_m.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/test_observer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_observer.rb</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_open3.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_open3.rb</a></td><td class='right'>19</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_pp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_pp.rb</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_prettyprint.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_prettyprint.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_prime.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_prime.rb</a></td><td class='right'>124</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_pstore.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_pstore.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_pty.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_pty.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_rbconfig.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_rbconfig.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_securerandom.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_securerandom.rb</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_set.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_set.rb</a></td><td class='right'>214</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_shellwords.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_shellwords.rb</a></td><td class='right'>73</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_singleton.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_singleton.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_syslog.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_syslog.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_tempfile.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_tempfile.rb</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_time.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_time.rb</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_timeout.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_timeout.rb</a></td><td class='right'>23</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_tmpdir.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_tmpdir.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_tracer.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_tracer.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_tsort.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_tsort.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_unicode_normalize.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_unicode_normalize.rb</a></td><td class='right'>38</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_weakref.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_weakref.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/test_win32api.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/test_win32api.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/test4test_hideskip.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/test4test_hideskip.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/test4test_redefinition.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/test4test_redefinition.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/test4test_sorting.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/test4test_sorting.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/test_assertion.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/test_assertion.rb</a></td><td class='right'>9</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/test_hideskip.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/test_hideskip.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/test_parallel.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/test_parallel.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/testunit/test_rake_integration.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/test_rake_integration.rb</a></td><td class='right'>35</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/test_redefinition.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/test_redefinition.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/test_sorting.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/test_sorting.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/tests_for_parallel/ptest_first.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/tests_for_parallel/ptest_first.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/tests_for_parallel/ptest_forth.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/tests_for_parallel/ptest_forth.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/tests_for_parallel/ptest_second.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/tests_for_parallel/ptest_second.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/tests_for_parallel/ptest_third.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/tests_for_parallel/ptest_third.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/testunit/tests_for_parallel/runner.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/testunit/tests_for_parallel/runner.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/thread/test_cv.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/thread/test_cv.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/thread/test_queue.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/thread/test_queue.rb</a></td><td class='right'>269</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.8%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/thread/test_sync.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/thread/test_sync.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/uri/test_common.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/uri/test_common.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/uri/test_ftp.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/uri/test_ftp.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/uri/test_generic.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/uri/test_generic.rb</a></td><td class='right'>46</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/uri/test_http.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/uri/test_http.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/uri/test_ldap.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/uri/test_ldap.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/uri/test_mailto.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/uri/test_mailto.rb</a></td><td class='right'>14</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/uri/test_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/uri/test_parser.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_cgi.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_cgi.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_cookie.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_cookie.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/webrick/test_do_not_reverse_lookup.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_do_not_reverse_lookup.rb</a></td><td class='right'>71</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_filehandler.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_filehandler.rb</a></td><td class='right'>29</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_htmlutils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_htmlutils.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_httpauth.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_httpauth.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_httpproxy.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_httpproxy.rb</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_httprequest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_httprequest.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_httpresponse.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_httpresponse.rb</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_httpserver.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_httpserver.rb</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_httputils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_httputils.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_httpversion.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_httpversion.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_server.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_server.rb</a></td><td class='right'>35</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/test/webrick/test_ssl_server.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_ssl_server.rb</a></td><td class='right'>40</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/test_utils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/test_utils.rb</a></td><td class='right'>96</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/utils.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/utils.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/webrick/webrick.cgi?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/webrick/webrick.cgi</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/err_in_callback.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/err_in_callback.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_err_in_callback.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_err_in_callback.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_folderitem2_invokeverb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_folderitem2_invokeverb.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_nil2vtempty.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_nil2vtempty.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_ole_methods.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_ole_methods.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_propertyputref.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_propertyputref.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_thread.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_thread.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_win32ole.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_win32ole.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_win32ole_event.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_win32ole_event.rb</a></td><td class='right'>20</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_win32ole_method.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_win32ole_method.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_win32ole_param.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_win32ole_param.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_win32ole_record.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_win32ole_record.rb</a></td><td class='right'>110</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_win32ole_type.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_win32ole_type.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_win32ole_typelib.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_win32ole_typelib.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_win32ole_variable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_win32ole_variable.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_win32ole_variant.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_win32ole_variant.rb</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_win32ole_variant_m.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_win32ole_variant_m.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_win32ole_variant_outarg.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_win32ole_variant_outarg.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/win32ole/test_word.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/win32ole/test_word.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/blog.xml?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/blog.xml</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/bug_bool.expected?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/bug_bool.expected</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/bug_bool.xml?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/bug_bool.xml</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/bug_cdata.expected?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/bug_cdata.expected</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/bug_cdata.xml?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/bug_cdata.xml</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/bug_covert.expected?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/bug_covert.expected</a></td><td class='right'>10</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/bug_covert.xml?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/bug_covert.xml</a></td><td class='right'>6</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/datetime_iso8601.xml?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/datetime_iso8601.xml</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/fault.xml?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/fault.xml</a></td><td class='right'>16</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/value.expected?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/value.expected</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/value.xml?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/value.xml</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/xml1.expected?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/xml1.expected</a></td><td class='right'>243</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.7%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/data/xml1.xml?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/data/xml1.xml</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/htpasswd?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/htpasswd</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/test_client.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/test_client.rb</a></td><td class='right'>317</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 99.1%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/test_cookie.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/test_cookie.rb</a></td><td class='right'>96</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/test_datetime.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/test_datetime.rb</a></td><td class='right'>161</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.5%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/test_features.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/test_features.rb</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/test_marshal.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/test_marshal.rb</a></td><td class='right'>110</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/test_parser.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/test_parser.rb</a></td><td class='right'>93</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/test_webrick_server.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/test_webrick_server.rb</a></td><td class='right'>135</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.4%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/test/xmlrpc/webrick_testing.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/xmlrpc/webrick_testing.rb</a></td><td class='right'>55</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/test/zlib/test_zlib.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>test/zlib/test_zlib.rb</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/thread.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>thread.c</a></td><td class='right'>1241</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.4%;'/><td class='rem' style='width: 2.1%;'/><td class='none' style='width: 96.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/thread_pthread.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>thread_pthread.c</a></td><td class='right'>465</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.7%;'/><td class='rem' style='width: 0.6%;'/><td class='none' style='width: 98.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/thread_pthread.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>thread_pthread.h</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/thread_sync.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>thread_sync.c</a></td><td class='right'>1325</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 3.7%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 96.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/thread_win32.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>thread_win32.c</a></td><td class='right'>11</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/time.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>time.c</a></td><td class='right'>521</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 1.0%;'/><td class='none' style='width: 98.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/tool/asm_parse.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/asm_parse.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/bisect.sh?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/bisect.sh</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/change_maker.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/change_maker.rb</a></td><td class='right'>17</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='add'><a href='/ruby.git/diff/tool/checksum.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/checksum.rb</a></td><td class='right'>72</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/tool/downloader.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/downloader.rb</a></td><td class='right'>127</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/enc-unicode.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/enc-unicode.rb</a></td><td class='right'>156</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/tool/eval.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/eval.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/expand-config.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/expand-config.rb</a></td><td class='right'>34</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/extlibs.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/extlibs.rb</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/tool/fake.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/fake.rb</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/file2lastrev.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/file2lastrev.rb</a></td><td class='right'>67</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='add'><a href='/ruby.git/diff/tool/gem-unpack.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/gem-unpack.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/gen_dummy_probes.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/gen_dummy_probes.rb</a></td><td class='right'>24</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/gen_ruby_tapset.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/gen_ruby_tapset.rb</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/tool/generic_erb.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/generic_erb.rb</a></td><td class='right'>21</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/id2token.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/id2token.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/ifchange?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/ifchange</a></td><td class='right'>50</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/insns2vm.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/insns2vm.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/instruction.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/instruction.rb</a></td><td class='right'>35</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/tool/jisx0208.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/jisx0208.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/make-snapshot?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/make-snapshot</a></td><td class='right'>93</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/tool/make_hgraph.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/make_hgraph.rb</a></td><td class='right'>95</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/mdoc2man.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/mdoc2man.rb</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/merger.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/merger.rb</a></td><td class='right'>75</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/tool/mk_call_iseq_optimized.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/mk_call_iseq_optimized.rb</a></td><td class='right'>72</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/mkconfig.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/mkconfig.rb</a></td><td class='right'>89</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/mkrunnable.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/mkrunnable.rb</a></td><td class='right'>25</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/node_name.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/node_name.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/tool/parse.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/parse.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/rbinstall.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/rbinstall.rb</a></td><td class='right'>257</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.5%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/rbuninstall.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/rbuninstall.rb</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/redmine-backporter.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/redmine-backporter.rb</a></td><td class='right'>267</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.6%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/release.sh?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/release.sh</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/rmdirs?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/rmdirs</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='del'><a href='/ruby.git/diff/tool/rubytest.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/rubytest.rb</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/runruby.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/runruby.rb</a></td><td class='right'>18</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/strip-rdoc.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/strip-rdoc.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/tool/transcode-tblgen.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/transcode-tblgen.rb</a></td><td class='right'>66</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/update-deps?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/update-deps</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/tool/vcs.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/vcs.rb</a></td><td class='right'>179</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/tool/vtlh.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/vtlh.rb</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/tool/ytab.sed?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>tool/ytab.sed</a></td><td class='right'>27</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/transcode.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>transcode.c</a></td><td class='right'>71</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/transcode_data.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>transcode_data.h</a></td><td class='right'>30</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/util.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>util.c</a></td><td class='right'>55</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/variable.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>variable.c</a></td><td class='right'>1499</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.8%;'/><td class='rem' style='width: 1.5%;'/><td class='none' style='width: 95.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/version.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>version.c</a></td><td class='right'>28</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/version.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>version.h</a></td><td class='right'>39</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm.c</a></td><td class='right'>1780</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.9%;'/><td class='rem' style='width: 2.2%;'/><td class='none' style='width: 95.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm_args.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm_args.c</a></td><td class='right'>242</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.3%;'/><td class='none' style='width: 99.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm_backtrace.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm_backtrace.c</a></td><td class='right'>134</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.6%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm_core.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm_core.h</a></td><td class='right'>1100</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.2%;'/><td class='rem' style='width: 0.9%;'/><td class='none' style='width: 96.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm_dump.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm_dump.c</a></td><td class='right'>172</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm_eval.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm_eval.c</a></td><td class='right'>986</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 1.4%;'/><td class='rem' style='width: 1.3%;'/><td class='none' style='width: 97.2%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm_exec.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm_exec.c</a></td><td class='right'>8</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm_insnhelper.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm_insnhelper.c</a></td><td class='right'>2312</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 4.2%;'/><td class='rem' style='width: 2.3%;'/><td class='none' style='width: 93.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm_insnhelper.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm_insnhelper.h</a></td><td class='right'>104</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.7%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm_method.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm_method.c</a></td><td class='right'>1303</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 2.3%;'/><td class='rem' style='width: 1.4%;'/><td class='none' style='width: 96.3%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm_opts.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm_opts.h</a></td><td class='right'>13</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vm_trace.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vm_trace.c</a></td><td class='right'>85</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.2%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/vsnprintf.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>vsnprintf.c</a></td><td class='right'>62</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.8%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/win32/Makefile.sub?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/Makefile.sub</a></td><td class='right'>163</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.3%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.5%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/win32/configure.bat?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/configure.bat</a></td><td class='right'>51</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/win32/dir.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/dir.h</a></td><td class='right'>15</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/win32/file.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/file.c</a></td><td class='right'>211</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.4%;'/><td class='rem' style='width: 0.2%;'/><td class='none' style='width: 99.4%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='add'><a href='/ruby.git/diff/win32/file.h?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/file.h</a></td><td class='right'>47</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/win32/ifchange.bat?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/ifchange.bat</a></td><td class='right'>22</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/win32/mkexports.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/mkexports.rb</a></td><td class='right'>7</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/win32/resource.rb?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/resource.rb</a></td><td class='right'>3</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rwxr-xr-x</td><td class='upd'><a href='/ruby.git/diff/win32/rmdirs.bat?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/rmdirs.bat</a></td><td class='right'>1</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 100.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/win32/rtname.cmd?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/rtname.cmd</a></td><td class='right'>33</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/win32/setup.mak?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/setup.mak</a></td><td class='right'>36</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.1%;'/><td class='rem' style='width: 0.0%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='del'><a href='/ruby.git/diff/win32/stub.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/stub.c</a></td><td class='right'>42</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 0.0%;'/><td class='rem' style='width: 0.1%;'/><td class='none' style='width: 99.9%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/ruby.git/diff/win32/win32.c?h=v2_4_0_preview2&amp;id2=a627fdfaaffd456de871ead092c1770d220aec98'>win32/win32.c</a></td><td class='right'>1906</td><td class='graph'><table summary='file diffstat' width='100%'><tr><td class='add' style='width: 3.3%;'/><td class='rem' style='width: 2.1%;'/><td class='none' style='width: 94.6%;'/></tr></table></td></tr>
</table><div class='diffstat-summary'>3607 files changed, 179691 insertions, 353941 deletions</div><table summary='diff' class='diff'><tr><td><div class='head'>diff --git a/.document b/.document<br/>index 9a5067bc52..fb27ba325d 100644<br/>--- a/<a href='/ruby.git/tree/.document?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>.document</a><br/>+++ b/<a href='/ruby.git/tree/.document?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>.document</a></div><div class='hunk'>@@ -20,9 +20,7 @@ ChangeLog</div><div class='ctx'> </div><div class='ctx'> NEWS</div><div class='ctx'> </div><div class='del'>-README</div><div class='del'>-README.EXT</div><div class='del'>-README.EXT.ja</div><div class='del'>-README.ja</div><div class='add'>+README.md</div><div class='add'>+README.ja.md</div><div class='ctx'> </div><div class='ctx'> doc</div><div class='head'>diff --git a/.gdbinit b/.gdbinit<br/>index d1279ea046..d31ccaa7df 100644<br/>--- a/<a href='/ruby.git/tree/.gdbinit?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>.gdbinit</a><br/>+++ b/<a href='/ruby.git/tree/.gdbinit?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>.gdbinit</a></div><div class='hunk'>@@ -245,6 +245,12 @@ define rp</div><div class='ctx'>     printf "%sT_UNDEF%s: ", $color_type, $color_end</div><div class='ctx'>     print (struct RBasic *)($arg0)</div><div class='ctx'>   else</div><div class='add'>+  if ($flags &amp; RUBY_T_MASK) == RUBY_T_IMEMO</div><div class='add'>+    printf "%sT_IMEMO%s(", $color_type, $color_end</div><div class='add'>+    output (enum imemo_type)(($flags&gt;&gt;RUBY_FL_USHIFT)&amp;imemo_mask)</div><div class='add'>+    printf "): "</div><div class='add'>+    rp_imemo $arg0</div><div class='add'>+  else</div><div class='ctx'>   if ($flags &amp; RUBY_T_MASK) == RUBY_T_NODE</div><div class='ctx'>     printf "%sT_NODE%s(", $color_type, $color_end</div><div class='ctx'>     output (enum node_type)(($flags&amp;RUBY_NODE_TYPEMASK)&gt;&gt;RUBY_NODE_TYPESHIFT)</div><div class='hunk'>@@ -289,6 +295,7 @@ define rp</div><div class='ctx'>   end</div><div class='ctx'>   end</div><div class='ctx'>   end</div><div class='add'>+  end</div><div class='ctx'> end</div><div class='ctx'> document rp</div><div class='ctx'>   Print a Ruby's VALUE.</div><div class='hunk'>@@ -406,6 +413,13 @@ document rp_id</div><div class='ctx'>   Print an ID.</div><div class='ctx'> end</div><div class='ctx'> </div><div class='add'>+define output_string</div><div class='add'>+  set $flags = ((struct RBasic*)($arg0))-&gt;flags</div><div class='add'>+  printf "%s", (char *)(($flags &amp; RUBY_FL_USER1) ? \</div><div class='add'>+	    ((struct RString*)($arg0))-&gt;as.heap.ptr : \</div><div class='add'>+	    ((struct RString*)($arg0))-&gt;as.ary)</div><div class='add'>+end</div><div class='add'>+</div><div class='ctx'> define rp_string</div><div class='ctx'>   set $flags = ((struct RBasic*)($arg0))-&gt;flags</div><div class='ctx'>   set print address off</div><div class='hunk'>@@ -448,8 +462,8 @@ end</div><div class='ctx'> </div><div class='ctx'> define rp_class</div><div class='ctx'>   printf "(struct RClass *) %p", (void*)$arg0</div><div class='del'>-  if ((struct RClass *)($arg0))-&gt;ptr.origin != $arg0</div><div class='del'>-    printf " -&gt; %p", ((struct RClass *)($arg0))-&gt;ptr.origin</div><div class='add'>+  if ((struct RClass *)($arg0))-&gt;ptr.origin_ != $arg0</div><div class='add'>+    printf " -&gt; %p", ((struct RClass *)($arg0))-&gt;ptr.origin_</div><div class='ctx'>   end</div><div class='ctx'>   printf "\n"</div><div class='ctx'>   rb_classname $arg0</div><div class='hunk'>@@ -460,6 +474,50 @@ document rp_class</div><div class='ctx'>   Print the content of a Class/Module.</div><div class='ctx'> end</div><div class='ctx'> </div><div class='add'>+define rp_imemo</div><div class='add'>+  set $flags = (enum imemo_type)((((struct RBasic *)($arg0))-&gt;flags &gt;&gt; RUBY_FL_USHIFT) &amp; imemo_mask)</div><div class='add'>+  if $flags == imemo_cref</div><div class='add'>+    printf "(rb_cref_t *) %p\n", (void*)$arg0</div><div class='add'>+    print *(rb_cref_t *)$arg0</div><div class='add'>+  else</div><div class='add'>+  if $flags == imemo_svar</div><div class='add'>+    printf "(struct vm_svar *) %p\n", (void*)$arg0</div><div class='add'>+    print *(struct vm_svar *)$arg0</div><div class='add'>+  else</div><div class='add'>+  if $flags == imemo_throw_data</div><div class='add'>+    printf "(struct vm_throw_data *) %p\n", (void*)$arg0</div><div class='add'>+    print *(struct vm_throw_data *)$arg0</div><div class='add'>+  else</div><div class='add'>+  if $flags == imemo_ifunc</div><div class='add'>+    printf "(struct vm_ifunc *) %p\n", (void*)$arg0</div><div class='add'>+    print *(struct vm_ifunc *)$arg0</div><div class='add'>+  else</div><div class='add'>+  if $flags == imemo_memo</div><div class='add'>+    printf "(struct MEMO *) %p\n", (void*)$arg0</div><div class='add'>+    print *(struct MEMO *)$arg0</div><div class='add'>+  else</div><div class='add'>+  if $flags == imemo_ment</div><div class='add'>+    printf "(rb_method_entry_t *) %p\n", (void*)$arg0</div><div class='add'>+    print *(rb_method_entry_t *)$arg0</div><div class='add'>+  else</div><div class='add'>+  if $flags == imemo_iseq</div><div class='add'>+    printf "(rb_iseq_t *) %p\n", (void*)$arg0</div><div class='add'>+    print *(rb_iseq_t *)$arg0</div><div class='add'>+  else</div><div class='add'>+    printf "(struct RIMemo *) %p\n", (void*)$arg0</div><div class='add'>+    print *(struct RIMemo *)$arg0</div><div class='add'>+  end</div><div class='add'>+  end</div><div class='add'>+  end</div><div class='add'>+  end</div><div class='add'>+  end</div><div class='add'>+  end</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+document rp_imemo</div><div class='add'>+  Print the content of a memo</div><div class='add'>+end</div><div class='add'>+</div><div class='ctx'> define nd_type</div><div class='ctx'>   print (enum node_type)((((NODE*)($arg0))-&gt;flags&amp;RUBY_NODE_TYPEMASK)&gt;&gt;RUBY_NODE_TYPESHIFT)</div><div class='ctx'> end</div><div class='hunk'>@@ -869,33 +927,246 @@ end</div><div class='ctx'> </div><div class='ctx'> define rb_ps_vm</div><div class='ctx'>   print $ps_vm = (rb_vm_t*)$arg0</div><div class='del'>-  set $ps_threads = (st_table*)$ps_vm-&gt;living_threads</div><div class='del'>-  if $ps_threads-&gt;entries_packed</div><div class='del'>-    set $ps_threads_i = 0</div><div class='del'>-    while $ps_threads_i &lt; $ps_threads-&gt;num_entries</div><div class='del'>-      set $ps_threads_key = (st_data_t)$ps_threads-&gt;as.packed.entries[$ps_threads_i].key</div><div class='del'>-      set $ps_threads_val = (st_data_t)$ps_threads-&gt;as.packed.entries[$ps_threads_i].val</div><div class='del'>-      rb_ps_thread $ps_threads_key $ps_threads_val</div><div class='del'>-      set $ps_threads_i = $ps_threads_i + 1</div><div class='del'>-    end</div><div class='del'>-  else</div><div class='del'>-    set $ps_threads_ptr = (st_table_entry*)$ps_threads-&gt;head</div><div class='del'>-    while $ps_threads_ptr</div><div class='del'>-      set $ps_threads_key = (st_data_t)$ps_threads_ptr-&gt;key</div><div class='del'>-      set $ps_threads_val = (st_data_t)$ps_threads_ptr-&gt;record</div><div class='del'>-      rb_ps_thread $ps_threads_key $ps_threads_val</div><div class='del'>-      set $ps_threads_ptr = (st_table_entry*)$ps_threads_ptr-&gt;fore</div><div class='add'>+  set $ps_thread_ln = $ps_vm-&gt;living_threads.n.next</div><div class='add'>+  set $ps_thread_ln_last = $ps_vm-&gt;living_threads.n.prev</div><div class='add'>+  while 1</div><div class='add'>+    set $ps_thread_th = (rb_thread_t *)$ps_thread_ln</div><div class='add'>+    set $ps_thread = (VALUE)($ps_thread_th-&gt;self)</div><div class='add'>+    rb_ps_thread $ps_thread</div><div class='add'>+    if $ps_thread_ln == $ps_thread_ln_last</div><div class='add'>+      loop_break</div><div class='ctx'>     end</div><div class='add'>+    set $ps_thread_ln = $ps_thread_ln-&gt;next</div><div class='ctx'>   end</div><div class='ctx'> end</div><div class='ctx'> document rb_ps_vm</div><div class='ctx'> Dump all threads in a (rb_vm_t*) and their callstacks</div><div class='ctx'> end</div><div class='ctx'> </div><div class='add'>+define print_lineno</div><div class='add'>+  set $cfp = $arg0</div><div class='add'>+  set $iseq = $cfp-&gt;iseq</div><div class='add'>+  set $pos = $cfp-&gt;pc - $iseq-&gt;body-&gt;iseq_encoded</div><div class='add'>+  if $pos != 0</div><div class='add'>+    set $pos = $pos - 1</div><div class='add'>+  end</div><div class='add'>+</div><div class='add'>+  set $i = 0</div><div class='add'>+  set $size = $iseq-&gt;body-&gt;line_info_size</div><div class='add'>+  set $table = $iseq-&gt;body-&gt;line_info_table</div><div class='add'>+  #printf "size: %d\n", $size</div><div class='add'>+  if $size == 0</div><div class='add'>+  else</div><div class='add'>+    set $i = 1</div><div class='add'>+    while $i &lt; $size</div><div class='add'>+      #printf "table[%d]: position: %d, line: %d, pos: %d\n", $i, $table[$i].position, $table[$i].line_no, $pos</div><div class='add'>+      if $table[$i].position &gt; $pos</div><div class='add'>+        loop_break</div><div class='add'>+      end</div><div class='add'>+      set $i = $i + 1</div><div class='add'>+      if $table[$i].position == $pos</div><div class='add'>+        loop_break</div><div class='add'>+      end</div><div class='add'>+    end</div><div class='add'>+    printf "%d", $table[$i-1].line_no</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+define check_method_entry</div><div class='add'>+  # get $immeo and $can_be_svar and return $me</div><div class='add'>+  set $imemo = (struct RBasic *)$arg0</div><div class='add'>+  set $can_be_svar = $arg1</div><div class='add'>+  if $imemo != RUBY_Qfalse</div><div class='add'>+    set $type = ($imemo-&gt;flags &gt;&gt; 12) &amp; 0x07</div><div class='add'>+    if $type == imemo_ment</div><div class='add'>+      set $me = (rb_callable_method_entry_t *)$imemo</div><div class='add'>+    else</div><div class='add'>+    if $type == imemo_svar</div><div class='add'>+      set $imemo == ((struct vm_svar *)$imemo)-&gt;cref_or_me</div><div class='add'>+      check_method_entry $imemo 0</div><div class='add'>+    end</div><div class='add'>+    end</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+define output_id</div><div class='add'>+  set $id = $arg0</div><div class='add'>+  # rb_id_to_serial</div><div class='add'>+  if $id &gt; tLAST_OP_ID</div><div class='add'>+    set $serial = (rb_id_serial_t)($id &gt;&gt; RUBY_ID_SCOPE_SHIFT)</div><div class='add'>+  else</div><div class='add'>+    set $serial = (rb_id_serial_t)$id</div><div class='add'>+  end</div><div class='add'>+  if $serial &amp;&amp; $serial &lt;= global_symbols.last_id</div><div class='add'>+    set $idx = $serial / ID_ENTRY_UNIT</div><div class='add'>+    set $ids = (struct RArray *)global_symbols.ids</div><div class='add'>+    set $flags = $ids-&gt;basic.flags</div><div class='add'>+    if ($flags &amp; RUBY_FL_USER1)</div><div class='add'>+      set $idsptr = $ids-&gt;as.ary</div><div class='add'>+      set $idslen = (($flags &amp; (RUBY_FL_USER3|RUBY_FL_USER4)) &gt;&gt; (RUBY_FL_USHIFT+3))</div><div class='add'>+    else</div><div class='add'>+      set $idsptr = $ids-&gt;as.heap.ptr</div><div class='add'>+      set $idslen = $ids-&gt;as.heap.len</div><div class='add'>+    end</div><div class='add'>+    if $idx &lt; $idslen</div><div class='add'>+      set $t = 0</div><div class='add'>+      set $ary = (struct RArray *)$idsptr[$idx]</div><div class='add'>+      if $ary != RUBY_Qnil</div><div class='add'>+        set $flags = $ary-&gt;basic.flags</div><div class='add'>+        if ($flags &amp; RUBY_FL_USER1)</div><div class='add'>+          set $aryptr = $ary-&gt;as.ary</div><div class='add'>+          set $arylen = (($flags &amp; (RUBY_FL_USER3|RUBY_FL_USER4)) &gt;&gt; (RUBY_FL_USHIFT+3))</div><div class='add'>+        else</div><div class='add'>+          set $aryptr = $ary-&gt;as.heap.ptr</div><div class='add'>+          set $arylen = $ary-&gt;as.heap.len</div><div class='add'>+        end</div><div class='add'>+        set $result = $aryptr[($serial % ID_ENTRY_UNIT) * ID_ENTRY_SIZE + $t]</div><div class='add'>+        output_string $result</div><div class='add'>+      end</div><div class='add'>+    end</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='ctx'> define rb_ps_thread</div><div class='ctx'>   set $ps_thread = (struct RTypedData*)$arg0</div><div class='del'>-  set $ps_thread_id = $arg1</div><div class='del'>-  print $ps_thread_th = (rb_thread_t*)$ps_thread-&gt;data</div><div class='add'>+  set $ps_thread_th = (rb_thread_t*)$ps_thread-&gt;data</div><div class='add'>+  printf "* #&lt;Thread:%p rb_thread_t:%p native_thread:%p&gt;\n", \</div><div class='add'>+    $ps_thread, $ps_thread_th, $ps_thread_th-&gt;thread_id</div><div class='add'>+  set $cfp = $ps_thread_th-&gt;cfp</div><div class='add'>+  set $cfpend = (rb_control_frame_t *)($ps_thread_th-&gt;stack + $ps_thread_th-&gt;stack_size)-1</div><div class='add'>+  while $cfp &lt; $cfpend</div><div class='add'>+    if $cfp-&gt;iseq</div><div class='add'>+      if $cfp-&gt;pc</div><div class='add'>+        set $location = $cfp-&gt;iseq-&gt;body-&gt;location</div><div class='add'>+        output_string $location.path</div><div class='add'>+        printf ":"</div><div class='add'>+        print_lineno $cfp</div><div class='add'>+        printf ":in `"</div><div class='add'>+        output_string $location.label</div><div class='add'>+        printf "'\n"</div><div class='add'>+      else</div><div class='add'>+        printf "???.rb:???:in `???'\n"</div><div class='add'>+      end</div><div class='add'>+    else</div><div class='add'>+      # if VM_FRAME_TYPE($cfp-&gt;flag) == VM_FRAME_MAGIC_CFUNC</div><div class='add'>+      set $ep = $cfp-&gt;ep</div><div class='add'>+      if ($ep[0] &amp; 0xffff0001) == 0x55550001</div><div class='add'>+        #define VM_ENV_FLAG_LOCAL 0x02</div><div class='add'>+        #define VM_ENV_PREV_EP(ep)   GC_GUARDED_PTR_REF(ep[VM_ENV_DATA_INDEX_SPECVAL])</div><div class='add'>+        set $me = 0</div><div class='add'>+        set $env_specval = $ep[-1]</div><div class='add'>+        set $env_me_cref = $ep[-2]</div><div class='add'>+        while ($env_specval &amp; 0x02) != 0</div><div class='add'>+          check_method_entry $env_me_cref 0</div><div class='add'>+          if $me != 0</div><div class='add'>+            loop_break</div><div class='add'>+          end</div><div class='add'>+          set $ep = $ep[0]</div><div class='add'>+          set $env_specval = $ep[-1]</div><div class='add'>+          set $env_me_cref = $ep[-2]</div><div class='add'>+        end</div><div class='add'>+        if $me == 0</div><div class='add'>+          check_method_entry $env_me_cref 1</div><div class='add'>+        end</div><div class='add'>+        set print symbol-filename on</div><div class='add'>+        output/a $me-&gt;def-&gt;body.cfunc.func</div><div class='add'>+        set print symbol-filename off</div><div class='add'>+        set $mid = $me-&gt;def-&gt;original_id</div><div class='add'>+        printf ":in `"</div><div class='add'>+        output_id $mid</div><div class='add'>+        printf "'\n"</div><div class='add'>+      else</div><div class='add'>+        printf "unknown_frame:???:in `???'\n"</div><div class='add'>+      end</div><div class='add'>+    end</div><div class='add'>+    set $cfp = $cfp + 1</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+define rb_count_objects</div><div class='add'>+  set $objspace = ruby_current_vm-&gt;objspace</div><div class='add'>+  set $counts_00 = 0</div><div class='add'>+  set $counts_01 = 0</div><div class='add'>+  set $counts_02 = 0</div><div class='add'>+  set $counts_03 = 0</div><div class='add'>+  set $counts_04 = 0</div><div class='add'>+  set $counts_05 = 0</div><div class='add'>+  set $counts_06 = 0</div><div class='add'>+  set $counts_07 = 0</div><div class='add'>+  set $counts_08 = 0</div><div class='add'>+  set $counts_09 = 0</div><div class='add'>+  set $counts_0a = 0</div><div class='add'>+  set $counts_0b = 0</div><div class='add'>+  set $counts_0c = 0</div><div class='add'>+  set $counts_0d = 0</div><div class='add'>+  set $counts_0e = 0</div><div class='add'>+  set $counts_0f = 0</div><div class='add'>+  set $counts_10 = 0</div><div class='add'>+  set $counts_11 = 0</div><div class='add'>+  set $counts_12 = 0</div><div class='add'>+  set $counts_13 = 0</div><div class='add'>+  set $counts_14 = 0</div><div class='add'>+  set $counts_15 = 0</div><div class='add'>+  set $counts_16 = 0</div><div class='add'>+  set $counts_17 = 0</div><div class='add'>+  set $counts_18 = 0</div><div class='add'>+  set $counts_19 = 0</div><div class='add'>+  set $counts_1a = 0</div><div class='add'>+  set $counts_1b = 0</div><div class='add'>+  set $counts_1c = 0</div><div class='add'>+  set $counts_1d = 0</div><div class='add'>+  set $counts_1e = 0</div><div class='add'>+  set $counts_1f = 0</div><div class='add'>+  set $total = 0</div><div class='add'>+  set $i = 0</div><div class='add'>+  while $i &lt; $objspace-&gt;heap_pages.allocated_pages</div><div class='add'>+    printf "\rcounting... %d/%d", $i, $objspace-&gt;heap_pages.allocated_pages</div><div class='add'>+    set $page = $objspace-&gt;heap_pages.sorted[$i]</div><div class='add'>+    set $p = $page-&gt;start</div><div class='add'>+    set $pend = $p + $page-&gt;total_slots</div><div class='add'>+    while $p &lt; $pend</div><div class='add'>+      set $flags = $p-&gt;as.basic.flags &amp; 0x1f</div><div class='add'>+      eval "set $counts_%02x = $counts_%02x + 1", $flags, $flags</div><div class='add'>+      set $p = $p + 1</div><div class='add'>+    end</div><div class='add'>+    set $total = $total + $page-&gt;total_slots</div><div class='add'>+    set $i = $i + 1</div><div class='add'>+  end</div><div class='add'>+  printf "\rTOTAL: %d, FREE: %d\n", $total, $counts_00</div><div class='add'>+  printf "T_OBJECT: %d\n", $counts_01</div><div class='add'>+  printf "T_CLASS: %d\n", $counts_02</div><div class='add'>+  printf "T_MODULE: %d\n", $counts_03</div><div class='add'>+  printf "T_FLOAT: %d\n", $counts_04</div><div class='add'>+  printf "T_STRING: %d\n", $counts_05</div><div class='add'>+  printf "T_REGEXP: %d\n", $counts_06</div><div class='add'>+  printf "T_ARRAY: %d\n", $counts_07</div><div class='add'>+  printf "T_HASH: %d\n", $counts_08</div><div class='add'>+  printf "T_STRUCT: %d\n", $counts_09</div><div class='add'>+  printf "T_BIGNUM: %d\n", $counts_0a</div><div class='add'>+  printf "T_FILE: %d\n", $counts_0b</div><div class='add'>+  printf "T_DATA: %d\n", $counts_0c</div><div class='add'>+  printf "T_MATCH: %d\n", $counts_0d</div><div class='add'>+  printf "T_COMPLEX: %d\n", $counts_0e</div><div class='add'>+  printf "T_RATIONAL: %d\n", $counts_0f</div><div class='add'>+  #printf "UNKNOWN_10: %d\n", $counts_10</div><div class='add'>+  printf "T_NIL: %d\n", $counts_11</div><div class='add'>+  printf "T_TRUE: %d\n", $counts_12</div><div class='add'>+  printf "T_FALSE: %d\n", $counts_13</div><div class='add'>+  printf "T_SYMBOL: %d\n", $counts_14</div><div class='add'>+  printf "T_FIXNUM: %d\n", $counts_15</div><div class='add'>+  printf "T_UNDEF: %d\n", $counts_16</div><div class='add'>+  #printf "UNKNOWN_17: %d\n", $counts_17</div><div class='add'>+  #printf "UNKNOWN_18: %d\n", $counts_18</div><div class='add'>+  #printf "UNKNOWN_19: %d\n", $counts_19</div><div class='add'>+  printf "T_IMEMO: %d\n", $counts_1a</div><div class='add'>+  printf "T_NODE: %d\n", $counts_1b</div><div class='add'>+  printf "T_ICLASS: %d\n", $counts_1c</div><div class='add'>+  printf "T_ZOMBIE: %d\n", $counts_1d</div><div class='add'>+  #printf "UNKNOWN_1E: %d\n", $counts_1e</div><div class='add'>+  printf "T_MASK: %d\n", $counts_1f</div><div class='add'>+end</div><div class='add'>+document rb_count_objects</div><div class='add'>+  Counts all objects grouped by type.</div><div class='ctx'> end</div><div class='ctx'> </div><div class='ctx'> # Details: https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/MachineInstructionsTraceWithGDB</div><div class='hunk'>@@ -914,3 +1185,26 @@ define SDR</div><div class='ctx'>   call rb_vmdebug_stack_dump_raw_current()</div><div class='ctx'> end</div><div class='ctx'> </div><div class='add'>+define rbi</div><div class='add'>+  if ((LINK_ELEMENT*)$arg0)-&gt;type == ISEQ_ELEMENT_LABEL</div><div class='add'>+    p *(LABEL*)$arg0</div><div class='add'>+  else</div><div class='add'>+  if ((LINK_ELEMENT*)$arg0)-&gt;type == ISEQ_ELEMENT_INSN</div><div class='add'>+    p *(INSN*)$arg0</div><div class='add'>+  else</div><div class='add'>+  if ((LINK_ELEMENT*)$arg0)-&gt;type == ISEQ_ELEMENT_ADJUST</div><div class='add'>+    p *(ADJUST*)$arg0</div><div class='add'>+  else</div><div class='add'>+    print *$arg0</div><div class='add'>+  end</div><div class='add'>+  end</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+define dump_node</div><div class='add'>+  set $str = rb_parser_dump_tree($arg0, 0)</div><div class='add'>+  set $flags = ((struct RBasic*)($str))-&gt;flags</div><div class='add'>+  printf "%s", (char *)(($flags &amp; RUBY_FL_USER1) ? \</div><div class='add'>+                        ((struct RString*)$str)-&gt;as.heap.ptr : \</div><div class='add'>+                        ((struct RString*)$str)-&gt;as.ary)</div><div class='add'>+end</div><div class='head'>diff --git a/.gitattributes b/.gitattributes<br/>new file mode 100644<br/>index 0000000000..d9785fad00<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/.gitattributes?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>.gitattributes</a></div><div class='hunk'>@@ -0,0 +1,5 @@</div><div class='add'>+*.gemspec diff=ruby</div><div class='add'>+*.rb diff=ruby</div><div class='add'>+bin/* diff=ruby</div><div class='add'>+tool/update-deps diff=ruby</div><div class='add'>+tool/make-snapshot diff=ruby</div><div class='head'>diff --git a/.gitignore b/.gitignore<br/>index a9104e9ed5..9757768786 100644<br/>--- a/<a href='/ruby.git/tree/.gitignore?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>.gitignore</a><br/>+++ b/<a href='/ruby.git/tree/.gitignore?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>.gitignore</a></div><div class='hunk'>@@ -1,17 +1,25 @@</div><div class='ctx'> *-*-*.def</div><div class='add'>+*-*-*.exp</div><div class='add'>+*-*-*.lib</div><div class='ctx'> *.a</div><div class='ctx'> *.bak</div><div class='add'>+*.bc</div><div class='ctx'> *.dSYM</div><div class='ctx'> *.dmyh</div><div class='ctx'> *.dylib</div><div class='ctx'> *.elc</div><div class='add'>+*.i</div><div class='ctx'> *.inc</div><div class='ctx'> *.log</div><div class='ctx'> *.o</div><div class='add'>+*.obj</div><div class='ctx'> *.orig</div><div class='add'>+*.pdb</div><div class='ctx'> *.rej</div><div class='add'>+*.s</div><div class='ctx'> *.sav</div><div class='ctx'> *.swp</div><div class='add'>+*.yarb</div><div class='ctx'> *~</div><div class='ctx'> .*-*</div><div class='ctx'> .*.list</div><div class='hunk'>@@ -24,13 +32,18 @@</div><div class='ctx'> .svn</div><div class='ctx'> Makefile</div><div class='ctx'> Makefile.old</div><div class='add'>+cygruby*.def</div><div class='ctx'> extconf.h</div><div class='ctx'> y.output</div><div class='ctx'> y.tab.c</div><div class='ctx'> </div><div class='ctx'> # /</div><div class='ctx'> /*-fake.rb</div><div class='add'>+/*.dll</div><div class='add'>+/*.exe</div><div class='add'>+/*.res</div><div class='ctx'> /*.pc</div><div class='add'>+/*.rc</div><div class='ctx'> /*_prelude.c</div><div class='ctx'> /COPYING.LIB</div><div class='ctx'> /ChangeLog-*</div><div class='hunk'>@@ -56,6 +69,8 @@ y.tab.c</div><div class='ctx'> /config.status.lineno</div><div class='ctx'> /configure</div><div class='ctx'> /coverage/simplecov</div><div class='add'>+/coverage/simplecov-html</div><div class='add'>+/coverage/doclie</div><div class='ctx'> /coverage/.last_run.json</div><div class='ctx'> /coverage/.resultset.json*</div><div class='ctx'> /coverage/assets</div><div class='hunk'>@@ -90,6 +105,8 @@ y.tab.c</div><div class='ctx'> /riscos</div><div class='ctx'> /rubicon</div><div class='ctx'> /ruby</div><div class='add'>+/ruby-runner</div><div class='add'>+/ruby-runner.h</div><div class='ctx'> /ruby-man.rd.gz</div><div class='ctx'> /sizes.c</div><div class='ctx'> /test.rb</div><div class='hunk'>@@ -97,6 +114,7 @@ y.tab.c</div><div class='ctx'> /transdb.h</div><div class='ctx'> /uncommon.mk</div><div class='ctx'> /verconf.h</div><div class='add'>+/verconf.mk</div><div class='ctx'> /web</div><div class='ctx'> /yasmdata.rb</div><div class='ctx'> </div><div class='hunk'>@@ -105,14 +123,25 @@ y.tab.c</div><div class='ctx'> /benchmark/fasta.output.*</div><div class='ctx'> /benchmark/wc.input</div><div class='ctx'> </div><div class='add'>+/enc/*.def</div><div class='add'>+/enc/*.exp</div><div class='add'>+/enc/*.lib</div><div class='ctx'> /enc/unicode/data</div><div class='ctx'> </div><div class='ctx'> # /enc/trans/</div><div class='ctx'> /enc/trans/*.c</div><div class='add'>+/enc/trans/*.def</div><div class='add'>+/enc/trans/*.exp</div><div class='add'>+/enc/trans/*.lib</div><div class='add'>+/enc/trans/.time</div><div class='ctx'> </div><div class='ctx'> # /ext/</div><div class='ctx'> /ext/extinit.c</div><div class='ctx'> </div><div class='add'>+# /ext/-test-/win32/dln/</div><div class='add'>+/ext/-test-/win32/dln/dlntest.exp</div><div class='add'>+/ext/-test-/win32/dln/dlntest.lib</div><div class='add'>+</div><div class='ctx'> # /ext/dl/callback/</div><div class='ctx'> /ext/dl/callback/callback-*.c</div><div class='ctx'> /ext/dl/callback/callback.c</div><div class='hunk'>@@ -138,9 +167,6 @@ y.tab.c</div><div class='ctx'> /ext/socket/constdefs.h</div><div class='ctx'> /ext/socket/constdefs.c</div><div class='ctx'> </div><div class='del'>-# /ext/tk/</div><div class='del'>-/ext/tk/config_list</div><div class='del'>-</div><div class='ctx'> # /gems</div><div class='ctx'> /gems/*.gem</div><div class='ctx'> </div><div class='head'>diff --git a/.travis.yml b/.travis.yml<br/>index ccd4d3884c..24ce0c9113 100644<br/>--- a/<a href='/ruby.git/tree/.travis.yml?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>.travis.yml</a><br/>+++ b/<a href='/ruby.git/tree/.travis.yml?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>.travis.yml</a></div><div class='hunk'>@@ -18,66 +18,57 @@</div><div class='ctx'> </div><div class='ctx'> # Language specification.</div><div class='ctx'> language: c</div><div class='add'>+sudo: false</div><div class='ctx'> </div><div class='ctx'> # Compilers.  Several  compilers are  provided in Travis,  so we try  them all.</div><div class='ctx'> # The value set here is visible via $CC environment variable.</div><div class='ctx'> compiler:</div><div class='ctx'>   - gcc</div><div class='del'>-  - clang</div><div class='ctx'> </div><div class='ctx'> os:</div><div class='ctx'>   - linux</div><div class='del'>-  - osx</div><div class='ctx'> </div><div class='ctx'> # Dependencies.  Some  header files are missing  in a Travis' worker  VM, so we</div><div class='ctx'> # have  to install  them.  The  "1.9.1" here  is OK.   It is  the  most adopted</div><div class='ctx'> # version string  for Debian/Ubuntu, and  no dependencies have been  changed so</div><div class='ctx'> # far since the 1.9.1 release.</div><div class='ctx'> before_install:</div><div class='del'>-  - "if [[ $TRAVIS_OS_NAME = 'linux' ]]; then sudo apt-get -qq update; fi"</div><div class='del'>-  # Travis ships an outdated, broken version of libssl by default</div><div class='del'>-  - "if [[ $TRAVIS_OS_NAME = 'linux' ]]; then sudo apt-get -qq --only-upgrade install '^libssl.*'; fi"</div><div class='del'>-  - "if [[ $TRAVIS_OS_NAME = 'linux' ]]; then sudo apt-get -qq install $CC; fi" # upgrade if any</div><div class='del'>-  - "if [[ $TRAVIS_OS_NAME = 'linux' ]]; then JOBS='-j'; fi"</div><div class='del'>-  - "if [[ $TRAVIS_OS_NAME = 'osx' ]]; then brew install autoconf openssl; fi"</div><div class='del'>-  - "if [[ $TRAVIS_OS_NAME = 'osx' ]]; then OPENSSL_FLAG=\"--with-openssl-dir=`brew --prefix openssl`\"; fi"</div><div class='del'>-  - "if [[ $TRAVIS_OS_NAME = 'osx' &amp;&amp; $CC = 'gcc' ]]; then CC='gcc-4.9'; fi"</div><div class='del'>-install: "if [[ $TRAVIS_OS_NAME = 'linux' ]]; then sudo apt-get -qq build-dep ruby1.9.1 2&gt;/dev/null; fi"</div><div class='add'>+  - "CONFIG_FLAG="</div><div class='add'>+  - "JOBS='-j 4'"</div><div class='ctx'> </div><div class='ctx'> # Script is where the test runs.  Note  we just do "make test", not other tests</div><div class='ctx'> # like  test-all, test-rubyspec.   This is  because  they take  too much  time,</div><div class='ctx'> # enough for Travis to shut down the VM as being stalled.</div><div class='ctx'> before_script:</div><div class='del'>-  - "if [[ $TRAVIS_OS_NAME = 'osx' ]]; then rm -f ~/Library/Logs/DiagnosticReports/ruby_*.crash; fi"</div><div class='ctx'>   - "uname -a"</div><div class='ctx'>   - "uname -r"</div><div class='ctx'>   - "rm -fr .ext autom4te.cache"</div><div class='del'>-  - "make -f common.mk BASERUBY=ruby srcdir=. update-config_files"</div><div class='add'>+  - "echo $TERM"</div><div class='add'>+  - "make -f common.mk BASERUBY=ruby MAKEDIRS='mkdir -p' srcdir=. update-config_files"</div><div class='ctx'>   - "autoconf"</div><div class='ctx'>   - "mkdir config_1st config_2nd"</div><div class='del'>-  - "./configure -C --disable-install-doc --disable-install-rdoc --with-gcc=$CC $OPENSSL_FLAG"</div><div class='add'>+  - "./configure -C --disable-install-doc --with-gcc=$CC $CONFIG_FLAG"</div><div class='ctx'>   - "cp -pr config.status .ext/include config_1st"</div><div class='ctx'>   - "make reconfig"</div><div class='ctx'>   - "cp -pr config.status .ext/include config_2nd"</div><div class='del'>-  - "diff -ru config_1st config_2nd || true"</div><div class='del'>-  - "make -s $JOBS encs"</div><div class='del'>-  - "make -s $JOBS exts"</div><div class='add'>+  - "diff -ru config_1st config_2nd"</div><div class='add'>+  - "make after-update BASERUBY=ruby"</div><div class='add'>+  - "make -s $JOBS"</div><div class='ctx'>   - "make update-rubyspec"</div><div class='ctx'> script:</div><div class='del'>-  - "make test"</div><div class='del'>-  - "make test-all TESTS='-q -j2'"</div><div class='del'>-  - "make test-rubyspec"</div><div class='del'>-after_failure:</div><div class='del'>-  - "if [[ $TRAVIS_OS_NAME = 'osx' ]]; then find ~/Library/Logs/DiagnosticReports -type f -name ruby_\\*.crash -ls -execdir cat {} \\; -delete; fi"</div><div class='add'>+  - "make test TESTOPTS=--color=never"</div><div class='add'>+  - "make test-all TESTOPTS='-q -j3 --color=never --job-status=normal'"</div><div class='add'>+  - "make test-rubyspec MSPECOPT=-fm"</div><div class='ctx'> </div><div class='ctx'> # Branch matrix.  Not all branches are Travis-ready so we limit branches here.</div><div class='ctx'> branches:</div><div class='ctx'>   only:</div><div class='ctx'>     - trunk</div><div class='del'>-    - ruby_1_9_3</div><div class='del'>-    - ruby_2_0_0</div><div class='ctx'>     - ruby_2_1</div><div class='ctx'>     - ruby_2_2</div><div class='add'>+    - ruby_2_3</div><div class='add'>+    - /^feature\//</div><div class='add'>+    - /^bug\//</div><div class='ctx'> </div><div class='ctx'> # We want to be notified when something happens.</div><div class='ctx'> notifications:</div><div class='hunk'>@@ -86,7 +77,7 @@ notifications:</div><div class='ctx'>       - "irc.freenode.org#ruby-core"</div><div class='ctx'>       - "irc.freenode.org#ruby-ja"</div><div class='ctx'>     on_success: change # [always|never|change] # default: always</div><div class='del'>-    on_failure: change # [always|never|change] # default: always</div><div class='add'>+    on_failure: always # [always|never|change] # default: always</div><div class='ctx'>     template:</div><div class='ctx'>       - "%{message} by @%{author}: See %{build_url}"</div><div class='ctx'> </div><div class='hunk'>@@ -97,6 +88,10 @@ notifications:</div><div class='ctx'>     on_success: always</div><div class='ctx'>     on_failure: never</div><div class='ctx'> </div><div class='add'>+  email:</div><div class='add'>+    - ko1c-failure@atdot.net</div><div class='add'>+    - shibata.hiroshi@gmail.com</div><div class='add'>+</div><div class='ctx'> # Local Variables:</div><div class='ctx'> # mode: YAML</div><div class='ctx'> # coding: utf-8-unix</div><div class='head'>diff --git a/COPYING b/COPYING<br/>index a1f19ff99d..426810a7fb 100644<br/>--- a/<a href='/ruby.git/tree/COPYING?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>COPYING</a><br/>+++ b/<a href='/ruby.git/tree/COPYING?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>COPYING</a></div><div class='hunk'>@@ -44,9 +44,9 @@ You can redistribute it and/or modify it under either the terms of the</div><div class='ctx'>      For the list of those files and their copying conditions, see the</div><div class='ctx'>      file LEGAL.</div><div class='ctx'> </div><div class='del'>-  5. The scripts and library files supplied as input to or produced as </div><div class='add'>+  5. The scripts and library files supplied as input to or produced as</div><div class='ctx'>      output from the software do not automatically fall under the</div><div class='del'>-     copyright of the software, but belong to whomever generated them, </div><div class='add'>+     copyright of the software, but belong to whomever generated them,</div><div class='ctx'>      and may be sold commercially, and may be aggregated with this</div><div class='ctx'>      software.</div><div class='ctx'> </div><div class='head'>diff --git a/ChangeLog b/ChangeLog<br/>index f3c03870e9..1fd1fd9ac1 100644<br/>--- a/<a href='/ruby.git/tree/ChangeLog?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>ChangeLog</a><br/>+++ b/<a href='/ruby.git/tree/ChangeLog?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>ChangeLog</a></div><div class='hunk'>@@ -1,13262 +1,8045 @@</div><div class='del'>-Tue Aug 18 22:52:50 2015  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Fri Sep  9 22:43:29 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb: support old versions of ruby.</div><div class='add'>+	* gems/bundled_gems: sort lines.</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb: now can download gems by http if openssl is not</div><div class='del'>-	  available (this may be danger!)</div><div class='add'>+Fri Sep  9 17:59:46 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug 18 20:10:13 2015  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* thread.c (rb_threadptr_raise): set cause from the called thread,</div><div class='add'>+	  but not from the thread to be interrupted.</div><div class='add'>+	  [ruby-core:77222] [Bug #12741]</div><div class='ctx'> </div><div class='del'>-	* numeric.c (Init_Numeric): Fix document for Float::MIN and</div><div class='del'>-	  Float::EPSILON.</div><div class='add'>+Fri Sep  9 13:50:05 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Aug 17 23:07:47 2015  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='add'>+	* doc/extension.rdoc, doc/extension.ja.rdoc: fix file name.</div><div class='add'>+	  pointed out by @takkanm in the RubyKaigi talk.</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems.rb: bump version to 2.4.5.1. this version fixed</div><div class='del'>-	  CVE-2015-3900.</div><div class='del'>-	* lib/rubygems/remote_fetcher.rb: ditto.</div><div class='del'>-	* test/rubygems/test_gem_remote_fetcher.rb: added testcase for CVE-2015-3900</div><div class='add'>+Fri Sep  9 13:14:53 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Mon Aug 17 23:00:56 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* News: Announcing update to Unicode version 9.0.0 [ci skip]</div><div class='ctx'> </div><div class='del'>-	* ext/win32/lib/win32/registry.rb (API#SetValue): data size should</div><div class='del'>-	  be in bytes, not in chars.  [ruby-core:70365] [Bug #11439]</div><div class='add'>+Fri Sep  9 10:10:00 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Aug 17 23:00:56 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* variable.c (rb_const_search): warn with the actual class/module</div><div class='add'>+	  name which defines the deprecated constant.</div><div class='ctx'> </div><div class='del'>-	* ext/win32/lib/win32/registry.rb (API#SetValue): add terminator</div><div class='del'>-	  size, not 1 byte.  [ruby-core:70365] [Bug #11439]</div><div class='add'>+	* variable.c (rb_const_search): raise with the actual class/module</div><div class='add'>+	  name which defines the private constant.</div><div class='ctx'> </div><div class='del'>-Sun Aug 16 03:14:04 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Sep  8 17:47:18 2016  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='ctx'> </div><div class='del'>-	* re.c (rb_memsearch): should match only char boundaries in wide</div><div class='del'>-	  character encodings.  [ruby-core:70220] [Bug #11413]</div><div class='add'>+	* array.c (flatten): use rb_obj_class instead of rb_class_of</div><div class='add'>+	  because rb_class_of may return a singleton class.</div><div class='add'>+	  [ruby-dev:49781] [Bug #12738]</div><div class='ctx'> </div><div class='del'>-Sun Aug 16 03:00:44 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Thu Sep  8 17:40:15 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* symbol.h (struct RSymbol): add hashval field</div><div class='del'>-	* symbol.c (dsymbol_alloc): setup hashval field once</div><div class='del'>-	* hash.c (rb_any_hash): return RSymbol-&gt;hashval directly</div><div class='del'>-	* common.mk: hash.o depends on symbol.h</div><div class='del'>-	  Thanks to Bruno Escherl &lt;bruno@escherl.net&gt; for the bug report</div><div class='del'>-	  [ruby-core:70129] [Bug #11396]</div><div class='add'>+	* tool/rbinstall.rb (gem): use the bindir of each gemspec instead</div><div class='add'>+	  of hardcoded 'bin', since rdoc 5.0.0 overrides it.</div><div class='ctx'> </div><div class='del'>-Fri Aug 14 16:30:43 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Sep  8 16:47:03 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* transcode.c (rb_econv_set_replacement): target encoding name can</div><div class='del'>-	  be empty now.  [ruby-core:69841] [Bug #11324]</div><div class='add'>+	* eval.c (rb_mod_s_used_modules): rename Module.used_refinements to</div><div class='add'>+	  Module.used_modules.  [Feature #7418] [ruby-core:49805]</div><div class='ctx'> </div><div class='del'>-Fri Aug 14 15:24:12 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Sep  8 14:21:48 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_any_hash): fix Float hash.  rb_dbl_hash() returns a</div><div class='del'>-	  Fixnum, but not a long.  [Bug #9381]</div><div class='add'>+	* ext/psych/psych.gemspec, lib/rdoc/rdoc.gemspec: Use file list instead of</div><div class='add'>+	  git output. It shows warning message when invoke `make install`</div><div class='add'>+	  [Bug #12736][ruby-dev:49778]</div><div class='ctx'> </div><div class='del'>-Fri Aug 14 15:09:34 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Sep  8 13:41:46 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/json/parser/parser.rl: raise with messages in UTF-8</div><div class='del'>-	  encoding.  [ruby-core:67386] [Bug #10705]</div><div class='add'>+	* insns.def (setclassvariable, setconstant): warn when self is a</div><div class='add'>+	  refinement.  [Bug #10103] [ruby-core:64143]</div><div class='ctx'> </div><div class='del'>-Fri Aug 14 00:44:34 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Thu Sep  8 11:29:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* io.c (rb_io_oflags_modestr): handle O_TRUNC correctly</div><div class='del'>-	* test/ruby/test_io.rb (test_reopen_stdio): new test</div><div class='del'>-	  Patch-by: cremno phobia &lt;cremno@mail.ru&gt;</div><div class='del'>-	  [ruby-core:69779] [Bug #11319]</div><div class='add'>+	* hash.c (rb_hash_transform_values, rb_hash_transform_values_bang):</div><div class='add'>+	  Rename map_v to transform_values.</div><div class='add'>+	  [Feature #12512] [ruby-core:76095]</div><div class='ctx'> </div><div class='del'>-Thu Aug 13 01:25:26 2015  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='add'>+	* test/ruby/test_hash.rb: ditto.</div><div class='ctx'> </div><div class='del'>-	* lib/net/ftp.rb (makeport): close the TCPServer</div><div class='del'>-	  when sending the port fails.</div><div class='add'>+Thu Sep  8 10:08:35 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* test/net/ftp/test_ftp.rb: test for above.</div><div class='add'>+	* {ext,test}/openssl: Import Ruby/OpenSSL 2.0.0.beta.2. The full commit</div><div class='add'>+	  history since v2.0.0.beta.1 can be found at:</div><div class='add'>+	  https://github.com/ruby/openssl/compare/v2.0.0.beta.1...v2.0.0.beta.2</div><div class='ctx'> </div><div class='del'>-Thu Aug 13 01:03:13 2015  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+Thu Sep  8 07:23:34 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/net/http/response.rb (Net::HTTPResponse::Inflater#finish):</div><div class='del'>-	  fix a bug that empty gzipped response body causes Zlib::BufError.</div><div class='del'>-	  [ruby-core:68846] [Bug #11058]</div><div class='add'>+	* lib/rdoc/*, test/rdoc/*: Update rdoc-5.0.0.beta2</div><div class='add'>+	  Fixed ri parse defect with left-hand matched classes.</div><div class='add'>+	  https://github.com/rdoc/rdoc/pull/420</div><div class='ctx'> </div><div class='del'>-	* test/net/http/test_httpresponse.rb: tests for the above.</div><div class='add'>+Thu Sep  8 01:12:47 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Aug 13 01:03:13 2015  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+	* eval.c (rb_mod_s_used_refinements): new method</div><div class='add'>+	  Module.used_refinements.  based on the patch by Charlie</div><div class='add'>+	  Somerville.  [Feature #7418] [ruby-core:49805]</div><div class='ctx'> </div><div class='del'>-	* lib/net/http/response.rb (Net::HTTPResponse#inflater):</div><div class='del'>-	  fix TypeError. An exception object might be nil.</div><div class='del'>-	  [ruby-core:68846] [Bug #11058]</div><div class='add'>+Wed Sep  7 17:50:38 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Aug 13 00:03:24 2015  Aaron Patterson &lt;tenderlove@ruby-lang.org&gt;</div><div class='add'>+	* include/ruby/util.h (setenv): remove POSIX-noncompliant</div><div class='add'>+	  definition with 2 arguments.</div><div class='ctx'> </div><div class='del'>-	* .travis.yml: update libssl before running tests. </div><div class='del'>-	  Thanks to Chris Sinjakli &lt;chris@sinjakli.co.uk&gt; for figuring out the</div><div class='del'>-	  travis settings!</div><div class='add'>+Wed Sep  7 17:35:37 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Aug 13 00:03:24 2015  Aaron Patterson &lt;tenderlove@ruby-lang.org&gt;</div><div class='add'>+	* unicode/8.0.0/casefold.h, name2ctype.h, unicode/data/8.0.0:</div><div class='add'>+	  removing directories/files related to Unicode version 8.0.0</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/lib/openssl/ssl.rb (module OpenSSL): raise a more</div><div class='del'>-	  helpful exception when verifying the peer connection and an</div><div class='del'>-	  anonymous cipher has been selected. [ruby-core:68330] [Bug #10910]</div><div class='del'>-	  Thanks to Chris Sinjakli &lt;chris@sinjakli.co.uk&gt; for the patch.</div><div class='add'>+Wed Sep  7 17:21:55 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/openssl/test_ssl.rb (class OpenSSL): test for change</div><div class='add'>+	* lib/timeout.rb (Timeout#timeout): add custom error message</div><div class='add'>+	  argument.  [Feature #11650]</div><div class='ctx'> </div><div class='del'>-Wed Aug 12 23:57:01 2015  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Wed Sep  7 17:13:05 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/date/extconf.rb: try_cflags("-std=iso9899:1999") [Bug #10906]</div><div class='del'>-	  ruby itself (including numeric.c) is built with strict compile</div><div class='del'>-	  options including -std=iso9899:1999, but ext/date is not.</div><div class='del'>-	  By the way -std=iso9899:1999 is not only a warning option but also</div><div class='del'>-	  changes behavior like MACRO definitions for example INFINITY.</div><div class='del'>-	  gcc on Solaris affect this.</div><div class='add'>+	* common.mk: Updated Unicode version to 9.0.0 [Feature #12513]</div><div class='ctx'> </div><div class='del'>-Wed Aug 12 23:53:39 2015  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* unicode/9.0.0/casefold.h, name2ctype.h, unicode/data/9.0.0:</div><div class='add'>+	  new directories/files for Unicode version 9.0.0</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c (waitpid): return immediately if interrupted.</div><div class='del'>-	  reported by &lt;takkanm AT gmail.com&gt; [ruby-dev:49176] [Bug #11340]</div><div class='add'>+Wed Sep  7 16:00:45 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug 12 01:05:58 2015  Jeremy Evans  &lt;merch-redmine@jeremyevans.net&gt;</div><div class='add'>+	* lib/open-uri.rb: Allow http to https redirection.</div><div class='add'>+	  Note that https to http is still forbidden.</div><div class='add'>+	  [ruby-core:20485] [Feature #859] by Roman Shterenzon.</div><div class='ctx'> </div><div class='del'>-	* test/openssl/test_ssl.rb: Fix LocalJumpErrors being raised</div><div class='del'>-	  in OpenSSL tests. [ruby-core:70020][Bug #11368]</div><div class='add'>+Wed Sep  7 14:56:59 2016  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug 12 00:54:29 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/csv.rb (CSV::{Row,Table}#{each,delete_if}): returns an enumerator</div><div class='add'>+	  if no block is given. [ruby-core:75346] [Feature #12347]</div><div class='ctx'> </div><div class='del'>-	* array.c (rb_ary_repeated_permutation): fix buffer size, ALLOCV_N</div><div class='del'>-	  already multiplies element size.</div><div class='add'>+	* test/csv/test_row.rb: add test for above.</div><div class='ctx'> </div><div class='del'>-Tue Aug 11 01:51:53 2015 CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/timeout.rb (ExitException): leave Timeout::ExitException as an</div><div class='del'>-	  alias of Timeout::Error for backward compatibility in stable branch.</div><div class='del'>-	  [ruby-dev:49179] [Bug #11344]</div><div class='del'>-</div><div class='del'>-Tue Aug 11 01:51:53 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/timeout.rb (ExitException): removed internal exception class</div><div class='del'>-	  and use Timeout::Error instead, as using throw/catch to isolate</div><div class='del'>-	  each timeouts now.  [ruby-dev:49179] [Bug #11344]</div><div class='del'>-</div><div class='del'>-Tue Aug 11 01:37:28 2015  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/net/http/test_httpresponse.rb</div><div class='del'>-	(HTTPResponseTest#test_read_body_content_encoding_deflate_uppercase):</div><div class='del'>-	fix a failure without zlib.</div><div class='del'>-</div><div class='del'>-Tue Aug 11 01:37:28 2015  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/http/response.rb (inflater): CONTENT_ENCODING can be upper</div><div class='del'>-	  case. [ruby-core:69670] [Bug #11285] patched by Andy Chu</div><div class='del'>-</div><div class='del'>-Tue Aug 11 01:21:49 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (m_core_hash_merge_ptr): copy the arguments to the machine</div><div class='del'>-	  stack before rewinding the control frame pointer and leaving the</div><div class='del'>-	  arguments outside valid region of the value stack.</div><div class='del'>-	  [ruby-core:69969] [Bug #11352]</div><div class='del'>-</div><div class='del'>-	* vm.c (REWIND_CFP): keep the arguments region inside the valid</div><div class='del'>-	  value stack.  [ruby-core:69969] [Bug #11352]</div><div class='del'>-</div><div class='del'>-Tue Aug 11 01:11:02 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (rb_str_reverse): reversed string is not a substring,</div><div class='del'>-	  and should not set coderange of the original string.</div><div class='del'>-	  [ruby-dev:49189] [Bug #11387]</div><div class='del'>-</div><div class='del'>-Tue Aug 11 00:42:53 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (lambda_body): pop cmdarg stack for lookahead</div><div class='del'>-	  token.  [ruby-core:70067] [Bug #11380]</div><div class='del'>-</div><div class='del'>-Tue Aug 11 00:21:56 2015  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/socket/extconf.rb: Solaris 11 has struct tcp_info.tcpi_ca_state,</div><div class='del'>-	  but it is a dummy.</div><div class='del'>-</div><div class='del'>-	* ext/socket/option.c: Solaris 11 doesn't have u_intN_t.</div><div class='del'>-</div><div class='del'>-	* ext/socket/option.c: Solaris 11 needs inspect_tcpi_msec.</div><div class='del'>-</div><div class='del'>-	* ext/socket/raddrinfo.c: Solaris 11 has AF_PACKET but doesn't have</div><div class='del'>-	  related macros.</div><div class='del'>-</div><div class='del'>-Tue Aug  4 04:11:34 2015  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/time.rb (strptime): Support %s.%N.</div><div class='del'>-	  [ruby-core:68301] [Bug #10904] Patch by Sadayuki Furuhashi.</div><div class='del'>-</div><div class='del'>-Tue Aug  4 03:43:15 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* transcode.c (load_transcoder_entry): fix transcoder loading race</div><div class='del'>-	  condition, by waiting in require.  [ruby-dev:49106] [Bug #11277]</div><div class='del'>-</div><div class='del'>-Tue Aug  4 03:13:59 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* array.c (ary_ensure_room_for_push): check if array size will</div><div class='del'>-	  exceed maximum size to get rid of buffer overflow.</div><div class='del'>-	  [ruby-dev:49043] [Bug #11235]</div><div class='del'>-</div><div class='del'>-	* array.c (ary_ensure_room_for_unshift, rb_ary_splice): ditto.</div><div class='del'>-</div><div class='del'>-Sat Jul  4 23:08:32 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* file.c (rb_file_load_ok): try opening file without gvl not to</div><div class='del'>-	  lock entire process.  [Bug #11060]</div><div class='del'>-</div><div class='del'>-Sat Jul  4 05:00:48 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/mkmf.rb (pkg_config): split --libs if --libs-only-l option</div><div class='del'>-	  is not available.  patch in [ruby-core:69428] by Hans Mackowiak.</div><div class='del'>-	  [ruby-core:69421] [Bug #11201]</div><div class='del'>-</div><div class='del'>-Sat Jul  4 04:46:51 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* compile.c (iseq_compile_each): out of range NTH_REF is always</div><div class='del'>-	  nil.</div><div class='del'>-</div><div class='del'>-	* parse.y (parse_numvar): check overflow of NTH_REF and range.</div><div class='del'>-	  [ruby-core:69393] [Bug #11192]</div><div class='del'>-</div><div class='del'>-	* util.c (ruby_scan_digits): make public and add length parameter.</div><div class='del'>-</div><div class='del'>-Sat Jul  4 04:35:51 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (rb_method_call_status): resolve refined method entry</div><div class='del'>-	  to check if undefined.  [ruby-core:69064] [Bug #11117]</div><div class='del'>-</div><div class='del'>-Sat Jul  4 04:35:51 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (rb_method_call_status): undefined refined method is</div><div class='del'>-	  not callable unless using.  [ruby-core:69064] [Bug #11117]</div><div class='del'>-</div><div class='del'>-Wed Jul  1 04:16:56 2015  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/bigdecimal/bigdecimal.gemspec: Fix require paths for released gem.</div><div class='del'>-	  [fix GH-929] Patch by @voxik</div><div class='del'>-	* ext/io/console/io-console.gemspec: ditto.</div><div class='del'>-</div><div class='del'>-Wed Jul  1 04:15:38 2015  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/zlib/zlib.c: Fix indentation for rdoc.</div><div class='del'>-	  [Bug #11221][ruby-core:69465]</div><div class='del'>-</div><div class='del'>-Sat Jun 27 22:51:59 2015  Shota Fukumori  &lt;her@sorah.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/objspace/objspace_dump.c(dump_object): Return empty JSON object when</div><div class='del'>-	  passed object is a special const, instead of SEGV.</div><div class='del'>-	  Based patch by Kohei Suzuki (eagletmt). [ruby-core:69692] [Bug #11291]</div><div class='del'>-</div><div class='del'>-	* test/objspace/test_objspace.rb(test_dump_special_consts): Test for above fix.</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-Wed Jun 17 02:53:59 2015  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/objspace/test_objspace.rb (test_dump_flags): relax pattern</div><div class='del'>-	  because long_lived flag and marked flag can be false at major GC.</div><div class='del'>-	  [Bug #10852]</div><div class='del'>-</div><div class='del'>-Mon Jun 15 03:24:23 2015  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c (lep_svar_set): add WBs.</div><div class='del'>-</div><div class='del'>-Fri Jun 12 01:39:49 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/socket/ancdata.c: use RB_GC_GUARD instead of volatile</div><div class='del'>-	  [ruby-core:69419] [Feature #11198]</div><div class='del'>-</div><div class='del'>-Fri Jun 12 01:16:13 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/ossl_asn1.c (ossl_asn1_traverse, ossl_asn1_decode,</div><div class='del'>-	  ossl_asn1_decode_all): use RB_GC_GUARD instead of volatile</div><div class='del'>-	  [ruby-core:69371] [Bug #11185]</div><div class='del'>-</div><div class='del'>-Fri Jun 12 01:14:00 2015  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* win32/win32.c (setup_overlapped): seek to the file end only when</div><div class='del'>-	  writing (mode:a), not reading (mode:a+, read).</div><div class='del'>-</div><div class='del'>-Fri Jun 12 01:11:52 2015  Aaron Patterson &lt;tenderlove@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* load.c (loaded_feature_path): stop returning false negatives for</div><div class='del'>-	  filenames which are trailing substrings of file extensions.  For</div><div class='del'>-	  example, 'b', which a trailing substring of ".rb" should not return</div><div class='del'>-	  false. [Bug #11155][ruby-core:69206]</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_autoload.rb: test for fix</div><div class='del'>-</div><div class='del'>-Sun May 24 03:56:27 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* marshal.c (r_symreal): register symbol names as strings first so</div><div class='del'>-	  that r_symlink always returns valid names.</div><div class='del'>-	  [ruby-core:68587] [Bug #10991]</div><div class='del'>-</div><div class='del'>-	* marshal.c (r_ivar, r_object0): now need to intern symbol names.</div><div class='del'>-</div><div class='del'>-	* marshal.c (r_object0): compare with symbol names.</div><div class='del'>-</div><div class='del'>-Sun May 24 03:53:07 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/socket/ancdata.c (bsock_recvmsg_internal): GC guard</div><div class='del'>-	  [Bug #11123]</div><div class='del'>-</div><div class='del'>-Sun May 24 03:44:42 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* range.c (linear_object_p, range_include): test if covered for</div><div class='del'>-	  linear objects.  [ruby-core:69052] [Bug #11113]</div><div class='del'>-</div><div class='del'>-Sun May 24 03:41:45 2015  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/imap.rb (body_ext_mpart): should work even if body-fld-dsp</div><div class='del'>-	  is omitted.  [ruby-core:69093] [Bug #11128]</div><div class='del'>-</div><div class='del'>-Sun May 24 03:37:14 2015  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c: added documentation for character sequence \' with String#sub</div><div class='del'>-	  [Bug #11132][ruby-core:69121][fix GH-900][ci skip] Patch by @shishir127</div><div class='del'>-</div><div class='del'>-Sun May 24 03:32:53 2015  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='add'>+	* test/csv/test_table.rb: ditto.</div><div class='ctx'> </div><div class='del'>-	* rational.c: Added documentation for rational literal.</div><div class='del'>-	  [Bug #11075][fix GH-885][ci skip] Patch by @shishir127</div><div class='add'>+Wed Sep  7 14:50:01 2016  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='ctx'> </div><div class='del'>-Sun May 24 03:06:20 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* gems/bundled_gems: update to power_assert 0.3.1.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/ipsocket.c (init_inetsock_internal): preserve errno</div><div class='del'>-	  before other library calls and use rb_syserr_fail.</div><div class='del'>-	  [ruby-core:68531] [Bug #10975]</div><div class='add'>+Wed Sep  7 12:16:09 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun May 24 03:01:17 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/psych/*, test/psych/*: Update psych-2.1.1</div><div class='add'>+	  This version fixed following pull requests.</div><div class='add'>+	  https://github.com/tenderlove/psych/pull/284</div><div class='add'>+	  https://github.com/tenderlove/psych/pull/276</div><div class='ctx'> </div><div class='del'>-	* ext/-test-/printf/printf.c (uint_to_str): renamed to get rid of</div><div class='del'>-	  conflict on cygwin.  [ruby-core:68877] [Bug #11065]</div><div class='add'>+Wed Sep  7 11:51:06 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun May 24 02:44:53 2015  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* lib/rdoc/*, test/rdoc/*: Update rdoc-5.0.0.beta1</div><div class='add'>+	  This version is mostly same as r56072. It contains to remove code</div><div class='add'>+	  for Ruby 1.8</div><div class='ctx'> </div><div class='del'>-	* vm.c (vm_exec): check other events when RETURN is thrown.</div><div class='del'>-	  [Bug #10724]</div><div class='add'>+Tue Sep  6 09:23:06 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_settracefunc.rb: add a test.</div><div class='add'>+	* lib/rdoc/rdoc.gemspec: partly reverted for default gem installer.</div><div class='add'>+	  upstream configuration is not working on ruby core repository.</div><div class='ctx'> </div><div class='del'>-Sun May 24 02:21:47 2015  Masahiro Tomita  &lt;tommy@tmtm.org&gt;</div><div class='add'>+Mon Sep  5 19:35:22 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/raddrinfo.c (addrinfo_mload): fix memory leak of</div><div class='del'>-	  addrinfo.  [ruby-dev:48923] [Bug #11051]</div><div class='add'>+	* lib/rdoc/*, test/rdoc/*: Update rdoc/rdoc master(f191513)</div><div class='add'>+	  https://github.com/rdoc/rdoc/blob/master/History.rdoc#423--2016--</div><div class='add'>+	  https://github.com/rdoc/rdoc/blob/master/History.rdoc#422--2016-02-09</div><div class='ctx'> </div><div class='del'>-Sun May 24 02:17:05 2015  Kenta Murata  &lt;mrkn@cookpad.com&gt;</div><div class='add'>+Sun Sep  4 00:17:55 2016  Sho Hashimoto  &lt;sho-h@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* bigdecimal: conform to ruby's license.  [ruby-core:68466] [Bug #10952]</div><div class='add'>+	* proc.c: [DOC] fix Object#define_singleton_method and</div><div class='add'>+	  main.define_method return value. [ci skip]</div><div class='ctx'> </div><div class='del'>-Sun May 24 02:06:34 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Sep  3 11:28:29 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/-test-/file/fs.c (get_fsname): try magic number only if</div><div class='del'>-	  f_type is included.  [ruby-dev:48913] [Bug #11000]</div><div class='add'>+	* thread_pthread.c (ruby_init_stack): check stack bounds even if</div><div class='add'>+	  get_main_stack succeeded, on the "co-routine" case.</div><div class='add'>+	  https://github.com/ruby/ruby/commit/53953ee#commitcomment-18887413</div><div class='ctx'> </div><div class='del'>-Sun May 24 02:06:34 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Sep  2 16:06:59 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/-test-/file/fs.c (get_fsname): return filesystem name by</div><div class='del'>-	  statfs/statvfs.  [ruby-core:68624] [Bug #10998]</div><div class='add'>+	* internal.h (MEMO_V1_SET, MEMO_V2_SET): fix typos.  use the macro</div><div class='add'>+	  parameter, not the local variable.</div><div class='ctx'> </div><div class='del'>-Sun May 24 02:02:00 2015  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Fri Sep  2 00:55:11 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_symbol.rb: fix syntax error.</div><div class='add'>+	* ext/extmk.rb (timestamp_file): move extmk.rb specific tricks</div><div class='add'>+	  from lib/mkmf.rb.  keep RUBYCOMMONDIR prefix not to conflict</div><div class='add'>+	  with a timestamp file in the toplevel.</div><div class='ctx'> </div><div class='del'>-Sun May 24 02:02:00 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Sep  1 14:24:16 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_any_hash): Symbols are compared by the identities</div><div class='del'>-	  always.  [ruby-core:68767] [Bug #11035]</div><div class='add'>+	* ext/extmk.rb (gems): move dirty hacks for bundled gems from</div><div class='add'>+	  mkmf.rb.</div><div class='ctx'> </div><div class='del'>-Sun May 24 02:01:07 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/mkmf.rb (create_makefile): yield all configuration strings.</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_any_hash): use same hash values with Float#hash so</div><div class='del'>-	  that -0.0 and +0.0 will be identical.</div><div class='del'>-	  [ruby-core:68541] [Bug #10979]</div><div class='add'>+Wed Aug 31 17:39:19 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu May 21 01:34:48 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/extmk.rb (create_makefile): make gem.build_complete file</div><div class='add'>+	  under TARGET_SO_DIR and install it only when the gem build</div><div class='add'>+	  succeeded.  [ruby-core:77057] [Bug #12681]</div><div class='ctx'> </div><div class='del'>-	* gc.c (id2ref): prohibit from accessing internal objects.</div><div class='del'>-	  [ruby-core:68348] [Bug #10918]</div><div class='add'>+Wed Aug 31 15:36:10 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu May 21 01:32:02 2015  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='add'>+	* ext/extmk.rb: move TARGET_SO_DIR stuffs to mkmf.rb.</div><div class='ctx'> </div><div class='del'>-	* ext/pty/pty.c: AIX supports autopush.</div><div class='del'>-	  Patch by Perry Smith [ruby-core:58539] [Bug #9144]</div><div class='add'>+	* lib/mkmf.rb (create_makefile): create target shared object files</div><div class='add'>+	  under $(TARGET_SO_DIR) which is $sodir if it is defined with</div><div class='add'>+	  $extout.  [ruby-core:77058] [Bug #12681]</div><div class='ctx'> </div><div class='del'>-Thu May 21 01:07:41 2015  Misumi Rize  &lt;r@ayase-e.li&gt;</div><div class='add'>+Wed Aug 31 01:56:55 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (vm_throw_start): search the target to break</div><div class='del'>-	  from a block with nested rescue, from the nested blocks.</div><div class='del'>-	  [ruby-core:67765] [Bug #10775] [Fix GH-820]</div><div class='add'>+	* doc/extension.ja.rdoc: [DOC] Fix a typo. [ci skip]</div><div class='ctx'> </div><div class='del'>-Thu May 21 00:55:45 2015  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Wed Aug 31 00:52:23 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_args.c: protect value stack from calling other methods</div><div class='del'>-	  during complex parameter setting process (splat, kw, and so on).</div><div class='del'>-	  [Bug #11027]</div><div class='add'>+	* ext/extmk.rb: make the gems target directory under the expanded</div><div class='add'>+	  name.  [ruby-core:77102] [Bug #12714]</div><div class='ctx'> </div><div class='del'>-	* vm_core.h: remove rb_thead_t::mark_stack_len.</div><div class='del'>-	  With this modification, we don't need to use th-&gt;mark_stack_len.</div><div class='add'>+Tue Aug 30 15:27:27 2016  Kouhei Yanagita  &lt;yanagi@shakenbu.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_keyword.rb: add a test.</div><div class='add'>+	* ext/json/lib/json/add/ostruct.rb (OpenStruct.json_create):</div><div class='add'>+	  Correct documentation, fix the name of values.  [Fix GH-1421]</div><div class='ctx'> </div><div class='del'>-	* cont.c (cont_capture): catch up this fix.</div><div class='add'>+Tue Aug 30 14:53:34 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm.c (rb_thread_mark): ditto.</div><div class='add'>+	* io.c (nogvl_fsync, nogvl_fdatasync): on Windows, just ignore if the</div><div class='add'>+	  fd is associated to non-disk device.  if call fsync and/or fdatasync</div><div class='add'>+	  with such fds, it causes Errno::EBADF exception and the behavior is</div><div class='add'>+	  incompatible with ruby 2.1 and earlier unintentionally introduced.</div><div class='ctx'> </div><div class='del'>-Thu May 21 00:07:54 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Aug 30 03:38:35 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_eval.c (rb_obj_instance_eval, rb_obj_instance_exec): allow</div><div class='del'>-	  symbols to just instance_eval/exec, except for definition of</div><div class='del'>-	  singletons.  [ruby-core:68961] [Bug #11086]</div><div class='add'>+	* vm_dump.c (backtrace): use rip in the saved context for the case</div><div class='add'>+	  the SIGSEGV is received when the process is in userland.</div><div class='add'>+	  Note that ip in the stack should be used if the signal is received</div><div class='add'>+	  when it is in kernel (when it is calling syscall) [Bug #12711]</div><div class='ctx'> </div><div class='del'>-Wed May 20 04:33:50 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Aug 27 10:26:14 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (STR_SET_EMBED): clear NOFREE flag at embedding as</div><div class='del'>-	  embedded strings no longer refer static strings.</div><div class='del'>-	  [ruby-core:68436] [Bug #10942]</div><div class='add'>+	* array.c (rb_ary_concat_multi): take multiple arguments.  based</div><div class='add'>+	  on the patch by Satoru Horie.  [Feature #12333]</div><div class='ctx'> </div><div class='del'>-Wed May 20 03:46:11 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* string.c (rb_str_concat_multi, rb_str_prepend_multi): ditto.</div><div class='ctx'> </div><div class='del'>-	* dir.c (need_normalization): use getattrlist() if fgetattrlist()</div><div class='del'>-	  is unavailable, on OSX 10.5.  [ruby-core:68829] [Bug #11054]</div><div class='add'>+Thu Aug 25 00:42:31 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed May 20 03:25:34 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* win32/file.c (append_wstr): remove a codepage argument, and use</div><div class='add'>+	  INVALID_CODE_PAGE for conversion by econv.</div><div class='ctx'> </div><div class='del'>-	* proc.c (proc_binding): replicate env from method object, and</div><div class='del'>-	  allocate the local variable area for the iseq local table.</div><div class='del'>-	  [ruby-core:68673] [Bug #11012]</div><div class='add'>+	* win32/file.c (append_wstr): exclude the terminator from the</div><div class='add'>+	  result length when input len == -1.</div><div class='ctx'> </div><div class='del'>-Wed May 20 03:25:34 2015  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Wed Aug 24 22:41:30 2016  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='ctx'> </div><div class='del'>-	* proc.c: use RUBY_VM_IFUNC_P() to recognize IFUNC or not.</div><div class='add'>+	* gc.c (gc_reset_malloc_info): Remove too much ";".</div><div class='ctx'> </div><div class='del'>-	* vm.c: ditto.</div><div class='add'>+Wed Aug 24 20:07:57 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_dump.c: ditto.</div><div class='add'>+	* include/ruby/defines.h (ALWAYS_INLINE): Add alternative definition.</div><div class='add'>+	  Fix compile error with compilers that do not have force inline</div><div class='add'>+	  attribute, including old version of fcc on Solaris 10.</div><div class='add'>+	  [ruby-dev:49773] [Bug #12701]</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c: ditto.</div><div class='add'>+Wed Aug 24 16:56:26 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_core.h: use RB_TYPE_P() instead of BUILTIN_TYPE().</div><div class='add'>+	* .gdbinit: follow r55766's VM change.</div><div class='ctx'> </div><div class='del'>-Wed May 20 03:10:49 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Aug 24 12:57:56 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* benchmark/bm_hash_aref_flo.rb: make more realistic data.</div><div class='del'>-	  [ruby-core:68632] [[Bug #10999]</div><div class='add'>+	* object.c (rb_mod_initialize, rb_class_initialize): [DOC] these</div><div class='add'>+	  methods do not invoke module_eval/class_eval, just eval the</div><div class='add'>+	  given block under the new module/class but sharing the context</div><div class='add'>+	  with the surrounding scope like those methods.</div><div class='add'>+	  [ruby-core:77023] [Bug #12696]</div><div class='ctx'> </div><div class='del'>-Wed May 20 02:49:49 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Aug 23 10:34:40 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* proc.c (respond_to_missing_p): check if the receiver responds to</div><div class='del'>-	  the given method by respond_to_missing?.</div><div class='add'>+	* test/psych/test_psych.rb (test_load_file_with_fallback): fix</div><div class='add'>+	  Tempfile leak.  https://github.com/tenderlove/psych/pull/288</div><div class='ctx'> </div><div class='del'>-	* proc.c (mnew_missing): create Method object for method_missing.</div><div class='del'>-	  [ruby-core:68564] [Bug #10985]</div><div class='add'>+Tue Aug 23 10:15:01 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed May 20 02:16:05 2015  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* string.c (rb_fs_setter): check and convert $; value at</div><div class='add'>+	  assignment.</div><div class='ctx'> </div><div class='del'>-	* dir.c (replace_real_basename): need to check the return value of</div><div class='del'>-	  GLOB_REALLOC().</div><div class='add'>+Tue Aug 23 02:09:57 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed May 20 02:16:05 2015  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* string.c (rb_str_split_m): show $; name in error message when it</div><div class='add'>+	  is a wrong object.</div><div class='ctx'> </div><div class='del'>-	* dir.c (replace_real_basename): shouldn't create Ruby object before</div><div class='del'>-	  the object system is loaded.</div><div class='del'>-	  [ruby-core:68430] [Bug #10941]</div><div class='add'>+Mon Aug 22 16:29:52 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed May 20 01:58:12 2015  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* lib/csv.rb (CSV#shift): store partial quoted strings in an array</div><div class='add'>+	  and join at last, to improve performance with very long quoted</div><div class='add'>+	  lines.  [ruby-core:76987] [Bug #12691]</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb (Resolv::DNS::Label::Str#==): Check class equality.</div><div class='del'>-	  (Resolv::DNS::Name#initialize): Normalize labels as</div><div class='del'>-	  Resolv::DNS::Label::Str objects.</div><div class='add'>+Mon Aug 22 14:35:57 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed May 20 01:47:23 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* man/irb.1: remove useless -width option.</div><div class='add'>+	  [ruby-dev:49767] [Bug #12692]</div><div class='ctx'> </div><div class='del'>-	* iseq.c (rb_iseq_compile_with_option): check source type, must be</div><div class='del'>-	  an IO or a String.  [ruby-core:69219] [Bug #11159]</div><div class='add'>+Mon Aug 22 09:02:56 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri May 15 05:01:25 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* iseq.c (Init_ISeq): undefine allocator of InstructionSequence,</div><div class='add'>+	  to get rid of segfaults at method call on uninitialized object.</div><div class='ctx'> </div><div class='del'>-	* symbol.c (Init_sym): make dsym_fstrs a hash compared by identity</div><div class='del'>-	  as the keys are unique fstrings, to get rid of running hash and</div><div class='del'>-	  compare methods and causing new object allocation during garbage</div><div class='del'>-	  collection phase.  [ruby-dev:48891] [Bug #10933]</div><div class='add'>+Sat Aug 21 05:47:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu May 14 00:50:40 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* enum.c (enum_sort): prevent wasteful array duplication.</div><div class='ctx'> </div><div class='del'>-	* parse.y (lambda): push and reset cmdarg_stack in lambda body.</div><div class='del'>-	  [ruby-core:69017] [Bug #11107]</div><div class='add'>+Sat Aug 20 11:20:32 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu May 14 00:39:29 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* rubystub.c: generalize win32/stub.c.</div><div class='ctx'> </div><div class='del'>-	* dln.c (dln_load): check if a different libruby is loaded by the</div><div class='del'>-	  extension library, and then bail out to get rid of very frequent</div><div class='del'>-	  reported stale bug reports.</div><div class='add'>+Fri Aug 19 11:39:06 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu May 14 00:29:44 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* parse.y (primary): allow parenthesised statement as a method</div><div class='add'>+	  argument.  [Feature #12686]</div><div class='ctx'> </div><div class='del'>-	* lib/fileutils.rb (FileUtils#mv): show the exact target path in</div><div class='del'>-	  the error message instead of the destination parent directory</div><div class='del'>-	  name.  patched by Joao Britto &lt;jabcalves AT gmail.com&gt; at</div><div class='del'>-	  [ruby-core:68706].  [Bug #11021]</div><div class='add'>+Fri Aug 19 09:12:45 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu May 14 00:19:04 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* vm.c (vm_set_main_stack): TOPLEVEL_BINDING must be built.</div><div class='add'>+	  http://www.viva64.com/en/b/0414/#ID0EQ1CI  [ruby-core:76973]</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (reserve_stack): keep sp safe zone to get rid</div><div class='del'>-	  of crash by -fstack-check.  [ruby-core:68740] [Bug #11030]</div><div class='add'>+Fri Aug 19 01:00:53 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Apr 14 23:33:39 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* proc.c (mnew_missing): Remove an unused argument.</div><div class='add'>+	  After r51126 rid is not used.</div><div class='ctx'> </div><div class='del'>-	* configure.in: check also procstat_getvmmap, which is not</div><div class='del'>-	  available on FreeBSD 9.  [ruby-core:68468] [Bug #10954]</div><div class='add'>+Thu Aug 18 09:26:52 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_dump.c (procstat_vm): use kinfo_getvmmap instead if</div><div class='del'>-	  procstat_getvmmap is not available.</div><div class='add'>+	* gems/bundled_gems: bump to test-unit-3.2.1</div><div class='ctx'> </div><div class='del'>-Mon Apr 13 22:11:21 2015  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='add'>+Thu Aug 18 02:36:26 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/lib/openssl/ssl.rb: stricter hostname verification</div><div class='del'>-	  following RFC 6125. with the patch provided by Tony Arcieri and</div><div class='del'>-	  Hiroshi Nakamura [ruby-core:61545] [Bug #9644]</div><div class='del'>-	* test/openssl/test_ssl.rb: add tests for above.</div><div class='add'>+	* tool/rbinstall.rb: skip gems which failed to build extensions.</div><div class='add'>+	  [ruby-dev:49764] [Bug #12683]</div><div class='ctx'> </div><div class='del'>-Mon Apr 13 13:03:33 2015  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='add'>+Wed Aug 17 23:35:12 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/securerandom.rb: skip Win32 libraries in SecureRandom if</div><div class='del'>-	  OpenSSL::Random is available.</div><div class='del'>-	  https://github.com/ruby/ruby/pull/848 [Bug #10948] [Bug #10995]</div><div class='add'>+	* gems/bundled_gems (tk): bump up to 0.1.1.</div><div class='ctx'> </div><div class='del'>-Mon Apr 13 00:49:56 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Aug 17 23:14:42 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (arg): fix segfault by null caused by syntax error.</div><div class='del'>-	  [ruby-core:68851] [Bug #10957]</div><div class='add'>+	* ext/extmk.rb: build gem extensions into separate directories</div><div class='ctx'> </div><div class='del'>-Mon Apr 13 00:49:56 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* tool/rbinstall.rb: install pre-built gem extension files gem</div><div class='add'>+	  extension directories.  [ruby-core:76931] [Bug #12681]</div><div class='ctx'> </div><div class='del'>-	* parse.y (primary): empty parentheses at cmdarg can be null.</div><div class='del'>-	  [ruby-core:68477] [Bug #10957]</div><div class='add'>+Tue Aug 16 21:04:30 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Apr 13 00:44:12 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* common.mk (UNICODE_HDR_DIR): separate unicode header files from</div><div class='add'>+	  unicode data files.  [ruby-core:76879] [Bug #12677]</div><div class='ctx'> </div><div class='del'>-	* ext/io/wait/wait.c (io_nread): wrap return value with INT2FIX</div><div class='del'>-	  Thanks to Yura Sokolov &lt;funny.falcon@gmail.com&gt;</div><div class='del'>-	  [ruby-core:68369] [Bug#10923]</div><div class='del'>-	* test/io/wait/test_io_wait.rb (test_nread_buffered):</div><div class='del'>-	  fix broken test</div><div class='add'>+Tue Aug 16 11:17:51 2016  Koichi ITO  &lt;koic.ito@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Mon Apr 13 00:16:32 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/net/http/header.rb: Fix typo. [ci skip][fix GH-1407]</div><div class='add'>+	* transcode.c: ditto.</div><div class='ctx'> </div><div class='del'>-	* vm_eval.c (vm_call_super): search next super class from the</div><div class='del'>-	  original class, to get rid of infinite recursion with</div><div class='del'>-	  prepending.  a patch by Seiei Higa &lt;hanachin AT gmail.com&gt; at</div><div class='del'>-	  [ruby-core:68434].  [ruby-core:68093] [Bug #10847]</div><div class='add'>+Tue Aug 16 11:02:31 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Apr 13 00:09:48 2015  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* tool/make-snapshot (package): save generated header files from</div><div class='add'>+	  unicode data.  [ruby-core:76879] [Bug #12677]</div><div class='ctx'> </div><div class='del'>-	* class.c (rb_prepend_module): need a WB for klass -&gt; origin.</div><div class='add'>+Mon Aug 15 20:31:34 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Apr 12 23:53:33 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* node.c (dump_array): show nd_alen field in NODE_ARRAY only in</div><div class='add'>+	  the first node.  it is nd_end in the rest nodes.</div><div class='ctx'> </div><div class='del'>-	* ext/fiddle/extconf.rb: needs --enable-shared when linked to</div><div class='del'>-	  libruby or fiddle.so.  since --with-static-linked-ext does no</div><div class='del'>-	  longer link extensions to ruby program with --enable-shared, the</div><div class='del'>-	  only combination needs --enable-static is --disable-shared and</div><div class='del'>-	  --with-static-linked-ext.  [ruby-dev:48901] [Bug #10960]</div><div class='add'>+Mon Aug 15 16:41:32 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-Sun Apr 12 23:53:33 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* appveyor.yml: Update libressl version to 2.3.7.</div><div class='ctx'> </div><div class='del'>-	* ext/fiddle/extconf.rb: make PIC objects if it will be linked as</div><div class='del'>-	  a shared object eventually.  [ruby-core:67128]</div><div class='add'>+Mon Aug 15 11:46:50 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Mar 22 12:39:17 2015  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* ext/extmk.rb (extmake): extension libraries in gems cannot link</div><div class='add'>+	  statically.</div><div class='ctx'> </div><div class='del'>-	* spec/default.mspec: use default configuration file name.</div><div class='del'>-	  https://github.com/ruby/rubyspec/commit/cc69f337b06362e5607ffa3e3ad40ef7494960cf</div><div class='add'>+Sun Aug 14 22:35:40 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Mar 22 12:39:17 2015  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* id_table.c (hash_table_extend): should not shrink the table than</div><div class='add'>+	  the previous capacity.  [ruby-core:76534] [Bug #12614]</div><div class='ctx'> </div><div class='del'>-	* spec/default.mspec: remove specific version number.</div><div class='del'>-	  https://github.com/ruby/rubyspec/commit/7a909e925c1baa9c700bd44af9241aef6e596714</div><div class='add'>+Sun Aug 14 18:51:24 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Mar 22 12:39:17 2015  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* gems/bundled_gems: add gemified tk 0.1.0.</div><div class='add'>+	  this needs `extract-gems` to build.</div><div class='ctx'> </div><div class='del'>-	* common.mk: use ruby organization for rubyspec.</div><div class='add'>+Sun Aug 14 14:54:14 2016  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Feb 26 15:48:41 2015  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* object.c (InitVM_Object): Update referenced document path.</div><div class='ctx'> </div><div class='del'>-	* ext/win32/Win32API.rb (initialize): accept both a string and an array</div><div class='del'>-	  for the arguments of the imported function.</div><div class='del'>-	  reported by Aaron Stone [ruby-core:68208] [Bug #10876] [Fixes GH-835]</div><div class='add'>+Sat Aug 13 23:08:01 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Feb 25 15:36:26 2015  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (num_funcall0, num_funcall1): get rid of infinite</div><div class='add'>+	  recursion in fallback methods of Numeric.</div><div class='ctx'> </div><div class='del'>-	* tool/merger.rb: support 2.1+ versioning scheme.</div><div class='add'>+Sat Aug 13 11:10:08 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb 24 17:41:27 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* parse.y (command_asgn, arg): fix syntax errors with chained</div><div class='add'>+	  assignment with op assign.  [Bug #12669]</div><div class='ctx'> </div><div class='del'>-	* time.c (time_zone_name): should be US-ASCII only if all 7-bits,</div><div class='del'>-	  otherwise locale encoding.  [ruby-core:68230] [Bug #10887]</div><div class='add'>+Sat Aug 13 10:52:19 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb 24 17:41:27 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* parse.y (stmt, arg): rescue modifier in command op assignment</div><div class='add'>+	  should be limited to rhs only.  [ruby-core:75621] [Bug #12402]</div><div class='ctx'> </div><div class='del'>-	* time.c (time_zone_name): should be US-ASCII only if all 7-bits,</div><div class='del'>-	  otherwise locale encoding.  [ruby-core:68230] [Bug #10887]</div><div class='add'>+Sat Aug 13 07:51:40 2016  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb 24 17:41:27 2015  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='add'>+	* ext/win32ole/win32ole.c (ole_val2variant): fix integer conversion in</div><div class='add'>+	  cygwin64.</div><div class='ctx'> </div><div class='del'>-	* time.c: Zone encoding should be US-ASCII if all 7-bits. Fix r46907.</div><div class='add'>+Fri Aug 12 21:05:19 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_time.rb, test/ruby/test_time_tz.rb: Update tests.</div><div class='add'>+	* lib/webrick/config.rb (WEBrick::Config::General):</div><div class='add'>+	  disable reverse lookup by default. [ruby-core:45514] [Feature #6559]</div><div class='add'>+	  Socket.do_not_reverse_lookup is true by default but WEBrick</div><div class='add'>+	  overwrote it.</div><div class='add'>+	  patch by Eric Hodel [ruby-core:45527]</div><div class='ctx'> </div><div class='del'>-Tue Feb 24 16:37:26 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Aug 12 12:50:31 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (chompped_length): enable smart chomp for all non-dummy</div><div class='del'>-	  encoding strings, not only default_rs.</div><div class='del'>-	  [ruby-core:68258] [Bug #10893]</div><div class='add'>+	* error.c (rb_syntax_error_append): fix newline in syntax error</div><div class='add'>+	  message to the beginning, not after file name and line number.</div><div class='add'>+	  [Feature #11951]</div><div class='ctx'> </div><div class='del'>-Tue Feb 24 16:31:53 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Aug 11 16:24:23 2016  Ferdinand Niedermann  &lt;nerdinand@nerdinand.com&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_split_m): raise ArgumentError at broken string</div><div class='del'>-	  not RegexpError, as Regexp is not involved in.</div><div class='del'>-	  [ruby-core:68229] [Bug #10886]</div><div class='add'>+	* compar.c (cmp_clamp): Introduce Comparable#clamp.  [Feature #10594]</div><div class='ctx'> </div><div class='del'>-Tue Feb 24 14:00:46 2015  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Thu Aug 11 03:16:59 2016  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (rb_objspace_call_finalizer): control GC execution during</div><div class='del'>-	  force firnalizations at the end of interpreter process.</div><div class='del'>-	  [Bug #10768]</div><div class='add'>+	* lib/prime.rb: Optimize prime?</div><div class='add'>+	  Adapted from patch by Jabari Zakiya [#12665]</div><div class='ctx'> </div><div class='del'>-	  1) Prohibit incremental GC while running Ruby-level finalizers</div><div class='del'>-	     to avoid any danger.</div><div class='del'>-	  2) Prohibit GC while invoking T_DATA/T_FILE data structure</div><div class='del'>-	     because these operations break object relations consistency.</div><div class='add'>+	* test/test_prime.rb: Improve test</div><div class='ctx'> </div><div class='del'>-	  This patch can introduce another memory consuming issue because</div><div class='del'>-	  Ruby-level finalizers can run after (2), GC is disabled.</div><div class='del'>-	  However, basically object consistency was broken at (2) as I</div><div class='del'>-	  described above. So that running Ruby-level finalizers contains</div><div class='del'>-	  danger originally. Because of this point, I need to suggest to</div><div class='del'>-	  remove these 3 lines (invoking remaining finalizers). And add a</div><div class='del'>-	  rule to add that finalizers should not add new finalizers, or</div><div class='del'>-	  say there is no guarantee to invoke finalizers that added by</div><div class='del'>-	  another finalizer.</div><div class='add'>+Wed Aug 10 22:37:01 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb 24 14:00:46 2015  Aman Gupta &lt;ruby@tmm1.net&gt;</div><div class='add'>+	* parse.y (command_rhs, arg_rhs): introduce new rules to reduce</div><div class='add'>+	  repeated rules with rescue modifier.</div><div class='ctx'> </div><div class='del'>-	* gc.c (rb_objspace_free): cause rb_bug if lazy sweep is in progress</div><div class='del'>-	  during rb_objspace_free. Adds extra protection for r46340.</div><div class='del'>-	  Patch by Vicent Marti. [Bug #10768] [ruby-core:67734]</div><div class='del'>-	* gc.c (rb_objspace_call_finalizer): Ensure GC is completed after</div><div class='del'>-	  finalizers have run. We already call gc_rest() before invoking</div><div class='del'>-	  finalizers, but finalizer can allocate new objects and start new GC</div><div class='del'>-	  cycle, so we call gc_rest() again after finalizers are complete.</div><div class='add'>+Wed Aug 10 17:26:43 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb 24 10:30:59 2015  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+	* parse.y (command_asgn): rescue modifier in command assignment</div><div class='add'>+	  should be limited to rhs only.  [ruby-core:75621] [Bug #12402]</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (rb_vm_rewrite_cref_stack): copy nd_refinements</div><div class='del'>-	  of original crefs. It fixes segmentation fault when calling</div><div class='del'>-	  refined method in duplicate module. [ruby-dev:48878] [Bug #10885]</div><div class='add'>+Wed Aug 10 15:35:03 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_core.h, class.c: change accordingly.</div><div class='add'>+	* ext/win32/resolv/resolv.c: needs windows.h for iphlpapi.h on</div><div class='add'>+	  cygwin.  [ruby-core:76791] [Bug #12663]</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_refinement.rb: add a test for above.</div><div class='add'>+	* ext/win32/resolv/resolv.c (w32error_make_error): use</div><div class='add'>+	  Win32::Resolv::Error, an alias of Win32::Registry::Error.</div><div class='ctx'> </div><div class='del'>-Sun Feb 22 21:20:37 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Aug  9 17:50:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* re.c (match_aref): RMatch::regexp is Qnil after matching by a</div><div class='del'>-	  string since r45451.  [ruby-core:68209] [Bug #10877]</div><div class='add'>+	* hash.c (rb_hash_map_v, rb_hash_map_v_bang): implement Hash#map_v and</div><div class='add'>+	  Hash#map_v! [Feature #12512] [ruby-core:76095]</div><div class='ctx'> </div><div class='del'>-Sun Feb 22 17:11:25 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/test_hash.rb: add tests for above change.</div><div class='ctx'> </div><div class='del'>-	* Makefile.in (probes.stamp): rebuild dtrace dependent objects</div><div class='del'>-	  only when `dtrace -G` modifies its input files.</div><div class='add'>+Tue Aug  9 16:09:03 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Feb 22 17:11:25 2015  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='add'>+	* vm_insnhelper.c (vm_getivar): use always_inline because</div><div class='add'>+	  gcc7 doesn't inline this without always_inline.</div><div class='ctx'> </div><div class='del'>-	* common.mk (ruby-glommed.o): dependency on $(OBJ) should be written</div><div class='del'>-	  in common.mk (in which OBJ is defined) because of Makefile include</div><div class='del'>-	  and parse order. This partly reverts r49419.</div><div class='del'>-	  [ruby-dev:48849] [Bug #10808]</div><div class='add'>+Tue Aug  9 15:41:24 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* Makefile.in (ruby-glommed.o): ditto.</div><div class='add'>+	* ext/tk: Tk is removed from stdlib.  [Feature #8539]</div><div class='add'>+	  https://github.com/ruby/tk is the new upstream.</div><div class='ctx'> </div><div class='del'>-	* Makefile.in (ruby-glommed.o): remove excess $(DTRACE_OBJ) because</div><div class='del'>-	  it is included in $(OBJS) since r49451.</div><div class='add'>+Tue Aug  9 00:12:31 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-	* Makefile.in (probes.o): should depend on $(DTRACE_DEPENDENT_OBJS)</div><div class='add'>+	* doc/maintainers.rdoc: Remove moved file section.</div><div class='ctx'> </div><div class='del'>-Sun Feb 22 02:16:40 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Mon Aug  8 20:56:46 2016  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* file.c (rb_file_identical_p): fix handle leak, ensure to close</div><div class='del'>-	  the handle of the first argument.</div><div class='add'>+	* ext/win32ole/sample/excel1.rb, ext/win32ole/sample/excel2.rb,</div><div class='add'>+	  ext/win32ole/sample/excel3.rb, ext/win32ole/sample/ie.rb,</div><div class='add'>+	  ext/win32ole/sample/ienavi.rb, ext/win32ole/sample/ienavi2.rb: use</div><div class='add'>+	  true instead of deprecated TRUE. [ci skip]</div><div class='ctx'> </div><div class='del'>-Sat Feb 21 13:48:11 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Mon Aug  8 12:51:12 2016  Zarko Todorovski &lt;zarko@ca.ibm.com&gt;</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c (different_device_p): compare by volume serial</div><div class='del'>-	  numbers, not by path names.  [ruby-core:68162] [Bug #10865]</div><div class='add'>+	* internal.h (RBASIC_CLEAR_CLASS): Reroute ANSI C's strict</div><div class='add'>+	  aliasing rule.</div><div class='add'>+	  [ruby-core:74427][Bug #12191][ruby-core:76747][Bug #12657]</div><div class='ctx'> </div><div class='del'>-Sat Feb 21 13:48:11 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Aug  7 18:08:27 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c (wrename): return EXDEV if moving a directory to</div><div class='del'>-	  another drive, since MoveFileExW does not set proper error code.</div><div class='del'>-	  [ruby-core:68162] [Bug #10865]</div><div class='add'>+	* object.c (InitVM_Object): deprecate toplevel constants TRUE,</div><div class='add'>+	  FALSE, and NIL.  [Feature #12574]</div><div class='ctx'> </div><div class='del'>-Sat Feb 21 12:46:51 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Aug  7 06:48:21 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* win32/file.c (rb_file_expand_path_internal): neither the drive</div><div class='del'>-	  of base directory nor the current drive are involved in the</div><div class='del'>-	  result if different than the drive of path.</div><div class='del'>-	  [ruby-core:68130] [Bug #10858]</div><div class='add'>+	* ext/openssl/ossl_ssl.c (ossl_ssl_write_internal):</div><div class='add'>+	  avoid undefined behavior</div><div class='add'>+	* test/openssl/test_pair.rb (test_write_zero): new test</div><div class='add'>+	  [ruby-core:76751] [Bug #12660]</div><div class='ctx'> </div><div class='del'>-Sat Feb 21 12:46:51 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Aug  6 09:35:30 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* win32/file.c (rb_file_expand_path_internal): do not make invalid</div><div class='del'>-	  (or ADS) path if the path has a drive letter, the result also</div><div class='del'>-	  should have be under it.  [ruby-core:68130] [Bug #10858]</div><div class='add'>+	* id_table.h (rb_id_table_iterator_result): add dummy sentinel</div><div class='add'>+	  member because C standard prohibits a trailing comma.</div><div class='ctx'> </div><div class='del'>-Sat Feb 21 12:45:54 2015  Matt Hoyle  &lt;matt@deployable.co&gt;</div><div class='add'>+Sat Aug  6 00:39:44 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c (VpSetPTR): fix a typo, 'expoennt'</div><div class='del'>-	  to 'exponent'.  [ruby-core:67980] [Bug #10823] [Fix GH-825]</div><div class='add'>+	* hash.c (env_enc_str_new): make string for an environment</div><div class='add'>+	  variable name or value.</div><div class='ctx'> </div><div class='del'>-Fri Feb 20 17:47:20 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* hash.c (env_name_new): make environment value string with the</div><div class='add'>+	  encoding for its name.</div><div class='ctx'> </div><div class='del'>-	* vm_core.h (rb_call_info_kw_arg_struct): make keywords a symbols</div><div class='del'>-	  list to get rid of inadvertent creation by variable keyword</div><div class='del'>-	  arguments.  [ruby-core:68031] [Bug #10831]</div><div class='add'>+Fri Aug  5 23:18:35 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Feb 20 15:08:17 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* hash.c (env_str_new): taint the string.  get rid of a test failure</div><div class='add'>+	  introduced at r55811.</div><div class='ctx'> </div><div class='del'>-	* dir.c (has_magic): always get long path name on Windows even if</div><div class='del'>-	  no tilde is there.  [ruby-core:68011] [Bug #10819]</div><div class='add'>+Fri Aug  5 17:04:02 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* dir.c (replace_real_basename): FindFirstFile ignore redirection</div><div class='del'>-	  character, check if exists before call it.  cf. [Bug #8597]</div><div class='add'>+	* hash.c (w32_getenv): call rb_w32_getenv and rb_w32_ugetenv via</div><div class='add'>+	  this pointer without further comparisons.</div><div class='ctx'> </div><div class='del'>-Fri Feb 20 15:08:17 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Aug  4 11:54:30 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_helper): obtain real name with FindFirstFile API</div><div class='del'>-	  instead of matchin all entries, on Windows.</div><div class='del'>-	  [ruby-core:67954] [Bug #10819]</div><div class='add'>+	* hash.c (env_assoc): the encoding of the value should be the</div><div class='add'>+	  locale, as well as other methods, [], fetch, values, etc.</div><div class='ctx'> </div><div class='del'>-Fri Feb 20 14:32:14 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Aug  3 21:31:23 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* dir.c (dir_initialize): workaround of opendir failure at symlink</div><div class='del'>-	  directories on Windows via CIFS.</div><div class='add'>+	* parse.y (reg_fragment_enc_error): compile_error is different</div><div class='add'>+	  between parser and ripper.  [ruby-core:76397] [Bug #12651]</div><div class='ctx'> </div><div class='del'>-Thu Feb 19 17:05:47 2015  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='add'>+Wed Aug  3 17:15:06 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* class.c (rb_obj_singleton_methods): should use RTEST() to convert</div><div class='del'>-	  VALUE to int.</div><div class='add'>+	* object.c (rb_obj_clone2): restrict freeze option to true other</div><div class='add'>+	  than false which only has the effect.  [Feature #12300]</div><div class='ctx'> </div><div class='del'>-Thu Feb 19 16:14:04 2015  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='add'>+Wed Aug  3 10:47:07 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* class.c (method_entry_i, class_instance_method_list,</div><div class='del'>-	  rb_obj_singleton_methods): should not include methods of</div><div class='del'>-	  superclasses if recur is false. [ruby-dev:48854] [Bug #10826]</div><div class='add'>+	* vm_core.h: introduce VM_FRAME_RUBYFRAME_P()</div><div class='add'>+	  and VM_FRAME_CFRAME_P().</div><div class='add'>+	  Most of case, RUBY_VM_NORMAL_ISEQ_P() is no</div><div class='add'>+	  longer needed.</div><div class='ctx'> </div><div class='del'>-Thu Feb 19 16:14:04 2015  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='add'>+	* vm_core.h: introduce rb_obj_is_iseq().</div><div class='ctx'> </div><div class='del'>-	* vm_method.c (remove_method): When remove refined</div><div class='del'>-	  method, raise a NameError if the method is not</div><div class='del'>-	  defined in refined class.</div><div class='add'>+	* cont.c, vm.c: VM_FRAME_MAGIC_DUMMY with</div><div class='add'>+	  VM_FRAME_FLAG_CFRAME.</div><div class='ctx'> </div><div class='del'>-	  But if the method is defined in refined class,</div><div class='del'>-	  it should keep refined method and remove original</div><div class='del'>-	  method.</div><div class='add'>+Wed Aug  3 09:25:16 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	  Patch by Seiei Higa. [ruby-core:67722] [Bug #10765]</div><div class='add'>+	* vm_core.h: rename macros and make them inline functions.</div><div class='ctx'> </div><div class='del'>-Thu Feb 19 16:07:03 2015  Seiei Higa  &lt;hanachin@gmail.com&gt;</div><div class='add'>+	  * rename VM_FRAME_TYPE_FINISH_P() to VM_FRAME_FINISHED_P().</div><div class='add'>+	  * rename VM_FRAME_TYPE_BMETHOD_P() to VM_FRAME_BMETHOD_P().</div><div class='ctx'> </div><div class='del'>-	* proc.c (rb_obj_singleton_method): Kernel#singleton_method should</div><div class='del'>-	  not use refinements, as well as Kernel#method.</div><div class='del'>-	  [ruby-core:67603] [Bug #10744]</div><div class='add'>+Wed Aug 03 09:15:02 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Thu Feb 19 15:32:26 2015  Dave Stevens  &lt;dave@crowdlab.com&gt;</div><div class='add'>+	* vm_core.h: introduce VM_FRAME_FLAG_CFRAME to represent cfp-&gt;iseq</div><div class='add'>+	  type.</div><div class='ctx'> </div><div class='del'>-	* string.c (str_make_independent_expand): terminate String when</div><div class='del'>-	  moved from heap to embedded.  [Fix GH-821].</div><div class='add'>+Tue Aug  2 21:42:40 2016  Chia-sheng Chen  &lt;qitar888@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Thu Feb 19 13:35:21 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* math.c (tanh): make faster by the extract form if three</div><div class='add'>+	  hyperbolic functions are unavailable.  [Feature #12647]</div><div class='ctx'> </div><div class='del'>-	* ext/sdbm/_sdbm.c: include ruby/ruby.h for PRIdPTRDIFF when a</div><div class='del'>-	  macro `DEBUG` is defined.  based on the patch by Owen Rodley in</div><div class='del'>-	  [ruby-core:67987]. [Bug #10825]</div><div class='add'>+Tue Aug  2 12:37:00 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb 17 18:57:13 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/socket/option.c, ext/socket/rubysocket.h (inet_ntop): share</div><div class='add'>+	  the fallback definition.  [ruby-core:76646] [Bug #12645]</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb (Resolv::DNS::Resource#==, #hash): elements</div><div class='del'>-	  returned by Kernel#instance_variables are Symbols now.</div><div class='del'>-	  [ruby-core:68128] [Bug #10857]</div><div class='add'>+Tue Aug  2 04:07:29 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb 17 15:39:01 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* win32/win32.c (set_pioinfo_extra): use more reliable way to search</div><div class='add'>+	  the position of pioinfo of VC14, and also support debug library of it.</div><div class='add'>+	  patched by davispuh AT gmail.com</div><div class='add'>+	  [ruby-core:76644] [Bug #12644]</div><div class='add'>+	  this fixes also [Bug #12631]</div><div class='ctx'> </div><div class='del'>-	* ext/win32/lib/win32/registry.rb (Win32::Registry::API): use wide</div><div class='del'>-	  versions of RegDeleteValue and RegDeleteKey.</div><div class='del'>-	  [ruby-core:67958] [Bug #10820]</div><div class='add'>+Mon Aug  1 21:39:52 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb 17 11:50:06 2015  Yusuke Endoh  &lt;mame@tsg.ne.jp&gt;</div><div class='add'>+	* ext/extmk.rb: [EXPERIMENTAL] build extension libraries in</div><div class='add'>+	  extracted gems.</div><div class='ctx'> </div><div class='del'>-	* string.c (str_discard): does not free for STR_NOFREE string.</div><div class='del'>-	  [Bug #10853][ruby-core:68110]</div><div class='add'>+Mon Aug  1 16:07:18 2016  URABE Shyouhei  &lt;shyouhei@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* bootstraptest/test_string.rb: test for above.</div><div class='add'>+	* include/ruby/ruby.h (struct RStruct): no longer.</div><div class='ctx'> </div><div class='del'>-Sun Feb 15 13:15:46 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* internal.h (struct RStruct): moved here.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/getaddrinfo.c (get_addr): reject too long hostname to</div><div class='del'>-	  get rid of GHOST vulnerability on very old platforms.</div><div class='add'>+	* struct.c (rb_struct_ptr): a compensation function for the lack</div><div class='add'>+	  of RSTRUCT_PTR.  But now that we have RSTRUCT_GET/SET, that must</div><div class='add'>+	  not be used anyway.  I mark this deprecated.  Dont use it.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/raddrinfo.c (make_hostent_internal): ditto, paranoic</div><div class='del'>-	  check for the canonnical name.</div><div class='add'>+Mon Aug  1 14:50:06 2016  Jeremy Evans &lt;code@jeremyevans.net&gt;</div><div class='ctx'> </div><div class='del'>-Sat Feb 14 13:27:41 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* object.c (rb_obj_clone2): Allow Object#clone to take freeze:</div><div class='add'>+	  false keyword argument to not freeze the clone.</div><div class='add'>+	  [ruby-core:75017][Feature #12300]</div><div class='ctx'> </div><div class='del'>-	* vm_eval.c (send_internal), vm_insnhelper.c (vm_call_opt_send):</div><div class='del'>-	  convert String method name into a Symbol, as method_missing</div><div class='del'>-	  method expects its first argument to be a Symbol.  [Bug #10828]</div><div class='add'>+	* test/ruby/test_object.rb (TestObject): test for it.</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (ci_missing_reason): return the reason of method</div><div class='del'>-	  missing in call info.</div><div class='add'>+Mon Aug  1 12:16:19 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (vm_call_opt_send): re-apply r49500 with the</div><div class='del'>-	  proper missing reason.  [Bug #10828]</div><div class='add'>+	* ext/json/*, test/json/json_parser_test.rb: Update json-2.0.2.</div><div class='ctx'> </div><div class='del'>-Sat Feb 14 13:27:41 2015  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='add'>+Sun Jul 31 16:17:23 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c: Fix symbol leak with +send+ [Bug #10828]</div><div class='add'>+	* ext/win32/resolv/resolv.c (get_dns_server_list): [Win32] get DNS</div><div class='add'>+	  servers only for connected network devices by GetNetworkParams</div><div class='add'>+	  API.  [Bug #12604]</div><div class='ctx'> </div><div class='del'>-Sat Feb 14 08:53:50 2015  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='add'>+Sat Jul 30 12:13:26 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* class.c (method_entry_i, class_instance_method_list,</div><div class='del'>-	  rb_obj_singleton_methods): should not include methods of</div><div class='del'>-	  superclasses if recur is false. [ruby-dev:48854] [Bug #10826]</div><div class='add'>+	* string.c (String#downcase), NEWS: Mentioned that case mapping for all</div><div class='add'>+	  of ISO-8859-1~16 is now supported. [ci skip]</div><div class='ctx'> </div><div class='del'>-Fri Feb 13 13:59:56 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Jul 30 12:00:01 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/mkmf.rb (try_cppflags, try_cflags, try_ldflags): get rid of</div><div class='del'>-	  interference by modifying global variables in have_devel? method.</div><div class='del'>-	  [ruby-core:67962] [Bug #10821]</div><div class='add'>+	* enc/iso_8859_2.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for ISO-8859-2, by Yushiro Ishii.</div><div class='ctx'> </div><div class='del'>-Fri Feb 13 03:13:05 2015  Scott Francis  &lt;scott.francis@shopify.com&gt;</div><div class='add'>+Fri Jul 29 20:57:12 2016  chuanshuo  &lt;lilijreey@126.com&gt;</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (reserve_stack): fix intermittent SIGBUS on</div><div class='del'>-	  Linux, by reserving the stack virtual address space at process</div><div class='del'>-	  start up so that it will not clash with the heap space.</div><div class='del'>-	  [Fix GH-822]</div><div class='add'>+	* *.c: rename rb_funcall2 to rb_funcallv, except for extensions</div><div class='add'>+	  which are/will be/may be gems.  [Fix GH-1406]</div><div class='ctx'> </div><div class='del'>-Fri Feb  6 12:05:13 2015  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Fri Jul 29 10:51:34 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* thread.c: Improve documentation for Thread#value</div><div class='del'>-	  [Bug #10694][ruby-core:67324][ci skip]</div><div class='add'>+	* proc.c (env_write): remove unused function.</div><div class='ctx'> </div><div class='del'>-Fri Feb  6 12:02:05 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Jul 29 10:49:52 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/fiddle/win32/libffi.mk.tmpl: assemble without directory prefix.</div><div class='del'>-	  workaround of a bug of VC12 ml, by unak at [ruby-core:67792].</div><div class='del'>-	  [ruby-core:67789] [Bug #10780]</div><div class='add'>+	* vm_core.h (VM_LOCAL_P): should return an integer value.</div><div class='add'>+	  reported at</div><div class='add'>+	  http://d.hatena.ne.jp/nagachika/20160728/ruby_trunk_changes_55764_55770</div><div class='ctx'> </div><div class='del'>-Fri Feb  6 01:03:38 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Jul 29 04:23:08 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* marshal.c (w_object, marshal_dump): use indetity tables for</div><div class='del'>-	  arbitrary VALUE keys, because of performance of FLONUM.</div><div class='del'>-	  [Bug #10761]</div><div class='add'>+	* vm_core.h (VM_ENV_LOCAL_P): return truthy (0 or not) value.</div><div class='ctx'> </div><div class='del'>-	* marshal.c (obj_alloc_by_klass, marshal_load): ditto.</div><div class='add'>+	* vm.c (rb_vm_make_proc_lambda): use VM_ENV_ESCAPED_P() macro.</div><div class='ctx'> </div><div class='del'>-Fri Feb  6 01:03:38 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Fri Jul 29 03:49:04 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* benchmark/bm_marshal_dump_flo.rb: new benchmark for [Bug #10761]</div><div class='add'>+	* vm.c, internal.h: remove RubyVM::Env class and all of env objects</div><div class='add'>+	  are imemo objects (imemo_env).</div><div class='ctx'> </div><div class='del'>-Fri Feb  6 01:03:38 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* NEWS: describe this change. I believe nobody touch these objects</div><div class='add'>+	  because there are no method defined.</div><div class='ctx'> </div><div class='del'>-	* st.c (st_numhash): mix float value for flonum</div><div class='del'>-	* hash.c (rb_any_hash): ditto</div><div class='del'>-	* benchmark/bm_hash_aref_flo.rb: new benchmark</div><div class='del'>-	* benchmark/bm_hash_ident_flo.rb: ditto</div><div class='del'>-	  [Bug #10761]</div><div class='add'>+	* vm_core.h: remove the following definitions.</div><div class='add'>+	  * rb_cEnv decl.</div><div class='add'>+	  * GetEnvPtr() because Env is no longer T_DATA object.</div><div class='ctx'> </div><div class='del'>-Thu Feb  5 16:30:09 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* vm_core.h (rb_env_t): fix layout for imemo values.</div><div class='ctx'> </div><div class='del'>-	* parse.y (gettable_gen): disable warnings of possible reference</div><div class='del'>-	  to a local variable defined in a past scope.</div><div class='del'>-	  [ruby-core:67162] [Bug #10661]</div><div class='add'>+	* vm_core.h (vm_assert_env): added.</div><div class='ctx'> </div><div class='del'>-Mon Jan 26 15:35:16 2015  Seiei Higa  &lt;hanachin@gmail.com&gt;</div><div class='add'>+	* vm_core.h (vm_env_new): added.</div><div class='ctx'> </div><div class='del'>-	* vm_method.c (check_definition): Module#public_method_defined?,</div><div class='del'>-	  Module#private_method_defined?, Module#protected_method_defined?</div><div class='del'>-	  should not use refinements. [ruby-core:67656] [Bug #10753]</div><div class='add'>+Thu Jul 28 19:53:21 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan 22 11:47:31 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* vm_core.h: revisit the structure of frame, block and env.</div><div class='add'>+	  [Bug #12628]</div><div class='ctx'> </div><div class='del'>-	* doc/syntax/literals.rdoc (Symbols): now Symbols created by</div><div class='del'>-	  interpolation can be garbage collected.  patch by Yihang Ho in</div><div class='del'>-	  [ruby-core:67194].  [Bug #10671]</div><div class='add'>+	  This patch introduce many changes.</div><div class='ctx'> </div><div class='del'>-Thu Jan 22 11:45:32 2015  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+	  * Introduce concept of "Block Handler (BH)" to represent</div><div class='add'>+	    passed blocks.</div><div class='ctx'> </div><div class='del'>-	* eval_intern.h, vm.c, vm_eval.c, vm_insnhelper.c:</div><div class='del'>-	  change throw mechanism (not save target ep, but save target cfp).</div><div class='del'>-	  It fixes `unexpected break' bug that occurs when</div><div class='del'>-	  TracePoint#binding is called.</div><div class='del'>-	  [ruby-dev:48797] [Bug #10689]</div><div class='add'>+	  * move rb_control_frame_t::flag to ep[0] (as a special local</div><div class='add'>+	    variable). This flags represents not only frame type, but also</div><div class='add'>+	    env flags such as escaped.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_settracefunc.rb: add a test.</div><div class='add'>+	  * rename `rb_block_t` to `struct rb_block`.</div><div class='ctx'> </div><div class='del'>-Tue Jan 20 14:05:08 2015  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	  * Make Proc, Binding and RubyVM::Env objects wb-protected.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (ole_invoke): avoid SEGV when VT_RECORD</div><div class='del'>-	  variable is passed by reference. [ruby-dev:48803] [Bug #10697] </div><div class='add'>+	  Check [Bug #12628] for more details.</div><div class='ctx'> </div><div class='del'>-Mon Jan 19 15:45:33 2015  Seiei Higa  &lt;hanachin@gmail.com&gt;</div><div class='add'>+Thu Jul 28 15:05:12 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_method.c (rb_method_entry): if no super class, no original</div><div class='del'>-	  method entry.  [ruby-core:67389] [Bug #10707]</div><div class='add'>+	* include/ruby/ruby.h (ruby_fl_type): use __extension__ to get rid</div><div class='add'>+	  of pedantic warning against RUBY_FL_USER19.</div><div class='add'>+	  https://github.com/skylightio/skylight-ruby/issues/64</div><div class='ctx'> </div><div class='del'>-Mon Jan 19 12:03:59 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* include/ruby/ruby.h (rb_mul_size_overflow): ditto for use of</div><div class='add'>+	  int128.</div><div class='ctx'> </div><div class='del'>-	* vm_dump.c (rb_vm_bugreport): check by configured result instead</div><div class='del'>-	  of system name for old FreeBSD.  based on a patch by Steve Wills</div><div class='del'>-	  at [ruby-core:67655].  [Bug #10752]</div><div class='add'>+Wed Jul 27 10:32:59 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jan 19 12:00:51 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* enc/windows_1253.c: Remove dead code found by Coverity Scan.</div><div class='ctx'> </div><div class='del'>-	* configure.in: get rid of pattern substitution, which is not</div><div class='del'>-	  supported by ash, and ash on NetBSD parses whole source first</div><div class='del'>-	  and fails to start.  [ruby-dev:48823] [Bug #10750]</div><div class='add'>+Tue Jul 26 22:43:36 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jan 19 11:57:14 2015  Vit Ondruch  &lt;vondruch@redhat.com&gt;</div><div class='add'>+	* gc.c (run_finalizer): make saved running finalizer state</div><div class='add'>+	  volatile to ensure not to be clobbered by longjmp.</div><div class='ctx'> </div><div class='del'>-	* configure.in (RUBY_SETJMP_TYPE): Remove superfluous semicolon</div><div class='del'>-	  which causes a syntax error with autoconf 2.63.</div><div class='del'>-	  [ruby-core:67429] [Bug #10716]</div><div class='add'>+Tue Jul 26 19:26:00 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jan 19 11:44:52 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* vm_insnhelper.c: introduce rb_vm_pop_frame() and use it</div><div class='add'>+	  instead of setting rb_thread_t::cfp directly.</div><div class='ctx'> </div><div class='del'>-	* lib/rdoc/text.rb (expand_tabs): get rid of infinite loop with</div><div class='del'>-	  CR.  should check if substitution occurred too.</div><div class='del'>-	  [ruby-dev:48813] [Bug #10732]</div><div class='add'>+	* vm_insnhelper.c (vm_pop_frame): return the result of</div><div class='add'>+	  finish frame or not.</div><div class='ctx'> </div><div class='del'>-Sun Jan 18 00:59:41 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Tue Jul 26 19:06:39 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* numeric.c (bit_coerce): use original value for error message</div><div class='del'>-	  [ruby-core:67405] [Bug #10711]</div><div class='del'>-	* test/ruby/test_numeric.rb (test_coerce): check error message</div><div class='add'>+	* gc.c (rb_raw_obj_info): support to show Proc obj.</div><div class='ctx'> </div><div class='del'>-Sun Jan 18 00:53:38 2015  Seiei Higa  &lt;hanachin@gmail.com&gt;</div><div class='add'>+Tue Jul 26 18:55:55 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_method.c (rb_alias): raise a NameError when creating alias to</div><div class='del'>-	  a refined method if the original method of the refined method is</div><div class='del'>-	  not defined.  [ruby-core:67523] [Bug #10731]</div><div class='add'>+	* gc.c (gc_mark): add `inline' explicitly.</div><div class='add'>+	  I expected to inline this function implicitly at the loop</div><div class='add'>+	  (ex: marking T_ARRAY objects) but sometimes it remains as</div><div class='add'>+	  normal call.</div><div class='ctx'> </div><div class='del'>-Sat Jan 17 22:25:50 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jul 26 16:33:16 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* dir.c (need_normalization): not only HFS+, CIFS (SMB) is also</div><div class='del'>-	  decomposed.  [Bug #10704]</div><div class='add'>+	* enc/windows_1257.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for Windows-1257, by Sho Koike.</div><div class='ctx'> </div><div class='del'>-	* dir.c (NORMALIZE_UTF8PATH): Unicode decomposition seems to</div><div class='del'>-	  perform in an upper layer than file systems on OSX, as all path</div><div class='del'>-	  names are always decomposed regardless of file system types.</div><div class='add'>+Tue Jul 26 16:19:41 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 17 17:56:45 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* enc/windows_1250.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for Windows-1250, by Sho Koike.</div><div class='ctx'> </div><div class='del'>-	* parse.y (assocs, assoc): eliminate splatting empty literal</div><div class='del'>-	  hashes.  [ruby-core:67446] [Bug #10719]</div><div class='add'>+	* ChangeLog: Fixed order of previous two entries.</div><div class='ctx'> </div><div class='del'>-	* compile.c (compile_array_): supprt splatted hash in hash type.</div><div class='add'>+Tue Jul 26 15:54:17 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 17 16:49:49 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* enc/windows_1253.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for Windows-1253, by Takumi Koyama.</div><div class='ctx'> </div><div class='del'>-	* ext/readline/readline.c (readline_s_refresh_line): initialize</div><div class='del'>-	  before rl_refresh_line(), as some function make the internal</div><div class='del'>-	  state non-clean but rl_refresh_line() does not re-initialize it.</div><div class='del'>-	  [ruby-core:43957] [Bug #6232]</div><div class='add'>+Tue Jul 26 15:30:37 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 17 16:47:20 2015  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* enc/windows_1251.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for Windows-1251, by Shunsuke Sato.</div><div class='ctx'> </div><div class='del'>-	* eval_error.c (error_print): pos and len parameters of rb_str_substr()</div><div class='del'>-	  are counted by characters, not bytes.  use rb_str_subseq() instead.</div><div class='del'>-	  [Bug #10727] [ruby-core:67473]</div><div class='add'>+Tue Jul 26 13:04:59 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 17 16:35:59 2015  Seiei Higa  &lt;hanachin@gmail.com&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Add explicit skip test for</div><div class='add'>+	  availability of Unicode data files.</div><div class='ctx'> </div><div class='del'>-	* vm_method.c (rb_export_method): bail out if the original method</div><div class='del'>-	  is undefined when the method is refined.</div><div class='del'>-	  [ruby-core:67387] [Bug #10706]</div><div class='add'>+Mon Jul 25 21:33:13 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 17 16:16:14 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* range.c (check_step_domain): check step argument domain by &lt;=&gt;</div><div class='add'>+	  method, instead of &lt; and &gt;.</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_helper): match in case-folding only if the directory</div><div class='del'>-	  resides on a case-insensitve file system, on OSX.</div><div class='del'>-	  [ruby-core:67364] [Bug #10700]</div><div class='add'>+Mon Jul 25 21:11:32 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 17 02:04:01 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* doc/maintainers.rdoc: fix filenames.</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb: consider ENETUNREACH as ResolvTimeout</div><div class='del'>-	  [ruby-core:67411] [Bug #10712]</div><div class='add'>+Mon Jul 25 16:59:00 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 17 01:57:57 2015  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* debug.c (ruby_debug_printf): use rb_raw_obj_info()</div><div class='add'>+	  instead of rb_inspect() because it is more robust way</div><div class='add'>+	  to see object internal.</div><div class='ctx'> </div><div class='del'>-	* ext/zlib/zlib.c: fix document of method signatures.</div><div class='del'>-	  [Bug #10668][ruby-core:67186][ci skip]</div><div class='add'>+Sun Jul 24 16:33:13 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 17 01:52:42 2015  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* regenc.h/c, include/ruby/oniguruma.h, enc/ascii.c, big5.c, cp949.c,</div><div class='add'>+	  emacs_mule.c, euc_jp.c, euc_kr.c, euc_tw.c, gb18030.c, gbk.c,</div><div class='add'>+	  iso_8859_1|2|3|4|5|6|7|8|9|10|11|13|14|15|16.c, koi8_r.c, koi8_u.c,</div><div class='add'>+	  shift_jis.c, unicode.c, us_ascii.c, utf_16|32be|le.c, utf_8.c,</div><div class='add'>+	  windows_1250|51|52|53|54|57.c, windows_31j.c, unicode.c:</div><div class='add'>+	  Remove conditional compilation macro ONIG_CASE_MAPPING. [Feature #12386].</div><div class='ctx'> </div><div class='del'>-	* time.c (timelocalw): Set tm_isdst field -1 if vtm-&gt;isdst is</div><div class='del'>-	  VTM_ISDST_INITVAL.  This bug is introduced at packing struct</div><div class='del'>-	  vtm (r45155).</div><div class='del'>-	  [ruby-core:67345] [Bug #10698] Reported by Boris Ruf.</div><div class='add'>+Sun Jul 24 12:53:42 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan 16 21:17:34 2015  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* doc/maintainers.rdoc: xmlrpc is bundled gem from Ruby 2.4.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_io.rb: added timeout for AIX environment.</div><div class='del'>-	  [ruby-core:62983][Bug #9917]</div><div class='add'>+Sun Jul 24 12:07:39 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan 16 18:25:57 2015  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* doc/maintainers.rdoc: Update OpenSSL maintainer.</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb (Resolv::DNS::Name#==): Compare an array of Label:Str</div><div class='del'>-	  objects.  Label#Str#== is case-insensitive.</div><div class='add'>+Sat Jul 23 22:43:41 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan 16 18:25:57 2015  Ben Miller  &lt;bmiller@rackspace.com&gt;</div><div class='add'>+	* internal.h (Check_Type): inline check for the object type.</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb (Resolv::DNS::Name#==): DNS is case-insensitive, so the</div><div class='del'>-	  comparison should be case-insensitive as well.</div><div class='del'>-	  [ruby-core:66498] [Bug #10550]</div><div class='add'>+Sat Jul 23 04:06:04 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan 16 18:25:57 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* include/ruby/ruby.h (RTEST, NIL_P): use RUBY prefixed name in</div><div class='add'>+	  macros.</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb (Resolv::DNS::Name): names with different dots</div><div class='del'>-	  should be different.</div><div class='add'>+Sat Jul 23 01:41:29 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan 16 17:34:57 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/webrick/httpservlet/cgihandler.rb (do_GET): delete HTTP_PROXY</div><div class='add'>+	* test/webrick/test_cgi.rb (test_cgi_env): new test</div><div class='add'>+	* test/webrick/webrick.cgi (do_GET): new endpoint to dump env</div><div class='add'>+	  [ruby-core:76511] [Bug #12610]</div><div class='ctx'> </div><div class='del'>-	* parse.y (f_label): return tLABEL value as it is.</div><div class='del'>-	  [ruby-core:67315] [Bug #10693]</div><div class='add'>+Fri Jul 22 19:55:20 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan 16 16:49:04 2015  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* vm.c (vm_set_main_stack): remove unnecessary check.  toplevel</div><div class='add'>+	  binding must be initialized.  [Bug #12611] (N1)</div><div class='ctx'> </div><div class='del'>-	* lib/net/http.rb (Net::HTTP#send_request): there is no response body</div><div class='del'>-	  with HEAD request. Patch by @rodrigosaito [fix GH-520]</div><div class='add'>+	* win32/win32.c (w32_symlink): fix return type.  [Bug #12611] (N3)</div><div class='ctx'> </div><div class='del'>-Fri Jan 16 16:49:04 2015  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* string.c (rb_str_split_m): simplify the condition.</div><div class='add'>+	  [Bug #12611](N4)</div><div class='ctx'> </div><div class='del'>-	* test/net/http/test_http.rb (_test_send_request__HEAD): Added</div><div class='del'>-	  failing test for send_request with HEAD method.</div><div class='add'>+Fri Jul 22 17:13:37 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan 16 14:56:08 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* string.c (String#dump): Change escaping of non-ASCII characters in</div><div class='add'>+	  UTF-8 to use upper-case four-digit hexadecimal escapes without braces</div><div class='add'>+	  where possible [Feature #12419].</div><div class='ctx'> </div><div class='del'>-	* symbol.c (rb_gc_free_dsymbol): delete from global fstr hash</div><div class='del'>-	* test/ruby/test_symbol.rb (test_symbol_fstr_leak): test for bug</div><div class='del'>-	  [ruby-core:67268] [Bug #10686]</div><div class='add'>+	* test/ruby/test_string.rb (test_dump): Add tests for above.</div><div class='ctx'> </div><div class='del'>-Fri Jan 16 14:20:52 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Jul 22 10:35:35 2016  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_args.c (keyword_hash_p): fix non-symbol keys hash.</div><div class='del'>-	  rb_extract_keywords() returns 0 not Qnil when no symbol keys is</div><div class='del'>-	  included.</div><div class='add'>+	* lib/rexml/attribute.rb (REXML::Attribute#to_string): Fix wrong</div><div class='add'>+	  entry reference name of double quote.</div><div class='add'>+	  [Bug #12609][ruby-core:76509]</div><div class='add'>+	  Patch by Joseph Marrero. Thanks!!!</div><div class='ctx'> </div><div class='del'>-Fri Jan 16 11:06:17 2015  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Fri Jul 22 10:32:13 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/unicode_normalize.rb: typo fix. [ci skip]</div><div class='del'>-	  [ruby-dev:48794][misc #10675]</div><div class='del'>-	  included.  [ruby-core:67264] [Bug #10685]</div><div class='del'>-Fri Jan 16 11:04:35 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* template/unicode_norm_gen.tmpl: Remove</div><div class='add'>+	  UnicodeNormalize::UNICODE_VERSION at origin [Feature #12546].</div><div class='ctx'> </div><div class='del'>-	* re.c (unescape_nonascii): append excape sequence as-is not</div><div class='del'>-	  unescaped character, to get rid of unexpected meta-character.</div><div class='del'>-	  [ruby-core:67193] [Bug #10670]</div><div class='add'>+Fri Jul 22 09:23:51 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan  3 21:17:58 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* LEGAL: Added entries for files under the USD license.</div><div class='add'>+	  [Bug #12598][ruby-core:76428][ci skip]</div><div class='ctx'> </div><div class='del'>-	* thread.c (rb_thread_variable_get): fix dynamic symbol keys.</div><div class='del'>-	  rb_check_id() returns non-zero only for static symbols, whereas</div><div class='del'>-	  thread local variable keys can be dynamic symbols.</div><div class='del'>-	  [ruby-core:67185] [Bug #10667]</div><div class='add'>+Fri Jul 22 09:19:57 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan  1 08:29:55 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* LEGAL: Added entry for `lib/rdoc/generator/template/darkfish/css/fonts.css`</div><div class='add'>+	  [Misc #12550][ruby-core:76255][ci skip]</div><div class='ctx'> </div><div class='del'>-	* cygwin/GNUmakefile.in (EXTOBJS): override to add resource files</div><div class='del'>-	  always.  [ruby-core:67153] [Bug #10657]</div><div class='add'>+Fri Jul 22 06:28:32 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 31 15:26:46 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* gc.c (run_finalizer): push and exec tag just once, instead of</div><div class='add'>+	  protecting for each finalizer.</div><div class='ctx'> </div><div class='del'>-	* parse.y (f_kwrest, new_args_tail_gen): unnamed rest keyword and</div><div class='del'>-	  keywords bits arguments should be unique.  since internal IDs</div><div class='del'>-	  depend on the local variable index in the current scope, new ID</div><div class='del'>-	  should be made before popping those vtables.</div><div class='del'>-	  [ruby-core:67157] [Bug #10659]</div><div class='add'>+	* gc.c (gc_start_internal, rb_gc_start): set finalizing flag</div><div class='add'>+	  whenever calling deferred finalizers not to recurse.</div><div class='ctx'> </div><div class='del'>-Wed Dec 31 14:11:58 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Thu Jul 21 22:26:40 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/tk/lib/tkextlib/tcllib/plotchart.rb: fix to invoke correct function</div><div class='del'>-	  of tcllib. Patch by @zalt50 [fix GH-787]</div><div class='add'>+	* missing/strl{cat,cpy}.c: Update latest upstream files.</div><div class='add'>+	  [Misc #12205][ruby-core:74487]</div><div class='add'>+	* LEGAL: Update license for missing/strl{cat,cpy}.c.</div><div class='ctx'> </div><div class='del'>-Wed Dec 31 13:26:22 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Thu Jul 21 21:53:30 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_core.h (rb_vm_living_threads_insert): preserve order</div><div class='del'>-	  [Bug #10660] [ruby-core:67154] [ruby-core:67159]</div><div class='add'>+	* LEGAL: added file list with Public domain license.</div><div class='add'>+	  [ruby-core:76254][Bug #12549]</div><div class='ctx'> </div><div class='del'>-Fri Dec 26 15:42:27 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Wed Jul 20 17:44:07 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/rbinstall.rb: skip installing bundle gems if zlib is unavailable.</div><div class='del'>-	  [Bug #10647] [ruby-dev:48787]</div><div class='add'>+	* enumerator.c (lazy_uniq): new method Enumerator::Lazy#uniq.</div><div class='add'>+	  [Feature #11090]</div><div class='ctx'> </div><div class='del'>-Thu Dec 25 17:42:01 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* enum.c (enum_uniq): new method Enumerable#uniq.</div><div class='add'>+	  [Feature #11090]</div><div class='ctx'> </div><div class='del'>-	* ext/io/console/console.c (console_dev): send the given arguments</div><div class='del'>-	  to the opened console.  as a special case, do nothing if :close</div><div class='del'>-	  is given.</div><div class='add'>+Wed Jul 20 17:35:23 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/lib/leakchecker.rb (LeakChecker#check_fd_leak): close if</div><div class='del'>-	  console.</div><div class='add'>+	* hash.c (rb_hash_add_new_element): add new element or do nothing</div><div class='add'>+	  if it is contained already.</div><div class='ctx'> </div><div class='del'>-Thu Dec 25 17:37:47 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='add'>+	* array.c (ary_add_hash, ary_add_hash_by): use</div><div class='add'>+	  rb_hash_add_new_element.</div><div class='ctx'> </div><div class='del'>-	* gc.c (wmap_final_func): fix memory size shortage when realloc wmap.</div><div class='del'>-	  Fix SEGV during finilize of WeakRef on Solaris (though the SEGV</div><div class='del'>-	  could occur on all OS/platforms). [ruby-dev:48779] [Bug #10646]</div><div class='add'>+Tue Jul 19 18:21:17 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Dec 25 17:31:51 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/unicode_normalize/tables.rb: Remove</div><div class='add'>+	  UnicodeNormalize::UNICODE_VERSION (#12546).</div><div class='ctx'> </div><div class='del'>-	* configure.in (NET_LUID): include winsock2.h instead of windows.h.</div><div class='del'>-	  patch by Jon Forums in [ruby-core:67125].  [Bug #10640]</div><div class='add'>+Tue Jul 19 15:38:59 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Dec 25 16:01:19 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* variable.c (rb_local_constants_i): exclude private constants</div><div class='add'>+	  when excluding inherited constants too.  [Bug #12345]</div><div class='ctx'> </div><div class='del'>-	* file.c (rb_file_expand_path_internal): drop characters ignored</div><div class='del'>-	  by filesystem on Mac OS X.</div><div class='add'>+Sun Jul 17 23:42:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Dec 25 15:36:15 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (num_finite_p, num_infinite_p): Add Numeric#finite? and</div><div class='add'>+	  Numeric#infinite?  [Feature #12039] [ruby-core:73618]</div><div class='ctx'> </div><div class='del'>-	* dir.c (replace_real_basename): get the real name and replace the</div><div class='del'>-	  base name with it by getattrlist(2) if available.</div><div class='del'>-	  suggested by Matthew Draper at [ruby-core:67116].  [Bug #10015]</div><div class='add'>+	* complex.c (rb_complex_finite_p): Add Complex#finite?</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_helper): get the real name of the whole path, not</div><div class='del'>-	  only the last name.</div><div class='add'>+	* complex.c (rb_complex_infinite_p): Add Complex#infinite?</div><div class='ctx'> </div><div class='del'>-Thu Dec 25 13:59:17 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/test_bignum.rb: Add test for Integer#finite? and</div><div class='add'>+	  Integer#infinite?</div><div class='ctx'> </div><div class='del'>-	* configure.in (NET_LUID): include also ifdef.h as a workaround of</div><div class='del'>-	  a bug in mingw-w64 header.  [ruby-core:67103] [Bug #10640]</div><div class='add'>+	* test/ruby/test_fixnum.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Thu Dec 25 12:47:44 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/test_rational.rb: Add test for Rational#finite? and</div><div class='add'>+	  Rational#infinite?</div><div class='ctx'> </div><div class='del'>-	* parse.y (gettable_gen): warn possible reference to a local</div><div class='del'>-	  variable defined in a past scope.</div><div class='add'>+	* test/ruby/test_complex.rb: Add test for Complex#finite? and</div><div class='add'>+	  Complex#infinite?</div><div class='ctx'> </div><div class='del'>-Thu Dec 25 10:09:14 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jul 17 20:59:24 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/io/console/console.c (console_dev): id_console is not a</div><div class='del'>-	  constant name, use rb_const_remove() to get rid of NameError.</div><div class='add'>+	* common.mk, enc/depend (casefold.h, name2ctype.h): move to</div><div class='add'>+	  unicode data directory per version.</div><div class='ctx'> </div><div class='del'>-Thu Dec 25 09:18:55 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Sat Jul 16 06:26:00 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/resolv/test_dns.rb (TestResolvDNS#test_query_ipv4_address):</div><div class='del'>-	  set timeout for recvfrom because if client thread is crashed, it</div><div class='del'>-	  waits infinity.</div><div class='add'>+	* common.mk, enc/Makefile.in: moved timestamp files for</div><div class='add'>+	  directories under the specific directory, to get rid of match</div><div class='add'>+	  with files under the source directory.</div><div class='ctx'> </div><div class='del'>-Thu Dec 25 08:42:11 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Fri Jul 15 22:05:13 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/uri/generic.rb (split_userinfo): fstring for 1-byte split</div><div class='del'>-	  (set_port): reduce bytecode size</div><div class='del'>-	  (check_path): reduce garbage via opt_str_freeze</div><div class='del'>-	  (query=): ditto</div><div class='del'>-	  (fragment=): ditto</div><div class='del'>-	  [misc #10628]</div><div class='del'>-	* lib/uri/rfc3986_parser.rb (regexp): cache as attr</div><div class='del'>-	  (initialize): setup and freeze regexp attr once</div><div class='del'>-	  (split): reduce bytecode size, use opt_str_freeze</div><div class='del'>-	  (parse): minor bytecode and garbage reduction</div><div class='del'>-	  (default_regexp): rename for initialize</div><div class='add'>+	* string.c (str_buf_cat): Fix potential integer overflow of capa.</div><div class='add'>+	  In addition, termlen is used instead of +1.</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 20:38:16 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Jul 15 21:30:38 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_make_pattern): restrict searching case-insensitive</div><div class='del'>-	  name from the filesystem to only last part, for the performance.</div><div class='del'>-	  [ruby-core:63591] [Bug #10015]</div><div class='add'>+	* string.c (str_buf_cat): Fix capa size for embed string.</div><div class='add'>+	  Fix bug in r55547. [Bug #12536]</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 18:21:27 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Fri Jul 15 18:13:15 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c: remove unused rb_objspace_t::rgengc::old_objects_at_gc_start.</div><div class='add'>+	* gems/bundled_gems: update latest gems.</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 13:25:22 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Fri Jul 15 17:08:57 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/redmine-backporter.rb: require view_changesets permission.</div><div class='add'>+	* util.c (ruby_strtod): do not underflow only by preceding zeros,</div><div class='add'>+	  which may be canceled out by the exponent.</div><div class='add'>+	  http://twitter.com/kazuho/status/753829998767714305</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 13:00:24 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Jul 15 09:53:48 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb (Downloader.download): fix the exception to</div><div class='del'>-	  re-raise.  initialize methods of subclasses of Exception may</div><div class='del'>-	  have different parameters.  [ruby-core:67086] [Bug #10639]</div><div class='add'>+	* enc/unicode/case-folding.rb, tool/enc-unicode.rb: check if</div><div class='add'>+	  Unicode versions are consistent with each other.</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 12:16:19 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Jul 15 08:25:15 2016  Jeremy Evans &lt;code@jeremyevans.net&gt;</div><div class='ctx'> </div><div class='del'>-	* ruby.h (rb_data_type_t): revert r48647 and revise parent member.</div><div class='del'>-	  [ruby-core:66969] [Bug #10621]</div><div class='add'>+	* string.c (STR_BUF_MIN_SIZE): reduce from 128 to 127</div><div class='add'>+	  [ruby-core:76371] [Feature #12025]</div><div class='add'>+	* string.c (rb_str_buf_new): adjust for above reduction</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 05:40:52 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Thu Jul 14 17:26:00 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb: use config.guess in gcc repo.</div><div class='add'>+	* Makefile.in (enc/unicode/name2ctype.h): remove stale recipe,</div><div class='add'>+	  which did not support Unicode age properties.</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 11:50:19 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* common.mk (enc/unicode/name2ctype.h): update by --header option</div><div class='add'>+	  of tool/enc-unicode.rb.  enc/unicode/name2ctype.kwd file has not</div><div class='add'>+	  been used.</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_hash_delete): return Qnil if there are no corresponding</div><div class='del'>-	  entry. [Bug #10623]</div><div class='add'>+	* common.mk (enc/unicode/name2ctype.kwd): rule to create from</div><div class='add'>+	  Unicode data files, used only when the target does not exist.</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_hash_delete_entry): try delete and return Qundef if there</div><div class='del'>-	  are no corresponding entry.</div><div class='add'>+Thu Jul 14 13:10:54 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* internal.h: add rb_hash_delete_entry()'s declaration.</div><div class='add'>+	* ext/json/lib/json/ext: remove stale directory.  bundled</div><div class='add'>+	  extension libraries are placed under the directory for each</div><div class='add'>+	  architectures, but not mixed with plain text script libraries.</div><div class='ctx'> </div><div class='del'>-	* symbol.c: use rb_hash_delete_entry().</div><div class='add'>+Thu Jul 14 12:48:47 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* thread.c: use rb_hash_delete_entry().</div><div class='add'>+	* ext/json/**/*.rb: merge original files from upstream repository.</div><div class='add'>+	  It only fixes styles of frozen string literal.</div><div class='ctx'> </div><div class='del'>-	* ext/-test-/hash/delete.c: use rb_hash_delete_entry().</div><div class='add'>+Wed Jul 13 22:23:03 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 09:35:11 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* test/json/json_common_interface_test.rb: use assert_raise instead of</div><div class='add'>+	  assert_raises.</div><div class='ctx'> </div><div class='del'>-	* ext/fiddle/extconf.rb: remove ffitarget.h generated by configure on</div><div class='del'>-	  mswin, because it's not normal file (cygwin's symlink) and have</div><div class='del'>-	  system attribute.</div><div class='add'>+Wed Jul 13 22:14:23 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 05:40:52 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* test/lib/test/unit.rb: added test files with `_test` suffix for json</div><div class='add'>+	  upstream.</div><div class='add'>+	* test/json: merge original test files from json upstream.</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb: support ruby 1.8.</div><div class='add'>+Wed Jul 13 18:09:42 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 02:44:06 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* enc/iso_8859_9.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for ISO-8859-9, by Kazuki Iijima.</div><div class='ctx'> </div><div class='del'>-	* lib/net/http/response.rb (Net::HTTPResponse): require one or more</div><div class='del'>-	  spaces [Bug #10591].</div><div class='del'>-	  by leriksen &lt;leif.eriksen.au@gmail.com&gt;</div><div class='del'>-	  https://github.com/ruby/ruby/pull/782 fix GH-782</div><div class='del'>-	  NOTE: graph.facebook.com returns without SP Reason-Phrase.</div><div class='add'>+	* enc/iso_8859_9.c: Exclude dotless i/I with dot from case-insensitive</div><div class='add'>+	  matching because they are not a case pair.</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 02:12:22 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/enc/test_iso_8859.rb: Make test coverage for ISO-8859-9</div><div class='add'>+	  a bit more complete.</div><div class='ctx'> </div><div class='del'>-	* tool/make-snapshot (package): VCS#branch_list expects glob a</div><div class='del'>-	  pattern string but not a regexp.  based on the patch by Vit</div><div class='del'>-	  Ondruch.  in [ruby-core:67064].  [Bug #10636]</div><div class='add'>+Wed Jul 13 17:21:24 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/vcs.rb (VCS::SVN#branch_list): strip newlines.</div><div class='add'>+	* enc/windows_1252.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for Windows-1252, by Serina Tai.</div><div class='ctx'> </div><div class='del'>-	* tool/vcs.rb (VCS::GIT.get_revisions): retrieve modified time</div><div class='del'>-	  from toplevel log too.</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Fix order of encodings.</div><div class='ctx'> </div><div class='del'>-	* tool/vcs.rb (VCS::GIT#branch_list): yield for each lines.</div><div class='add'>+Wed Jul 13 16:19:14 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 00:23:13 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* enc/iso_8859_7.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for ISO-8859-7, by Kosuke Kurihara.</div><div class='ctx'> </div><div class='del'>-	* tool/extlibs.rb (do_extract): the pipe should be binmode.</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Fix order of encodings.</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 00:21:44 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Wed Jul 13 16:08:08 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* Makefile.in, common.mk: move common-srcs to Makefile.in because</div><div class='del'>-	  it breaks build on mswin.</div><div class='add'>+	* gc.c (gc_mark_roots): should mark the VM object itself to mark</div><div class='add'>+	  singleton class of the VM object.</div><div class='add'>+	  Before this patch, we only set mark bit for the VM object and</div><div class='add'>+	  invoke mark function separately.</div><div class='add'>+	  [Bug #12583]</div><div class='ctx'> </div><div class='del'>-Wed Dec 24 00:04:45 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/test_gc.rb: add a test.</div><div class='ctx'> </div><div class='del'>-	* lib/open-uri.rb (OpenURI.open_http): accept multiple certs path in</div><div class='del'>-	  ssl_ca_certs.</div><div class='add'>+Wed Jul 13 15:59:59 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb: use certs of rubygems for downloading gems.</div><div class='add'>+	* math.c (_USE_MATH_DEFINES): it must be set before including internal.h</div><div class='add'>+	  because internal.h includes ruby.h, ruby.h includes win32.h, and</div><div class='add'>+	  win32.h includes system's math.h.</div><div class='add'>+	  this change is to get rid of a compiler warning (redefinition of</div><div class='add'>+	  a macro) introduced at r55641.</div><div class='ctx'> </div><div class='del'>-Tue Dec 23 22:39:11 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Jul 13 15:19:03 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/fiddle/extlibs: libffi-3.2.1 and patch for mswin.</div><div class='add'>+	* enc/iso_8859_1.c, enc/iso_8859_4.c: Avoid setting modification flag if</div><div class='add'>+	  there is no modification.</div><div class='ctx'> </div><div class='del'>-Tue Dec 23 22:04:38 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Wed Jul 13 14:40:04 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/uri/generic.rb (URI::Generic#query=): don't escape [\]^</div><div class='del'>-	  on both rfc2396 and rfc3986. [Bug #10619]</div><div class='add'>+	* enc/iso_8859_5.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for ISO-8859-5, by Masaru Onodera.</div><div class='ctx'> </div><div class='del'>-Tue Dec 23 16:03:35 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Fix order of encodings.</div><div class='ctx'> </div><div class='del'>-	* ext/win32/lib/win32/registry.rb (Win32::Registry::Error#initialize):</div><div class='del'>-	  try en_US message if the default message cannot be encoded to</div><div class='del'>-	  locale.  [ruby-core:65295] [Bug #10300]</div><div class='add'>+Wed Jul 13 14:28:33 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Dec 23 11:42:14 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* math.c (rb_math_sqrt): r55646 must use f_signbit.</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/ossl_cipher.c (ossl_cipher_update_long): update huge</div><div class='del'>-	  data gradually not to exceed INT_MAX.  workaround of OpenSSL API</div><div class='del'>-	  limitation.  [ruby-core:67043] [Bug #10633]</div><div class='add'>+Wed Jul 13 14:22:50 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Mon Dec 22 21:30:16 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* iseq.c (Init_ISeq): undef ISeq.translate and ISeq.load_iseq</div><div class='add'>+	  to prevent calling super classes' methods.</div><div class='ctx'> </div><div class='del'>-	* test/win32ole/test_win32ole_event.rb: some tests are</div><div class='del'>-	  executed on standard Windows OS without ADO.</div><div class='add'>+	  Without this patch, you can write workaround like:</div><div class='ctx'> </div><div class='del'>-Mon Dec 22 14:08:31 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	    class &lt;&lt; RubyVM::InstructionSequence</div><div class='add'>+	      def translate; end</div><div class='add'>+	      undef translate</div><div class='add'>+	    end</div><div class='ctx'> </div><div class='del'>-	* signal.c (received_signal): fix condition to define.</div><div class='del'>-	  [ruby-core:67032] [Bug #10629]</div><div class='add'>+	* test/ruby/test_iseq.rb: add a test.</div><div class='ctx'> </div><div class='del'>-Sun Dec 21 10:51:51 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Wed Jul 13 14:16:03 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* test/win32ole/test_win32ole_event.rb: test_s_new_exception is</div><div class='del'>-	  executed on standard Windows OS without ADO.</div><div class='add'>+	* vm_method.c (method_entry_get_without_cache): check</div><div class='add'>+	  undefined method even if ruby_running is FALSE.</div><div class='ctx'> </div><div class='del'>-Sun Dec 21 08:35:26 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	  We haven't call "undef"ed methods before ruby_running.</div><div class='add'>+	  So that this issue does not make troubles.</div><div class='ctx'> </div><div class='del'>-	* configure.in (jemalloc): fix option argument, should use</div><div class='del'>-	  `$withval` but not `yes` always.  [ruby-core:66994] [Bug #10625]</div><div class='add'>+Wed Jul 13 14:15:22 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in (jemalloc): defer adding the liner option to get</div><div class='del'>-	  rid of linking contest against jemalloc, so that it works</div><div class='del'>-	  without runtime dynamic load path.</div><div class='add'>+	* enc/windows_1254.c: Adjust variable/macro names.</div><div class='ctx'> </div><div class='del'>-Sat Dec 20 17:49:03 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Wed Jul 13 13:19:12 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/tmpdir.rb (Dir.mktmpdir): Accept nil again, as Ruby 2.1.</div><div class='del'>-	  [ruby-core:66943] [Bug #10616] Fixed by Alex Slynko.</div><div class='add'>+	* enc/iso_8859_9.c, enc/windows_1254.c: Split Windows-1254 from</div><div class='add'>+	  ISO-8859-9 to be able to implement different case conversions.</div><div class='ctx'> </div><div class='del'>-Sat Dec 20 11:22:58 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Jul 13 13:08:30 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/fiddle/depend, ext/fiddle/extconf.rb: try to build bundled</div><div class='del'>-	  libffi if existing.</div><div class='add'>+	* enc/iso_8859_7.c, enc/windows_1253.c: Split Windows-1253 from</div><div class='add'>+	  ISO-8859-7 to be able to implement different case conversions.</div><div class='ctx'> </div><div class='del'>-Sat Dec 20 05:21:00 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Wed Jul 13 10:50:12 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* test/test_weakref.rb (test_repeated_object_leak): increase timeout</div><div class='del'>-	  [Bug #10618]</div><div class='add'>+	* enc/iso_8859_13.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for ISO-8859-13, by Kanon Shindo.</div><div class='ctx'> </div><div class='del'>-Fri Dec 19 22:33:13 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Wed Jul 13 10:31:39 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/update-deps: Use $(hdrdir) if possible.</div><div class='add'>+	* enc/iso_8859_13.c, enc/windows_1257.c: Split Windows-1257 from</div><div class='add'>+	  ISO-8859-13 to be able to implement different case conversions.</div><div class='ctx'> </div><div class='del'>-Fri Dec 19 22:10:00 2014  Kenta Murata  &lt;mrkn@cookpad.com&gt;</div><div class='add'>+Wed Jul 13 09:02:30 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/depend: Fix dependencies to make bigdecimal</div><div class='del'>-	  installable by rubygems.</div><div class='add'>+	* enc/iso_8859_3.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for ISO-8859-3, by Takuya Miyamoto.</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.gemspec: version 1.2.6.</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Extend special treatment</div><div class='add'>+	  for Turkic.</div><div class='ctx'> </div><div class='del'>-Fri Dec 19 20:00:19 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* enc/iso_8859_3.c: Exclude dotless i/I with dot from case-insensitive</div><div class='add'>+	  matching because they are not a case pair.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h (PRIsVALUE): put a space after string</div><div class='del'>-	  literals not to be confused with C++11 string literal suffix.</div><div class='del'>-	  https://github.com/ruby/ruby/commit/a9f3eb7#commitcomment-9040169</div><div class='add'>+Wed Jul 13 08:40:21 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Dec 19 15:36:02 2014  Simon Genier  &lt;simon.genier@shopify.com&gt;</div><div class='add'>+	* test/ruby/enc/test_iso_8859.rb: Exclude dotless i/I with dot from</div><div class='add'>+	  case-insensitive matching because they are not a case pair.</div><div class='ctx'> </div><div class='del'>-	* hash.c (hash_equal): prefer true than the result of implicit</div><div class='del'>-	  conversion from int returned by rb_eql() to VALUE.  [Fix GH-789]</div><div class='add'>+Tue Jul 12 23:13:43 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Dec 18 17:45:26 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* math.c (rb_math_sqrt): [EXPERIMENTAL] move Complex sqrt support</div><div class='add'>+	  from mathn.rb.</div><div class='ctx'> </div><div class='del'>-	* configure.in (rb_cv_binary_elf): get rid of -e option of cat</div><div class='del'>-	  which is not available on BusyBox, use tr instead.</div><div class='del'>-	  [ruby-core:64824] [Bug #10210]</div><div class='add'>+Tue Jul 12 01:25:09 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Dec 18 14:25:17 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* configure.in, lib/mkmf.rb, win32/Makefile.sub (CSRCFLAG): make the</div><div class='add'>+	  compiler option replacable in Makefile.</div><div class='ctx'> </div><div class='del'>-	* signal.c (ruby_signal): since SIGKILL is not supported by MSVCRT,</div><div class='del'>-	  should be treated before calling signal(3).</div><div class='del'>-	  [Bug #10615]</div><div class='add'>+	* win32/Makefile.sub (OUTFLAG, COUTFLAG): ditto.</div><div class='ctx'> </div><div class='del'>-Wed Dec 17 12:20:56 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* win32/Makeile.sub, win32/setup.mak (CC): should not append `-nologo`</div><div class='add'>+	  option forcely.</div><div class='ctx'> </div><div class='del'>-	* compile.c (rb_method_for_self_aref, rb_method_for_self_aset):</div><div class='del'>-	  move from iseq.c to build from node instead of arrays.</div><div class='add'>+Mon Jul 11 18:05:40 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 17 10:50:09 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* enc/iso_8859_1.c: Moved test for lowercase characters without</div><div class='add'>+	  uppercase equivalent.</div><div class='ctx'> </div><div class='del'>-	* test/gdbm/test_gdbm.rb: Added test for each_key called without a block.</div><div class='del'>-	  Patch by @joeyates [fix GH-783]</div><div class='add'>+Mon Jul 11 17:49:25 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 17 10:18:42 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* enc/iso_8859_4.c, enc/iso_8859_10.c, enc/iso_8859_14.c,</div><div class='add'>+	  enc/iso_8859_15.c, enc/iso_8859_16.c: Replace case-by-case code with</div><div class='add'>+	  lookup in ENC_ISO_8859_xx_TO_LOWER_CASE table.</div><div class='ctx'> </div><div class='del'>-	* compile.c (iseq_compile_each): check</div><div class='del'>-	  iseq-&gt;compile_data-&gt;option-&gt;specialized_instruction for opt_* insn.</div><div class='add'>+Mon Jul 11 16:00:56 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_iseq.rb: check no specialized_instructions option.</div><div class='add'>+	* ext/stringio/stringio.c (strio_each, strio_readlines): convert</div><div class='add'>+	  arguments just once before reading, instead of conversions for</div><div class='add'>+	  each lines, as r55603.</div><div class='ctx'> </div><div class='del'>-Wed Dec 17 09:48:57 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sun Jul 10 19:53:41 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (iseq_compile_each): only emit opt_str_freeze,</div><div class='del'>-	  opt_aref_with, and opt_aset_with insn when no block is given</div><div class='del'>-	  [Bug #10557] [ruby-core:66595]</div><div class='del'>-	* test/ruby/test_optimization.rb (test_block_given_aset_aref):</div><div class='del'>-	  new test for bug thanks to Bartosz Kopinski.</div><div class='del'>-	  (test_string_freeze): additional assertion for object_id</div><div class='add'>+	* enc/iso_8859_10.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for ISO-8859-10, by Toya Hosokawa.</div><div class='ctx'> </div><div class='del'>-Wed Dec 17 01:06:47 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Sun Jul 10 19:33:47 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32/lib/Win32API.rb (Win32API#call): need to splat.  hmm, when</div><div class='del'>-	  was this broken?</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Changed testing logic to</div><div class='add'>+	  catch unintended modifications of characters that do not have a case</div><div class='add'>+	  equivalent in the respective encoding.</div><div class='add'>+	* enc/iso_8859_1.c, enc/iso_8859_15.c: Fixed unintended modifications of</div><div class='add'>+	  micro sign and y with diaeresis.</div><div class='ctx'> </div><div class='del'>-Tue Dec 16 15:18:23 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jul 10 17:05:36 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.c (rb_method_for_self_aref, rb_method_for_self_aset): call</div><div class='del'>-	  accessor functions directly, not to be affected by [] and []=</div><div class='del'>-	  methods.  [ruby-core:66846] [Bug #10601]</div><div class='add'>+	* enc/iso_8859_4.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for ISO-8859-4, by Kotaro Yoshida.</div><div class='ctx'> </div><div class='del'>-	* struct.c (define_aref_method, define_aset_method): ditto.</div><div class='add'>+Sun Jul 10 16:17:47 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (rb_vm_opt_struct_aref, rb_vm_opt_struct_aset):</div><div class='del'>-	  direct accessors of Struct.</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Fixed a comment</div><div class='add'>+	  (message belongs to last commit). [ci skip]</div><div class='ctx'> </div><div class='del'>-Tue Dec 16 12:01:29 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Sun Jul 10 14:27:25 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_process.rb (test_deadlock_by_signal_at_forking):</div><div class='del'>-	  extend timeout seconds to 60 for RGENGC_CHECK_MODE &gt; 0 environment.</div><div class='add'>+	* util.c (ruby_dtoa): [EXPERIMENTAL] adjust the case that the</div><div class='add'>+	  Float value is close to the exact but unrepresentable middle</div><div class='add'>+	  value of two values in the given precision, as r55604.</div><div class='ctx'> </div><div class='del'>-Tue Dec 16 08:53:12 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sun Jul 10 08:57:20 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/vcs.rb: fix Ruby 1.8 compatibility harder</div><div class='add'>+	* thread.c: Fixed implicit conversion error with Apple clang-800.0.31</div><div class='ctx'> </div><div class='del'>-Tue Dec 16 07:37:18 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sat Jul  9 12:43:09 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (GC_HEAP_FREE_SLOTS): move definition to match use order</div><div class='del'>-	  (RUBY_GC_HEAP_GROWTH_SLOTS): s/factor/number of slots/</div><div class='add'>+	* lib/getoptlong.rb: use false instead of FALSE.</div><div class='ctx'> </div><div class='del'>-	* man/ruby.1: add section for GC environment variables</div><div class='del'>-	  [Feature #10197]</div><div class='add'>+Fri Jul  8 21:49:28 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Tue Dec 16 05:41:46 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* thread.c (rb_wait_for_single_fd): Clean up fds.revents every time</div><div class='add'>+	  before calling ppoll(2). [Bug #12575] [ruby-dev:49725]</div><div class='ctx'> </div><div class='del'>-	* tool/vcs.rb: fix Ruby 1.8 compatibility</div><div class='add'>+Fri Jul  8 14:16:48 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Dec 15 17:51:28 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* vm_args.c (vm_caller_setup_arg_block): call rb_sym_to_proc()</div><div class='add'>+	  directly to reduce method dispatch overhead.</div><div class='ctx'> </div><div class='del'>-	* ext/objspace/objspace.c: ObjectSpace.memsize_of(obj) returns</div><div class='del'>-	  with sizeof(RVALUE). [Bug #8984]</div><div class='add'>+Fri Jul  8 08:43:31 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (obj_memsize_of): ditto.</div><div class='add'>+	* io.c (rb_io_s_read): add description of pipes to the documentation</div><div class='add'>+	  of IO.read.</div><div class='ctx'> </div><div class='del'>-	* NEWS: add a NEWS entry.</div><div class='add'>+Fri Jul  8 03:54:22 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/objspace/test_objspace.rb: catch up this fix.</div><div class='add'>+	* vm_args.c (setup_parameters_complex): don't raise ArgumentError</div><div class='add'>+	  if an array is given for instance_exec with optional argument.</div><div class='add'>+	  [ruby-core:76300] [Bug #12568]</div><div class='add'>+	  https://github.com/rails/rails/pull/25699</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_file_exhaustive.rb: ditto.</div><div class='add'>+Fri Jul  8 00:47:36 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Dec 15 16:19:23 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* vm_eval.c (yield_under): change prototype to get argc/argv.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_enc_str_coderange): dummy wchar, non-endianness</div><div class='del'>-	  encoding string cannot be ascii only.</div><div class='del'>-	  [ruby-core:66835] [Bug #10598]</div><div class='add'>+	* vm_eval.c (specific_eval): change for above.</div><div class='ctx'> </div><div class='del'>-Sun Dec 14 20:11:42 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* vm_eval.c (rb_obj_instance_exec): avoid object allocation.</div><div class='ctx'> </div><div class='del'>-	* parse.y (primary): restore current_arg so that circular</div><div class='del'>-	  reference after a method definition is also warned.</div><div class='del'>-	  [ruby-core:61299] [Bug #9593]</div><div class='add'>+	* vm_eval.c (rb_mod_module_exec): ditto.</div><div class='ctx'> </div><div class='del'>-Sat Dec 13 20:41:55 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Jul  7 20:08:37 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_trace.c (rb_postponed_job_flush): mask signal trap interrupt</div><div class='del'>-	  too to defer handling after finalizers finished.</div><div class='del'>-	  [ruby-core:66825] [Bug #10595]</div><div class='add'>+	* vm_args.c (vm_caller_setup_arg_block): disable symbol block</div><div class='add'>+	  argument optimization when tail call optimization is enabled,</div><div class='add'>+	  in order to avoid SEGV.  [ruby-core:76288] [Bug #12565]</div><div class='ctx'> </div><div class='del'>-Sat Dec 13 18:33:25 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Thu Jul  7 16:37:53 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/openssl/test_pkey_ec.rb: ignored tests with old OpenSSL.</div><div class='add'>+	* numeric.c (flo_round): [EXPERIMENTAL] adjust the case that the</div><div class='add'>+	  receiver is close to the exact but unrepresentable middle value</div><div class='add'>+	  of two values in the given precision.</div><div class='add'>+	  http://d.hatena.ne.jp/hnw/20160702</div><div class='ctx'> </div><div class='del'>-Sat Dec 13 18:01:57 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Jul  7 16:31:07 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* signal.c (check_stack_overflow): check sp also on i386/x86_64</div><div class='del'>-	  FreeBSD.</div><div class='add'>+	* io.c (rb_io_s_foreach, rb_io_s_readlines): convert arguments</div><div class='add'>+	  just once before reading, instead of conversions for each lines.</div><div class='ctx'> </div><div class='del'>-Sat Dec 13 09:58:41 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Wed Jul  6 19:54:17 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (define_final0): avoid duplicate blocks</div><div class='del'>-	  [Bug #10537]</div><div class='del'>-	* test/test_weakref.rb (test_repeated_object_leak): new test</div><div class='add'>+	* enc/iso_8859_14.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for ISO-8859-14, by Yutaro Tada.</div><div class='ctx'> </div><div class='del'>-Sat Dec 13 04:59:20 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Jul  6 19:24:48 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* bin/erb (ERB::Main#run): get rid of shadowing outer local</div><div class='del'>-	  variables.  [ruby-core:65772] [Feature #10395]</div><div class='add'>+	* enc/iso_8859_1.c, enc/iso_8859_15.c, enc/iso_8859_16.c:</div><div class='add'>+	  Align indenting to onigmo convention.</div><div class='ctx'> </div><div class='del'>-Fri Dec 12 21:56:44 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='add'>+Wed Jul  6 18:59:13 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gems/bundled_gems: Upgrade to test-unit 3.0.8. assert_throw and</div><div class='del'>-	  assert_nothing_thrown in test-unit 3.0.7 were broken by</div><div class='del'>-	  UncaughtThrowError change introduced in Ruby 2.2.0</div><div class='del'>-	  preview2. These assertions in test-unit 3.0.8 work well with</div><div class='del'>-	  UncaughtThrowError in Ruby 2.2.0 preview2.</div><div class='add'>+	* enc/iso_8859_15.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for ISO-8859-15, by Maho Harada.</div><div class='ctx'> </div><div class='del'>-Fri Dec 12 19:48:55 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Jul  6 18:34:21 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* bin/erb (ARGV.switch, ERB::Main#run): allow variables to be set</div><div class='del'>-	  from the command line.  [ruby-core:65772] [Feature #10395]</div><div class='add'>+	* enc/iso_8859_16.c, test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Implement non-ASCII case conversion for ISO-8859-16, by Satoshi Kayama.</div><div class='ctx'> </div><div class='del'>-Fri Dec 12 19:31:44 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Jul  6 14:44:56 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/erb.rb (ERB#lineno): accessor for line number to eval.</div><div class='add'>+	* lib/mkmf.rb (create_makefile): store $headers in LOCAL_HDRS for</div><div class='add'>+	  depend files.</div><div class='ctx'> </div><div class='del'>-	* lib/erb.rb (ERB#location=): setter of file name and line number.</div><div class='add'>+	* ext/digest/digest_conf.rb (digest_conf): add implementation</div><div class='add'>+	  specific headers to $header.</div><div class='ctx'> </div><div class='del'>-Fri Dec 12 13:09:13 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* ext/digest/{md5,rmd160,sha1,sha2}/depend: add LOCAL_HDRS to the</div><div class='add'>+	  dependencies.</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_latest_gc_info): return :state field to show current</div><div class='del'>-	  GC state (none/marking/sweeping).</div><div class='del'>-	  [Feature #10590]</div><div class='add'>+Wed Jul  6 08:59:35 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Dec 12 10:49:18 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/net/http/generic_request.rb (write_header): A Request-Line must</div><div class='add'>+	  not contain CR or LF.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_crypt): check arguments more strictly.</div><div class='del'>-	  * crypt() is not for wide char strings</div><div class='del'>-	  * salt bytes should not be NUL</div><div class='add'>+Wed Jul  6 07:11:27 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Dec 12 08:16:01 2014  Matt Hoyle  &lt;matt@deployable.co&gt;</div><div class='add'>+	* lib/net/ftp.rb (putline): raise an ArgumentError when</div><div class='add'>+	  CR or LF is included in a line.</div><div class='ctx'> </div><div class='del'>-	* io.c (io_read) Fix spelling in docco for read.  [Fix GH-781]</div><div class='del'>-	  try &gt; tries</div><div class='add'>+Tue Jul  5 20:49:30 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Dec 11 19:06:01 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* ext/json/*, test/json/*: Update json-2.0.1.</div><div class='add'>+	  Changes of 2.0.0: https://github.com/flori/json/blob/f679ebd0c69a94e3e70a897ac9a229f5779c2ee1/CHANGES.md#2015-09-11-200</div><div class='add'>+	  Changes of 2.0.1: https://github.com/flori/json/blob/f679ebd0c69a94e3e70a897ac9a229f5779c2ee1/CHANGES.md#2016-07-01-201</div><div class='add'>+	  [Feature #12542][ruby-dev:49706][fix GH-1395]</div><div class='ctx'> </div><div class='del'>-	* class.c (class_alloc): Start from age == 2.</div><div class='del'>-	  Class and Module objects can be living long life.</div><div class='add'>+Tue Jul  5 19:39:49 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.c: Same for ISeq objects.</div><div class='add'>+	* string.c (rb_str_change_terminator_length): New function to change</div><div class='add'>+	  termlen and resize heap for the terminator. This is split from</div><div class='add'>+	  rb_str_fill_terminator (str_fill_term) because filling terminator</div><div class='add'>+	  and changing terminator length are different things. [Bug #12536]</div><div class='ctx'> </div><div class='del'>-	* gc.c (RVALUE_AGE_RESET): added.</div><div class='add'>+	* internal.h: declaration for rb_str_change_terminator_length.</div><div class='ctx'> </div><div class='del'>-	* gc.c (newobj_of): allow to generate (age != 0) objects.</div><div class='add'>+	* string.c (str_fill_term): Simplify only to zero-fill the terminator.</div><div class='add'>+	  For non-shared strings, it assumes that (capa + termlen) bytes of</div><div class='add'>+	  heap is allocated. This partially reverts r55557.</div><div class='ctx'> </div><div class='del'>-	* gc.c (rb_copy_wb_protected_attribute): reset age for wb unprotected</div><div class='del'>-	  objects.</div><div class='add'>+	* encoding.c (rb_enc_associate_index): rb_str_change_terminator_length</div><div class='add'>+	  is used, and it should be called whenever the termlen is changed.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h: add RUBY_TYPED_PROMOTED1 as an unrecommended</div><div class='del'>-	  flag.</div><div class='add'>+	* string.c (str_capacity): New static function to return capacity</div><div class='add'>+	  of a string with the given termlen, because the termlen may</div><div class='add'>+	  sometimes be different from TERM_LEN(str) especially during</div><div class='add'>+	  changing termlen or filling terminator with specific termlen.</div><div class='ctx'> </div><div class='del'>-Thu Dec 11 05:37:52 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='add'>+	* string.c (rb_str_capacity): Use str_capacity.</div><div class='ctx'> </div><div class='del'>-	* lib/prime.rb: Remove useless loop and block capture.</div><div class='del'>-	  See [#10354]</div><div class='add'>+Tue Jul  5 11:07:14 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Dec 11 04:27:24 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* pack.c (pack_pack): use union instead of bare variable to ease</div><div class='add'>+	  optimizations and avoid assigning x87 floating point number.</div><div class='add'>+	  [ruby-core:74496] [Bug #12209]</div><div class='ctx'> </div><div class='del'>-	* vm_core.h: introduce new field</div><div class='del'>-	  rb_thread_t::local_storage_recursive_hash_for_trace to store</div><div class='del'>-	  recursive hash to avoid creating new recursive (nested) hashes</div><div class='del'>-	  for each trace events.</div><div class='del'>-	  [Bug #10511]</div><div class='add'>+	* pack.c (pack_unpack): ditto.</div><div class='ctx'> </div><div class='del'>-	* vm_trace.c (rb_threadptr_exec_event_hooks_orig): use it.</div><div class='add'>+Mon Jul  4 13:56:34 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* cont.c: catch up this fix.</div><div class='add'>+	* process.c: define sig_t if not exist.</div><div class='add'>+	  at least Solaris 10 and 11 doesn't have sig_t.</div><div class='ctx'> </div><div class='del'>-	* vm.c (rb_thread_mark): ditto.</div><div class='add'>+Mon Jul  4 13:08:48 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 10 13:39:27 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* random.c (random_ulong_limited): avoid left shift count &gt;= width of</div><div class='add'>+	  type on 32bit environment.</div><div class='ctx'> </div><div class='del'>-	* struct.c (define_aref_method, define_aset_method): use iseq</div><div class='del'>-	  VALUE instead of rb_iseq_t to prevent from GC, as RB_GC_GUARD</div><div class='del'>-	  makes sense only for local variables.  [Feature #10575]</div><div class='add'>+Sun Jul  3 18:51:42 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 10 09:38:40 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb, test_regex_casefold.rb,</div><div class='add'>+	  test/test_unicode_normalize.rb: Replace UNICODE_VERSION from</div><div class='add'>+	  UnicodeNormalize with RbConfig::CONFIG['UNICODE_VERSION'] from</div><div class='add'>+	  feature 12460.</div><div class='ctx'> </div><div class='del'>-	* thread.c (exec_recursive): use the same last method name as</div><div class='del'>-	  recursive_push in the error message when recursive_pop failed.</div><div class='del'>-	  [ruby-core:66742] [Bug #10579]</div><div class='add'>+Sun Jul  3 06:04:09 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 10 02:48:46 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* process.c (disable_child_handler_fork_child): simplify</div><div class='add'>+	  [ruby-core:75781] [Misc #12439]</div><div class='ctx'> </div><div class='del'>-	* test/net/http/test_https.rb</div><div class='del'>-	  (TestNetHTTPS#test_certificate_verify_failure): on Windows,</div><div class='del'>-	  Errno::ECONNRESET will be raised when the verify is failure at the</div><div class='del'>-	  client side, and it'll be eaten by WEBrick.</div><div class='add'>+Sun Jul  3 05:25:46 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/open-uri/test_ssl.rb (TestOpenURISSL#test_validation_failure):</div><div class='del'>-	  ditto.</div><div class='add'>+	* tool/asm_parse.rb: add description</div><div class='add'>+	* tool/change_maker.rb: ditto</div><div class='add'>+	* tool/downloader.rb: ditto</div><div class='add'>+	* tool/eval.rb: ditto</div><div class='add'>+	* tool/expand-config.rb: ditto</div><div class='add'>+	* tool/extlibs.rb: ditto</div><div class='add'>+	* tool/fake.rb: ditto</div><div class='add'>+	* tool/file2lastrev.rb: ditto</div><div class='add'>+	* tool/gem-unpack.rb: ditto</div><div class='add'>+	* tool/gen_dummy_probes.rb: ditto</div><div class='add'>+	* tool/gen_ruby_tapset.rb: ditto</div><div class='add'>+	* tool/generic_erb.rb: ditto</div><div class='add'>+	* tool/id2token.rb: ditto</div><div class='add'>+	* tool/ifchange: ditto</div><div class='add'>+	* tool/insns2vm.rb: ditto</div><div class='add'>+	* tool/instruction.rb: ditto</div><div class='add'>+	* tool/jisx0208.rb: ditto</div><div class='add'>+	* tool/merger.rb: ditto</div><div class='add'>+	* tool/mkrunnable.rb: ditto</div><div class='add'>+	* tool/node_name.rb: ditto</div><div class='add'>+	* tool/parse.rb: ditto</div><div class='add'>+	* tool/rbinstall.rb: ditto</div><div class='add'>+	* tool/rbuninstall.rb: ditto</div><div class='add'>+	* tool/rmdirs: ditto</div><div class='add'>+	* tool/runruby.rb: ditto</div><div class='add'>+	* tool/strip-rdoc.rb: ditto</div><div class='add'>+	* tool/vcs.rb: ditto</div><div class='add'>+	* tool/vtlh.rb: ditto</div><div class='add'>+	* tool/ytab.sed: ditto</div><div class='add'>+	* tool/enc-unicode.rb: fix typo</div><div class='add'>+	* tool/mk_call_iseq_optimized.rb: ditto</div><div class='add'>+	* tool/update-deps: ditto</div><div class='add'>+	  [ruby-core:76215] [Bug #12539]</div><div class='add'>+	  by Noah Gibbs &lt;the.codefolio.guy@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 10 00:42:13 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sat Jul  2 18:04:24 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.c (rb_method_for_self_aref, rb_method_for_self_aset):</div><div class='del'>-	  new methods to generate bytecode for struct.c</div><div class='del'>-	  [Feature #10575]</div><div class='del'>-	* struct.c (rb_struct_ref, rb_struct_set): remove</div><div class='del'>-	  (define_aref_method, define_aset_method): new functions</div><div class='del'>-	  (setup_struct): use new functions</div><div class='del'>-	* test/ruby/test_struct.rb: add test for struct &gt;10 members</div><div class='del'>-	* benchmark/bm_vm2_struct_big_aref_hi.rb: new benchmark</div><div class='del'>-	* benchmark/bm_vm2_struct_big_aref_lo.rb: ditto</div><div class='del'>-	* benchmark/bm_vm2_struct_big_aset.rb: ditto</div><div class='del'>-	* benchmark/bm_vm2_struct_small_aref.rb: ditto</div><div class='del'>-	* benchmark/bm_vm2_struct_small_aset.rb: ditto</div><div class='add'>+	* lib/uri/mailto.rb (initialize): RFC3986_Parser#split sets opaque</div><div class='add'>+	  only if the URI has path-rootless, not path-empty.</div><div class='add'>+	  [ruby-core:76055] [Bug #12498]</div><div class='add'>+	  patched by Chris Heisterkamp &lt;cheister@squareup.com&gt;</div><div class='ctx'> </div><div class='del'>-Tue Dec  9 20:24:41 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Sat Jul  2 04:26:14 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c: [DOC] Add missing documentation around String#chomp.</div><div class='del'>-	  Patch by @stderr [ci skip][fix GH-780]</div><div class='add'>+	* regcomp.c (noname_disable_map): don't optimize out group 0</div><div class='add'>+	  Ruby's Regexp doesn't allow normal numbered groups if the regexp</div><div class='add'>+	  has named groups. On such case it optimizes out related NT_ENCLOSE.</div><div class='add'>+	  But even on the case it can use \g&lt;0&gt;.</div><div class='add'>+	  This fix not to remove NT_ENCLOSE whose regnum is 0.</div><div class='add'>+	  [ruby-core:75828] [Bug #12454]</div><div class='ctx'> </div><div class='del'>-Tue Dec  9 18:20:02 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Jul  2 03:09:27 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* object.c: [DOC] Revise documentation by Marcus Stollsteimer at</div><div class='del'>-	  [ruby-core:66368].  [Bug #10526]</div><div class='add'>+	* string.c: Partially reverts r55547 and r55555.</div><div class='add'>+	  ChangeLog about the reverted changes are also deleted in this file.</div><div class='add'>+	  [Bug #12536] [ruby-dev:49699] [ruby-dev:49702]</div><div class='ctx'> </div><div class='del'>-	  * #inspect: be more specific about generated string, remove</div><div class='del'>-	    obsolete example.</div><div class='del'>-	  * #nil?: use code examples instead of different call-seq's.</div><div class='del'>-	  * #tap: clarify what is yielded.</div><div class='del'>-	  * Integer(): be more specific about to_int and to_i, remove</div><div class='del'>-	    reference to Ruby 1.8.</div><div class='del'>-	  * Array(): fix error.</div><div class='del'>-	  * Class: fix variable name style and indentation in example.</div><div class='del'>-	  * improve consistency, fix typos and formatting.</div><div class='add'>+Sat Jul  2 02:22:22 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_fill_term): When termlen increases, re-allocation</div><div class='add'>+	  of memory for termlen should always be needed.</div><div class='add'>+	  In this fix, if possible, decrease capa instead of realloc.</div><div class='add'>+	  [Bug #12536] [ruby-dev:49699]</div><div class='add'>+</div><div class='add'>+Fri Jul  1 20:20:20 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Tue Dec  9 12:48:32 2014  Josef Simanek  &lt;josef.simanek@gmail.com&gt;</div><div class='add'>+	* string.c: Specify termlen as far as possible.</div><div class='add'>+	  Additional fix for [Bug #12536] [ruby-dev:49699].</div><div class='add'>+</div><div class='add'>+	* string.c (str_new_static): Specify termlen from the given encoding</div><div class='add'>+	  when creating a new String object is needed.</div><div class='add'>+</div><div class='add'>+	* string.c (rb_tainted_str_new_with_enc): New function to create a</div><div class='add'>+	  tainted String object with the given encoding. This means that</div><div class='add'>+	  the termlen is correctly specified. Currently static function.</div><div class='add'>+	  The function name might be renamed to rb_tainted_enc_str_new</div><div class='add'>+	  or rb_enc_tainted_str_new.</div><div class='add'>+</div><div class='add'>+	* string.c (rb_external_str_new_with_enc): Use encoding by using the</div><div class='add'>+	  above rb_tainted_str_new_with_enc().</div><div class='add'>+</div><div class='add'>+Fri Jul  1 19:38:57 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='add'>+</div><div class='add'>+	* test/fiddle/test_pointer.rb (test_to_str, test_to_s, test_aref_aset):</div><div class='add'>+	  Attempt to use independent strings for destructive tests that</div><div class='add'>+	  directly modify values on memory by using Fiddle::Pointer.</div><div class='add'>+	  [Bug #12537] [ruby-dev:49700]</div><div class='add'>+</div><div class='add'>+Fri Jul  1 18:20:00 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+</div><div class='add'>+	* .gdbinit (rb_ps_thread): show the detail of cfunc in ruby level</div><div class='add'>+	  backtrace.</div><div class='ctx'> </div><div class='del'>-	* vm_eval.c (rb_eval_string_wrap): [DOC] Fix `rb_eval_string_wrap`</div><div class='del'>-	  documentation.  It is referencing `require` instead of `load`.</div><div class='del'>-	  The former does not have the optional argument.  [Fix GH-779]</div><div class='add'>+Fri Jul  1 13:26:39 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Tue Dec  9 10:16:24 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* string.c (rb_str_subseq, str_substr): When RSTRING_EMBED_LEN_MAX</div><div class='add'>+	  is used, TERM_LEN(str) should be considered with it because</div><div class='add'>+	  embedded strings are also processed by TERM_FILL.</div><div class='add'>+	  Additional fix for [Bug #12536] [ruby-dev:49699].</div><div class='ctx'> </div><div class='del'>-	* eval.c (rb_frame_last_func): return the most recent frame method</div><div class='del'>-	  name.</div><div class='add'>+Fri Jul  1 12:11:01 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* thread.c (recursive_list_access): use the last method name,</div><div class='del'>-	  instead of the current method name which can be unset in some</div><div class='del'>-	  cases, not to use a symbol by the invalid ID.</div><div class='del'>-	  [ruby-core:66742] [Bug #10579]</div><div class='add'>+	* .gdbinit (rb_count_objects): added gdb version of count_objects().</div><div class='ctx'> </div><div class='del'>-Sun Dec  7 19:36:12 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+Fri Jul  1 04:32:52 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/basicsocket.c, ext/socket/sockssocket.c:</div><div class='del'>-	  remove code for $SAFE=4.</div><div class='add'>+	* .gdbinit (rb_ps_thread): show ruby level backtrace.</div><div class='add'>+	  Usually you can call `rb_ps` to show ruby level backtraces</div><div class='add'>+	  for all living threads.</div><div class='add'>+	  Note that it can call with core file like `gcore &lt;pid&gt;`</div><div class='add'>+	  and `gdb ruby core.&lt;pid&gt;`.</div><div class='ctx'> </div><div class='del'>-Sun Dec  7 10:20:55 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+Thu Jun 30 19:15:13 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rdoc:  Update to RDoc 4.2.0.</div><div class='del'>-	* test/rdoc:  ditto.</div><div class='add'>+	* string.c: Fix memory corruptions when using UTF-16/32 strings.</div><div class='add'>+	  [Bug #12536] [ruby-dev:49699]</div><div class='ctx'> </div><div class='del'>-Sun Dec  7 09:52:30 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* string.c (rb_str_new_with_class): Use TERM_LEN of the "obj".</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems:  Update to RubyGems 2.4.5.</div><div class='del'>-	* test/rubygems:  ditto.</div><div class='add'>+	* string.c (rb_str_plus, rb_str_justify): Use str_new0 which is aware</div><div class='add'>+	  of termlen.</div><div class='ctx'> </div><div class='del'>-Sat Dec  6 10:05:08 2014  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='add'>+	* string.c (str_shared_replace): Copy +termlen bytes instead of +1.</div><div class='ctx'> </div><div class='del'>-	* lib/net/imap.rb: Fix undefined variable usage &amp; refactor/DRY</div><div class='del'>-	  code.  Patch by @aledovsky. [Fixes GH-770]</div><div class='add'>+	* string.c (rb_str_times): termlen should not be included in capa.</div><div class='ctx'> </div><div class='del'>-	* test/net/test_imap.rb: related test.</div><div class='add'>+	* string.c (RESIZE_CAPA_TERM): When using RSTRING_EMBED_LEN_MAX,</div><div class='add'>+	  termlen should be counted with it because embedded strings are</div><div class='add'>+	  also processed by TERM_FILL.</div><div class='ctx'> </div><div class='del'>-Sat Dec  6 10:09:44 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* string.c (rb_str_capacity, str_shared_replace, str_buf_cat): ditto.</div><div class='ctx'> </div><div class='del'>-	* thread.c (do_select): rename parameters to avoid shadowing</div><div class='add'>+	* string.c (rb_str_drop_bytes, rb_str_setbyte, str_byte_substr): ditto.</div><div class='ctx'> </div><div class='del'>-Sat Dec  6 09:22:45 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Wed Jun 29 22:24:37 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rake:  Update to rake 10.4.2</div><div class='del'>-	* test/rake: ditto.</div><div class='add'>+	* ext/psych/lib/psych_jars.rb: removed needless file required to JRuby.</div><div class='ctx'> </div><div class='del'>-Sat Dec  6 06:48:03 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Wed Jun 29 22:21:38 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (rb_iseq_build_from_ary): remove misc handling</div><div class='add'>+	* ext/openssl/ossl_ocsp.c: The "reuse" behavior of d2i_ functions does</div><div class='add'>+	  not work well with OpenSSL 1.0.0t. So avoid it.</div><div class='ctx'> </div><div class='del'>-Sat Dec  6 06:14:23 2014  Vit Ondruch  &lt;vondruch@redhat.com&gt;</div><div class='add'>+Wed Jun 29 15:18:28 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in (RUBY_LIB_VERSION): Fix --with-ruby-version</div><div class='del'>-	  configuration option.  get rid of quoting in config.status.</div><div class='add'>+	* insns.def (opt_succ): optimize like r55515. (but this argument is</div><div class='add'>+	  constant)</div><div class='ctx'> </div><div class='del'>-	* template/verconf.h.tmpl: quote RUBY_LIB_VERSION here.</div><div class='del'>-	  [ruby-core:66724] [Bug #10572]</div><div class='add'>+Wed Jun 29 12:41:58 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Dec  6 04:33:52 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/test_refinement.rb: skip</div><div class='add'>+	  test_prepend_after_refine_wb_miss on ARM or MIPS.</div><div class='add'>+	  [ruby-core:76031] [Bug #12491]</div><div class='ctx'> </div><div class='del'>-	* lib/pp.rb (File::Stat#pretty_print): some platforms (such as Windows)</div><div class='del'>-	  does not have major/minor parts of device.</div><div class='add'>+Wed Jun 29 08:45:53 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Dec  5 22:43:04 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* proc.c (passed_block): convert passed block symbol to proc.</div><div class='add'>+	  based on the patch by Daisuke Sato in [ruby-dev:49695].</div><div class='add'>+	  [Bug #12531]</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych.rb: bump version to 2.0.8</div><div class='del'>-	* ext/psych/psych.gemspec: ditto.</div><div class='del'>-	* ext/psych/psych_emitter.c: ditto.</div><div class='del'>-	* ext/psych/psych_parser.c: ditto.</div><div class='add'>+Wed Jun 29 03:34:41 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Dec  5 17:09:09 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* bignum.c (rb_big2ulong): the old logic seems to try to avoid</div><div class='add'>+	  calculating `-(long)(num-1)-1` if `num` is not LONG_MIN. (Note that</div><div class='add'>+	  `-LONG_MIN` may be larger than LONG_MAX) But C compilers can</div><div class='add'>+	  optimize it into single NEG instruction.</div><div class='add'>+	  Therefore those two conditions can be single if-body.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/option.c (inet_ntop): link aliased inet_ntop in</div><div class='del'>-	  libruby on mswin not rb_w32_inet_ntop which fails to link for</div><div class='del'>-	  unknown reason.</div><div class='add'>+	* bignum.c (rb_big2long): ditto.</div><div class='ctx'> </div><div class='del'>-Fri Dec  5 11:09:54 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* bignum.c (rb_big2ull): ditto.</div><div class='ctx'> </div><div class='del'>-	* iseq.c (prepare_iseq_build): remove unused block_opt param</div><div class='del'>-	  (rb_iseq_new_with_bopt_and_opt): remove</div><div class='del'>-	  (rb_iseq_new_with_opt): inline removed function</div><div class='del'>-	  (rb_iseq_new_with_bopt): remove</div><div class='del'>-	  (iseq_load): adjust prepare_iseq_build call</div><div class='del'>-	  [Feature #10565]</div><div class='add'>+	* bignum.c (rb_big2ll): ditto.</div><div class='ctx'> </div><div class='del'>-Fri Dec  5 09:46:05 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jun 28 22:55:00 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (parser_yylex): fix lex_state after tLABEL_END, should</div><div class='del'>-	  be EXPR_LABELARG to be followed by "paren with arg".</div><div class='del'>-	  [ruby-core:66705] [Feature #4935]</div><div class='add'>+	* lib/pstore.rb (PStore::CHECKSUM_ALGO): extract the algorithm for</div><div class='add'>+	  checksum, instead of qualified names for each times.</div><div class='ctx'> </div><div class='del'>-Fri Dec  5 02:27:47 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jun 28 22:29:36 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/extmk.rb: as all extension objects including initializations</div><div class='del'>-	  of ext and enc should be linked to libruby if enable-shared,</div><div class='del'>-	  EXTOBJS should not be linked to main programs.</div><div class='del'>-	  [ruby-core:66675] [Bug #10566]</div><div class='add'>+	* bootstraptest/runner.rb: do not use safe navigation operator.</div><div class='add'>+	  this runner may run on older ruby.  partially revert r53110</div><div class='add'>+	  (GH-1142 patched by @mlarraz).</div><div class='ctx'> </div><div class='del'>-Thu Dec  4 07:06:02 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Tue Jun 28 22:09:09 2016  Akio Tajima &lt;artonx@yahoo.co.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (rb_iseq_build_from_exception): entry-&gt;sp is unsigned</div><div class='del'>-	  (iseq_build_callinfo_from_hash): account for kw_arg</div><div class='del'>-	  (iseq_build_from_ary_body): update for r35459</div><div class='del'>-	  (CHECK_STRING, CHECK_INTEGER): remove unused checks</div><div class='del'>-	  (int_param): new function for checking new `params' hash</div><div class='del'>-	  (iseq_build_kw): new function for loading rb_iseq_param_keyword</div><div class='del'>-	  (rb_iseq_build_from_ary): account for `misc' entry and general</div><div class='del'>-	   structure changes</div><div class='del'>-	  [Feature #8543]</div><div class='del'>-	* iseq.c (CHECK_HASH): new macro (for `misc' and `param' entries)</div><div class='del'>-	  (iseq_load): account for `misc' and `params' hashes</div><div class='del'>-	  (iseq_data_to_ary): add final opt to arg_opt_labels,</div><div class='del'>-	   fix kw support, account for unsigned entry-&gt;sp</div><div class='del'>-	* ext/-test-/iseq_load/iseq_load.c: new ext for test</div><div class='del'>-	* ext/-test-/iseq_load/extconf.rb: ditto</div><div class='del'>-	* test/-ext-/iseq_load/test_iseq_load.rb: new test</div><div class='add'>+	* lib/fileutils.rb: rescue Errno:EACCES for chown.</div><div class='add'>+	  [Bug #12520]</div><div class='ctx'> </div><div class='del'>-Thu Dec  4 06:56:57 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Tue Jun 28 18:38:09 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.c (iseq_free): avoid segfault on incomplete iseq</div><div class='del'>-	* test/ruby/test_syntax.rb (test_invalid_next): new test</div><div class='del'>-	  for syntax error, not segfault</div><div class='add'>+	* ext/digest/md5/md5ossl.h: Remove excess semicolons.</div><div class='add'>+	  Suppress warning on Solaris with Oracle Solaris Studio 12.</div><div class='add'>+	  [ruby-dev:49692] [Bug #12524]</div><div class='ctx'> </div><div class='del'>-Thu Dec  4 04:20:34 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/digest/md5/md5cc.h: ditto.</div><div class='add'>+	* ext/digest/sha1/sha1cc.h: ditto.</div><div class='add'>+	* ext/digest/sha1/sha1ossl.h: ditto.</div><div class='add'>+	* ext/digest/sha2/sha2cc.h: ditto.</div><div class='add'>+	* ext/digest/sha2/sha2ossl.h: ditto.</div><div class='add'>+	* ext/openssl/ossl_pkey_rsa.c: ditto.</div><div class='ctx'> </div><div class='del'>-	* load.c (ruby_require_internal): ignore error detail, just return</div><div class='del'>-	  an error.</div><div class='add'>+Tue Jun 28 15:56:48 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec  3 17:13:24 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: noting to test if</div><div class='add'>+	  Unicode data files are available.</div><div class='add'>+	  [ruby-core:76160] [Bug #12433]</div><div class='ctx'> </div><div class='del'>-	* encoding.c (load_encoding): use rb_require_internal instead of</div><div class='del'>-	  calling rb_require_safe with protection.</div><div class='add'>+	* test/test_unicode_normalize.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Wed Dec  3 16:47:35 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jun 28 15:20:18 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* load.c (register_init_ext, ruby_init_ext): defer running the</div><div class='del'>-	  registered initialization function until required, not to enable</div><div class='del'>-	  extensions which have global effects just by loading, e.g.,</div><div class='del'>-	  mathn/complex and mathn/rational.  fix `make test` with</div><div class='del'>-	  --with-static-linked-ext.</div><div class='add'>+	* lib/net/http.rb (Net::HTTP#proxy_uri): cache the case no proxy</div><div class='add'>+	  is used.</div><div class='ctx'> </div><div class='del'>-	* enc/encinit.c.erb (Init_enc): initialize encdb and transdb</div><div class='del'>-	  directly.</div><div class='add'>+Tue Jun 28 09:56:29 2016  Stefan Schussler  &lt;mail@stefanschuessler.de&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec  3 14:51:26 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* object.c (rb_mod_eqq): [DOC] Fix typo in RDoc.  [Fix GH-1393]</div><div class='ctx'> </div><div class='del'>-	* load.c (ruby_require_internal): separate from rb_require_safe,</div><div class='del'>-	  not to raise exceptions.</div><div class='add'>+Tue Jun 28 02:41:32 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ruby.c (process_options): remove unnatural encoding search.</div><div class='add'>+	* insns.def (opt_plus): use `- 1` instead of `&amp; (~1)` to allow</div><div class='add'>+	  compilers to use x86 LEA instruction (3 operand).</div><div class='add'>+	  Even if 3 operand LEA's latency is 3 cycle after SandyBridge,</div><div class='add'>+	  it reduces code size and can be faster because of super scalar.</div><div class='ctx'> </div><div class='del'>-Wed Dec  3 14:34:07 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* insns.def (opt_plus): calculate and use rb_int2big.</div><div class='add'>+	  On positive Fixnum overflow, `recv - 1 + obj` doesn't carry</div><div class='add'>+	  because recv's msb and obj's msb are 0, and resulted msb is 1.</div><div class='add'>+	  Therefore simply rshift and cast as signed long works fine.</div><div class='add'>+	  On negative Fixnum overflow, it will carry because both arguments'</div><div class='add'>+	  msb are 1, and resulted msb is also 1.</div><div class='add'>+	  In this case it needs to restore carried sign bit after rshift.</div><div class='ctx'> </div><div class='del'>-	* string.c (setup_fake_str): fake string does not share another</div><div class='del'>-	  string, but just should not free.</div><div class='add'>+Mon Jun 27 16:58:32 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec  3 11:14:14 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* lib/fileutils.rb (FileUtils#install): accecpt symbolic mode, as</div><div class='add'>+	  well as chmod.</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c (w32_spawn): `v2` is used not only for `shell` but also</div><div class='del'>-	  `cmd`, so must not free before using `cmd`.</div><div class='del'>-	  [ruby-core:66648] [Bug #10563]</div><div class='add'>+	* lib/fileutils.rb (FileUtils#install): add owner and group</div><div class='add'>+	  options.</div><div class='ctx'> </div><div class='del'>-Wed Dec  3 09:48:57 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Mon Jun 27 08:56:55 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/racc/cparse/cparse.c (cparse_params_type): use typed data.</div><div class='add'>+	* compile.c (ADD_TRACE): ignore trace instruction on non-positive</div><div class='add'>+	  line.</div><div class='ctx'> </div><div class='del'>-Tue Dec  2 21:33:56 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* parse.y (coverage): get rid of ArgumentError when the starting</div><div class='add'>+	  line number is not positive.  [ruby-core:76141] [Bug #12517]</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: use typed data for com_hash.</div><div class='add'>+Sun Jun 26 10:20:25 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Dec  2 15:30:30 2014  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+	* ext/win32/lib/Win32API.rb (Win32API#initialize): Cygwin</div><div class='add'>+	  2.5.2-1 (perhaps) seems to no longer append ".dll" suffix</div><div class='add'>+	  implicitly.</div><div class='ctx'> </div><div class='del'>-	* array.c (rb_ary_plus): in documentation, added note about</div><div class='del'>-	  inefficiency of repeated += operations.</div><div class='add'>+	* ext/win32/lib/win32/resolv.rb (Win32::Resolv): ditto.  Fix the</div><div class='add'>+	  error reported by yamataka AT u08.itscom.net in</div><div class='add'>+	  [ruby-list:50339], and pointed out and patched by cerberus AT</div><div class='add'>+	  m3.kcn.ne.jp in [ruby-list:50341].</div><div class='ctx'> </div><div class='del'>-Tue Dec  2 07:20:21 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sat Jun 25 10:07:52 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.c (iseq_data_to_ary): keep hidden variables</div><div class='del'>-	  Thanks to wanabe [ruby-core:66566]</div><div class='add'>+	* test/openssl/test_ocsp.rb: Ignore errors caused by bugs that exist in</div><div class='add'>+	  LibreSSL &gt;= 2.3.1.</div><div class='ctx'> </div><div class='del'>-Tue Dec  2 06:46:57 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+Sat Jun 25 02:33:33 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych.rb: bumping version</div><div class='add'>+	* vm_method.c (vm_respond_to): try method_missing if respond_to?</div><div class='add'>+	  is undefined, as if it is the default definition.</div><div class='add'>+	  [ruby-core:75377] [Bug #12353]</div><div class='ctx'> </div><div class='del'>-	* ext/psych/psych.gemspec: ditto</div><div class='add'>+Fri Jun 24 17:04:21 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Dec  2 06:34:08 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+	* ext/psych/*, test/psych/*: Update psych 2.1.0</div><div class='add'>+	  This version fixed [Bug #11988][ruby-core:72850]</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych/visitors/to_ruby.rb: support objects that are</div><div class='del'>-	  marshalable, but inherit from basic object.</div><div class='del'>-	  Thanks Sean Griffin &lt;sean@thoughtbot.com&gt;</div><div class='add'>+Fri Jun 24 13:12:41 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych/visitors/yaml_tree.rb: ditto</div><div class='add'>+	* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*:</div><div class='add'>+	  Update rubygems 2.6.5 and 2.6.6.</div><div class='add'>+	  Release note of 2.6.5: https://github.com/rubygems/rubygems/commit/656f5d94dc888d78d0d00f3598a4fa37391aac80</div><div class='add'>+	  Release note of 2.6.6: https://github.com/rubygems/rubygems/commit/ccb9c3300c063f5b5656669972d24a10ef8afbf5</div><div class='ctx'> </div><div class='del'>-	* test/psych/test_marshalable.rb: test for fix</div><div class='add'>+Fri Jun 24 09:17:15 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Dec  2 06:32:02 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* common.mk (lib/unicode_normalize/tables.rb): should not depend</div><div class='add'>+	  on Unicode data files unless ALWAYS_UPDATE_UNICODE=yes, to get</div><div class='add'>+	  rid of downloading Unicode data unnecessary.  [ruby-dev:49681]</div><div class='ctx'> </div><div class='del'>-	* parse.y (ripper_flush_string_content): preserve the dispatched</div><div class='del'>-	  results at tSTRING_CONTENT.  [ruby-dev:48714] [Bug #10437]</div><div class='add'>+	* common.mk (enc/unicode/casefold.h): update Unicode files in a</div><div class='add'>+	  sub-make, not to let the header depend on the files always.</div><div class='ctx'> </div><div class='del'>-	* parse.y (regexp_contents): check in ripper only if the whole</div><div class='del'>-	  content is a single regexp without interpolation.</div><div class='del'>-	  [ruby-dev:48714] [Bug #10437]</div><div class='add'>+	* enc/unicode/case-folding.rb: if gperf is not usable, assume the</div><div class='add'>+	  existing file is OK.</div><div class='ctx'> </div><div class='del'>-Tue Dec  2 06:30:55 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jun 21 19:44:54 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* re.c (rb_reg_region_copy): new function to try with GC if copy</div><div class='del'>-	  failed and return the error.</div><div class='add'>+	* test/ruby/enc/test_regex_casefold.rb: Add Windows-1251, KOI8-R, and</div><div class='add'>+	  KOI8-U to encodings; definitely removed EUC-JP.</div><div class='ctx'> </div><div class='del'>-Tue Dec  2 04:43:08 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jun 21 19:32:23 2016  Mark St.Godard  &lt;markstgodard@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* re.c (CHECK_REGION_COPIED): onig_region_copy() can fail when</div><div class='del'>-	  memory exhausted but returns nothing, so check by if allocated.</div><div class='add'>+	* lib/webrick/httprequest.rb (setup_forwarded_info): Use the first</div><div class='add'>+	  value in X-Forwarded-Proto, if header contains multiple comma</div><div class='add'>+	  separated values.  Some middlewares may add these values to the</div><div class='add'>+	  list, not replacing.  [Fix GH-1386]</div><div class='ctx'> </div><div class='del'>-Tue Dec  2 02:53:00 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jun 21 17:17:42 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (magic_comment_encoding): enable in ripper, since the</div><div class='del'>-	  encoding is necessary to parse non-default encoding scripts.</div><div class='add'>+	* test/ruby/test_io.rb: Skip test_readpartial_with_not_empty_buffer,</div><div class='add'>+	  test_read_buffer_error, test_read_unlocktmp_ensure,</div><div class='add'>+	  test_readpartial_unlocktmp_ensure, and</div><div class='add'>+	  test_sysread_unlocktmp_ensure on cygwin,</div><div class='add'>+	  because these tests repeatedly hang. This makes test_io.rb</div><div class='add'>+	  complete in finite time on cygwin.</div><div class='ctx'> </div><div class='del'>-Tue Dec  2 02:30:25 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* ChangeLog: Fix test_in.rb -&gt; test_io.rb (two instances).</div><div class='ctx'> </div><div class='del'>-	* lib/uri/generic.rb (URI::Generic.build):</div><div class='del'>-	  use hostname= to detect and wrap IPv6 hosts.</div><div class='del'>-	  Build is accepting URI components and users may not expect</div><div class='del'>-	  that a host component needs to be wrapped with square brackets</div><div class='del'>-	  since it's not providing a URI.</div><div class='del'>-	  Note: initialize with arg_check =&gt; true does not wrap IPv6 hosts.</div><div class='del'>-	  by Joe Rafaniello &lt;jrafanie@redhat.com&gt;</div><div class='del'>-	  https://github.com/ruby/ruby/pull/765 fix GH-765</div><div class='add'>+Tue Jun 21 16:38:14 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/uri/test_generic.rb: Add more tests</div><div class='add'>+	* string.c (rb_str_casemap): do not put code with side effects</div><div class='add'>+	  inside RSTRING_PTR() macro which evaluates the argument multiple</div><div class='add'>+	  times.</div><div class='ctx'> </div><div class='del'>-Mon Dec  1 20:01:12 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Tue Jun 21 16:13:45 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: use typed data for WIN32OLE.</div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_event.c: ditto.</div><div class='add'>+	* string.c (rb_str_casemap): fix memory leak.</div><div class='ctx'> </div><div class='del'>-Mon Dec  1 17:20:42 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jun 21 16:12:21 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* win32/Makefile.sub (verconf.h): so depends on verconf.mk, which</div><div class='del'>-	  is rebuilt by setup.mak.</div><div class='add'>+	* string.c (rb_str_casemap): int is too small for string size.</div><div class='ctx'> </div><div class='del'>-Mon Dec  1 11:05:46 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Tue Jun 21 15:42:22 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* proc.c: fix grammar by @BenMorganIO [fix GH-764][ci skip]</div><div class='add'>+	* test/ruby/test_io.rb: Skip test_read_buffer_error on cygwin,</div><div class='add'>+	  because this test repeatedly hangs.</div><div class='ctx'> </div><div class='del'>-Mon Dec  1 10:49:53 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Tue Jun 21 15:35:14 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* man/rake.1: Update latest man content by @aledovsky</div><div class='del'>-	  [fix GH-771][ci skip]</div><div class='add'>+	* LEGAL: Added filenames and copyrights for some files in</div><div class='add'>+	  enc/trans/JIS.</div><div class='ctx'> </div><div class='del'>-Mon Dec  1 10:42:31 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Tue Jun 21 00:56:47 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* doc/syntax/refinements.rdoc: refinements are no longer experimental.</div><div class='del'>-	  patch by @gaurish [fix GH-775][ci skip]</div><div class='add'>+	* win32/win32.c (get_special_folder): fix calling convention of</div><div class='add'>+	  SHGetPathFromIDListEx, which should be WINAPI.  pointed out by</div><div class='add'>+	  @arton at http://twitter.com/arton/status/744884064277016576</div><div class='ctx'> </div><div class='del'>-Sun Nov 30 20:05:55 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jun 21 00:22:02 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (regexp_contents): fix a typo.  pointed out by wanabe.</div><div class='del'>-	  [ruby-dev:48741] [Bug #10543]</div><div class='add'>+	* configure.in, include/ruby/defines.h (RUBY_USE_SETJMPEX):</div><div class='add'>+	  include setjmpex.h only when using setjmpex() for RUBY_SETJMP.</div><div class='add'>+	  the header of mingw32 overrides setjmp() by setjmpex().</div><div class='ctx'> </div><div class='del'>-Sun Nov 30 18:55:32 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Jun 20 18:39:16 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_process.rb (test_deadlock_by_signal_at_forking):</div><div class='del'>-	  Don't raise Interrupt.</div><div class='add'>+	* test/ruby/test_io.rb: Skip test_open_fifo_does_not_block_other_threads</div><div class='add'>+	  on cygwin. Fifos seem to work okay in cygwin, but this test repeatedly</div><div class='add'>+	  hangs.</div><div class='ctx'> </div><div class='del'>-Sun Nov 30 17:11:05 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Jun 20 13:35:06 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_process.rb (test_deadlock_by_signal_at_forking): Use</div><div class='del'>-	  assert_separately.</div><div class='add'>+	* vm.c (invoke_bmethod, invoke_block_from_c_0): revert r52104</div><div class='add'>+	  partially to avoid "self has wrong type to call super in this</div><div class='add'>+	  context" errors.</div><div class='add'>+	  [ruby-core:72724] [Bug #11954]</div><div class='ctx'> </div><div class='del'>-Sun Nov 30 00:02:52 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Mon Jun 20 12:53:38 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ruby.c (process_options, ruby_script): transcode script name and</div><div class='del'>-	  program name to locale encoding as well as argv.</div><div class='del'>-	  [ruby-dev:48752] [Bug #10555]</div><div class='add'>+	* test/rubygems/test_gem_remote_fetcher.rb: OpenSSL::PKey::DH#priv_key=</div><div class='add'>+	  is not defined when ext/openssl is built with OpenSSL 1.1.0.</div><div class='add'>+	  https://github.com/rubygems/rubygems/pull/1648</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-	* ruby.c (translit_char_bin): should not use code page dependent</div><div class='del'>-	  CharNext on UTF-8 string.  [ruby-dev:48752] [Bug #10555]</div><div class='add'>+Sun Jun 19 21:25:43 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Nov 29 16:53:14 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ossl_ocsp.c: Add OCSP::SingleResponse that represents an</div><div class='add'>+	  OCSP SingleResponse structure. Also add two new methods #responses</div><div class='add'>+	  and #find_response to OCSP::BasicResponse. A BasicResponse has one or</div><div class='add'>+	  more SingleResponse. We have OCSP::BasicResponse#status that returns</div><div class='add'>+	  them as an array of arrays, each containing the content of a</div><div class='add'>+	  SingleResponse, but this is not useful. When validating an OCSP</div><div class='add'>+	  response, we need to look into the each SingleResponse and check their</div><div class='add'>+	  validity but it is not simple. For example, when validating for a</div><div class='add'>+	  certificate 'cert', the code would be like:</div><div class='ctx'> </div><div class='del'>-	* ruby.c (ruby_set_argv): convert argv from UTF-8.</div><div class='add'>+	    # certid_target is an OpenSSL::OCSP::CertificateId for cert</div><div class='add'>+	    basic = res.basic</div><div class='add'>+	    result = basic.status.any? do |ary|</div><div class='add'>+	      ary[0].cmp(certid_target) &amp;&amp;</div><div class='add'>+	        ary[4] &lt;= Time.now &amp;&amp; (!ary[5] || Time.now &lt;= ary[5])</div><div class='add'>+	    end</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c (rb_w32_sysinit, cmdglob, w32_cmdvector): convert</div><div class='del'>-	  wide char command line to UTF-8 argv, and glob in UTF-8 so that</div><div class='del'>-	  metacharacters would match multibyte characters.</div><div class='del'>-	  [ruby-dev:48752] [Bug #10555]</div><div class='add'>+	  Adding OCSP::SingleResponse at the same time allows exposing</div><div class='add'>+	  OCSP_check_validity(). With this, the code above can be rewritten as:</div><div class='ctx'> </div><div class='del'>-Sat Nov 29 10:49:23 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	    basic = res.basic</div><div class='add'>+	    single = basic.find_response(certid_target)</div><div class='add'>+	    result = single.check_validity</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c (win32_direct_conv, rb_w32_readdir): convert UTF-8</div><div class='del'>-	  and filesystem code page by using Win32 API directly.</div><div class='add'>+	* test/openssl/test_ocsp.rb: Test this.</div><div class='ctx'> </div><div class='del'>-Sat Nov 29 09:37:10 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jun 19 18:40:19 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* error.c (syserr_initialize): simplify message building and get</div><div class='del'>-	  rid of potential invalid byte sequence.</div><div class='add'>+	* ext/openssl/ossl_ocsp.c (ossl_ocspbres_add_status): Allow specifying</div><div class='add'>+	  the times (thisUpdate, nextUpdate and revocationTime) with Time</div><div class='add'>+	  objects. Currently they accepts only relative seconds from the current</div><div class='add'>+	  time. This is inconvenience, especially for revocationTime. When</div><div class='add'>+	  Integer is passed, they are still treated as relative times. Since the</div><div class='add'>+	  type check is currently done with rb_Integer(), this is a slightly</div><div class='add'>+	  incompatible change. Hope no one passes a relative time as String or</div><div class='add'>+	  Time object...</div><div class='add'>+	  Also, allow passing nil as nextUpdate. It is optional.</div><div class='ctx'> </div><div class='del'>-Sat Nov 29 06:09:44 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ruby_missing.h: Define RB_INTEGER_TYPE_P() if not defined.</div><div class='add'>+	  openssl gem will be released before Ruby 2.4.0.</div><div class='ctx'> </div><div class='del'>-	* eval_error.c (error_print): respect the encoding of the message.</div><div class='add'>+Sun Jun 19 18:39:38 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* io.c (rb_write_error_str): use rb_w32_write_console() on Windows</div><div class='del'>-	  if stderr is a tty.</div><div class='add'>+	* ext/openssl/ossl_ocsp.c: Implement OCSP::{CertificateId,Request,</div><div class='add'>+	  BasicResponse,Response}#initialize_copy.</div><div class='add'>+	  [ruby-core:75504] [Bug #12381]</div><div class='ctx'> </div><div class='del'>-Fri Nov 28 05:10:23 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/openssl/test_ocsp.rb: Test them.</div><div class='ctx'> </div><div class='del'>-	* configure.in (--with-setup): add option to select ext/Setup file.</div><div class='add'>+Sun Jun 19 18:29:50 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Nov 28 05:02:29 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ossl_pkey_dh.c, ext/openssl/ossl_pkey_dsa.c,</div><div class='add'>+	  ext/openssl/ossl_pkey_ec.c, ext/openssl/ossl_pkey_rsa.c: Implement</div><div class='add'>+	  initialize_copy method for OpenSSL::PKey::*.</div><div class='add'>+	  [ruby-core:75504] [Bug #12381]</div><div class='ctx'> </div><div class='del'>-	* dmyenc.c (Init_enc): separate from dmyext.c for statically</div><div class='del'>-	  linked extension excluding encoding libraries.</div><div class='add'>+	* test/openssl/test_pkey_dh.rb, test/openssl/test_pkey_dsa.rb,</div><div class='add'>+	  test/openssl/test_pkey_ec.rb, test/openssl/test_pkey_rsa.rb: Test they</div><div class='add'>+	  actually copy the OpenSSL objects, and modifications to cloned object</div><div class='add'>+	  don't affect the original object.</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 21:58:30 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sun Jun 19 16:55:16 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* common.mk (miniprelude.c): It does not depend on prelude.rb now.</div><div class='add'>+	* test/ruby/test_dir_m17n.rb: Skip tests with non-UTF-8 encodings</div><div class='add'>+	  on cygwin. Cygwin can use the Unicode PUA (private use area) to store</div><div class='add'>+	  bytes from non-UTF-8 filenames (see</div><div class='add'>+	  https://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-specialchars),</div><div class='add'>+	  but we are not supporting this. [Bug #12443]</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 21:49:49 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sun Jun 19 15:01:18 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/update-deps: List up files built always in the source directory</div><div class='del'>-	  and source files built always in the build directory.</div><div class='add'>+	* localeinit.c: Fix filesystem encoding for cygwin to UTF-8 (see</div><div class='add'>+	  https://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-unusual)</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 21:24:55 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='add'>+Sun Jun 19 14:31:07 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* NEWS: add obsolete callcc.</div><div class='add'>+	* ext/openssl/ossl_pkey.h, ext/openssl/ossl_pkey_dh.c,</div><div class='add'>+	  ext/openssl/ossl_pkey_dsa.c, ext/openssl/ossl_pkey_rsa.c: A few days</div><div class='add'>+	  ago, OpenSSL changed {DH,DSA,RSA}_get0_*() to take const BIGNUM **.</div><div class='add'>+	  https://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=fd809cfdbd6e32b6b67b68c59f6d55fbed7a9327</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 19:59:49 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Sun Jun 19 11:19:43 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (iseq_compile_each): remove duplicated line event.</div><div class='del'>-	  [Bug #10449]</div><div class='add'>+	* variable.c (rb_path_to_class): consider the string length</div><div class='add'>+	  instead of a terminator.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_settracefunc.rb: add and fix tests.</div><div class='add'>+	* variable.c (rb_path_to_class): search the constant at once</div><div class='add'>+	  instead of checking if defined and then getting it.</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 19:04:50 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Sat Jun 18 14:01:40 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_args.c: fix backtrace location for keyword related exceptions.</div><div class='add'>+	* test/rubygems/test_gem_installer.rb: Fixed broken test with extension</div><div class='add'>+	  build. https://github.com/rubygems/rubygems/pull/1645</div><div class='ctx'> </div><div class='del'>-	  For example, the following program</div><div class='del'>-	    def foo(k1: 1); end # line 1</div><div class='del'>-	    foo(k2: 2)          # line 2</div><div class='del'>-	  causes "unknown keyword: k2 (ArgumentError)".</div><div class='add'>+Sat Jun 18 13:59:54 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	  Before this patch, the backtrace location is only line 2.</div><div class='del'>-	  However, error should be located at line 1 (over line 2 in</div><div class='del'>-	  stack trace). This patch fix this problem.</div><div class='add'>+	* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems</div><div class='add'>+	  HEAD(2c6d256). It contains to update vendored Molinillo to 0.5.0.</div><div class='add'>+	  https://github.com/rubygems/rubygems/pull/1638</div><div class='ctx'> </div><div class='del'>-	* class.c (rb_keyword_error_new): separate exception creation logic</div><div class='del'>-	  from rb_keyword_error(), to use in vm_args.c.</div><div class='add'>+Sat Jun 18 10:13:37 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (rb_arg_error_new): rename to rb_arity_error_new().</div><div class='add'>+	* common.mk (build-ext), ext/extmk.rb: use variable EXTENCS</div><div class='add'>+	  different than ENCOBJS, to get rid of circular dependency.</div><div class='add'>+	  build libencs when linking encodings statically.</div><div class='add'>+	  [ruby-core:75618] [Bug #12401]</div><div class='ctx'> </div><div class='del'>-	* vm_args.c (argument_arity_error): rename to argument_arity_error().</div><div class='add'>+Sat Jun 18 08:52:46 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_args.c (argument_kw_error): added to fix backtrace.</div><div class='add'>+	* ext/stringio/stringio.c (strio_getline): fix pointer index</div><div class='add'>+	  overflow.  reported by Guido Vranken &lt;guido AT guidovranken.nl&gt;.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_keyword.rb: add tests.</div><div class='add'>+Thu Jun 16 16:35:35 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 17:31:58 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* class.c (Init_class_hierarchy): prevent rb_cObject which is the</div><div class='add'>+	  class tree root, from GC.  [ruby-dev:49666] [Bug #12492]</div><div class='ctx'> </div><div class='del'>-	* common.mk (prelude.c): no longer depends on miniruby, since not</div><div class='del'>-	  depending on rbconfig.rb.</div><div class='add'>+Thu Jun 16 12:17:52 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 17:12:14 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* string.c (tr_trans): adjust buffer size by processed and rest</div><div class='add'>+	  lengths, instead of doubling repeatedly.</div><div class='ctx'> </div><div class='del'>-	* common.mk (miniprelude.c): miniruby needs no preludes.</div><div class='add'>+Thu Jun 16 11:15:25 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 17:10:19 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* string.c (tr_trans): consider terminator length and fix heap</div><div class='add'>+	  overflow.  reported by Guido Vranken &lt;guido AT guidovranken.nl&gt;.</div><div class='ctx'> </div><div class='del'>-	* template/prelude.c.tmpl: no code if no prelude code is given.</div><div class='add'>+Thu Jun 16 00:02:32 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 13:11:00 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* ext/openssl/ossl_ocsp.c (ossl_ocspreq_verify, ossl_ocspbres_verify):</div><div class='add'>+	  Use ossl_clear_error() so that they don't print warnings to stderr and</div><div class='add'>+	  leak errors in the OpenSSL error queue. Also, check the return value</div><div class='add'>+	  of OCSP_*_verify() correctly. They can return -1 on verification</div><div class='add'>+	  failure.</div><div class='ctx'> </div><div class='del'>-	* gc.c (objspace_malloc_increase): enable lazy sweep on GC by malloc()</div><div class='del'>-	  (malloc_increase) to make GC incrementally.</div><div class='add'>+Wed Jun 15 19:52:23 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	  This change can increase memory consumption. Report us if you find</div><div class='del'>-	  any problem.</div><div class='add'>+	* ext/openssl/ossl_ocsp.c (ossl_ocspreq_sign, ossl_ocspbres_sign): Allow</div><div class='add'>+	  specifying hash algorithm used in signing. They are hard coded to use</div><div class='add'>+	  SHA-1.</div><div class='add'>+	  Based on a patch provided by Tim Shirley &lt;tidoublemy@gmail.com&gt;.</div><div class='add'>+	  [ruby-core:70915] [Feature #11552] [GH ruby/openssl#28]</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 12:46:38 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/openssl/test_ocsp.rb: Test sign-verify works.</div><div class='ctx'> </div><div class='del'>-	* time.c (time_s_mkutc): [DOC] Time.utc's 10 arguments form</div><div class='del'>-	  doesn't examine wday, yday, isdst and tz.</div><div class='del'>-	  (time_s_mktime): [DOC] Time.mktime's 10 arguments form</div><div class='del'>-	  doesn't examine wday, yday and tz.</div><div class='del'>-	  Suggested by naruse.</div><div class='add'>+Wed Jun 15 01:46:16 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 11:45:33 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* numeric.c: [DOC] fix rdoc directive, and an example of negative</div><div class='add'>+	  value.  [ruby-core:76025] [Bug #12487]</div><div class='ctx'> </div><div class='del'>-	* iseq.c (iseq_data_to_ary): add missing GC guard</div><div class='add'>+Wed Jun 15 01:44:42 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 10:51:59 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* tool/mkconfig.rb: provide Unicode Version information as</div><div class='add'>+	  RbConfig::CONFIG['UNICODE_VERSION'].</div><div class='add'>+	  [ruby-core:75845] [Feature #12460]</div><div class='ctx'> </div><div class='del'>-	* vm_core.h: add rb_thread_t::local_storage_recursive_hash</div><div class='del'>-	  to speed up Thread#[:__recursive_key__] access.</div><div class='del'>-	  [Bug #10511]</div><div class='add'>+Wed Jun 15 00:01:18 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-	* thread.c (threadptr_local_aref): add fast path for</div><div class='del'>-	  :__recursive_data__.</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb</div><div class='add'>+	  (TestComprehensiveCaseFold::read_data): use \A and \z instead of</div><div class='add'>+	  ^ and $ in regexp.</div><div class='ctx'> </div><div class='del'>-	* thread.c (threadptr_recursive_hash, threadptr_recursive_hash_set):</div><div class='del'>-	  add special accessor for recursive hash.</div><div class='add'>+Tue Jun 14 23:43:00 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* cont.c: store/restore local_storage_recursive_hash.</div><div class='add'>+	* include/ruby/backward.h (rb_cFixnum, rb_cBignum): remove the</div><div class='add'>+	  backward compatibility macros, to fail incompatible extension</div><div class='add'>+	  libraries early.  [Bug #12427]</div><div class='ctx'> </div><div class='del'>-	* vm.c: init and mark local_storage_recursive_hash.</div><div class='add'>+Tue Jun 14 22:22:07 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_trace.c (rb_threadptr_exec_event_hooks_orig): clear and restore</div><div class='del'>-	  local_storage_recursive_hash directly.</div><div class='add'>+	* strftime.c (rb_strftime_with_timespec): limit the result string</div><div class='add'>+	  size by the format length, to get rid of unlimited memory use.</div><div class='ctx'> </div><div class='del'>-Thu Nov 27 07:11:00 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Tue Jun 14 22:11:11 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (iseq_calc_param_size): hoist out of iseq_set_arguments</div><div class='add'>+	* ext/openssl/ossl_ocsp.c (ossl_ocspcid_get_issuer_name_hash,</div><div class='add'>+	  ossl_ocspcid_get_issuer_key_hash, ossl_ocspcid_get_hash_algorithm):</div><div class='add'>+	  Add accessor methods OCSP::CertificateId#issuer_name_hash,</div><div class='add'>+	  #issuer_key_hash, #hash_algorithm.</div><div class='add'>+	  Based on a patch provided by Paul Kehrer &lt;paul.l.kehrer@gmail.com&gt;.</div><div class='add'>+	  [ruby-core:48062] [Feature #7181]</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 22:28:12 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/openssl/test_ocsp.rb: Test these new methods.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h (rb_get_kwargs, rb_extract_keywords): export</div><div class='del'>-	  keyword argument functions.</div><div class='add'>+Tue Jun 14 22:07:25 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 21:18:40 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* ext/date/date_strftime.c (date_strftime_with_tmx): reject too</div><div class='add'>+	  large precision to get rid of buffer overflow.</div><div class='add'>+	  reported by Guido Vranken &lt;guido AT guidovranken.nl&gt;.</div><div class='ctx'> </div><div class='del'>-	* test/inlinetest.rb: removed unused test helper.</div><div class='add'>+Tue Jun 14 21:40:42 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 20:47:28 2014  Masaya Tarui  &lt;tarui@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ossl_ocsp.c (ossl_ocspbres_to_der, ossl_ocspcid_to_der):</div><div class='add'>+	  Implement #to_der methods for OCSP::BasicResponse and</div><div class='add'>+	  OCSP::CertificateId.</div><div class='ctx'> </div><div class='del'>-	* ext/continuation/continuation.c (Init_continuation): obsolete callcc.</div><div class='del'>-	  first step of [Feature #10548].</div><div class='add'>+	  (ossl_ocspreq_initialize, ossl_ocspres_initialize): Use GetOCSP*()</div><div class='add'>+	  instead of raw DATA_PTR().</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 19:57:54 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	  (ossl_ocspbres_initialize, ossl_ocspcid_initialize): Allow</div><div class='add'>+	  initializing from DER string.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_gc.rb (test_latest_gc_info): do test separately</div><div class='del'>-	  to avoid mysterious behavior.</div><div class='add'>+	  (Init_ossl_ocsp): Define new #to_der methods.</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 19:54:31 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/openssl/test_ocsp.rb: Test these changes. Also add missing tests</div><div class='add'>+	  for OCSP::{Response,Request}#to_der.</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c (constat_reset): do nothing on non-standard</div><div class='del'>-	  console emulators.  [ruby-core:66471] [Bug #10546]</div><div class='add'>+Tue Jun 14 21:35:00 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 19:44:13 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/openssl_missing.h (DH_set0_pqg, RSA_set0_key):</div><div class='add'>+	  DH_set0_pqg() allows 'q' to be NULL. Fix a typo in RSA_set0_key().</div><div class='add'>+	  Fixes r55285.  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-	* lib/tsort.rb: Returns an enumerator if no block is given.</div><div class='del'>-	  [ruby-core:66270] [Feature #10508] Proposed by Andrey Savchenko.</div><div class='add'>+Mon Jun 14 10:19:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 17:25:45 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* NEWS: describe Integer#digits.</div><div class='ctx'> </div><div class='del'>-	* parse.y (f_label, f_kw, formal_argument_gen): ignore invalid</div><div class='del'>-	  formal argument in keyword argument definition.</div><div class='del'>-	  [ruby-dev:48742] [Bug #10545]</div><div class='add'>+Mon Jun 13 21:09:40 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 15:32:06 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* thread.c (debug_deadlock_check): show thread lock dependency and</div><div class='add'>+	  backtrace [Feature #8214] [ruby-dev:47217]</div><div class='ctx'> </div><div class='del'>-	* compile.c (iseq_set_sequence): use "nop" insn instead of</div><div class='del'>-	  "jump to next insn".</div><div class='del'>-	  https://bugs.ruby-lang.org/issues/8543#change-50085</div><div class='add'>+	* thread.c (thread_status_name): show "sleep_forever" instead of</div><div class='add'>+	  "sleep" if called from inspect.</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 11:01:35 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Mon Jun 13 20:50:07 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.c (iseq_s_compile_file): close IO when done</div><div class='add'>+	* parse.y (reg_named_capture_assign_iter): remove named capture</div><div class='add'>+	  conflict warnings.  it is just annoying rather than useful.</div><div class='add'>+	  [ruby-core:75416] [Bug #12359]</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 06:06:23 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Jun 13 20:04:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* common.mk: encdb.h and transdb.h depends on $(PREP).</div><div class='del'>-	  So prebuild files for them in tarball are useless.</div><div class='add'>+	* numeric.c (rb_int_digits, rb_fix_digits, rb_int_digits_bigbase):</div><div class='add'>+	  Add Integer#digits to extract columns in place-value notation</div><div class='add'>+	  [Feature #12447] [ruby-core:75799]</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 02:08:44 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/ruby/test_integer.rb: Add tests for the above change.</div><div class='ctx'> </div><div class='del'>-	* tool/make-snapshot: Don't generate enc/trans/newline.c in tarball.</div><div class='add'>+	* test/ruby/test_bignum.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 00:41:44 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Jun 13 20:34:53 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* common.mk (prereq): Don't depends on prelude.c and golf_prelude.c.</div><div class='del'>-	  Since they depend on $(PREP) which is miniruby, they are rebuilt</div><div class='del'>-	  after miniruby is built, even if tarball contains them.</div><div class='add'>+	* include/ruby/ruby.h (RUBY_INTEGER_UNIFICATION): macro to tell if</div><div class='add'>+	  Integer is integrated.  [ruby-core:75718][Bug #12427]</div><div class='ctx'> </div><div class='del'>-Wed Nov 26 00:20:48 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* include/ruby/backward.h, internal.h (rb_cFixnum, rb_cBignum):</div><div class='add'>+	  fallback to rb_cInteger.</div><div class='ctx'> </div><div class='del'>-	* template/prelude.c.tmpl: Don't expand RbConfig::Config[...].</div><div class='del'>-	  It is not used now.</div><div class='add'>+	* bignum.c, numeric.c, ext/json/generator/generator.{c,h}: use the</div><div class='add'>+	  macro.</div><div class='ctx'> </div><div class='del'>-	* common.mk: prelude.c and golf_prelude.c doesn't depend on rbconfig.</div><div class='add'>+Mon Jun 13 16:58:53 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov 25 17:07:06 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Add tests for full Unicode</div><div class='add'>+	  swapcase.</div><div class='ctx'> </div><div class='del'>-	* NEWS: add an "Implementation changes" section.</div><div class='add'>+Sun Jun 12 14:48:00 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov 25 16:09:28 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Add tests for ASCII-only</div><div class='add'>+	  swapcase; store calculated values in hashes.</div><div class='ctx'> </div><div class='del'>-	* lib/net/http.rb:  Do not attempt SSL session resumption when the</div><div class='del'>-	  session is expired.  [Bug #10533]</div><div class='add'>+Sun Jun 12 14:05:45 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov 25 15:59:46 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* ext/openssl/ossl_cipher.c (ossl_cipher_get_auth_tag,</div><div class='add'>+	  ossl_cipher_set_auth_tag): Check if the cipher flags retrieved by</div><div class='add'>+	  EVP_CIPHER_CTX_flags() includes EVP_CIPH_FLAG_AEAD_CIPHER to see if</div><div class='add'>+	  the cipher supports AEAD. AES-GCM was the only supported in OpenSSL</div><div class='add'>+	  1.0.1.</div><div class='ctx'> </div><div class='del'>-	* lib/rake:  Update to rake 10.4.0</div><div class='del'>-	* test/rake:  ditto.</div><div class='del'>-	* NEWS:  ditto.</div><div class='add'>+	  (Init_ossl_cipher): Fix doc; OpenSSL::Cipher::AES.new(128, :GCM) can't</div><div class='add'>+	  work.</div><div class='ctx'> </div><div class='del'>-	* test/lib/minitest/unit.rb:  Add compatibility shim for minitest 5.</div><div class='del'>-	  This only provides minitest 5 unit test naming compatibility.</div><div class='add'>+	* ext/openssl/openssl_missing.h: Define EVP_CTRL_AEAD_{GET,SET}_TAG if</div><div class='add'>+	  missing. They are added in OpenSSL 1.1.0, and have the same value as</div><div class='add'>+	  EVP_CTRL_GCM_{GET,SET}_TAG and EVP_CTRL_CCM_{GET,SET}_TAG.</div><div class='ctx'> </div><div class='del'>-Tue Nov 25 15:26:33 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jun 12 13:47:42 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/vcs.rb (get_revisions): use Time.new instead of Time.mktime</div><div class='del'>-	  which does not accept UTC offset, and offset manually for older</div><div class='del'>-	  versions than 1.9.</div><div class='add'>+	* test/openssl/test_engine.rb (test_openssl_engine_builtin,</div><div class='add'>+	  test_openssl_engine_by_id_string): Skip test if 'openssl' engine is</div><div class='add'>+	  already loaded. And test the number increased by Engine.load{_by_id,},</div><div class='add'>+	  not the total count of loaded engines. Previously, we called</div><div class='add'>+	  OpenSSL::Engine.cleanup every time running a test case, but we no</div><div class='add'>+	  longer can do it.</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-Tue Nov 25 12:14:43 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jun 12 09:24:34 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* process.c (Init_process): initialize static IDs before constant</div><div class='del'>-	  definitions.  [ruby-core:66445]</div><div class='add'>+	* file.c (append_fspath): normalize directory name to be appended</div><div class='add'>+	  on OS X.  [ruby-core:75957] [Ruby trunk Bug#12483]</div><div class='add'>+	  https://github.com/rails/rails/issues/25303#issuecomment-224834804</div><div class='ctx'> </div><div class='del'>-Tue Nov 25 10:32:23 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sat Jun 11 23:07:32 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (iseq_build_callinfo_from_hash): hoist out</div><div class='del'>-	  (iseq_build_from_ary_body): shorten callinfo case</div><div class='add'>+	* lib/forwardable.rb (_delegator_method): get rid of a warning which</div><div class='add'>+	  causes test failures introduced at r55376.</div><div class='ctx'> </div><div class='del'>-Mon Nov 24 23:03:21 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='add'>+Sat Jun 11 18:37:58 2016  Marcus Stollsteimer  &lt;sto.mar@web.de&gt;</div><div class='ctx'> </div><div class='del'>-	* gems/bundled_gems: Update to test-unit 3.0.7.</div><div class='add'>+	* ext/json/lib/*.rb: Removed some comments. Because these are unnecessary</div><div class='add'>+	  class description. [ci skip][Bug #12255][ruby-core:74835]</div><div class='ctx'> </div><div class='del'>-Mon Nov 24 12:44:35 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Jun 11 15:19:38 2016  takiy33  &lt;takiy33@users.noreply.github.com&gt;</div><div class='ctx'> </div><div class='del'>-	* process.c (check_exec_redirect_fd, check_exec_redirect),</div><div class='del'>-	  (rb_execarg_addopt): get rid of inadvertent ID pindown.</div><div class='add'>+	* lib/net/smtp.rb: [DOC] Remove dead link on documentation for</div><div class='add'>+	  Japanese of SMTP.  [Fix GH-1380]</div><div class='ctx'> </div><div class='del'>-Mon Nov 24 02:03:40 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Jun 11 15:02:45 2016  Grant Hutchins  &lt;github@nertzy.com&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_setter): preserve encoding of global variable</div><div class='del'>-	  name in error message.</div><div class='add'>+	* string.c (rb_str_oct): [DOC] fix typo, hornored -&gt; honored.</div><div class='add'>+	  [Fix GH-1379]</div><div class='ctx'> </div><div class='del'>-Mon Nov 24 02:03:30 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Jun 11 14:04:19 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.c (rb_insn_operand_intern): preserve encoding of method</div><div class='del'>-	  name in CALL_INFO at disassembling.</div><div class='add'>+	* ext/objspace/objspace_dump.c: generate valid JSON for dump_all.</div><div class='ctx'> </div><div class='del'>-Mon Nov 24 02:02:59 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Jun 11 13:52:33 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* io.c (must_respond_to): preserve encodings of variable name and</div><div class='del'>-	  class name in warning message.</div><div class='add'>+	* lib/forwardable.rb (_delegator_method): remove __send__ call if</div><div class='add'>+	  possible, so that more optimizations will be enabled.</div><div class='ctx'> </div><div class='del'>-Sun Nov 23 10:46:23 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sat Jun 11 11:24:36 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* internal.h (struct rb_execarg): 160 =&gt; 144 bytes on x86-64</div><div class='del'>-	* ruby.c (struct load_file_arg): 48 =&gt; 40 bytes on x86-64</div><div class='del'>-	* vm_args.c (struct args_info): ditto</div><div class='add'>+	* enc/iso_8859.h (SHARP_s): name frequently used codepoint.</div><div class='ctx'> </div><div class='del'>-Sun Nov 23 07:46:54 2014  Andy Maloney  &lt;asmaloney@gmail.com&gt;</div><div class='add'>+Sat Jun 11 09:58:45 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* io.c (rb_io_sysread): Remove redundant assignment of 'n'.</div><div class='del'>-	  [Fix GH-767]</div><div class='add'>+	* enc/iso_8859_1.c: Revert to older version of code.</div><div class='ctx'> </div><div class='del'>-Sat Nov 22 09:48:33 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sat Jun 11 09:46:17 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/make-snapshot: Specify PWD macro for make.</div><div class='del'>-	  PWD environment variable may not exist.</div><div class='add'>+	* enc/iso_8859_1.c: Implement non-ASCII case mapping.</div><div class='ctx'> </div><div class='del'>-Fri Nov 21 11:58:58 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Tests for above.</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb: fall back if canonicalization fails.</div><div class='del'>-	  Thanks Vit Ondruch for the patch!  [ruby-core:65836]</div><div class='add'>+	* string.c: Add iso-8859-1 to supported encodings.</div><div class='ctx'> </div><div class='del'>-	* test/resolv/test_dns.rb: test for patch</div><div class='add'>+Sat Jun 11 09:31:28 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Nov 22 01:11:53 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/forwardable.rb (_delegator_method): leave the backtrace</div><div class='add'>+	  untouched during accessor.  forwardable.rb does not appear in</div><div class='add'>+	  the backtrace during delegated method because of tail-call</div><div class='add'>+	  optimization.</div><div class='ctx'> </div><div class='del'>-	* object.c (rb_mod_const_get, rb_mod_const_defined): ditto.</div><div class='add'>+Sat Jun 11 01:38:31 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* variable.c (rb_const_missing, rb_mod_const_missing): call</div><div class='del'>-	  const_missing without new ID to get rid of inadvertent ID</div><div class='del'>-	  creation.</div><div class='add'>+	* include/ruby/defines.h (GCC_VERSION_SINCE): Fix logic error by</div><div class='add'>+	  adding parentheses. Fix failures of TestMkmf::TestConvertible</div><div class='add'>+	  with GCC 3.4.3 on Solaris 10. [Bug #12479] [ruby-dev:49660]</div><div class='ctx'> </div><div class='del'>-Fri Nov 21 19:32:57 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Fri Jun 10 21:54:24 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* common.mk (ext/ripper/ripper.c): revert about srcdir and top_srcdir.</div><div class='add'>+	* lib/forwardable.rb (Forwardable._delegator_method): extract</div><div class='add'>+	  method generator and deal with non-module objects.</div><div class='add'>+	  [ruby-dev:49656] [Bug #12478]</div><div class='ctx'> </div><div class='del'>-	* common.mk (ext/ripper/ripper.c): use $(PWD) for Unix,</div><div class='del'>-	  $(MAKEDIR) for Windows.</div><div class='add'>+Fri Jun 10 17:35:11 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Nov 21 18:12:37 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* string.c: Special-case :ascii option in rb_str_capitalize_bang and</div><div class='add'>+	  rb_str_swapcase_bang.</div><div class='ctx'> </div><div class='del'>-	* tool/update-deps: Refactored.</div><div class='add'>+Fri Jun 10 17:12:24 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Nov 21 14:25:40 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* string.c: Special-case :ascii option in rb_str_upcase_bang (retry).</div><div class='ctx'> </div><div class='del'>-	* win32/Makefile.sub (top_srcdir): added because lacking this macro</div><div class='del'>-	  causes build error at r48526.</div><div class='add'>+Fri Jun 10 14:48:36 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Nov 21 12:00:58 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* hash.c (get_env_cstr): ensure NUL-terminated.</div><div class='add'>+	  [ruby-dev:49655] [Bug #12475]</div><div class='ctx'> </div><div class='del'>-	* tool/update-deps (in_makefile): Use FILES_NEED_VPATH and</div><div class='del'>-	  FILES_CONFUSING.</div><div class='add'>+	* string.c (rb_str_fill_terminator): return the pointer to the</div><div class='add'>+	  NUL-terminated content.</div><div class='ctx'> </div><div class='del'>-	* ext/objspace/extconf.rb: Add VPATH for id.h</div><div class='add'>+Thu Jun  9 21:42:00 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Nov 21 09:10:23 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ossl_asn1.c (asn1integer_to_num): Use</div><div class='add'>+	  ASN1_ENUMERATED_to_BN() to convert an ASN1_ENUMERATED to a BN.</div><div class='add'>+	  Starting from OpenSSL 1.1.0, ASN1_INTEGER_to_BN() rejects</div><div class='add'>+	  non-ASN1_INTEGER objects. The format of INTEGER and ENUMERATED are</div><div class='add'>+	  almost identical so they behaved in the same way in OpenSSL &lt;= 1.0.2.</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-	* common.mk (ext/ripper/ripper.c): fix dependencies for the case</div><div class='del'>-	  to make ripper.y and id.h under the build directory.</div><div class='add'>+	* test/openssl/test_asn1.rb (test_decode_enumerated): Test that it</div><div class='add'>+	  works.</div><div class='ctx'> </div><div class='del'>-Fri Nov 21 08:42:21 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Thu Jun  9 21:10:04 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-	* common.mk (ext/ripper/ripper.c): id.h in VPATH may exist in the build</div><div class='add'>+	* tool/ifchange: fix timestamp error when target without</div><div class='ctx'> 	  directory.</div><div class='ctx'> </div><div class='del'>-	* common.mk (ext/ripper/ripper.c): $(RM) was not defined.</div><div class='del'>-</div><div class='del'>-Fri Nov 21 00:36:09 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/lib/openssl/x509.rb</div><div class='del'>-	  (OpenSSL::X509::Name::RFC2253DN::StringChar): get rid of a false</div><div class='del'>-	  positive assertion in ripper's test.</div><div class='del'>-</div><div class='del'>-Fri Nov 21 00:29:51 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/imap.rb (Net::IMAP::ResponseParser::BEG_REGEXP): no need to</div><div class='del'>-	  use embed string.</div><div class='del'>-</div><div class='del'>-Fri Nov 21 00:19:17 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/mailto.rb (URI::MailTo::EMAIL_REGEXP): should escape `#`.</div><div class='del'>-</div><div class='del'>-Thu Nov 20 23:17:11 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* tool/update-deps: Insert all dependencies found by compiler.</div><div class='del'>-</div><div class='del'>-Thu Nov 20 15:51:01 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/nkf/depend (nkf.o): add nkf.c as dependency.</div><div class='del'>-	  bsdmake tries to make nkf.o with nkf-utf8/nkf.c without this.</div><div class='del'>-</div><div class='del'>-Thu Nov 20 08:54:56 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (struct parser_params): reduce size by reordering</div><div class='del'>-	  members and an unused member.</div><div class='del'>-</div><div class='del'>-Thu Nov 20 02:44:27 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='del'>-</div><div class='del'>-	* lib/matrix.rb: Vector#independent? and associated class method</div><div class='del'>-	  patch by gogo tanaka [#10451]</div><div class='del'>-</div><div class='del'>-Thu Nov 20 02:32:34 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='del'>-</div><div class='del'>-	* lib/matrix.rb: Add Vector#angle_with</div><div class='del'>-	  Patch by Egunov Dmitriy [#10442]</div><div class='del'>-</div><div class='del'>-Thu Nov 20 02:10:31 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (ripper_flush_string_content, parser_parse_string):</div><div class='del'>-	  preserve parsed string content.  [ruby-dev:48714] [Bug #10437]</div><div class='del'>-</div><div class='del'>-	* parse.y (ripper_new_yylval): abstract function to create ripper</div><div class='del'>-	  wrapper, and make it able to hold another object.</div><div class='del'>-</div><div class='del'>-Thu Nov 20 01:00:59 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (reg_named_capture_assign_gen): use predefined ID</div><div class='del'>-	  instead of rb_intern.</div><div class='del'>-</div><div class='del'>-Thu Nov 20 00:54:57 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* internal.h (ruby_init_setproctitle): Declare here.</div><div class='del'>-</div><div class='del'>-Thu Nov 20 00:26:37 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (parser_here_document): append byte sequence directly to</div><div class='del'>-	  the delayed content instead of creating an intermediate string</div><div class='del'>-	  object.</div><div class='del'>-</div><div class='del'>-Wed Nov 19 21:11:01 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (ext/json/parser/parser.c): don't touch parse.c,</div><div class='del'>-	  ruby repo is a downstream.</div><div class='del'>-</div><div class='del'>-Wed Nov 19 20:38:11 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (ext/ripper/ripper.c): use $(PWD) to get</div><div class='del'>-	  &lt;build-directory&gt;/ext/ripper.</div><div class='del'>-</div><div class='del'>-Wed Nov 19 18:12:17 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* tool/downloader.rb (RubyGems.download): Don't download gem if the</div><div class='del'>-	  version is already downloaded. A gem file is versioned and</div><div class='del'>-	  it must be identical if the version is the same.</div><div class='del'>-</div><div class='del'>-Wed Nov 19 17:59:25 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (ext/ripper/ripper.c): pass build directory as VPATH.</div><div class='del'>-</div><div class='del'>-	* ext/ripper/depend (.y.c): use VPATH for y.tab.c.</div><div class='del'>-</div><div class='del'>-Wed Nov 19 10:07:57 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* template/prelude.c.tmpl (Prelude#translate): strip VPATH prefix</div><div class='del'>-	  from prelude names, so that srcdir differences do not make the</div><div class='del'>-	  generated code different.</div><div class='del'>-</div><div class='del'>-Wed Nov 19 07:45:11 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* win32/win32.c (rb_w32_write): should set the error of</div><div class='del'>-	  GetOverlappedResult()'s, not WriteFile()'s (it's always</div><div class='del'>-	  ERROR_IO_PENDING, of course).</div><div class='del'>-</div><div class='del'>-Tue Nov 18 14:16:47 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_record): add information for debug print.</div><div class='del'>-</div><div class='del'>-Wed Nov 19 04:49:07 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* debug.c (set_debug_option): need the declaration.</div><div class='del'>-</div><div class='del'>-	* debug.c (set_debug_option): use the same macro with the implementation</div><div class='del'>-	  at win32/win32.c.</div><div class='del'>-</div><div class='del'>-Wed Nov 19 04:16:24 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (symbol_list): fix the node type of literal symbol list</div><div class='del'>-	  with no interpolation.  [ruby-core:66343]</div><div class='del'>-</div><div class='del'>-Wed Nov 19 00:26:15 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu Jun  9 19:46:22 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/update-deps: Sort dependencies.</div><div class='add'>+	* ext/openssl/ossl_ssl.c: Add define guards for OPENSSL_NO_EC.</div><div class='add'>+	  SSL_CTX_set_ecdh_auto() is defined even when ECDH is disabled in</div><div class='add'>+	  OpenSSL's configuration. This fixes r55214.</div><div class='ctx'> </div><div class='del'>-Wed Nov 19 00:24:18 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/openssl/test_pair.rb (test_ecdh_curves): Skip if the OpenSSL does</div><div class='add'>+	  not support ECDH.</div><div class='ctx'> </div><div class='del'>-	* enc/encdb.c: Include internal.h.</div><div class='add'>+	* test/openssl/utils.rb (start_server): Ignore error in</div><div class='add'>+	  SSLContext#ecdh_curves=.</div><div class='ctx'> </div><div class='del'>-Tue Nov 18 23:23:45 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu Jun  9 18:12:42 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* internal.h: Gather declarations in non-header files.</div><div class='add'>+	* Makefile.in (un-runnable): fail with proper error message.</div><div class='add'>+	  [ruby-core:75905] [Bug #12472]</div><div class='ctx'> </div><div class='del'>-Tue Nov 18 23:45:52 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu Jun  9 15:32:17 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* debug.c (SET_WHEN): Don't declare debug variables here.</div><div class='del'>-	  ruby_initial_gc_stress_ptr is changed int* to VALUE* at r41406.</div><div class='add'>+	* common.mk (RBCONFIG): use ifchange tool to see if the content is</div><div class='add'>+	  changed and update the timestamp file.</div><div class='ctx'> </div><div class='del'>-	* internal.h (ruby_initial_gc_stress_ptr): Declared.</div><div class='del'>-	  (ruby_enable_coredump): Ditto.</div><div class='add'>+	* tool/mkconfig.rb: remove ifchange features.</div><div class='ctx'> </div><div class='del'>-Tue Nov 18 18:06:43 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* tool/ifchange: make target directory if it does not exist with</div><div class='add'>+	  its parent directories.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/io.h (FMODE_WSPLIT): Removed.  The write() system call</div><div class='del'>-	  is not required to split.  It was useful to avoid whole process</div><div class='del'>-	  blocking in Ruby 1.8 but not useful since write() is invoked without</div><div class='del'>-	  GVL.</div><div class='del'>-	  (FMODE_WSPLIT_INITIALIZED): Ditto.</div><div class='add'>+	* win32/ifchange.bat: drop support for command.com used on old</div><div class='add'>+	  systems.</div><div class='ctx'> </div><div class='del'>-	* io.c (wsplit_p): Removed.</div><div class='del'>-	  (io_writable_length): Removed.</div><div class='del'>-	  (rb_fcntl): Don't update the removed flags.</div><div class='add'>+Thu Jun  9 15:03:35 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov 18 03:23:06 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/extconf.rb: Check for CRYPTO_malloc() and SSL_new().</div><div class='add'>+	  OpenSSL_add_all_digests() and SSL_library_init() are deprecated and</div><div class='add'>+	  converted to macros in OpenSSL 1.1.0.</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-	* object.c (check_setter_id): show the original argument instead</div><div class='del'>-	  of nil on TypeError.</div><div class='add'>+Wed Jun  8 23:09:51 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov 18 03:20:19 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* string.c (rb_str_ascii_casemap): fix compile error.</div><div class='ctx'> </div><div class='del'>-	* symbol.h (is_{local,global,instance,attrset,const,class,junk}_sym):</div><div class='del'>-	  fix ID type names.</div><div class='add'>+Wed Jun  8 22:22:24 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Mon Nov 17 20:17:59 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* string.c: Revert previous commit (possibility of endless loop).</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole_event.c: use typed data.</div><div class='add'>+Wed Jun  8 21:57:41 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Mon Nov 17 12:54:56 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* string.c: Special-case :ascii option in rb_str_upcase_bang.</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems/*, test/rubygems/*: Update to RubyGems 2.4.4</div><div class='del'>-	  master (2f6e42e).</div><div class='add'>+Wed Jun  8 21:28:36 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Mon Nov 17 06:13:06 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* string.c: New static function rb_str_ascii_casemap; special-casing</div><div class='add'>+	  :ascii option in rb_str_upcase_bang and rb_str_downcase_bang.</div><div class='ctx'> </div><div class='del'>-	* proc.c (proc_binding): use the original iseq on a binding from</div><div class='del'>-	  proc from method object to get the location.</div><div class='add'>+	* regenc.c: Fix a bug (wrong use of unnecessary slack at end of string).</div><div class='ctx'> </div><div class='del'>-Sun Nov 16 19:38:10 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* regenc.h -&gt; include/ruby/oniguruma.h: Move declaration of</div><div class='add'>+	  onigenc_ascii_only_case_map so that it is visible in string.c.</div><div class='ctx'> </div><div class='del'>-	* vm_eval.c (rb_current_receiver): new function to return the</div><div class='del'>-	  receiver in the current control frame.  [Feature #10195]</div><div class='del'>-</div><div class='del'>-Sun Nov 16 19:11:04 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/timeout.rb (Timeout::ExitException#exception): rescue</div><div class='del'>-	  UncaughtThrowError which is specific for throw, instead of</div><div class='del'>-	  ArgumentError.</div><div class='del'>-</div><div class='del'>-Sun Nov 16 18:22:18 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* tool/update-deps: warning to disable ccache</div><div class='del'>-</div><div class='del'>-Sun Nov 16 13:11:35 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (CCAN_LIST_INCLUDES): Unused variable removed.</div><div class='del'>-	  (ENCODING_H_INCLUDES): Ditto.</div><div class='del'>-	  (PROBES_H_INCLUDES): Ditto.</div><div class='del'>-	  (VM_CORE_H_INCLUDES): Ditto.</div><div class='del'>-</div><div class='del'>-Sun Nov 16 11:07:25 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_io.rb (test_readpartial_locktmp):</div><div class='del'>-	  remove unnecessary begin/end</div><div class='del'>-</div><div class='del'>-Sun Nov 16 00:45:23 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk: Specify dependencies for generated C sources.</div><div class='del'>-</div><div class='del'>-Sat Nov 15 23:10:45 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk: No need to declare dependencies which</div><div class='del'>-	  will be detected by inference rules.</div><div class='del'>-</div><div class='del'>-Sat Nov 15 20:34:23 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* internal.h: Include ruby.h and ruby/encoding.h to be</div><div class='del'>-	  includable without prior inclusion.</div><div class='del'>-</div><div class='del'>-Sat Nov 15 20:46:44 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_document.rb</div><div class='del'>-	  (REXMLTests::TestDocument::EntityExpansionLimitTest):</div><div class='del'>-	  Group tests by general entity and parameter entity.</div><div class='del'>-</div><div class='del'>-Sat Nov 15 20:43:31 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_document.rb</div><div class='del'>-	  (REXMLTests::TestDocument::EntityExpansionLimitTest): Define</div><div class='del'>-	  test XML in each test method because (1) each XML in used only</div><div class='del'>-	  one test and (2) related data and code should be close.</div><div class='del'>-</div><div class='del'>-Sat Nov 15 20:39:06 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_document.rb</div><div class='del'>-	  (REXMLTests::TestDocument::EntityExpansionLimitTest): Use</div><div class='del'>-	  one test method for one test.</div><div class='del'>-</div><div class='del'>-Sat Nov 15 20:16:59 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_document.rb</div><div class='del'>-	  (REXMLTests::TestDocument::EntityExpansionLimitTest): Use</div><div class='del'>-	  setup and teardown instead of ensure in test.</div><div class='del'>-</div><div class='del'>-Sat Nov 15 20:11:34 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_document.rb (REXMLTests::TestDocument): Group</div><div class='del'>-	  entity expansion limit related tests.</div><div class='del'>-</div><div class='del'>-Sat Nov 15 20:09:00 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_document.rb (REXMLTests::TestDocument::BomTest):</div><div class='del'>-	  Fix wrong parent class. It doesn't need inherit tests in</div><div class='del'>-	  TestDocument class.</div><div class='del'>-</div><div class='del'>-Sat Nov 15 19:48:59 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/mkmf.rb (depend_rules): support comments during a line.</div><div class='del'>-</div><div class='del'>-	* lib/mkmf.rb (depend_rules): apply RULE_SUBST even if the dependency</div><div class='del'>-	  file contains path.</div><div class='del'>-</div><div class='del'>-Sat Nov 15 19:25:46 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk: Remove comments in Dependency lines.</div><div class='del'>-	  Notified by usa.</div><div class='del'>-</div><div class='del'>-	* enc/depend: Ditto.</div><div class='del'>-</div><div class='del'>-	* ext/**/depend: Ditto.</div><div class='del'>-</div><div class='del'>-Sat Nov 15 16:28:05 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (rb_throw_obj): throw UncaughtThrowError instead of</div><div class='del'>-	  ArgumentError.  [Feature #10480]</div><div class='del'>-</div><div class='del'>-Sat Nov 15 14:13:38 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* tool/update-deps: Extend to fix dependencies.</div><div class='del'>-</div><div class='del'>-	* common.mk: Dependencies updated by tool/update-deps.</div><div class='del'>-</div><div class='del'>-	* enc/depend: Ditto.</div><div class='del'>-</div><div class='del'>-	* ext/**/depend: Ditto.</div><div class='del'>-</div><div class='del'>-Fri Nov 14 17:36:48 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* tool/update-deps: Support GNU Make 4.0.</div><div class='del'>-</div><div class='del'>-Fri Nov 14 16:59:53 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (default_proc_for_compat_func): check arguments number and</div><div class='del'>-	  type, and get rid of reentering this default proc.</div><div class='del'>-</div><div class='del'>-Fri Nov 14 16:33:06 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_stat_internal): support compatible layer for</div><div class='del'>-	  GC.stat(symbol) type access.</div><div class='del'>-</div><div class='del'>-Fri Nov 14 16:19:08 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_stat_internal): add compatible layer.</div><div class='del'>-	  From Ruby 2.2, keys of GC.stat are changed [Feature #9924].</div><div class='del'>-	  To provide compatible layer, GC.stat add a default_proc</div><div class='del'>-	  (if default_proc of given Hash object is not set).</div><div class='del'>-</div><div class='del'>-	  At first use of this compatible layer of interpreter process,</div><div class='del'>-	  show a warning message like that:</div><div class='del'>-	  program: GC.stat[:total_allocated_object]</div><div class='del'>-	  warning message: "warning: GC.stat keys were changed from Ruby</div><div class='del'>-	  2.1. In this case, you refer to obsolete `total_allocated_object'</div><div class='del'>-	  (new key is `total_allocated_objects').</div><div class='del'>-	  Please check &lt;https://bugs.ruby-lang.org/issues/9924&gt;</div><div class='del'>-	  for more information."</div><div class='del'>-</div><div class='del'>-	  Please correct my English message :)</div><div class='del'>-</div><div class='del'>-	* hash.c (rb_hash_set_default_proc): export (in internal).</div><div class='add'>+Wed Jun  8 20:33:44 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='add'>+	* include/ruby/intern.h: Remove excess semicolons in PUREFUNC().</div><div class='add'>+	  Fix failure of TestMkmf::TestConvertible on Solaris with</div><div class='add'>+	  Oracle Solaris Studio 12. [ruby-dev:49651] [Bug #12470]</div><div class='ctx'> 	* internal.h: ditto.</div><div class='ctx'> </div><div class='del'>-Fri Nov 14 10:41:25 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: guard by #if/#endif with GC_ENABLE_INCREMENTAL_MARK</div><div class='del'>-	  to hide unused codes.</div><div class='del'>-</div><div class='del'>-	* gc.c: similar to GC_ENABLE_LAZY_SWEEP.</div><div class='del'>-</div><div class='del'>-Fri Nov 14 10:23:35 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (rb_eval_cmd): use pre-defined idCall</div><div class='del'>-</div><div class='del'>-Fri Nov 14 09:25:44 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (rb_yield_splat): add missing GC guard</div><div class='del'>-	  [Bug #10509]</div><div class='del'>-</div><div class='del'>-Fri Nov 14 08:12:40 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: fix build error caused by implicit conversion with clang.</div><div class='del'>-</div><div class='del'>-Fri Nov 14 06:54:06 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* insns.def (opt_succ): remove Time#succ optimization</div><div class='del'>-	  [Feature #10501]</div><div class='del'>-</div><div class='del'>-Fri Nov 14 05:29:46 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: refactoring.</div><div class='add'>+Wed Jun  8 16:03:09 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c: use GC_ENABLE_INCREMENTAL_MARK instead of USE_RINCGC.</div><div class='add'>+	* lib/net/smtp.rb (getok, get_response): raise an ArgumentError when</div><div class='add'>+	  CR or LF is included in a line, because they are not allowed in</div><div class='add'>+	  RFC5321.  Thanks, Jeremy Daer.</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_start): check FORCE_MAJOR_GC.</div><div class='add'>+Tue Jun  7 21:27:25 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Nov 14 04:51:18 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* test/rubygems/*_{cert,cert_32}.pem: Regenerate test certificates for</div><div class='add'>+	  OpenSSL 1.1.0. This is already in upstream.</div><div class='add'>+	  https://github.com/rubygems/rubygems/commit/9be5c53939440a61c4bba73cfffbeb5cfadf72be</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-	* gc.c: Tuning RincGC parameters.</div><div class='add'>+Tue Jun  7 21:27:17 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	  Before this patch, gc_marks_step() marks (white -&gt; grey) fixed</div><div class='del'>-	  number objects. However, this strategy does not fit practical</div><div class='del'>-	  cases, for example too slow to make progress.</div><div class='add'>+	* test/open-uri/test_ssl.rb: Regenerate test certificates. The test CA</div><div class='add'>+	  certificate was incorrectly generated. A CA certificate must have the</div><div class='add'>+	  basic constraints extension with cA bit set to TRUE. OpenSSL &lt;= 1.0.2</div><div class='add'>+	  allowed the error when the certificate is in the trusted store but</div><div class='add'>+	  OpenSSL 1.1.0 no longer does.</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-	  This patch changes this strategy how many objects the</div><div class='del'>-	  gc_marks_step() should handle.</div><div class='add'>+Tue Jun  7 21:20:38 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	  We can estimate how many times gc_marks_step() is called during</div><div class='del'>-	  this major marking (== C) with the free slot number in pooled</div><div class='del'>-	  pages. We also can estimate the living object number (== L)</div><div class='del'>-	  using last marked_slots value. We can solve this problem (how</div><div class='del'>-	  many objects should be process in gc_marks_step()) by L/C.</div><div class='add'>+	* test/openssl/test_x509name.rb: Don't register OID for 'emailAddress'</div><div class='add'>+	  and 'serialNumber'. A recent change in OpenSSL made OBJ_create()</div><div class='add'>+	  reject an already existing OID. They were needed to run tests with</div><div class='add'>+	  OpenSSL 0.9.6 which is now unsupported.</div><div class='add'>+	  https://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=52832e470f5fe8c222249ae5b539aeb3c74cdb25</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-	* gc.c (rb_objspace_t): add rb_objspace_t::rincgc::pooled_slots and</div><div class='del'>-	  step_slots.</div><div class='add'>+	* test/openssl/test_ssl_session.rb (test_server_session): Duplicate</div><div class='add'>+	  SSL::Session before re-adding to the session store. OpenSSL 1.1.0</div><div class='add'>+	  starts rejecting SSL_SESSION once removed by SSL_CTX_remove_session().</div><div class='add'>+	  https://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=7c2d4fee2547650102cd16d23f8125b76112ae75</div><div class='ctx'> </div><div class='del'>-Fri Nov 14 01:26:47 2014  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='add'>+	* test/openssl/test_pkey_ec.rb (setup): Remove X25519 from @keys. X25519</div><div class='add'>+	  is new in OpenSSL 1.1.0 but this is for key agreement and not for</div><div class='add'>+	  signing.</div><div class='ctx'> </div><div class='del'>-	* lib/net/imap.rb (search_response): parse MODSEQ in SEARCH</div><div class='del'>-	  responses properly.  [ruby-core:64203] [Bug #10112]</div><div class='add'>+	* test/openssl/test_pair.rb, test/openssl/test_ssl.rb,</div><div class='add'>+	  test/openssl/utils.rb: Set security level to 0 when using aNULL cipher</div><div class='add'>+	  suites.</div><div class='ctx'> </div><div class='del'>-Fri Nov 14 01:03:17 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/openssl/utils.rb: Use 1024 bits DSA key for client certificates.</div><div class='ctx'> </div><div class='del'>-	* test/lib/envutil.rb: Moved from test/ruby/.</div><div class='add'>+	* test/openssl/test_engine.rb: Run each test in separate process.</div><div class='add'>+	  We can no longer cleanup engines explicitly as ENGINE_cleanup() was</div><div class='add'>+	  removed.</div><div class='add'>+	  https://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=6d4fb1d59e61aacefa25edc4fe5acfe1ac93f743</div><div class='ctx'> </div><div class='del'>-	* test/lib/find_executable.rb: Ditto.</div><div class='add'>+	* ext/openssl/ossl_engine.c (ossl_engine_s_cleanup): Add a note to the</div><div class='add'>+	  RDoc for Engine.cleanup.</div><div class='ctx'> </div><div class='del'>-	* test/lib/memory_status.rb: Ditto.</div><div class='add'>+	* ext/openssl/lib/openssl/digest.rb: Don't define constants for DSS,</div><div class='add'>+	  DSS1 and SHA(-0) when using with OpenSSL 1.1.0. They are removed.</div><div class='ctx'> </div><div class='del'>-	* test/lib/test/unit.rb: require envutil.</div><div class='add'>+	* test/openssl/test_digest.rb, test/openssl/test_pkey_dsa.rb,</div><div class='add'>+	  test/openssl/test_pkey_dsa.rb, test/openssl/test_ssl.rb,</div><div class='add'>+	  test/openssl/test_x509cert.rb, test/openssl/test_x509req.rb: Don't</div><div class='add'>+	  test unsupported hash functions.</div><div class='ctx'> </div><div class='del'>-	* test/: Don't require envutil in test files.</div><div class='add'>+Tue Jun  7 17:49:52 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 13 21:59:58 2014  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive: Change test for encodings</div><div class='add'>+	  without any non-ASCII case conversions from ASCII-only test</div><div class='add'>+	  to full test.</div><div class='ctx'> </div><div class='del'>-	* lib/rexml/document.rb: add REXML::Document#document.</div><div class='del'>-	  reported by Tomas Hoger &lt;thoger@redhat.com&gt; and patched by nahi.</div><div class='add'>+Tue Jun  7 17:18:39 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 13 21:51:56 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* string.c (rb_str_upcase_bang, rb_str_capitalize_bang,</div><div class='add'>+	  rb_str_swapcase_bang): Switch to use primitive.</div><div class='ctx'> </div><div class='del'>-	* test/monitor/test_monitor.rb: Use assert_join_threads.</div><div class='add'>+Tue Jun  7 16:44:16 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 13 21:45:13 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* string.c (rb_str_downcase_bang): Switch to use primitive except if</div><div class='add'>+	  conversion can be done ASCII-only.</div><div class='ctx'> </div><div class='del'>-	* test/openssl: Don't specify port number.</div><div class='add'>+Tue Jun  7 16:13:36 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 13 21:22:35 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive: Add regression tests for</div><div class='add'>+	  current ASCII-only case conversion.</div><div class='ctx'> </div><div class='del'>-	* test/openssl/ssl_server.rb: Unused file removed.</div><div class='del'>-	  It is not used since r16111, Ruby 1.9.1.</div><div class='add'>+Tue Jun  7 15:28:38 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 13 18:50:14 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive: Fix method name</div><div class='add'>+	  (generate_casefold_tests -&gt; generate_case_mapping_tests).</div><div class='ctx'> </div><div class='del'>-	* eval.c (rb_ensure): remove obsolete prot_tag comment.  patch by</div><div class='del'>-	  Jack Danger at [ruby-core:66238].  [misc #10502]</div><div class='add'>+Tue Jun  7 15:05:13 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Nov 13 18:10:38 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* regenc.h/c: Rename onigenc_not_support_case_map to</div><div class='add'>+	  onigenc_ascii_only_case_map.</div><div class='ctx'> </div><div class='del'>-	* vm.c (rb_vm_make_proc_lambda): similar to rb_vm_make_proc() with</div><div class='del'>-	  is_lambda argument.</div><div class='add'>+	* regenc.h: Add definition of onigenc_single_byte_ascii_only_case_map.</div><div class='ctx'> </div><div class='del'>-Thu Nov 13 12:11:18 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* enc/iso_8859_X.c, windows_125X.c, ascii.c, us-ascii.c, koi8_x.c:</div><div class='add'>+	  Replace onigenc_not_support_case_map by</div><div class='add'>+	  onigenc_single_byte_ascii_only_case_map.</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c (rb_w32_fstat{,i64}): speed up.  adjusting</div><div class='del'>-	  timestamps in this function is to get rid of the side effect of</div><div class='del'>-	  ENV["TZ"].  then, if ENV["TZ"] is not set, no need to adjust.</div><div class='del'>-	  this change makes File#stat about 60% faster.</div><div class='add'>+	* enc/big5.c, cp949.c, emacs_mule.c, euc_X.c, gbX.c, shift_jis.c,</div><div class='add'>+	  windows_31j.c: Replace onigenc_not_support_case_map by</div><div class='add'>+	  onigenc_ascii_only_case_map.</div><div class='ctx'> </div><div class='del'>-Thu Nov 13 11:56:12 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jun  7 14:57:09 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* st.c: include "internal.h" for STATIC_ASSERT.</div><div class='add'>+	* ext/openssl/extconf.rb: Check for SSL_CTX_set_min_proto_version()</div><div class='add'>+	  macro added in OpenSSL 1.1.0. Version-specific methods, such as</div><div class='add'>+	  TLSv1_method(), are deprecated in OpenSSL 1.1.0. We need to use</div><div class='add'>+	  version-flexible methods (TLS_*method() or SSLv23_*method()) and</div><div class='add'>+	  disable other protocol versions as necessary.</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-Thu Nov 13 03:56:38 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* ext/openssl/ossl_ssl.c: Use SSL_CTX_set_{min,max}_proto_version() to</div><div class='add'>+	  fix the protocol version.</div><div class='ctx'> </div><div class='del'>-	* gc.c (struct heap_page): trivial packing</div><div class='del'>-	  304 =&gt; 296 bytes on x86-64</div><div class='add'>+Tue Jun  7 12:55:34 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Nov 12 22:50:12 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* regenc.c (onigenc_not_support_case_map): Move to end of file;</div><div class='add'>+	  (onigenc_single_byte_ascii_only_case_map): Add new function.</div><div class='ctx'> </div><div class='del'>-	* gems/bundled_gems: Update to test-unit 3.0.6 and minitest 5.4.3.</div><div class='add'>+Tue Jun  7 09:26:37 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Nov 12 22:30:52 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* regenc.c (onigenc_not_support_case_map): Rewrite to work correctly</div><div class='add'>+	  in ASCII range.</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems/*: Update to RubyGems 2.4.3 master (7b1f684).</div><div class='add'>+Mon Jun  6 23:00:00 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-Wed Nov 12 00:26:37 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* appveyor.yml: Update libressl version to 2.3.5.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_object.rb: Specify an exception class for rescue clause.</div><div class='add'>+Mon Jun  6 18:37:57 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/dbm/test_dbm.rb: Ditto.</div><div class='add'>+	* vm_insnhelper.c (vm_throw_start): check if the iseq is symbol</div><div class='add'>+	  proc, class definition should not be a symbol proc.</div><div class='add'>+	  [ruby-core:75856] [Bug #12462]</div><div class='ctx'> </div><div class='del'>-	* test/gdbm/test_gdbm.rb: Ditto.</div><div class='add'>+Mon Jun  6 18:36:34 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* test/sdbm/test_sdbm.rb: Ditto.</div><div class='add'>+	* string.c: Added UTF-16BE/LE and UTF-32BE/LE to supported encodings</div><div class='add'>+	  for Unicode case mapping.</div><div class='ctx'> </div><div class='del'>-Tue Nov 11 23:43:51 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Tests for above</div><div class='add'>+	  functionality; fixed an encoding issue in assertion error message.</div><div class='ctx'> </div><div class='del'>-	* test/fileutils/test_fileutils.rb: Use assert_join_threads.</div><div class='add'>+Mon Jun  6 17:29:35 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov 11 22:51:14 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Speed up testing for small</div><div class='add'>+	  encodings by preselecting codepoints.</div><div class='ctx'> </div><div class='del'>-	* test/resolv/test_dns.rb: Use assert_join_threads.</div><div class='add'>+Mon Jun  6 17:10:50 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov 11 22:33:08 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl_cipher.c (ossl_cipher_free): Use EVP_CIPHER_CTX_free()</div><div class='add'>+	  to free EVP_CIPHER_CTX allocated by EVP_CIPHER_CTX_new().</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-	* test/net/pop/test_pop.rb: Use assert_join_threads.</div><div class='add'>+Mon Jun  6 13:37:08 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov 11 22:07:20 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* string.c Change rb_str_casemap to use encoding primitive</div><div class='add'>+	  case_map instead of directly calling onigenc_unicode_case_map.</div><div class='ctx'> </div><div class='del'>-	* test/net/http/test_https_proxy.rb: Use assert_join_threads.</div><div class='add'>+Mon Jun  6 13:16:46 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov 11 18:09:11 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb:</div><div class='add'>+	  Remove :lithuanian guard for Unicode case mapping.</div><div class='ctx'> </div><div class='del'>-	* template/prelude.c.tmpl: move from tool/compile_prelude.rb and</div><div class='del'>-	  expand by generic_erb.rb.</div><div class='add'>+Mon Jun  6 10:39:56 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov 11 13:01:31 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/openssl_missing.h: Include ruby/config.h. r55285 added</div><div class='add'>+	  some inline functions but VC does not recognize 'inline' keyword.</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems/commands/contents_command.rb (files_in_default_gem):</div><div class='del'>-	  remove useless sort. show_files will sort the result and</div><div class='del'>-	  another branch, files_in_gem, doesn't sort.</div><div class='del'>-	  it should be removed for consistency.</div><div class='add'>+Mon Jun  6 09:25:34 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/rubygems/test_gem_commands_contents_command.rb</div><div class='del'>-	  (test_execute_default_gem): adjust the sort algorithm with</div><div class='del'>-	  Gem::Commands::ContentsCommand#show_files, which sort items</div><div class='del'>-	  as array of [prefix, basename] not strings.</div><div class='add'>+	* thread.c (thread_start_func_2): report raised exception if</div><div class='add'>+	  report_on_exception flag is set.  [Feature #6647]</div><div class='ctx'> </div><div class='del'>-Tue Nov 11 10:37:09 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Mon Jun  6 01:36:24 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (sym_equal): use rb_obj_equal().</div><div class='del'>-	  rb_obj_equal() is specially optimized in</div><div class='del'>-	  opt_eq_func()@vm_insnhelper.c.</div><div class='add'>+	* ext/openssl/extconf.rb: Check existence of SSL_is_server(). This</div><div class='add'>+	  function was introduced in OpenSSL 1.0.2.</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-	  This fix is made from this discussion:</div><div class='del'>-	  https://www.omniref.com/ruby/2.1.4/symbols/Symbol/%3D%3D#line=8361.</div><div class='add'>+	* ext/openssl/openssl_missing.h: Implement SSL_is_server() if missing.</div><div class='ctx'> </div><div class='del'>-Tue Nov 11 09:38:55 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* ext/openssl/ossl_ssl.c (ssl_info_cb): Use SSL_is_server() to see if</div><div class='add'>+	  the SSL is server. The state machine in OpenSSL was rewritten and</div><div class='add'>+	  SSL_get_state() no longer returns SSL_ST_ACCEPT.</div><div class='ctx'> </div><div class='del'>-	* lib/rdoc/known_classes.rb: reverted regression changes of</div><div class='del'>-	  rdoc known class.</div><div class='add'>+	  (ossl_ssl_cipher_to_ary, ossl_sslctx_session_get_cb): Add some</div><div class='add'>+	  `const`s to suppress warning.</div><div class='ctx'> </div><div class='del'>-Tue Nov 11 00:21:50 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/net/imap/test_imap.rb: Don't ignore exceptions on server</div><div class='del'>-	  threads.</div><div class='del'>-</div><div class='del'>-Mon Nov 10 23:34:13 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/net/ftp/test_ftp.rb (create_ftp_server): Don't ignore</div><div class='del'>-	  exceptions on server thread.</div><div class='del'>-	  Delete read_timeout method call to fix NoMethodError.</div><div class='del'>-</div><div class='del'>-Mon Nov 10 20:20:53 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* win32/win32.c (rb_w32_read): retry with reduced length if cannot to</div><div class='del'>-	  write any data but no error occurs.</div><div class='del'>-</div><div class='del'>-Mon Nov 10 20:04:16 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/webrick/server.rb: Setup shutdown pipe in listen method.</div><div class='del'>-</div><div class='del'>-Mon Nov 10 19:37:09 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* win32/win32.c, include/win32/win32.h (rb_w32_set_nonblock): new</div><div class='del'>-	  function to support nonblock-mode of pipes.</div><div class='del'>-</div><div class='del'>-	* win32/win32.c (rb_w32_read): nonblock-mode pipe returns ERROR_NO_DATA</div><div class='del'>-	  if there is no data, but also returns it if remote-end is closed.</div><div class='del'>-</div><div class='del'>-	* win32/win32.c (rb_w32_write): if cannot to write any data, it may be</div><div class='del'>-	  blocking.</div><div class='del'>-</div><div class='del'>-	* io.c (rb_io_set_nonblock): use rb_w32_set_nonblock for Windows.</div><div class='del'>-</div><div class='del'>-	* ext/io/nonblock/nonblock.c (rb_io_nonblock_set): use ruby's API when</div><div class='del'>-	  setting nonblock-mode.</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_io.rb: test nonblock pipes on Windows.</div><div class='del'>-</div><div class='del'>-Mon Nov 10 17:24:34 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/etc/etc.c (etc_getlogin): set login name encoding properly.</div><div class='del'>-	  [ruby-core:66163] [Bug #10493]</div><div class='del'>-</div><div class='del'>-Mon Nov 10 16:20:42 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rubygems/*.rb: Update to RubyGems master(3e36528).</div><div class='del'>-</div><div class='del'>-Mon Nov 10 16:09:43 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (rb_f_kill): [DOC] mention known signal list.</div><div class='del'>-	  [ruby-core:66162] [Bug #10492]</div><div class='del'>-</div><div class='del'>-Mon Nov 10 14:17:58 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rdoc/*.rb: Update to RDoc 4.2.0.alpha(579a11c)</div><div class='del'>-</div><div class='del'>-Mon Nov 10 12:44:39 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/webrick/server.rb: Less instance variables.</div><div class='del'>-</div><div class='del'>-Mon Nov 10 12:19:43 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/webrick/server.rb (shutdown): Use close() on @shutdown_pipe_w to</div><div class='del'>-	  notify readability on the read side of the pipe.</div><div class='del'>-	  write_nonblock() is not usable for pipe on Windows.</div><div class='del'>-	  (cleanup_shutdown_pipe): Rescue IOError for @shutdown_pipe_w.close.</div><div class='del'>-</div><div class='del'>-Mon Nov 10 07:31:59 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/webrick/server.rb (initialize): Initialize shutdown pipe here</div><div class='del'>-	  to avoid race condition.</div><div class='del'>-	  (cleanup_shutdown_pipe): New private method.</div><div class='del'>-	  (cleanup_listener): Extracted from shutdown method.</div><div class='del'>-	  Call this method from start method to avoid race condition.</div><div class='del'>-</div><div class='del'>-Mon Nov 10 05:57:53 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/webrick/webrick.cgi: Don't use debug mode.</div><div class='del'>-</div><div class='del'>-	* test/webrick/webrick_long_filename.cgi: Ditto.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 23:25:49 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (vm_call_super): allow bound proc method to call super</div><div class='del'>-	  method.</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c (vm_yield_with_cfunc): push defined class and</div><div class='del'>-	  bound proc method entry to the control frame.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 22:46:13 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/open-uri: Test server log in server thread.</div><div class='del'>-</div><div class='del'>-	* test/webrick: Ditto.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 22:28:34 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/webrick/httpstatus.rb: require webrick/accesslog for AccessLog.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 21:03:59 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/webrick: Fix the argument order of assert_equal.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 20:29:01 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/webrick: Store log in an array.</div><div class='del'>-</div><div class='del'>-	* test/net/http: Ditto.</div><div class='del'>-</div><div class='del'>-	* test/open-uri: Ditto.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 18:35:36 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/xmlrpc: Refine log test.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 18:33:33 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* lib/unicode_normalize/normalize.rb: Replaced if-else by</div><div class='del'>-	  case in self.normalized? in parallel to r48309.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 18:07:00 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/xmlrpc: Use assert_join_threads.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 14:06:13 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/xmlrpc: Test webrick error log is empty.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 13:47:02 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (is_incremental_marking): use #if/#else because</div><div class='del'>-	  rb_objspace_t::flags::during_incremental_marking is not defined</div><div class='del'>-	  when GC_ENABLE_INCREMENTAL_MARK is 0.</div><div class='del'>-</div><div class='del'>-	* gc.c (will_be_incremental_marking, is_full_marking): similar fix.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 12:16:22 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/securerandom.rb (SecureRandom.gen_random): separate</div><div class='del'>-	  implementation details and select at the load time.</div><div class='del'>-</div><div class='del'>-Sun Nov  9 12:09:38 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32/lib/win32/registry.rb (Win32::Registry::API#Enum{Value,Key):</div><div class='del'>-	  ditto.</div><div class='add'>+Mon Jun  6 01:18:10 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 11:48:40 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl_asn1.c (decode_bool): Do the same thing as</div><div class='add'>+	  d2i_ASN1_BOOLEAN() does by ourselves. This function is removed in</div><div class='add'>+	  OpenSSL 1.1.0.</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-	* test/net/http: Examine webrick log.</div><div class='add'>+Mon Jun  6 00:34:16 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 11:45:19 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* ext/openssl/extconf.rb: Check existence of accessor functions that</div><div class='add'>+	  don't exist in OpenSSL 0.9.8. OpenSSL 1.1.0 made most of its</div><div class='add'>+	  structures opaque and requires use of these accessor functions.</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-	* gems/bundled_gems: upgraded to test-unit 3.0.5.</div><div class='add'>+	* ext/openssl/openssl_missing.[ch]: Implement them if missing.</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 11:40:50 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl*.c: Use these accessor functions.</div><div class='ctx'> </div><div class='del'>-	* defs/known_errors.def: More errors for FreeBSD.</div><div class='add'>+	* test/openssl/test_hmac.rb: Add missing test for HMAC#reset.</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 11:25:11 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+Mon Jun  6 00:00:13 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gems/bundled_gems: upgraded to power_assert 0.2.0.</div><div class='add'>+	* ext/openssl/openssl_missing.[ch]: Implement EVP_PKEY_get0_*() and</div><div class='add'>+	  {RSA,DSA,EC_KEY,DH}_get0_*() functions.</div><div class='add'>+	  OpenSSL 1.1.0 makes EVP_PKEY/RSA/DSA/DH opaque. We used to provide</div><div class='add'>+	  setter methods for each parameter of each PKey type, for example</div><div class='add'>+	  PKey::RSA#e=, but this is no longer possible because the new API</div><div class='add'>+	  RSA_set0_key() requires the 'n' at the same time. This commit adds</div><div class='add'>+	  deprecation warning to them and adds PKey::*#set_* methods as direct</div><div class='add'>+	  wrapper for those new APIs. For example, 'rsa.e = 3' now needs to be</div><div class='add'>+	  rewritten as 'rsa.set_key(rsa.n, 3, rsa.d)'.</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 10:31:03 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ossl_pkey*.[ch]: Use the new accessor functions. Implement</div><div class='add'>+	  RSA#set_{key,factors,crt_params}, DSA#set_{key,pqg}, DH#set_{key,pqg}.</div><div class='add'>+	  Emit a warning with rb_warning() when old setter methods are used.</div><div class='ctx'> </div><div class='del'>-	* lib/securerandom.rb: set the script encoding to make a string</div><div class='del'>-	  literal in SecureRandom::Kernel32.last_error_message single byte</div><div class='del'>-	  encoding so msg[] works in bytes, since FormatMessage() returns</div><div class='del'>-	  the size in TCHARs, not in characters.</div><div class='add'>+	* test/drb/ut_array_drbssl.rb, test/drb/ut_drb_drbssl.rb,</div><div class='add'>+	  test/rubygems/test_gem_remote_fetcher.rb: Don't set a priv_key for DH</div><div class='add'>+	  object that are used in tmp_dh_callback. Generating a new key pair</div><div class='add'>+	  every time should be fine - actually the private exponent is ignored</div><div class='add'>+	  in OpenSSL &gt;= 1.0.2f/1.0.1r even if we explicitly set.</div><div class='add'>+	  https://www.openssl.org/news/secadv/20160128.txt</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 09:50:22 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sun Jun  5 22:06:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* test/webrick: Refine log tests.</div><div class='add'>+	* configure.in: Fix the timing to detect the appropriate C++ compiler</div><div class='add'>+	  in OS X.</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 08:58:05 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sun Jun  5 21:42:24 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* defs/known_errors.def (EHWPOISON): New errno symbol.</div><div class='del'>-	  It is defined by glibc-2.16.</div><div class='add'>+	* ext/openssl/extconf.rb: Check absence of CRYPTO_lock() to see if the</div><div class='add'>+	  OpenSSL has the new threading API. In OpenSSL &lt;= 1.0.2, an application</div><div class='add'>+	  had to set locking callbacks to use OpenSSL in a multi-threaded</div><div class='add'>+	  environment. OpenSSL 1.1.0 now finds pthreads or Windows threads so we</div><div class='add'>+	  don't need to do something special.</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 05:00:23 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	  Also check existence of *_up_ref(). Some structures in OpenSSL have</div><div class='add'>+	  a reference counter. We used to increment it with CRYPTO_add() which</div><div class='add'>+	  is a part of the old API.</div><div class='ctx'> </div><div class='del'>-	* lib/securerandom.rb (initialize): call the special method for Win32</div><div class='del'>-	  before checking `/dev/urandom` because we know windows doesn't have it.</div><div class='add'>+	* ext/openssl/openssl_missing.h: Implement *_up_ref() if missing.</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 04:01:46 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ossl.c: Don't set locking callbacks if unneeded.</div><div class='ctx'> </div><div class='del'>-	* lib/securerandom.rb (SecureRandom::AdvApi32): split from `initialize`.</div><div class='del'>-	  thanks @zzak to remember it.</div><div class='add'>+	* ext/openssl/ossl_pkey.c, ext/openssl/ossl_ssl.c,</div><div class='add'>+	  ext/openssl/ossl_x509cert.c, ext/openssl/ossl_x509crl.c,</div><div class='add'>+	  ext/openssl/ossl_x509store.c: Use *_up_ref() instead of CRYPTO_add().</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 02:05:33 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sun Jun  5 21:38:13 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* test/net/http/utils.rb: Don't connect to spawned server</div><div class='del'>-	  before actual test.</div><div class='add'>+	* ext/openssl/extconf.rb: Check if RAND_pseudo_bytes() is usable. It is</div><div class='add'>+	  marked as deprecated in OpenSSL 1.1.0.</div><div class='add'>+	  [ruby-core:75225] [Feature #12324]</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 01:51:50 2014  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='add'>+	* ext/openssl/ossl_rand.c: Disable Random.pseudo_bytes if</div><div class='add'>+	  RAND_pseudo_bytes() is unavailable.</div><div class='ctx'> </div><div class='del'>-	* object.c (Module#const_defined?): [DOC] Revise the documentation.</div><div class='del'>-	  Patch by Xavier Noria.</div><div class='del'>-	  [Fixes GH-754] https://github.com/ruby/ruby/pull/754</div><div class='add'>+	* test/openssl/test_random.rb: Don't test Random.pseudo_bytes if not</div><div class='add'>+	  defined.</div><div class='ctx'> </div><div class='del'>-Sun Nov  9 00:37:44 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sun Jun  5 19:06:40 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* test/webrick: Examine log and use assert_join_threads.</div><div class='add'>+	* NEWS: Add news about Unicode-wide case mapping for</div><div class='add'>+	  String/Symbol#upcase/downcase/swapcase/capitalize(!).</div><div class='ctx'> </div><div class='del'>-Fri Nov  7 00:00:12 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jun  5 15:24:33 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* template/unicode_norm_gen.tmpl: expand kompatible_table so that</div><div class='del'>-	  recursive expansion is not needed at runtime.</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb:</div><div class='add'>+	  Remove :lithuanian guard for Unicode case mapping.</div><div class='ctx'> </div><div class='del'>-Thu Nov  6 23:58:40 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jun  5 14:46:34 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* pack.c (pack_pack): escape unprintable characters and preserve</div><div class='del'>-	  the encoding of warning message.</div><div class='add'>+	* string.c: Remove :lithuanian guard for Unicode case mapping.</div><div class='ctx'> </div><div class='del'>-Thu Nov  6 23:55:18 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Jun  4 10:54:52 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (sym_printable): QUOTE() should not raise an exception</div><div class='del'>-	  even on invalid byte sequence.</div><div class='add'>+	* missing/crypt.h (struct crypt_data): remove unnecessary member</div><div class='add'>+	  "initialized".</div><div class='ctx'> </div><div class='del'>-Thu Nov  6 21:44:36 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* missing/crypt.c (des_setkey_r): nothing to be initialized in</div><div class='add'>+	  crypt_data.</div><div class='ctx'> </div><div class='del'>-	* test/test_unicode_normalize.rb: Rename TestNormalize to</div><div class='del'>-	  TestUnicodeNormalize.</div><div class='del'>-	  Define constants under TestUnicodeNormalize.</div><div class='add'>+	* configure.in (struct crypt_data): check for "initialized" in</div><div class='add'>+	  struct crypt_data, which may be only in glibc, and isn't on AIX</div><div class='add'>+	  at least.</div><div class='ctx'> </div><div class='del'>-Thu Nov  6 21:22:59 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sat Jun  4 10:38:39 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/open-uri/test_open-uri.rb: Check empty webrick log.</div><div class='add'>+	* win32/win32.c: unify MAX_PATH, _MAX_PATH, and MAXPATHLEN to</div><div class='add'>+	  PATH_MAX, except for MAX_PATH in get_special_folder for an API</div><div class='add'>+	  limit.</div><div class='ctx'> </div><div class='del'>-Thu Nov  6 19:27:34 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Fri Jun  3 21:27:22 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* re.c (unescape_nonascii): cast -1 for the case char is unsigned char.</div><div class='del'>-	  If char is signed char, for example gcc for ARM or ppc64, it caused</div><div class='del'>-	  infinite loop.</div><div class='del'>-	  http://kmuto.jp/build-ruby/arm/ruby-trunk/log/20141106T013005Z.fail.html.gz</div><div class='del'>-	  http://rubyci.blob.core.windows.net/f19p8/ruby-trunk/log/20141106T090217Z.fail.html.gz</div><div class='add'>+	* ruby.c (process_options): rb_str_conv_enc() never set encoding</div><div class='add'>+	  of the source string, but returns the string itself if the</div><div class='add'>+	  conversion failed.  then the instance variable does not need to</div><div class='add'>+	  be set again.</div><div class='ctx'> </div><div class='del'>-Thu Nov  6 09:53:18 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Fri Jun  3 18:04:37 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/uri/rfc2396_parser.rb (initialize): reduce bytecode size</div><div class='del'>-	  2088 =&gt; 1332 bytes on 32-bit x86</div><div class='add'>+	* ruby.c (process_options): need to duplicate path before passing it to</div><div class='add'>+	  rb_str_conv_enc() because the function might call rb_enc_associate()</div><div class='add'>+	  internally.  this fixes test failures on Windows introduced at r55260.</div><div class='ctx'> </div><div class='del'>-Thu Nov  6 08:49:49 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+Fri Jun  3 17:44:25 2016  Reiner Herrmann  &lt;reiner@reiner-h.de&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/unicode_normalize/normalize.rb: Comment clarification.</div><div class='add'>+	* lib/mkmf.rb (create_makefile): sort lists of source and object</div><div class='add'>+	  files in generated Makefile, unless given by extconf.rb.</div><div class='add'>+	  [Fix GH-1367]</div><div class='ctx'> </div><div class='del'>-Wed Nov  5 23:43:24 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='add'>+Thu Jun  2 21:18:10 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (compile_data_alloc): add padding when strict alignment</div><div class='del'>-	  is required for memory access. Currently, the padding is enabled</div><div class='del'>-	  only when the CPU is 32-bit SPARC and the compiler is GCC.</div><div class='del'>-	  [Bug #9681] [ruby-core:61715]</div><div class='add'>+	* win32/win32.c (get_special_folder): use SHGetPathFromIDListEx if</div><div class='add'>+	  available instead of old SHGetPathFromIDListW, to check the</div><div class='add'>+	  buffer size.</div><div class='ctx'> </div><div class='del'>-	* compile.c (STRICT_ALIGNMENT): defined if strict alignment is required</div><div class='add'>+Thu Jun  2 17:05:19 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (ALIGNMENT_SIZE, ALIGNMENT_SIZE_MASK, PADDING_SIZE_MAX):</div><div class='del'>-	  new macros for alignment word size, bit mask, max size of padding.</div><div class='add'>+	* ruby.c (ruby_init_loadpath_safe): remove MAXPATHLEN restriction</div><div class='add'>+	  for Windows 10.</div><div class='ctx'> </div><div class='del'>-	* compile.c (calc_padding): new function to calculate padding size.</div><div class='add'>+Thu Jun  2 16:51:35 2016  Koichi ITO  &lt;koic.ito@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Wed Nov  5 23:24:45 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* misc/ruby-mode.el (ruby-here-doc-beg-re),</div><div class='add'>+	  (ruby-here-doc-beg-match, ruby-parse-partial): Support for</div><div class='add'>+	  `squiggly heredoc' syntax in ruby-mode.  [Fix GH-1372]</div><div class='ctx'> </div><div class='del'>-	* test/open-uri/test_open-uri.rb: Don't ignore webrick's log.</div><div class='add'>+Thu Jun  2 10:24:48 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Nov  5 19:20:08 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* string.c: Raise ArgumentError when invalid string is detected in</div><div class='add'>+	  case mapping methods.</div><div class='ctx'> </div><div class='del'>-	* lib/webrick/server.rb: Stop listener loop properly.</div><div class='del'>-	  [ruby-core:66085] [Bug #10478] Fixed by Charles Nutter.</div><div class='add'>+	* enc/unicode.c: Check for invalid string and signal with negative</div><div class='add'>+	  length value.</div><div class='ctx'> </div><div class='del'>-Wed Nov  5 17:20:29 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Add tests for above.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/intern.h (rb_disable_super, rb_enable_super): warn</div><div class='del'>-	  as deprecated at build time, instead of ignoring silently or</div><div class='del'>-	  warning at runtime only.</div><div class='add'>+	* test/ruby/test_m17n_comb.rb: Add a message to clarify test failure.</div><div class='ctx'> </div><div class='del'>-Wed Nov  5 16:55:52 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Jun  1 21:41:05 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* proc.c (rb_f_lambda): remove deprecated function, which has been</div><div class='del'>-	  unavailable from extension libraries.</div><div class='add'>+	* ext/openssl/extconf.rb: Check existence of ASN1_TIME_adj(). The old</div><div class='add'>+	  ASN1_TIME_set() is not Year 2038 ready on sizeof(time_t) == 4</div><div class='add'>+	  environment. This function was added in OpenSSL 1.0.0.</div><div class='add'>+	  [ruby-core:45552] [Bug #6571]</div><div class='ctx'> </div><div class='del'>-Wed Nov  5 16:26:58 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ossl_asn1.c (ossl_time_split): Added. Split the argument</div><div class='add'>+	  (Time) into the number of days elapsed since the epoch and the</div><div class='add'>+	  remainder seconds to conform to ASN1_TIME_adj().</div><div class='add'>+	  (obj_to_asn1utime, obj_to_asn1gtime): Use ossl_time_split() and</div><div class='add'>+	  ASN1_*TIME_adj().</div><div class='ctx'> </div><div class='del'>-	* include/ruby/intern.h (rb_clear_cache): mark as deprecated, not</div><div class='del'>-	  only warnings at runtime.</div><div class='add'>+	* ext/openssl/ossl_asn1.h: Add the function prototype for</div><div class='add'>+	  ossl_time_split().</div><div class='ctx'> </div><div class='del'>-Wed Nov  5 15:05:12 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ossl_x509.[ch]: Add ossl_x509_time_adjust(). Similarly to</div><div class='add'>+	  obj_to_asn1*time(), use X509_time_adj_ex() instead of X509_time_adj().</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_{,l,r}strip_bang): rb_str_subseq() will not</div><div class='del'>-	  NUL-terminate the result string, in the future, so it will not</div><div class='del'>-	  be needed in other cases.</div><div class='add'>+	* ext/openssl/ossl_x509cert.c, ext/openssl/ossl_x509crl.c,</div><div class='add'>+	  ext/openssl/ossl_x509revoked.c: Use ossl_x509_time_adjust().</div><div class='ctx'> </div><div class='del'>-Wed Nov  5 14:11:30 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Jun  1 15:58:20 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* common.mk (lib/unicode_normalize/tables.rb): do nothing unless</div><div class='del'>-	  BASERUBY is available.  MINIRUBY cannot load extension libraries,</div><div class='del'>-	  so cannot update Unicode data.</div><div class='add'>+	* configure.in: revert r55237.  replace crypt, not crypt_r, and</div><div class='add'>+	  check if crypt is broken more.</div><div class='ctx'> </div><div class='del'>-Wed Nov  5 12:13:54 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* missing/crypt.c: move crypt_r.c</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_lstrip, rb_str_strip): reduce memory copy by</div><div class='del'>-	  copying necessary part only.</div><div class='add'>+	* string.c (rb_str_crypt): use crypt_r if provided by the system.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_strip_bang, rb_str_strip): ditto.</div><div class='add'>+Wed Jun  1 14:07:53 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Nov  5 12:13:48 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* missing/crypt_r.c (a64toi): initialize statically and fix out of</div><div class='add'>+	  bounds access when salt is not 7bit clean.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_lstrip, rb_str_strip): reduce memory copy by</div><div class='del'>-	  copying necessary part only.</div><div class='add'>+Wed Jun  1 11:34:59 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_strip_bang, rb_str_strip): ditto.</div><div class='add'>+	* win32/Makefile.sub (MISSING): fixed build error introduced at r55237.</div><div class='ctx'> </div><div class='del'>-Wed Nov  5 10:54:19 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Jun  1 09:48:06 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_lstrip_bang, rb_str_rstrip_bang): terminate</div><div class='del'>-	  wchar strings with wchar 0.</div><div class='add'>+	* string.c (rb_str_crypt): use reentrant crypt_r.</div><div class='ctx'> </div><div class='del'>-Tue Nov  4 21:23:22 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Wed Jun  1 09:37:26 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32/lib/Win32API.rb: Fiddle::Importer is defined in</div><div class='del'>-	  fiddle/import.rb and it's not loaded implicitly.</div><div class='add'>+	* missing/crypt.c (des_setkey): void function never returns any value.</div><div class='ctx'> </div><div class='del'>-	* ext/win32/lib/Win32API.rb (Win32API#initialize): `import` is a string.</div><div class='add'>+Wed Jun  1 09:16:22 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32/lib/Win32API.rb (Win32API#initialize):</div><div class='del'>-	  Fiddle::Importer::CALL_TYPE_TO_ABI is private constant.</div><div class='add'>+	* crypt.h: separate header file from missing/crypt.c.</div><div class='ctx'> </div><div class='del'>-Tue Nov  4 21:20:07 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* missing/crypt.c (crypt_r, setkey_r, encrypt_r): add reentrant</div><div class='add'>+	  versions.</div><div class='ctx'> </div><div class='del'>-	* lib/securerandom.rb (SecureRandom.random_bytes): use fiddle directly</div><div class='del'>-	  instead of using Win32API.</div><div class='add'>+Wed Jun  1 02:25:38 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov  4 21:04:30 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* missing/crypt.c: fix size macros to use configured values</div><div class='add'>+	  for platforms long is larger than 32bit.</div><div class='add'>+	  [ruby-core:75792] [Bug #12446]</div><div class='ctx'> </div><div class='del'>-	* test/rubygems/test_gem_request_set_lockfile.rb</div><div class='del'>-	  (test_relative_path_from): driveletter support.</div><div class='add'>+Tue May 31 17:28:46 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Nov  4 16:23:57 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/optparse.rb (OptionParser::Completion.candidate): get rid of</div><div class='add'>+	  nil as key names.  [ruby-core:75773] [Bug #12438]</div><div class='ctx'> </div><div class='del'>-	* test/rubygems/test_gem_remote_fetcher.rb (RemoteFetcherCleanup):</div><div class='del'>-	  close all pooled connections for each tests to fix leaked file</div><div class='del'>-	  descriptors.</div><div class='add'>+	* lib/optparse.rb (OptionParser#make_switch): char class option</div><div class='add'>+	  cannot be NoArgument, default to RequiredArgument.</div><div class='ctx'> </div><div class='del'>-Tue Nov  4 12:51:31 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue May 31 00:30:11 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h (PRIsVALUE), vsnprintf.c (BSD_vfprintf): add</div><div class='del'>-	  RUBY_PRI_VALUE_MARK to reduce danger of accidental conflict with</div><div class='del'>-	  plain "%i".  binary incompatible with extension libraries using</div><div class='del'>-	  PRIsVALUE and built for 2.1 and earlier.  [EXPERIMENTAL]</div><div class='add'>+	* ext/socket/raddrinfo.c (host_str, port_str): Use StringValueCStr</div><div class='add'>+	  instead of (Safe)StringValue, to detect NUL byte in the string.</div><div class='ctx'> </div><div class='del'>-Tue Nov  4 12:33:44 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Mon May 30 22:02:01 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* object.c: fix document of Kernel#String by @suzukaze</div><div class='del'>-	  [fix GH-743][ci skip]</div><div class='add'>+	* ext/openssl/ossl_asn1.c (time_to_time_t): Use NUM2TIMET() instead of</div><div class='add'>+	  NUM2LONG(). time_t may be larger than long.</div><div class='add'>+	  [ruby-core:45552] [Bug #6571]</div><div class='ctx'> </div><div class='del'>-Tue Nov  4 12:21:45 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Mon May 30 21:15:37 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/csv.rb: added documentation for skip_blanks option by @decasia</div><div class='del'>-	  [fix GH-744][ci skip]</div><div class='add'>+	* string.c: Document current behavior for other case mapping methods</div><div class='add'>+	  on String. [ci skip]</div><div class='ctx'> </div><div class='del'>-Tue Nov  4 12:09:18 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Mon May 30 20:00:25 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/open3.rb: fix code formatting in documentation by @JoshCheek</div><div class='del'>-	  [fix GH-747][ci skip]</div><div class='add'>+	* string.c: Document current situation for String#downcase. [ci skip]</div><div class='ctx'> </div><div class='del'>-Tue Nov  4 08:57:37 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Mon May 30 18:29:28 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* encoding.c (enc_memsize): remove unnecessary function</div><div class='del'>-	  [ruby-core:65304]</div><div class='add'>+	* ext/openssl/ossl_ssl.c (ossl_sslctx_s_alloc): Enable the automatic</div><div class='add'>+	  curve selection for ECDH by calling SSL_CTX_set_ecdh_auto(). With</div><div class='add'>+	  this a TLS server automatically selects a curve which both the client</div><div class='add'>+	  and the server support to use in ECDH. This changes the default</div><div class='add'>+	  behavior but users can still disable ECDH by excluding 'ECDH' cipher</div><div class='add'>+	  suites from the cipher list (with SSLContext#ciphers=). This commit</div><div class='add'>+	  also deprecate #tmp_ecdh_callback=. It was added in Ruby 2.3.0. It</div><div class='add'>+	  wraps SSL_CTX_set_tmp_ecdh_callback() which will be removed in OpenSSL</div><div class='add'>+	  1.1.0. Its callback receives two values 'is_export' and 'keylength'</div><div class='add'>+	  but both are completely useless for determining a curve to use in</div><div class='add'>+	  ECDH. The automatic curve selection was introduced to replace this.</div><div class='ctx'> </div><div class='del'>-Mon Nov  3 18:09:39 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	  (ossl_sslctx_setup): Deprecate SSLContext#tmp_ecdh_callback=. Emit a</div><div class='add'>+	  warning if this is in use.</div><div class='ctx'> </div><div class='del'>-	* test/openssl/utils.rb: The default of :ignore_listener_error is</div><div class='del'>-	  changed to false.</div><div class='add'>+	  (ossl_sslctx_set_ecdh_curves): Add SSLContext#ecdh_curves=. Wrap</div><div class='add'>+	  SSL_CTX_set1_curves_list(). If it is not available, this falls back</div><div class='add'>+	  to SSL_CTX_set_tmp_ecdh().</div><div class='ctx'> </div><div class='del'>-Mon Nov  3 14:42:37 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	  (Init_ossl_ssl): Define SSLContext#ecdh_curves=.</div><div class='ctx'> </div><div class='del'>-	* iseq.c (iseq_free): resolve memory leak.</div><div class='add'>+	* ext/openssl/extconf.rb: Check the existence of EC_curve_nist2nid(),</div><div class='add'>+	  SSL_CTX_set1_curves_list(), SSL_CTX_set_ecdh_auto() and</div><div class='add'>+	  SSL_CTX_set_tmp_ecdh_callback().</div><div class='ctx'> </div><div class='del'>-Mon Nov  3 13:49:18 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* iseq.c (iseq_memsize): catch up recent changes.</div><div class='del'>-</div><div class='del'>-Mon Nov  3 13:38:28 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h: change semantics of opt_num and opt_table.</div><div class='del'>-	  `opt_num' was the number of optional parameters + 1.</div><div class='del'>-	  `opt_table' has "opt_num" entries.</div><div class='del'>-</div><div class='del'>-	  Change them to:</div><div class='del'>-	  `opt_num' is the number of optional parameters.</div><div class='del'>-	  `opt_table' has "opt_num + 1" entries.</div><div class='del'>-</div><div class='del'>-	  This change simplify parameter fitting logics.</div><div class='del'>-</div><div class='del'>-	* compile.c: catch up this change.</div><div class='del'>-</div><div class='del'>-	* iseq.c: ditto.</div><div class='del'>-</div><div class='del'>-	* proc.c: ditto.</div><div class='del'>-</div><div class='del'>-	* vm_args.c: ditto.</div><div class='del'>-</div><div class='del'>-Mon Nov  3 11:47:44 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* NEWS: added period into Matrix section. [ci skip]</div><div class='del'>-	  [misc #10446][ruby-core:65987]</div><div class='del'>-</div><div class='del'>-Mon Nov  3 09:43:30 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* vm_args.c: fixed build error with clang</div><div class='del'>-</div><div class='del'>-Mon Nov  3 09:32:46 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/rfc3986_parser.rb (URI::RFC3986_Parser::RFC3986_URI):</div><div class='del'>-	  allow '[' and ']' for URI input (and escape). [Bug #10402]</div><div class='del'>-</div><div class='del'>-	* lib/uri/generic.rb (URI#query=): escape '[', '\', and ']'.</div><div class='del'>-</div><div class='del'>-Mon Nov  3 07:49:34 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h: change iseq parameter data structure.</div><div class='del'>-	  https://bugs.ruby-lang.org/issues/10440#change-49694</div><div class='del'>-</div><div class='del'>-	  * change terminology `arg' to `param'.</div><div class='del'>-	  * move rb_iseq_t::arg_* to rb_iseq_t::param.</div><div class='del'>-	  * move rb_iseq_t::arg_size to rb_iseq_t::param::size.</div><div class='del'>-	  * move rb_iseq_t::argc to rb_iseq_t::param::lead_num.</div><div class='del'>-	  * move rb_iseq_t::arg_opts to rb_iseq_t::param::opt_num.</div><div class='del'>-	  * move rb_iseq_t::arg_rest to rb_iseq_t::param::rest_start.</div><div class='del'>-	  * move rb_iseq_t::arg_post_num to rb_iseq_t::param::post_num.</div><div class='del'>-	  * move rb_iseq_t::arg_post_start to rb_iseq_t::param::post_start.</div><div class='del'>-	  * move rb_iseq_t::arg_block to rb_iseq_t::param::block_start.</div><div class='del'>-	  * move rb_iseq_t::arg_keyword* to rb_iseq_t::param::keyword.</div><div class='del'>-	    rb_iseq_t::param::keyword is allocated only when keyword</div><div class='del'>-	    parameters are available.</div><div class='del'>-	  * introduce rb_iseq_t::param::flags to represent parameter</div><div class='del'>-	    availability. For example, rb_iseq_t::param::flags::has_kw</div><div class='del'>-	    represents that this iseq has keyword parameters and</div><div class='del'>-	    rb_iseq_t::param::keyword is allocated.</div><div class='del'>-	    We don't need to compare with -1 to check availability.</div><div class='del'>-	  * remove rb_iseq_t::arg_simple.</div><div class='del'>-</div><div class='del'>-	* compile.c: catch up this change.</div><div class='del'>-</div><div class='del'>-	* iseq.c: ditto.</div><div class='del'>-</div><div class='del'>-	* proc.c: ditto.</div><div class='del'>-</div><div class='del'>-	* vm.c, vm_args.c, vm_dump.c, vm_insnhelper.c: ditto.</div><div class='del'>-</div><div class='del'>-	* iseq.c (iseq_data_to_ary): support keyword argument.</div><div class='del'>-</div><div class='del'>-Mon Nov  3 03:39:04 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_method.rb: r48239 makes this test green.</div><div class='del'>-</div><div class='del'>-Mon Nov 03 03:02:38 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* rewrite method/block parameter fitting logic to optimize</div><div class='del'>-	  keyword arguments/parameters and a splat argument.</div><div class='del'>-	  [Feature #10440] (Details are described in this ticket)</div><div class='del'>-</div><div class='del'>-	  Most of complex part is moved to vm_args.c.</div><div class='del'>-</div><div class='del'>-	  Now, ISeq#to_a does not catch up new instruction format.</div><div class='del'>-</div><div class='del'>-	* vm_core.h: change iseq data structures.</div><div class='del'>-</div><div class='del'>-	  * introduce rb_call_info_kw_arg_t to represent keyword arguments.</div><div class='del'>-	  * add rb_call_info_t::kw_arg.</div><div class='del'>-	  * rename rb_iseq_t::arg_post_len to rb_iseq_t::arg_post_num.</div><div class='del'>-	  * rename rb_iseq_t::arg_keywords to arg_keyword_num.</div><div class='del'>-	  * rename rb_iseq_t::arg_keyword to rb_iseq_t::arg_keyword_bits.</div><div class='del'>-	    to represent keyword bitmap parameter index.</div><div class='del'>-	    This bitmap parameter shows that which keyword parameters are given</div><div class='del'>-	    or not given (0 for given).</div><div class='del'>-	    It is referred by `checkkeyword' instruction described bellow.</div><div class='del'>-	  * rename rb_iseq_t::arg_keyword_check to rb_iseq_t::arg_keyword_rest</div><div class='del'>-	    to represent keyword rest parameter index.</div><div class='del'>-	  * add rb_iseq_t::arg_keyword_default_values to represent default</div><div class='del'>-	    keyword values.</div><div class='del'>-	  * rename VM_CALL_ARGS_SKIP_SETUP to VM_CALL_ARGS_SIMPLE</div><div class='del'>-	    to represent</div><div class='del'>-	      (ci-&gt;flag &amp; (SPLAT|BLOCKARG)) &amp;&amp;</div><div class='del'>-	      ci-&gt;blockiseq == NULL &amp;&amp;</div><div class='del'>-	      ci-&gt;kw_arg == NULL.</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c, vm_args.c: rewrite with refactoring.</div><div class='del'>-</div><div class='del'>-	  * rewrite splat argument code.</div><div class='del'>-	  * rewrite keyword arguments/parameters code.</div><div class='del'>-	  * merge method and block parameter fitting code into one code base.</div><div class='del'>-</div><div class='del'>-	* vm.c, vm_eval.c: catch up these changes.</div><div class='del'>-</div><div class='del'>-	* compile.c (new_callinfo): callinfo requires kw_arg parameter.</div><div class='del'>-</div><div class='del'>-	* compile.c (compile_array_): check the last argument Hash object or</div><div class='del'>-	  not. If Hash object and all keys are Symbol literals, they are</div><div class='del'>-	  compiled to keyword arguments.</div><div class='del'>-</div><div class='del'>-	* insns.def (checkkeyword): add new instruction.</div><div class='del'>-	  This instruction check the availability of corresponding keyword.</div><div class='del'>-</div><div class='del'>-	  For example, a method "def foo k1: 'v1'; end" is compiled to the</div><div class='del'>-	  following instructions.</div><div class='del'>-</div><div class='del'>-	    0000 checkkeyword     2, 0  # check k1 is given.</div><div class='del'>-	    0003 branchif         9     # if given, jump to address #9</div><div class='del'>-	    0005 putstring        "v1"</div><div class='del'>-	    0007 setlocal_OP__WC__0 3   # k1 = 'v1'</div><div class='del'>-	    0009 trace            8</div><div class='del'>-	    0011 putnil</div><div class='del'>-	    0012 trace            16</div><div class='del'>-	    0014 leave</div><div class='del'>-</div><div class='del'>-	* insns.def (opt_send_simple): removed and add new instruction</div><div class='del'>-	  "opt_send_without_block".</div><div class='del'>-</div><div class='del'>-	* parse.y (new_args_tail_gen): reorder variables.</div><div class='del'>-	  Before this patch, a method "def foo(k1: 1, kr1:, k2: 2, **krest, &amp;b)"</div><div class='del'>-	  has parameter variables "k1, kr1, k2, &amp;b, internal_id, krest",</div><div class='del'>-	  but this patch reorders to "kr1, k1, k2, internal_id, krest, &amp;b".</div><div class='del'>-	  (locate a block variable at last)</div><div class='del'>-</div><div class='del'>-	* parse.y (vtable_pop): added.</div><div class='del'>-	  This function remove latest `n' variables from vtable.</div><div class='del'>-</div><div class='del'>-	* iseq.c: catch up iseq data changes.</div><div class='del'>-</div><div class='del'>-	* proc.c: ditto.</div><div class='del'>-</div><div class='del'>-	* class.c (keyword_error): export as rb_keyword_error().</div><div class='del'>-</div><div class='del'>-	* common.mk: depend vm_args.c for vm.o.</div><div class='del'>-</div><div class='del'>-	* hash.c (rb_hash_has_key): export.</div><div class='del'>-</div><div class='del'>-	* internal.h: ditto.</div><div class='del'>-</div><div class='del'>-Mon Nov  3 02:35:32 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* sample/simple-bench.rb: added to measure performance of simple</div><div class='del'>-	  lines.</div><div class='del'>-</div><div class='del'>-Mon Nov  3 02:33:43 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (obj_info): show T_STRING more details.</div><div class='del'>-</div><div class='del'>-Sun Nov  2 01:30:32 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_ssl.rb: Don't ignore errors on listener threads,</div><div class='del'>-	  as much as possible.</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_ssl_session.rb: Ditto.</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_partial_record_read.rb: Ditto.</div><div class='del'>-</div><div class='del'>-Sat Nov  1 23:11:05 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl/utils.rb (start_server): Don't close sockets before</div><div class='del'>-	  threads finished.</div><div class='del'>-</div><div class='del'>-Sat Nov  1 22:06:24 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_ssl_session.rb (test_ctx_client_session_cb): Don't</div><div class='del'>-	  ignore errors of SSL accept.</div><div class='del'>-	  (test_ctx_server_session_cb): Ditto.</div><div class='del'>-</div><div class='del'>-	* test/openssl/utils.rb (server_loop): Add ignore_ssl_accept_error</div><div class='del'>-	  argument.</div><div class='del'>-	  (start_server): Refine threads waits.</div><div class='del'>-</div><div class='del'>-	* test/ruby/envutil.rb (assert_join_threads): Show a thread before</div><div class='del'>-	  backtrace.</div><div class='del'>-</div><div class='del'>-Sat Nov  1 20:40:18 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl/utils.rb (start_server, server_loop): Use a</div><div class='del'>-	  pipe to stop server instead of shutdown/close a listening socket.</div><div class='del'>-</div><div class='del'>-Sat Nov  1 19:24:59 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/envutil.rb (assert_join_threads): New assertion to</div><div class='del'>-	  join multiple threads without exceptions.</div><div class='del'>-</div><div class='del'>-Sat Nov  1 17:09:32 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* bignum.c (bary_mul_balance_with_mulfunc): Fix free work area</div><div class='del'>-	  location.</div><div class='del'>-	  [ruby-dev:48723] [Bug #10464]</div><div class='del'>-	  [ruby-core:66044] [Bug #10465]</div><div class='del'>-	  Reported by Kohji Nishihama.</div><div class='del'>-</div><div class='del'>-Sat Nov  1 15:45:15 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (parse_atmark): mere atmark and two atmarks without</div><div class='del'>-	  succeeding identifiers are invalid as instance/class variable</div><div class='del'>-	  names.</div><div class='del'>-</div><div class='del'>-Sat Nov  1 06:31:41 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole_variant.c: use typed data.</div><div class='del'>-</div><div class='del'>-Fri Oct 31 13:55:28 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/dl/*: remove DL as it is replaced by Fiddle.</div><div class='del'>-	  [Feature #5458] Thanks to Jonan Scheffler &lt;jonanscheffler@gmail.com&gt;</div><div class='del'>-	  for this patch</div><div class='del'>-</div><div class='del'>-	* test/dl/*: ditto.</div><div class='del'>-</div><div class='del'>-Fri Oct 31 15:26:02 2014  Charles Oliver Nutter  &lt;headius@headius.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_ssl.rb: Add certificate verification chain</div><div class='del'>-	  test from JRuby community.</div><div class='del'>-</div><div class='del'>-Fri Oct 31 18:58:02 2014  Charles Oliver Nutter  &lt;headius@headius.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/psych/test_emitter.rb: Fix line_width test...initial value</div><div class='del'>-	  is impl-specific and attr assignment always returns LHS.</div><div class='del'>-</div><div class='del'>-Fri Oct 31 22:19:30 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/digest/lib/digest.rb (Digest()): This function should now be</div><div class='del'>-	  thread-safe.  If you have a problem with regard to on-demand</div><div class='del'>-	  loading under a multi-threaded environment, preload "digest/*"</div><div class='del'>-	  modules on boot or use this method instead of directly</div><div class='del'>-	  referencing Digest::*. [Bug #9494]</div><div class='del'>-	  cf. https://github.com/aws/aws-sdk-ruby/issues/525</div><div class='del'>-</div><div class='del'>-Fri Oct 31 21:33:17 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/digest/test_digest.rb: Drop #!.  This no longer runs</div><div class='del'>-	  stand-alone because it depends on ruby/envutil.</div><div class='del'>-</div><div class='del'>-Fri Oct 31 17:22:19 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* win32/setup.mak: $(APPEND) with some arguments insert a space before</div><div class='del'>-	  the arguments, so it causes error if the arguments are expected to be</div><div class='del'>-	  a macro definition.  this fix resolve the build error introduced at</div><div class='del'>-	  r48210.</div><div class='del'>-</div><div class='del'>-Fri Oct 31 16:47:35 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/syslog/lib/syslog/logger.rb (Syslog::Logger::VERSION): Bump</div><div class='del'>-	  the VERSION to 2.1.0. [ruby-core:64483] [Bug #10159]</div><div class='del'>-</div><div class='del'>-Fri Oct 31 16:33:46 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/imap.rb (Net::IMAP#fetch): [DOC] Document that</div><div class='del'>-	  Net::IMAP#fetch will return nil instead of an empty array.</div><div class='del'>-</div><div class='del'>-Fri Oct 31 12:54:43 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (.unicode-tables.time): needs Unicode files always,</div><div class='del'>-	  and should update after downloading these files.</div><div class='del'>-	  [ruby-core:66026] [Bug #10461]</div><div class='del'>-</div><div class='del'>-Fri Oct 31 10:16:42 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* .travis.yml: reverted r48199, it's unrelated configuration.</div><div class='del'>-</div><div class='del'>-Fri Oct 31 09:58:14 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/test_unicode_normalize.rb: added unicode version number to</div><div class='del'>-	  test data location.</div><div class='del'>-</div><div class='del'>-Fri Oct 31 09:56:41 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* .gitignore: ignored unicode data with version directories.</div><div class='del'>-</div><div class='del'>-Fri Oct 31 09:35:30 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* .travis.yml: tweak build scripts for unicode_normalize.rb.</div><div class='del'>-</div><div class='del'>-Thu Oct 30 18:47:04 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk: fix for the case ALWAYS_UPDATE_UNICODE=no</div><div class='del'>-</div><div class='del'>-Thu Oct 30 13:23:23 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* tool/downloader.rb: changed Unicode data download location</div><div class='del'>-	  from latest Unicode version to Unicode 7.0.0.</div><div class='del'>-</div><div class='del'>-Thu Oct 30 11:16:13 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c (vm_callee_setup_arg{_complex,}): try conversion</div><div class='del'>-	  by to_ary for a lambda, as well as a proc.</div><div class='del'>-	  [ruby-core:65887] [Bug #9605]</div><div class='del'>-</div><div class='del'>-Wed Oct 29 21:13:23 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (gettable_gen): warn circular argument reference, for</div><div class='del'>-	  transition from 2.1 and earlier.  [ruby-core:65990] [Bug #10314]</div><div class='del'>-</div><div class='del'>-Wed Oct 29 20:41:01 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (parser_params): remove unused member `cur_mid`.</div><div class='del'>-	  this has been taken over by `in_def` since 1.6.</div><div class='del'>-</div><div class='del'>-Wed Oct 29 14:44:27 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* load.c (rb_f_load): path name needs to be transcoded to OS path</div><div class='del'>-	  encoding.  [ruby-list:49994]</div><div class='del'>-</div><div class='del'>-Wed Oct 29 11:48:23 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (__builtin_setjmp): disable with gcc/clang earlier</div><div class='del'>-	  than 4.3 on Mac OS X.  [ruby-core:65174] [Bug #10272]</div><div class='del'>-</div><div class='del'>-Wed Oct 29 11:43:43 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='del'>-</div><div class='del'>-	* lib/matrix.rb: Generalize Vector#cross_product to arbitrary</div><div class='del'>-	  dimensions</div><div class='del'>-	  based on a patch by gogo tanaka [#10074]</div><div class='del'>-</div><div class='del'>-Wed Oct 29 11:43:11 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='del'>-</div><div class='del'>-	* lib/matrix.rb: Add Matrix#adjucate</div><div class='del'>-	  patch by gogo tanaka [#10056]</div><div class='del'>-</div><div class='del'>-Wed Oct 29 11:42:33 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='del'>-</div><div class='del'>-	* lib/matrix.rb: Add aliases for Vector#cross &amp; dot</div><div class='del'>-	  patch by gogo tanaka [#10352]</div><div class='del'>-</div><div class='del'>-Wed Oct 29 10:00:18 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* gems/bundled_gems: Update latest version of bundled gems.</div><div class='del'>-</div><div class='del'>-Tue Oct 28 16:52:07 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (install_sighandler): remove rb_disable_interrupt and</div><div class='del'>-	  rb_enable_interrupt calls</div><div class='del'>-	  (init_sigchld): ditto</div><div class='del'>-	  (Init_signal): disable and enable interrupt once around all</div><div class='del'>-	  install_sighandler and init_sigchld to reduce syscalls at start</div><div class='del'>-	  [Feature #9345] [ruby-core:59480]</div><div class='del'>-</div><div class='del'>-Tue Oct 28 16:22:41 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ruby.c (process_options, load_file_internal2): should not</div><div class='del'>-	  require other files when dump option is given.</div><div class='del'>-	  [ruby-dev:48712] [Bug #10435]</div><div class='del'>-</div><div class='del'>-Tue Oct 28 14:51:38 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in: remove apple-gcc4.2 from CC candidates.</div><div class='del'>-</div><div class='del'>-Mon Oct 27 20:13:37 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rexml/entity.rb: keep the entity size within the limitation.</div><div class='del'>-	  reported by Willis Vandevanter &lt;will@silentrobots.com&gt; and</div><div class='del'>-	  patched by nahi.</div><div class='del'>-</div><div class='del'>-Mon Oct 27 17:17:24 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* proc.c (method_proc): the receiver of binding from method should</div><div class='del'>-	  be same as the receiver of the method.</div><div class='del'>-	  [ruby-core:65917] [Bug #10432]</div><div class='del'>-</div><div class='del'>-Mon Oct 27 16:26:37 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_super.rb: add a test to check block passing.</div><div class='del'>-</div><div class='del'>-Mon Oct 27 15:59:26 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: is_incremental_marking(), will_be_incremental_marking():</div><div class='del'>-	  use `&amp;&amp;' with GC_ENABLE_INCREMENTAL_MARK instead of using</div><div class='del'>-	  #if/#else/#endif.</div><div class='del'>-</div><div class='del'>-Mon Oct 27 13:40:11 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_sweep_rest): sweep rest pages regardless of whether</div><div class='del'>-	  lazy sweep is enabled or not.  based on the patch by Masahiro</div><div class='del'>-	  Ide at [ruby-dev:48706].  [Bug #10431]</div><div class='del'>-</div><div class='del'>-Mon Oct 27 11:18:32 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_process.rb (test_deadlock_by_signal_at_forking):</div><div class='del'>-	  reduce garbage during forks</div><div class='del'>-</div><div class='del'>-Sun Oct 25 12:26:26 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* template/insns.inc.tmpl, insns_info.inc.tmpl, known_errors.inc.tmpl,</div><div class='del'>-	  minsns.inc.tmpl: fixed path of generating script.</div><div class='del'>-</div><div class='del'>-Sun Oct 26 12:24:15 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/ripper/lib/ripper/sexp.rb (Ripper.sexp, Ripper.sexp_raw):</div><div class='del'>-	  return nil on error.  [ruby-dev:48678] [Bug #10405]</div><div class='del'>-</div><div class='del'>-Sun Oct 25 11:24:24 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* string.c: improved comment.</div><div class='del'>-</div><div class='del'>-Sun Oct 26 07:40:11 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole.c (ole_val2variant, ole_invoke): refactoring.</div><div class='del'>-	  use ole_variant2variant to convert WIN32OLE_VARIANT object to</div><div class='del'>-	  VARIANT object.</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole_variant.c: refactoring. add</div><div class='del'>-	  ole_variant2variant.</div><div class='del'>-	* ext/win32ole/win32ole_variant.h: ditto.</div><div class='del'>-</div><div class='del'>-Sat Oct 25 22:28:17 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* io.c (io_binwrite_string): Test writev() failure.</div><div class='del'>-</div><div class='del'>-Sat Oct 25 20:19:19 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* test/test-unicode_normalize.rb: added test_us_ascii.</div><div class='del'>-</div><div class='del'>-Sat Oct 25 20:09:09 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* lib/unicode_normalize/normalize.rb: added US_ASCII</div><div class='del'>-	  as trivially supported encoding (is always normalized,</div><div class='del'>-	  and may appear mixed in with UTF-8 or other Unicode</div><div class='del'>-	  encodings).</div><div class='del'>-</div><div class='del'>-Sat Oct 25 20:01:01 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* test/test-unicode_normalize.rb: added</div><div class='del'>-	  test_raise_exception_for_non_unicode_encoding.</div><div class='del'>-</div><div class='del'>-Sat Oct 25 19:30:30 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* test/test-unicode_normalize.rb: removed unused function.</div><div class='del'>-</div><div class='del'>-Sat Oct 25 18:41:41 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* template/unicode_norm_gen.tmpl: Adjusted name of generating file.</div><div class='del'>-</div><div class='del'>-Fri Oct 24 22:49:42 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (parser_yylex): dispatch newline and space at fluent</div><div class='del'>-	  interface, so that the following identifier does not include the</div><div class='del'>-	  space.  [ruby-dev:48684] [Bug #10411]</div><div class='del'>-</div><div class='del'>-Fri Oct 24 20:41:36 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (check_reserved_signal_): fix write count since r47991.</div><div class='del'>-</div><div class='del'>-Thu Oct 23 21:42:54 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* hash.c (rb_hash_delete): now does not call the block given to</div><div class='del'>-	  the current method.  [ruby-core:65861] [Bug #10413]</div><div class='del'>-</div><div class='del'>-Thu Oct 23 19:13:26 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_method.c (rb_method_entry_make): warn redefinition only for</div><div class='del'>-	  already defined methods, but not for undefined methods.</div><div class='del'>-	  [ruby-dev:48691] [Bug #10421]</div><div class='del'>-</div><div class='del'>-Thu Oct 23 17:19:04 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rexml/source.rb (REXML::IOSource#encoding_updated): Fix a</div><div class='del'>-	  bug that can't parse XML correctly when</div><div class='del'>-	  Encoding.default_internal is different with XML</div><div class='del'>-	  encoding. REXML::Source converts XML encoding on read. So IO</div><div class='del'>-	  should not convert XML encoding.</div><div class='del'>-	  Based on patch by NAKAMURA Usaku.</div><div class='del'>-	  [ruby-dev:48686] [Bug #10418]</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_encoding.rb</div><div class='del'>-	  (REXMLTests::EncodingTester#test_parse_utf16_with_utf8_default_internal):</div><div class='del'>-	  Add the for the above case.</div><div class='del'>-</div><div class='del'>-Thu Oct 23 16:29:02 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_encoding.rb</div><div class='del'>-	  (REXMLTests::EncodingTester#test_parse_utf16): Use meaningful</div><div class='del'>-	  test name. "ticket" in the old test name means the ticket in</div><div class='del'>-	  REXML's issue tracker. The REXML's issue tracker was gone. So</div><div class='del'>-	  "ticket" is meaningless.</div><div class='del'>-</div><div class='del'>-	* test/rexml/data/ticket_110_utf16.xml: Rename to ...</div><div class='del'>-	* test/rexml/data/utf16.xml: ... this.</div><div class='del'>-</div><div class='del'>-Thu Oct 23 16:18:11 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_encoding.rb</div><div class='del'>-	  (REXMLTests::EncodingTester#test_ticket_110): Fix expected and</div><div class='del'>-	  actual order.</div><div class='del'>-	  Patch by NAKAMURA Usaku. Thanks!!!</div><div class='del'>-</div><div class='del'>-Thu Oct 23 10:47:16 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* insns.def (getlocal,setlocal): add comment to def/opt_operand.def</div><div class='del'>-</div><div class='del'>-Thu Oct 23 10:22:41 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_process.rb (test_deadlock_by_signal_at_forking):</div><div class='del'>-	  use IO#wait_readable instead of timeout</div><div class='del'>-</div><div class='del'>-Thu Oct 23 10:22:24 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_process.rb (test_deadlock_by_signal_at_forking):</div><div class='del'>-	  ensure exit! during fork failure</div><div class='del'>-</div><div class='del'>-Thu Oct 23 10:21:21 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* NEWS: Added String#unicode_normalize(|!|d?) [ci skip]</div><div class='del'>-</div><div class='del'>-Thu Oct 23 03:41:51 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* class.c (unknown_keyword_error): delete expected keywords</div><div class='del'>-	  directly from raw table, so that the given block is not called.</div><div class='del'>-	  [ruby-core:65837] [Bug #10413]</div><div class='del'>-</div><div class='del'>-Thu Oct 23 02:33:01 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (update-unicode): invert dependency to run every times.</div><div class='del'>-	  [ruby-core:65842] [Bug #10415]</div><div class='del'>-</div><div class='del'>-	* common.mk (after-update): update files under source tree.</div><div class='del'>-	  [ruby-core:65840] [Bug #10414]</div><div class='del'>-</div><div class='del'>-Wed Oct 22 22:38:59 2014  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/lib/openssl/ssl.rb (DEFAULT_PARAMS): override</div><div class='del'>-	  options even if OpenSSL::SSL::OP_NO_SSLv3 is not defined.</div><div class='del'>-	  this is pointed out by Stephen Touset. [ruby-core:65711] [Bug #9424]</div><div class='del'>-</div><div class='del'>-Wed Oct 22 21:31:56 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (prelude.c): add dependency to LIB_SRCS because</div><div class='del'>-	  enc/prelude.rb requires lib/unicode_normalize.rb, and it's also</div><div class='del'>-	  requires lib/unicode_normalize/tables.rb (=LIB_SRCS).</div><div class='del'>-</div><div class='del'>-Wed Oct 22 21:09:51 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (nacl_cv_cpu_nick): fix typo in PNaCl.</div><div class='del'>-	  (XCFLAGS) Add -isystem flag to pnacl and nacl-newlib</div><div class='del'>-	  (CXX): added</div><div class='del'>-</div><div class='del'>-	* nacl/GNUmakefile.in (CXX): Added</div><div class='del'>-	  (PPROGRAM): Use clang++ instead of clang because libnacl_io</div><div class='del'>-	  depends on c++ std lib.</div><div class='del'>-</div><div class='del'>-Wed Oct 22 21:07:32 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (build-ext): avoid trying to build dynamic libraries</div><div class='del'>-	  if configured --with-static-linked-ext.</div><div class='del'>-</div><div class='del'>-Wed Oct 22 20:33:33 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk: Fixed grammar in comment [ci skip]</div><div class='del'>-</div><div class='del'>-Wed Oct 22 19:18:18 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* tool/unicode_norm_gen.rb: Fixed escaping of backslash and</div><div class='del'>-	  double quote ('\\\&amp;' -&gt; "\\\\\\\&amp;"; double quoted string</div><div class='del'>-	  is needed to make \&amp; mean last match; double double</div><div class='del'>-	  backslashes are needed because of two layers of escaping).</div><div class='del'>-</div><div class='del'>-Wed Oct 22 18:13:29 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/test-unicode_normalize.rb: as often said, ruby is sometimes built</div><div class='del'>-	  at non-srcdir.</div><div class='del'>-</div><div class='del'>-Wed Oct 22 18:12:12 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* test/test-unicode_normalize.rb: Adjusted path for test</div><div class='del'>-	  data file (now ../enc/unicode/data/NormalizationTest.txt).</div><div class='del'>-</div><div class='del'>-Wed Oct 22 18:07:07 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* test/test-unicode_normalize.rb: Removed explicit require,</div><div class='del'>-	  changed method names, adjusted copyright.</div><div class='del'>-</div><div class='del'>-Wed Oct 22 18:00:00 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* test/test-unicode_normalize.rb: Importing from</div><div class='del'>-	  https://github.com/duerst/eprun/blob/master/test/test_normalize.rb.</div><div class='del'>-	  (removing trailing whitespace, fixing EOLs and adding EOL property)</div><div class='del'>-</div><div class='del'>-Wed Oct 22 08:21:09 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='del'>-</div><div class='del'>-	* nacl/pepper_main.c (Instance_DidCreate): mount devfs and rebind fd 0</div><div class='del'>-	  .. 2 so that stderr goes to the console of the browser.</div><div class='del'>-</div><div class='del'>-Wed Oct 22 03:47:43 2014  KOSAKI Motohiro  &lt;kosaki.motohiro@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/etc/etc.c (etc_nprocessors_affin): maximum "n" should be 16384.</div><div class='del'>-</div><div class='del'>-Wed Oct 22 03:37:00 2014  KOSAKI Motohiro  &lt;kosaki.motohiro@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/etc/etc.c (etc_nprocessors_affin): minor spell fix.</div><div class='del'>-</div><div class='del'>-Wed Oct 22 03:33:58 2014  KOSAKI Motohiro  &lt;kosaki.motohiro@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/etc/etc.c (etc_nprocessors_affin): optimize memory usage a</div><div class='del'>-	  bit. Typical rubyist never use 8k cpus machine.</div><div class='del'>-</div><div class='del'>-Wed Oct 22 00:01:09 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (XCFLAGS): Add include path for NaCl libraries.</div><div class='del'>-	  (XLDFLAGS): ditto.</div><div class='del'>-	  (NACL_LIB_PATH): new substitution</div><div class='del'>-</div><div class='del'>-	* nacl/nacl-config.rb: support NACL_LIB_PATH</div><div class='del'>-</div><div class='del'>-	* nacl/package.rb: ditto.</div><div class='del'>-</div><div class='del'>-	* nacl/pepper_main.c: replace old implementations with nacl_io.</div><div class='del'>-</div><div class='del'>-	* nacl/GNUmakefile.in: link nacl_io to pepper_ruby</div><div class='del'>-</div><div class='del'>-	* ruby.c (rb_load_file): remove __attribute__((weak)) because the old</div><div class='del'>-	  override hack was replaced with nacl_io.</div><div class='del'>-</div><div class='del'>-	* file.c (rb_file_load_ok): ditto.</div><div class='del'>-</div><div class='del'>-Tue Oct 21 17:32:32 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk: Adding explicit creation of directory</div><div class='del'>-	  enc/unicode/data because git doesn't handle empty</div><div class='del'>-	  directories. [patch by Masahiro Ide, filed with r48073]</div><div class='del'>-</div><div class='del'>-Tue Oct 21 17:12:12 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* lib/unicode_normalize/tables.rb: Committing to make version</div><div class='del'>-	  update easier and more predictable, and reducing compilation</div><div class='del'>-	  time.</div><div class='del'>-</div><div class='del'>-Tue Oct 21 15:56:56 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* lib/unicode_normalize/normalize.rb: Added comment to point to</div><div class='del'>-	  relevant portion of Unicode standard for Hangul (de)composition</div><div class='del'>-	  identifiers and algorithm.</div><div class='del'>-</div><div class='del'>-Tue Oct 21 11:49:16 2014  Andreas Schwab  &lt;schwab@suse.de&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (mark_current_machine_context) [__mc68000__]: Update stack</div><div class='del'>-	  marking.</div><div class='del'>-	  (rb_gc_mark_machine_stack) [__mc68000__]: Also handle it here.</div><div class='del'>-</div><div class='del'>-Mon Oct 20 23:59:38 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* enc/prelude.rb: we sometimes run ruby without library path (especially</div><div class='del'>-	  for test), so should permit to run ruby if unicode_normalize.rb is</div><div class='add'>+	* ext/openssl/openssl_missing.[ch]: Implement EC_curve_nist2nid() if</div><div class='ctx'> 	  missing.</div><div class='ctx'> </div><div class='del'>-Mon Oct 20 23:57:58 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (lib/unicode_normalize/tables.rb): enable running (n)make</div><div class='del'>-	  in non-srcdir.</div><div class='del'>-</div><div class='del'>-Mon Oct 20 23:58:04 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* tool/downloader.rb: add -a option to always download regardless</div><div class='del'>-	  existing files.</div><div class='del'>-</div><div class='del'>-Mon Oct 20 23:18:18 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/mkmf.rb: no need to convert path separator for COPY because it's</div><div class='del'>-	  ruby -run cp and it can treat '/' on any platform.</div><div class='del'>-</div><div class='del'>-Mon Oct 20 19:54:54 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* config.mk: Added missing data files as targets for</div><div class='del'>-	  prerequisite update_unicode.</div><div class='del'>-</div><div class='del'>-Mon Oct 20 19:06:06 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+	* test/openssl/test_pair.rb (test_ecdh_callback): Use</div><div class='add'>+	  EnvUtil.suppress_warning to suppress deprecated warning.</div><div class='ctx'> </div><div class='del'>-	* lib/unicode_normalize.rb: revert r48046. The s in sIndex</div><div class='del'>-	  is not hungarian notation. The variable name sIndex is</div><div class='del'>-	  directly taken from the relevant part of the Unicode</div><div class='del'>-	  Standard, where it is written SIndex and stands for</div><div class='del'>-	  'syllable index'. See pp. 144/145 of</div><div class='del'>-	  http://www.unicode.org/versions/Unicode7.0.0/ch03.pdf.</div><div class='add'>+	  (test_ecdh_curves): Test that SSLContext#ecdh_curves= works.</div><div class='ctx'> </div><div class='del'>-Mon Oct 20 12:46:46 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+	* test/openssl/utils.rb (start_server): Use SSLContext#ecdh_curves=.</div><div class='ctx'> </div><div class='del'>-	* lib/unicode_normalize.rb: removing unnecessary 'self'.</div><div class='add'>+Mon May 30 16:28:53 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Oct 20 12:37:37 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+	* ext/socket/raddrinfo.c (host_str, port_str): use RSTRING_LEN</div><div class='add'>+	  instead of strlen, since RSTRING_PTR StringValueCStr may not be</div><div class='add'>+	  NUL-terminated when SHARABLE_MIDDLE_SUBSTRING=1.  reported by</div><div class='add'>+	  @tmtms, http://twitter.com/tmtms/status/736910516229005312</div><div class='ctx'> </div><div class='del'>-	* lib/unicode_normalize.rb: change method names</div><div class='del'>-	  in commented-out code. Followup to r48027.</div><div class='add'>+Mon May 30 16:20:26 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Oct 20 02:23:27 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* string.c (str_fill_term): return new pointer reallocated by</div><div class='add'>+	  filling terminator.</div><div class='ctx'> </div><div class='del'>-	* variable.c (rb_ivar_get), vm_insnhelper.c (vm_getivar): improve</div><div class='del'>-	  instance variable retrieval performance by checking ruby_verbose</div><div class='del'>-	  before call of rb_warning and evaluation of its argument.</div><div class='del'>-	  [ruby-core:65786] [Feature #10396]</div><div class='add'>+Mon May 30 14:54:58 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Oct 19 23:31:29 2014  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='add'>+	* ext/stringio/stringio.c (enc_subseq): share the return value and</div><div class='add'>+	  the buffer as possible.</div><div class='ctx'> </div><div class='del'>-	* lib/unicode_normalize.rb: (unicode_normalize!): change method name.</div><div class='del'>-	  catch up the method name change at r48014. [Feature #10084]</div><div class='add'>+Mon May 30 14:50:25 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Oct 19 20:05:58 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* string.c (str_substr, rb_str_aref): refactor not to create</div><div class='add'>+	  unnecessary empty string.</div><div class='ctx'> </div><div class='del'>-	* ext/tk/lib/tkextlib/tile/treeview.rb: fix syntax error.</div><div class='add'>+	* string.c (str_byte_substr, str_byte_aref): ditto.</div><div class='ctx'> </div><div class='del'>-Sun Oct 19 18:39:39 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+Mon May 30 00:09:37 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* enc/prelude.rb: Added automatic loading of</div><div class='del'>-	  lib/unicode_normalize.rb. This makes sure that all</div><div class='del'>-	  the methods that are available on String are</div><div class='del'>-	  available without explicit require.</div><div class='add'>+	* ext/-test-/auto_ext.rb: fixed a heedless bug introduced at r55198.</div><div class='add'>+	  this change will make RubyCI green.</div><div class='ctx'> </div><div class='del'>-Sun Oct 19 18:35:35 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+Sun May 29 22:58:19 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/unicode_normalize/normalize.rb: Added a missing</div><div class='del'>-	  file extension in require statement.</div><div class='add'>+	* regexec.c (ONIGENC_IS_MBC_ASCII_WORD): redefine optimized one.</div><div class='add'>+	  WORD of Ruby's ascii compatible encoding is always [a-zA-Z0-9_].</div><div class='ctx'> </div><div class='del'>-Sun Oct 19 18:13:13 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+Sun May 29 22:44:19 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* common.mk: Added a rule to generate</div><div class='del'>-	  lib/unicode_normalize/tables.rb. This rule still</div><div class='del'>-	  needs to be integrated into the overall make process.</div><div class='add'>+	* regexec.c (match_at): make compilers optimize harder.</div><div class='ctx'> </div><div class='del'>-Sun Oct 19 17:53:53 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+Sun May 29 12:08:42 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/unicode_normalize.rb: Changed to dynamic</div><div class='del'>-	  loading of actual normalization code and tables.</div><div class='add'>+	* ext/-test-/auto_ext.rb (auto_ext): utility method to create</div><div class='add'>+	  extension libraries for tests.</div><div class='ctx'> </div><div class='del'>-Sun Oct 19 17:37:37 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+Sat May 28 20:40:57 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/unicode_normalize.rb: Small documentation fix.</div><div class='add'>+	* misc/ruby-additional.el (ruby-insert-heredoc-code-block): insert</div><div class='add'>+	  here document code block for assert_separately mainly.</div><div class='ctx'> </div><div class='del'>-Sun Oct 19 17:26:26 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+Sat May 28 20:34:19 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/unicode_normalize.rb: Added documentation.</div><div class='add'>+	* test/test_unicode_normalize.rb: Add test to check for availability of</div><div class='add'>+	  Unicode data file; refactoring; fix an error with tests for destructive</div><div class='add'>+	  method (unicode_normalize!).</div><div class='ctx'> </div><div class='del'>-Sun Oct 19 11:09:09 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+Sat May 28 19:08:36 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/unicode_norm_gen.rb, lib/unicode_normalize.rb:</div><div class='del'>-	  File name change from lib/unicode_normalize/normalize_tables.rb</div><div class='del'>-	  to lib/unicode_normalize/tables.rb.</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Add error messages to tests</div><div class='add'>+	  for data file availability; refactoring.</div><div class='ctx'> </div><div class='del'>-Sun Oct 19 10:12:12 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+Sat May 28 14:00:10 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/unicode_normalize.rb: Changing method names, see</div><div class='del'>-	  https://bugs.ruby-lang.org/issues/10084#note-7</div><div class='add'>+	* ext/openssl/lib/openssl/ssl.rb (SSLSocket): Move the implementation of</div><div class='add'>+	  SSLSocket#initialize to C. Initialize the SSL (OpenSSL object) in it.</div><div class='add'>+	  Currently this is delayed until ossl_ssl_setup(), which is called from</div><div class='add'>+	  SSLSocket#accept or #connect. Say we call SSLSocket#hostname= with an</div><div class='add'>+	  illegal value. We expect an exception to be raised in #hostname= but</div><div class='add'>+	  actually we get it in the later SSLSocket#connect. Because the SSL is</div><div class='add'>+	  not ready at #hostname=, the actual call of SSL_set_tlsext_host_name()</div><div class='add'>+	  is also delayed.</div><div class='add'>+	  This also fixes: [ruby-dev:49376] [Bug #11724]</div><div class='ctx'> </div><div class='del'>-Sun Oct 19 10:10:10 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* lib/unicode_normalize.rb: Changing module name.</div><div class='del'>-</div><div class='del'>-Sun Oct 19 10:08:08 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* lib/unicode_normalize.rb: Changing require statement,</div><div class='del'>-	  adjusting copyright.</div><div class='del'>-</div><div class='del'>-Sun Oct 19 10:04:04 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* lib/unicode_normalize.rb: Importing from</div><div class='del'>-	  https://github.com/duerst/eprun/blob/master/lib/string_normalize.rb.</div><div class='del'>-	  (removing trailing whitespace, fixing EOLs and adding EOL property)</div><div class='del'>-</div><div class='del'>-Sun Oct 19 09:56:56 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* tool/unicode_norm_gen.rb: Changed module name.</div><div class='del'>-</div><div class='del'>-Sun Oct 19 09:48:48 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* lib/unicode_normalize/normalize.rb: Changed module name,</div><div class='del'>-	  adjusted copyright.</div><div class='del'>-</div><div class='del'>-Sun Oct 19 09:38:38 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* lib/unicode_normalize/normalize.rb: Importing from</div><div class='del'>-	  https://github.com/duerst/eprun/blob/master/lib/normalize.rb.</div><div class='del'>-</div><div class='del'>-Sat Oct 18 20:40:52 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h, proc.c, vm_backtrace.c, vm_trace.c:</div><div class='del'>-	  remove rb_binding_new_with_cfp, and use rb_vm_make_binding instead.</div><div class='del'>-</div><div class='del'>-Sat Oct 18 20:38:48 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h, vm.c, proc.c: fix GC mark miss on bindings.</div><div class='del'>-	  [ruby-dev:48616] [Bug #10368]</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_eval.rb: add a test code.</div><div class='del'>-</div><div class='del'>-Fri Oct 17 22:47:11 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* pack.c (pack_unpack): Add casts for char references for 'u'.</div><div class='del'>-	  Fix line ending recognition algorithm.</div><div class='del'>-</div><div class='del'>-Fri Oct 17 21:49:52 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* pack.c (pack_unpack): Add casts for char references for 'b' and 'h'.</div><div class='del'>-</div><div class='del'>-Fri Oct 17 17:50:10 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* Avoid undefined behaviors found by gcc -fsanitize=undefined.</div><div class='del'>-	  gcc (Debian 4.9.1-16) 4.9.1</div><div class='del'>-</div><div class='del'>-	* string.c (rb_str_sum): Avoid undefined behavior.</div><div class='del'>-</div><div class='del'>-Fri Oct 17 17:43:50 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* Avoid undefined behaviors found by gcc -fsanitize=undefined.</div><div class='del'>-	  gcc (Debian 4.9.1-16) 4.9.1</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h (INT2FIX): Avoid undefined behavior.</div><div class='del'>-</div><div class='del'>-	* node.h (nd_set_line): Ditto.</div><div class='del'>-</div><div class='del'>-	* pack.c (encodes): Ditto.</div><div class='del'>-	  (pack_unpack): Ditto.</div><div class='del'>-</div><div class='del'>-	* regint.h (BIT_STATUS_AT): Ditto.</div><div class='del'>-	  (BS_BIT): Ditto.</div><div class='del'>-</div><div class='del'>-	* time.c (time_mdump): Ditto.</div><div class='del'>-	  (time_mload): Ditto.</div><div class='del'>-</div><div class='del'>-	* vm_core.h (VM_FRAME_MAGIC_MASK): Ditto.</div><div class='del'>-</div><div class='del'>-	* vm_trace.c (recalc_add_ruby_vm_event_flags): Ditto.</div><div class='del'>-</div><div class='del'>-Fri Oct 17 15:06:49 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* re.c (unescape_nonascii): make dynamically compiled US-ASCII</div><div class='del'>-	  regexps ASCII-8BIT encoding if binary (hexadecimal, control,</div><div class='del'>-	  meta) escapes are contained, as well as literal regexps.</div><div class='del'>-	  [ruby-dev:48626] [Bug #10382]</div><div class='del'>-</div><div class='del'>-Fri Oct 17 03:05:08 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/-ext-/bug_reporter/test_bug_reporter.rb</div><div class='del'>-	  (test_bug_reporter_add): revert r47972</div><div class='del'>-	* test/ruby/test_rubyoptions.rb (test_segv_test): revert r47971</div><div class='del'>-	  [ruby-core:65764]</div><div class='del'>-</div><div class='del'>-Thu Oct 16 23:17:40 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (rb_sigaltstack_size): double default size to get rid</div><div class='del'>-	  of heap corruption by alternate stack overflow in SEGV handler.</div><div class='del'>-	  typically happened at fprintf() in control_frame_dump().</div><div class='del'>-</div><div class='del'>-Thu Oct 16 22:43:12 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_backtrace.c (id2str): Fix a variable name.</div><div class='del'>-	  [ruby-dev:48642] [Bug #10389]</div><div class='del'>-</div><div class='del'>-Thu Oct 16 20:01:26 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/envutil.rb (assert_pattern_list): Show number of matched</div><div class='del'>-	  patterns and characters.</div><div class='del'>-</div><div class='del'>-Thu Oct 16 16:26:09 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* cont.c (fiber_store): fix WIN32 fibers</div><div class='del'>-	  [ruby-core:65745] [ruby-core:65758]</div><div class='del'>-</div><div class='del'>-Thu Oct 16 15:05:07 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (parser_here_document): do not append already appended</div><div class='del'>-	  and disposed code fragment.  [ruby-dev:48647] [Bug #10392]</div><div class='del'>-</div><div class='del'>-Thu Oct 16 10:35:33 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/-ext-/bug_reporter/test_bug_reporter.rb</div><div class='del'>-	  (test_bug_reporter_add): fix race</div><div class='del'>-</div><div class='del'>-Thu Oct 16 10:09:02 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_rubyoptions.rb (test_segv_test): fix race</div><div class='del'>-</div><div class='del'>-Thu Oct 16 09:17:48 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* cont.c (rb_fiber_t): fix compile error caused by move to</div><div class='del'>-	  vm_core.h at r47964.  [Feature #10341]</div><div class='del'>-</div><div class='del'>-Thu Oct 16 08:58:11 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_process.rb (test_deadlock_by_signal_at_forking):</div><div class='del'>-	  avoid killing wrong parent</div><div class='del'>-</div><div class='del'>-Thu Oct 16 08:40:04 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* cont.c (fiber_store): restore references to next_fib (fix typo)</div><div class='del'>-</div><div class='del'>-Thu Oct 16 08:26:08 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* cont.c (fiber_store): remove references to nextfib</div><div class='del'>-	  fix build when FIBER_USE_NATIVE is 0</div><div class='del'>-</div><div class='del'>-Thu Oct 16 06:51:35 2014  Knut Franke  &lt;Knut.Franke@gmx.de&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h: declare rb_fiber_t typedef</div><div class='del'>-	  (rb_thread_t): fiber and root_fiber become rb_fiber_t * (from VALUE)</div><div class='del'>-	* vm.c (rb_thread_mark): use rb_fiber_mark_self</div><div class='del'>-	* cont.c (rb_fiber_t): prev becomes rb_fiber_t * (from VALUE)</div><div class='del'>-	  (cont_mark, cont_free): simplify conditions</div><div class='del'>-	  (rb_fiber_mark_self): new function</div><div class='del'>-	  (fiber_mark): use rb_fiber_mark_self</div><div class='del'>-	  (cont_save_thread, cont_restore_thread): inline</div><div class='del'>-	  (cont_restore_thread): simplify</div><div class='del'>-	  (fiber_setcontext): simplify conditions</div><div class='del'>-	  (rb_cont_call): remove dereference</div><div class='del'>-	  (fiber_t_alloc): update for rb_fiber_t-&gt;prev type change</div><div class='del'>-	  (rb_fiber_start): ditto</div><div class='del'>-	  (fiber_current): extract from rb_fiber_current</div><div class='del'>-	  (return_fiber): move, simplify type checks</div><div class='del'>-	  (rb_fiber_current): use fiber_current</div><div class='del'>-	  (fiber_store): simplify type checks</div><div class='del'>-	  (fiber_switch): ditto, simplify call to fiber_setcontext,</div><div class='del'>-	   use fiber_current</div><div class='del'>-	  (rb_fiber_transfer): update for type changes</div><div class='del'>-	  (rb_fiber_terminate): move, use fiber_switch</div><div class='del'>-	  (rb_fiber_resume): update for type changes</div><div class='del'>-	  (rb_fiber_reset_root_local_storage): ditto</div><div class='del'>-	  (rb_fiber_yield): use rb_fiber_switch instead of rb_fiber_transfer</div><div class='del'>-	  (rb_fiber_m_transfer): ditto</div><div class='del'>-	  [ruby-core:65518] [Feature #10341]</div><div class='del'>-</div><div class='del'>-Thu Oct 16 06:25:29 2014  Knut Franke  &lt;Knut.Franke@gmx.de&gt;</div><div class='del'>-</div><div class='del'>-	* cont.c (rb_context_t): comment on saved_thread</div><div class='del'>-	  (cont_save_thread): sparse copy</div><div class='del'>-	  (cont_init): copy extra fields</div><div class='del'>-	  (fiber_init): use current thread VM stack size</div><div class='del'>-	  [ruby-core:65518] [Feature #10341]</div><div class='del'>-</div><div class='del'>-Thu Oct 16 06:13:09 2014  Knut Franke  &lt;Knut.Franke@gmx.de&gt;</div><div class='del'>-</div><div class='del'>-	* cont.c (cont_capture): remove unnecessary variable</div><div class='del'>-	  [ruby-core:65518] [Feature #10341]</div><div class='del'>-</div><div class='del'>-Thu Oct 16 05:02:31 2014  Knut Franke  &lt;Knut.Franke@gmx.de&gt;</div><div class='del'>-</div><div class='del'>-	* cont.c (fiber_store, fiber_switch): simplify</div><div class='del'>-	  [ruby-core:65518] [Feature #10341]</div><div class='del'>-</div><div class='del'>-Thu Oct 16 04:28:41 2014  Knut Franke  &lt;Knut.Franke@gmx.de&gt;</div><div class='del'>-</div><div class='del'>-	* cont.c (rb_fiber_t): remove prev_fiber/next_fiber</div><div class='del'>-	  (fiber_link_join, fiber_link_remove): remove functions</div><div class='del'>-	  (fiber_free, fiber_init, root_fiber_alloc):</div><div class='del'>-	   remove references to removed fields and functions</div><div class='del'>-	  [ruby-core:65518] [Feature #10341]</div><div class='del'>-</div><div class='del'>-Wed Oct 15 22:08:37 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/etc/etc.c (etc_nprocessors_affin): Test CPU_ALLOC availability.</div><div class='del'>-	  CentOS 5 don't have CPU_ALLOC().</div><div class='del'>-</div><div class='del'>-Wed Oct 15 18:26:19 2014  KOSAKI Motohiro  &lt;kosaki.motohiro@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/etc/etc.c (etc_nprocessors_affinity): use sched_getaffinity</div><div class='del'>-	  for getting precious number of available cpus.</div><div class='del'>-</div><div class='del'>-	* ext/etc/etc.c (etc_nprocessors): use etc_nprocessors_affinity if</div><div class='del'>-	  possible.</div><div class='del'>-</div><div class='del'>-	  [Feature #10267] etc-nprocessors-kosaki2.patch</div><div class='del'>-</div><div class='del'>-Wed Oct 15 17:53:28 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/envutil.rb (assert_pattern_list) Renamed from</div><div class='del'>-	  assert_regexp_list.</div><div class='del'>-	  Show multiline string in multi lines.</div><div class='del'>-</div><div class='del'>-	* test/-ext-/bug_reporter/test_bug_reporter.rb: Use</div><div class='del'>-	  assert_pattern_list.</div><div class='del'>-</div><div class='del'>-Wed Oct 15 12:26:58 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/envutil.rb (assert_regexp_list): New assertion method.</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_rubyoptions.rb: Use assert_regexp_list.</div><div class='del'>-</div><div class='del'>-Wed Oct 15 07:21:09 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* enum.c: min(n) drops elements bigger than the n-th maximum element.</div><div class='del'>-	  (struct nmin_data): New field to record the n-th maximum element, limit</div><div class='del'>-	  (nmin_filter): Update limit field.</div><div class='del'>-	  (nmin_i): Drop too big elements.</div><div class='del'>-	  (nmin_run): Initialize limit field.</div><div class='del'>-</div><div class='del'>-Wed Oct 15 07:00:14 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_optimization.rb (test_string_size): new test</div><div class='del'>-</div><div class='del'>-Wed Oct 15 06:51:13 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_optimization.rb (test_string_eq_neq): new test</div><div class='del'>-	  (test_string_ltlt): ditto</div><div class='del'>-</div><div class='del'>-Wed Oct 15 06:50:29 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_optimization.rb (test_hash_aset_with):</div><div class='del'>-	  assert assignment</div><div class='del'>-</div><div class='del'>-Wed Oct 15 04:56:27 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (rb_obj_id): [DOC] Fix typo, clean up sentence, and wrap cols</div><div class='del'>-</div><div class='del'>-Wed Oct 15 04:53:30 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* error.c: [DOC] Fix case of type in exception message by @tricknotes</div><div class='del'>-	  [Fixes GH-740] https://github.com/ruby/ruby/pull/740</div><div class='del'>-</div><div class='del'>-	* object.c: ditto</div><div class='del'>-</div><div class='del'>-Tue Oct 14 21:39:16 2014  Vit Ondruch  &lt;vondruch@redhat.com&gt;</div><div class='del'>-</div><div class='del'>-	* tool/rbinstall.rb (gem): Fix permissions of bundled gems</div><div class='del'>-	  specification files.  [ruby-core:65700] [Bug #10383]</div><div class='del'>-</div><div class='del'>-Tue Oct 14 19:15:31 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole_record.c: use typed data.</div><div class='del'>-</div><div class='del'>-Tue Oct 14 16:23:12 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* symbol.c (global_symbols): make ids two-dimensional array of</div><div class='del'>-	  strings and symbols, for write-barrier.</div><div class='del'>-</div><div class='del'>-	* symbol.c (global_symbols): make IDs immortal always, instead</div><div class='del'>-	  of treating dynamic symbols as IDs.</div><div class='del'>-</div><div class='del'>-	* iseq.c, marshal.c, string.c: use rb_str_intern instead of</div><div class='del'>-	  rb_str_dynamic_intern.</div><div class='del'>-</div><div class='del'>-	* symbol.c (rb_str_intern): rename rb_str_dynamic_intern.</div><div class='del'>-</div><div class='del'>-Tue Oct 14 10:19:10 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_optimization.rb (test_string_freeze): new test</div><div class='del'>-	  (test_hash_aref_with): ditto</div><div class='del'>-	  (test_hash_aset_with): ditto</div><div class='del'>-</div><div class='del'>-Tue Oct 14 01:27:54 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* enum.c (nmin_run): max(n) and max_by(n) returns an array in</div><div class='del'>-	  descending order.</div><div class='del'>-	  [ruby-core:65452] Suggested by David Grayson.</div><div class='del'>-</div><div class='del'>-Mon Oct 13 20:44:49 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (update-gems): chdir to the target directory and then</div><div class='del'>-	  add the tool directory to load paths, for older BASERUBY.</div><div class='del'>-	  [Bug #10372][ruby-core:65630]</div><div class='del'>-</div><div class='del'>-Mon Oct 13 17:53:01 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/xmlrpc/parser.rb: added new parser class using libxml-ruby gem.</div><div class='del'>-	  [Feature #9379][ruby-core:59633]</div><div class='del'>-	* lib/xmlrpc/config.rb: ditto.</div><div class='del'>-</div><div class='del'>-Mon Oct 13 16:32:56 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/find.rb (Find.find): Call to_path for arguments to obtain</div><div class='del'>-	  strings.</div><div class='del'>-	  [ruby-core:63713] [Bug #10035] Reported by Herwin.</div><div class='del'>-</div><div class='del'>-Mon Oct 13 15:42:25 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk: use relative load path for bundled_gems directory.</div><div class='del'>-	  [Bug #10372][ruby-core:65630]</div><div class='del'>-</div><div class='del'>-Mon Oct 13 08:44:06 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* README.EXT: [DOC] fix example missing typedef with patch by</div><div class='del'>-	  @steveklabnik [Fixes GH-739] https://github.com/ruby/ruby/pull/739</div><div class='del'>-</div><div class='del'>-	* README.EXT.ja: ditto.</div><div class='del'>-</div><div class='del'>-Mon Oct 13 06:52:09 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* array.c (ary_recycle_hash): add RB_GC_GUARD</div><div class='del'>-	  (rb_ary_diff): remove volatile</div><div class='del'>-	  [Bug #10369]</div><div class='del'>-</div><div class='del'>-Mon Oct 13 03:20:23 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* ext/date/date_core.c: [DOC] Clean up whitespace, examples, and typos</div><div class='del'>-	  in date_core based on a patch by @vipulnsward [Fixes GH-724]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/724</div><div class='del'>-</div><div class='del'>-Mon Oct 13 02:39:26 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (remove_duplicate_keys): should not simply eliminate all</div><div class='del'>-	  value nodes, which may have side effects.</div><div class='del'>-	  [ruby-core:65625] [Bug #10315]</div><div class='del'>-</div><div class='del'>-Sun Oct 12 10:39:16 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c: [DOC] fix typo by @yui-knk [Fixes GH-738]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/738</div><div class='del'>-</div><div class='del'>-Sun Oct 12 09:24:15 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/test/unit.rb: Hide skips by default.</div><div class='del'>-</div><div class='del'>-Sun Oct 12 01:37:11 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='del'>-</div><div class='del'>-	* file.c: include sys/time.h only if HAVE_SYS_TIME_H</div><div class='del'>-</div><div class='del'>-Sat Oct 11 22:29:40 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='del'>-</div><div class='del'>-	* file.c (HAVE_UTIMENSAT): disabled for NativeClient.</div><div class='del'>-	  Fixes build error.</div><div class='del'>-</div><div class='del'>-Sat Oct 11 22:11:58 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/extmk.rb: generates the rule for extinit.$(OBJEXT).</div><div class='del'>-	  extinit.$(OBJEXT) used to be generated by the builtin rule, thus</div><div class='del'>-	  didn't accept custom $(CC) and caused linkage error for cross</div><div class='del'>-	  compiling.</div><div class='del'>-</div><div class='del'>-Sat Oct 11 18:46:50 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/intern.h (rb_fd_select): declare struct timeval, or the</div><div class='del'>-	  struct gets local to the function in C99.</div><div class='del'>-</div><div class='del'>-	* file.c (#include): add nacl/stat.h for PNaCl.</div><div class='del'>-	  (utimes): added a declaration for PNaCl.</div><div class='del'>-	  (stat_atimespec): stat::st_atimensec is long long but</div><div class='del'>-	  timespec::tv_nsec is long in PNaCl.</div><div class='del'>-	  (stat_mtimespec, stat_ctimespec): ditto.</div><div class='del'>-	  (rb_group_member): disable getgroups unless HAVE_GETGROUPS.</div><div class='del'>-	  (eaccess): unify the fallback to generic defined(USE_GETEUID).</div><div class='del'>-</div><div class='del'>-	* io.c: include sys/time.h for struct timeval.</div><div class='del'>-	  (rb_close_before_exec): nothing we can do if F_GETFD is not</div><div class='del'>-	  available.</div><div class='del'>-	  (ioctl): pnacl newlib actually doesn't have ioctl.</div><div class='del'>-</div><div class='del'>-	* process.c (maxgroups): it is used iff</div><div class='del'>-	   defined(_SC_NGROUPS_MAX) || defined(NGROUPS_MAX) but not</div><div class='del'>-	   defined(HAVE_GETGROUPS) || defined(HAVE_SETGROUPS).</div><div class='del'>-	  (obj2gid): fail unless the object is a Fixnum if getgrnam is not</div><div class='del'>-	  available.</div><div class='del'>-	  (disable_child_handler_fork_child): sigaction is not available in</div><div class='del'>-	  PNaCl newlib.</div><div class='del'>-</div><div class='del'>-	* configure.in (warnflags, strict_warnflags): avoid -ansi for strlcpy.</div><div class='del'>-	  (rb_cv_gcc_atomic_builtins): also check</div><div class='del'>-	  __atomic_or_etch because it is used in ruby_atomic.h.</div><div class='del'>-	  (rb_cv_gcc_sync_builtins): ditto.</div><div class='del'>-	  (HAVE_GETGRNAM): added.</div><div class='del'>-</div><div class='del'>-Sat Oct 11 15:32:08 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* compile.c (iseq_build_from_ary_exception): move RB_GC_GUARD</div><div class='del'>-	  (iseq_build_from_ary_body): use PRIsVALUE instead of RB_GC_GUARD</div><div class='del'>-</div><div class='del'>-Sat Oct 11 14:57:08 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (rb_str_intern): remove unnecessary RB_GC_GUARD</div><div class='del'>-</div><div class='del'>-Sat Oct 11 13:47:13 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (remove_duplicate_keys): remove duplicate literal keys,</div><div class='del'>-	  i.e., symbols and strings.  [ruby-core:65368] [Bug #10315]</div><div class='del'>-</div><div class='del'>-	* vm.c (kwmerge_i): override existing keys by new keys.</div><div class='del'>-	  [ruby-core:65368] [Bug #10315]</div><div class='del'>-</div><div class='del'>-	* parse.y (assocs): concatenate splatted literal hashes.  the</div><div class='del'>-	  former key has precedence even if duplicated literal keys</div><div class='del'>-	  follow.  [ruby-core:65368] [Bug #10315]</div><div class='add'>+	* ext/openssl/ossl_ssl.c (ossl_ssl_initialize): Added. Almost the same</div><div class='add'>+	  as the Ruby version but this instantiate the SSL object at the same</div><div class='add'>+	  time.</div><div class='ctx'> </div><div class='del'>-Sat Oct 11 12:27:03 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='add'>+	  (ossl_ssl_setup): Adjust to the changes. Just set the underlying IO to</div><div class='add'>+	  the SSL.</div><div class='ctx'> </div><div class='del'>-	* configure.in (RUBY_NACL): automatically locate pnacl-clang.</div><div class='del'>-	  (RUBY_PLATFORM): pnacl instead of le32-nacl.</div><div class='add'>+	  (ssl_started): Added. Make use of SSL_get_fd(). This returns -1 if not</div><div class='add'>+	  yet set by SSL_set_fd().</div><div class='ctx'> </div><div class='del'>-Sat Oct 11 11:27:14 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='add'>+	  (ossl_ssl_data_get_struct): Removed. Now GetSSL() checks that the SSL</div><div class='add'>+	  exists.</div><div class='ctx'> </div><div class='del'>-	* io.c: fix issues in the last two commits. don't disable cloexec for</div><div class='del'>-	  platforms other than NativeClient.</div><div class='add'>+	  (ossl_ssl_set_session): Don't call ossl_ssl_setup() here as now the</div><div class='add'>+	  SSL is already instantiated in #initialize.</div><div class='ctx'> </div><div class='del'>-	* ChangeLog: ditto. add entries for the last two commits.</div><div class='add'>+	  (ossl_ssl_shutdown, ossl_start_ssl, ossl_ssl_read_internal,</div><div class='add'>+	   ossl_ssl_write_internal, ossl_ssl_stop, ossl_ssl_get_cert,</div><div class='add'>+	   ossl_ssl_get_peer_cert, ossl_ssl_get_peer_cert_chain,</div><div class='add'>+	   ossl_ssl_get_version, ossl_ssl_get_cipher, ossl_ssl_get_state,</div><div class='add'>+	   ossl_ssl_pending, ossl_ssl_session_reused,</div><div class='add'>+	   ossl_ssl_get_verify_result, ossl_ssl_get_client_ca_list,</div><div class='add'>+	   ossl_ssl_npn_protocol, ossl_ssl_alpn_protocol, ossl_ssl_tmp_key): Use</div><div class='add'>+	  GetSSL() instead of ossl_ssl_data_get_struct(). Use ssl_started().</div><div class='ctx'> </div><div class='del'>-Sat Oct 11 11:12:00 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='add'>+	  (Init_ossl_ssl): Add method declarations of SSLSocket#{initialize,</div><div class='add'>+	  hostname=}.</div><div class='ctx'> </div><div class='del'>-	* signal.c (install_signalhandler, init_sigchld): allow failure because it</div><div class='del'>-	  always fails with ENOSYS on NaCl.</div><div class='add'>+	* ext/openssl/ossl_ssl.h (GetSSL): Check that the SSL is not NULL. It</div><div class='add'>+	  should not be NULL because we now set it in #initialize.</div><div class='ctx'> </div><div class='del'>-Sat Oct 11 11:11:53 2014  Yuki Yugui Sonoda  &lt;yugui@yugui.jp&gt;</div><div class='add'>+	* ext/openssl/ossl_ssl_session.c (ossl_ssl_session_initialize): No need</div><div class='add'>+	  to check if the SSL is NULL.</div><div class='ctx'> </div><div class='del'>-	* configure.in (RUBY_NACL and others): merge patch from naclports. Supports PNaCl.</div><div class='add'>+Sat May 28 10:47:40 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* dln.c: ditto. replace the old hacky dynamic loading over HTTP with nacl_io.</div><div class='add'>+	* gems/bundled_gems: Update latest releases, power_assert-0.3.0,</div><div class='add'>+	  test-unit 3.1.9, minitest 5.9.0, did_you_mean 1.0.1</div><div class='ctx'> </div><div class='del'>-	* file.c: ditto. tentatively use access(2) instead of eaccess.</div><div class='del'>-	  (rb_file_load_ok): weaken with attribute but not by postprocess.</div><div class='add'>+Sat May 28 10:45:40 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='add'>+	* addr2line.c: drop support for ATARI ST platform. It was</div><div class='add'>+	  discontinued more than two decades ago. [fix GH-1350] Patch by</div><div class='add'>+	  @cremno</div><div class='add'>+	* include/ruby/ruby.h: ditto.</div><div class='ctx'> 	* io.c: ditto.</div><div class='del'>-	  (socket.h): now NaCl has socket.h</div><div class='del'>-	  (flock): disable here instead of nacl/ioctl.h</div><div class='del'>-</div><div class='del'>-	* nacl/GNUmakefile.in: ditto.</div><div class='del'>-	  (CC, LD, NM, AR, AS, RANLIB, OBJDUMP, OBJCOPY):</div><div class='del'>-	  respect path to them if they are absolute.</div><div class='del'>-	  This helps naclports to build ruby in their source tree.</div><div class='del'>-	  (PROGRAM_NMF, .SUFFIXES): support .pnexe for PNaCl.</div><div class='del'>-	  (ruby.o, file.o): move the hack to attributes in ruby.c and file.c</div><div class='del'>-</div><div class='del'>-	* nacl/ioctl.h: ditto. removed. move the hack to io.c.</div><div class='del'>-</div><div class='del'>-	* nacl/nacl-config.rb: ditto. support arm, pnacl and others.</div><div class='del'>-</div><div class='del'>-	* nacl/pepper_main.c: ditto. support build in a naclports tree.</div><div class='del'>-</div><div class='del'>-	* ruby.c (rb_load_file): ditto. weaken with attribute but not by postprocess.</div><div class='del'>-</div><div class='del'>-Sat Oct 11 09:32:00 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* ext/socket/unixsocket.c: [DOC] Fix example to render in HTML</div><div class='del'>-	  properly, with a patch by @eval [Fixes GH-733]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/733</div><div class='del'>-</div><div class='del'>-Sat Oct 11 04:14:41 2014  Kir Shatrov  &lt;shatrov@me.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/open-uri.rb (OpenURI::Options): add :open_timeout default</div><div class='del'>-	* (def OpenURI.open_http): check :open_timeout option</div><div class='del'>-	* (module OpenURI): rdoc for :open_timeout</div><div class='del'>-	* test/open-uri/test_open-uri.rb (test_open_timeout): new test</div><div class='del'>-	  [Feature #10361]</div><div class='del'>-</div><div class='del'>-Fri Oct 10 11:27:49 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/io.h (rb_io_mode_flags, rb_io_modenum_flags):</div><div class='del'>-	  deprecate old macros for compatibility for ruby 1.8 and older.</div><div class='del'>-</div><div class='del'>-Thu Oct  9 23:31:47 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* bignum.c (absint_numwords_generic): set an array element after</div><div class='del'>-	  definition of a variable to fix compile error with older version</div><div class='del'>-	  of fcc (Fujitsu C Compiler) 5.6 on Solaris 10 on Sparc.</div><div class='del'>-	  [Bug #10350] [ruby-dev:48608]</div><div class='del'>-</div><div class='del'>-Thu Oct  9 16:15:26 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/-test-/st/foreach/extconf.rb: new file</div><div class='del'>-	* ext/-test-/st/foreach/foreach.c: ditto</div><div class='del'>-	* test/-ext-/st/test_foreach.rb: ditto</div><div class='del'>-	  [Feature #10321]</div><div class='del'>-</div><div class='del'>-Thu Oct  9 12:40:28 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* benchmark/bm_hash_aref_sym*.rb: force static symbols</div><div class='del'>-</div><div class='del'>-Thu Oct  9 12:38:28 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* hash.c (rb_any_hash): remove unnecessary dsym check</div><div class='del'>-</div><div class='del'>-Thu Oct  9 07:20:30 2014  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* missing/setproctitle.c: Avoid invalidating argv[1], argv[2],</div><div class='del'>-	  etc. until the first call to Process.setproctitle, because</div><div class='del'>-	  the ps command of AIX refers to the argv array.</div><div class='del'>-	  [Bug #10090]</div><div class='del'>-</div><div class='del'>-Thu Oct  9 00:53:15 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* dir.c (dir_s_aref): fix rdoc.  `Dir.glob` allows an array but</div><div class='del'>-	  `Dir[]` not.  the former accepts an optional parameter `flags`,</div><div class='del'>-	  while the latter accepts arbitrary number of arguments but no</div><div class='del'>-	  `flags`.  [ruby-core:65265] [Bug #10294]</div><div class='del'>-</div><div class='del'>-Wed Oct  8 21:44:10 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole_variable.c: use typed data.</div><div class='del'>-</div><div class='del'>-Wed Oct  8 16:36:47 2014  gogo tanaka  &lt;mail@tanakakazuki.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_syntax.rb: added syntax tests of underscore</div><div class='del'>-	  arguments.  [Feature #10340][ruby-core:65496]</div><div class='del'>-</div><div class='del'>-Wed Oct  8 07:42:39 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/generic.rb (URI#inspect): remove Object id.</div><div class='del'>-	  URI is considered that it doesn't require id.</div><div class='del'>-</div><div class='del'>-Wed Oct  8 05:22:42 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/etc/etc.c (etc_systmpdir): set default tmplen correctly</div><div class='del'>-	  Fixup r47826</div><div class='del'>-</div><div class='del'>-Wed Oct  8 05:16:32 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='del'>-</div><div class='del'>-	* lib/matrix.rb: Add @- and @+ for Matrix and Vector.</div><div class='del'>-	  patch by gogo tanaka [#10068] [#10069]</div><div class='del'>-</div><div class='del'>-Wed Oct  8 04:58:48 2014  John Bachir  &lt;j@jjb.cc&gt;</div><div class='del'>-</div><div class='del'>-	* bootstraptest/test_io.rb (assert_finish):</div><div class='del'>-	  normalize rescue for Timeout::Error</div><div class='del'>-	* lib/net/ftp.rb (Net#read_timeout): ditto for doc</div><div class='del'>-	* lib/resolv.rb (Resolv::ResolvTimeout): ditto for subclass</div><div class='del'>-	* lib/webrick/httprequest.rb (_read_data): ditto for rescue</div><div class='del'>-	* sample/timeout.rb (p timeout): ditto for call</div><div class='del'>-	* test/drb/drbtest.rb (test_06_timeout): ditto</div><div class='del'>-	* test/ruby/test_readpartial.rb (test_open_pipe): ditto</div><div class='del'>-	* test/thread/test_queue.rb (test_queue_thread_raise): ditto</div><div class='del'>-	* thread.c (rb_thread_s_handle_interrupt): ditto for doc</div><div class='del'>-	  [ruby-core:65481] [misc #10339]</div><div class='del'>-</div><div class='del'>-Wed Oct  8 04:38:29 2014  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_process.rb (TestProcess#test_setsid): AIX</div><div class='del'>-	  does not allow Process::getsid(pid) when pid is in a</div><div class='del'>-	  different session.</div><div class='del'>-</div><div class='del'>-Wed Oct  8 04:33:04 2014  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_rubyoptions.rb (TestRubyOptions#test_encoding):</div><div class='del'>-	  On AIX, locale_charmap is ISO-8859-1 with LANG=C.  This means</div><div class='del'>-	  the source encoding of stdin is ISO-8859-1, so "invalid</div><div class='del'>-	  multibyte char" error does not occur.</div><div class='del'>-</div><div class='del'>-Wed Oct  8 04:30:29 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='del'>-</div><div class='del'>-	* lib/matrix.rb: Add Matrix#laplace_expansion.</div><div class='del'>-	  patch by gogo tanaka [#10073]</div><div class='del'>-</div><div class='del'>-Wed Oct  8 04:29:21 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='del'>-</div><div class='del'>-	* lib/matrix.rb: Add Vector.basis.</div><div class='del'>-	  Based on patch by gogo tanaka [#10072]</div><div class='del'>-</div><div class='del'>-Tue Oct  7 23:40:16 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (rb_f_kill): get rid of deadlock as unhandled and</div><div class='del'>-	  discarded signals do not make interrupt_cond signaled.</div><div class='del'>-	  based on the patch by Kazuki Tsujimoto at [ruby-dev:48606].</div><div class='del'>-	  [Bug #9820]</div><div class='del'>-</div><div class='del'>-Tue Oct  7 22:43:44 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole_method.c: use typed data.</div><div class='del'>-</div><div class='del'>-Tue Oct  7 21:47:05 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole_param.c: refactoring.</div><div class='del'>-</div><div class='del'>-Tue Oct  7 21:40:17 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole_method.c: refactoring. add</div><div class='del'>-	  olemethod_data_get_struct to wrap Data_Get_Struct.</div><div class='del'>-	* ext/win32ole/win32ole_method.h: ditto.</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole_param.c (oleparam_ole_param):</div><div class='del'>-	  call olemethod_data_get_struct instead of Data_Get_Struct.</div><div class='del'>-</div><div class='del'>-Tue Oct  7 11:17:08 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/etc/etc.c (etc_systmpdir): try user temporary directory by</div><div class='del'>-	  confstr() on Mac OS X.</div><div class='del'>-	  c.f. http://www.opensource.apple.com/source/ruby/ruby-104/patches/ext_etc_etc.c.diff</div><div class='del'>-</div><div class='del'>-Tue Oct  7 10:48:17 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (struct stat.st_size): prefer off_t over int, long,</div><div class='del'>-	  and so on.  inspired by</div><div class='del'>-	  http://www.opensource.apple.com/source/ruby/ruby-104/patches/config.h.ed</div><div class='del'>-</div><div class='del'>-Tue Oct  7 10:37:39 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (RUBY_UNIVERSAL_ARCH): fix missing quoting</div><div class='del'>-	  brackets.  incorporated from</div><div class='del'>-	  http://www.opensource.apple.com/source/ruby/ruby-104/patches/configure.diff</div><div class='del'>-</div><div class='del'>-Mon Oct  6 23:34:42 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole_param.c: use typed data.</div><div class='del'>-</div><div class='del'>-Mon Oct  6 22:37:09 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* symbol.h (struct RSymbol): move from internal.h.</div><div class='del'>-</div><div class='del'>-Mon Oct  6 21:43:03 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* error.c: update exception tree. [DOC]</div><div class='del'>-	  reported by @hemge via twitter.</div><div class='del'>-</div><div class='del'>-Mon Oct  6 18:43:03 2014  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in: Fix typo. [Bug #9914]</div><div class='del'>-</div><div class='del'>-Mon Oct  6 16:23:30 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (rb_f_kill): should not ignore signal unless the</div><div class='del'>-	  default handler is registered.  [ruby-dev:48592] [Bug #9820]</div><div class='del'>-</div><div class='del'>-Mon Oct  6 16:07:11 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_string.rb (test_LSHIFT_neary_long_max): enable</div><div class='del'>-	  only on platforms where string size range is smaller than memory</div><div class='del'>-	  space.  this test does not make sense but just wastes memory and</div><div class='del'>-	  time on other platforms, as it is hardly possible that a string</div><div class='del'>-	  size becomes neary LONG_MAX if long size equals pointer size.</div><div class='del'>-	  [ruby-core:65410] [Bug #10325]</div><div class='del'>-</div><div class='del'>-Mon Oct  6 11:21:21 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* tool/unicode_norm_gen.rb: Adding/tweaking comments.</div><div class='del'>-</div><div class='del'>-Mon Oct  6 10:57:57 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* tool/unicode_norm_gen.rb: Adjusted directory paths.</div><div class='del'>-</div><div class='del'>-Mon Oct  6 10:27:27 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* tool/unicode_norm_gen.rb: Data generation script imported from</div><div class='del'>-	  https://github.com/duerst/eprun/blob/master/lib/generate.rb</div><div class='del'>-</div><div class='del'>-Mon Oct  6 10:15:15 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* tool/downloader.rb: Adjust example in documentation for</div><div class='del'>-	  Downloader.download.</div><div class='del'>-</div><div class='del'>-Mon Oct  6 10:07:07 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='del'>-</div><div class='del'>-	* lib/unicode_normalize: New folder for Unicode normalization</div><div class='del'>-	  functionality</div><div class='del'>-</div><div class='del'>-Sun Oct  5 11:04:13 2014  Luiz Angelo Daros de Luca  &lt;luizluca@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/digest/{md5,rmd160,sha1,sha2}/extconf.rb: configure OpenSSL</div><div class='del'>-	  only if bundled libraries is not used, so that OpenSSL is not</div><div class='del'>-	  linked unnecessarily.  [ruby-core:65404] [Bug #10324]</div><div class='del'>-</div><div class='del'>-Sun Oct  5 10:39:11 2014  Luiz Angelo Daros de Luca  &lt;luizluca@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/digest/rmd160/extconf.rb: fix transform function name to</div><div class='del'>-	  check.  [ruby-core:65091] [Bug #10252]</div><div class='del'>-</div><div class='del'>-Sun Oct  5 05:46:00 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/zlib/zlib.c (zstream_mark, zstream_free): update signature</div><div class='del'>-	  (gzfile_mark, gzfile_free): ditto</div><div class='del'>-	  (zstream_memsize): new function for rb_data_type-&gt;dsize</div><div class='del'>-	  (gzfile_memsize): ditto</div><div class='del'>-	  (zstream_data_type, gzfile_data_type): new data types</div><div class='del'>-	  (zstream_new): Data_Make_Struct =&gt; TypedData_Make_Struct</div><div class='del'>-	  (gzfile_new): ditto</div><div class='del'>-	  (get_zstream, get_gzfile): Data_Get_Struct =&gt; TypedData_Get_Struct</div><div class='del'>-	  (rb_zstream_flush_next_in): ditto</div><div class='del'>-	  (rb_zstream_flush_next_out): ditto</div><div class='del'>-	  (rb_zstream_avail_out): ditto</div><div class='del'>-	  (rb_zstream_avail_in): ditto</div><div class='del'>-	  (rb_zstream_closed_p): ditto</div><div class='del'>-	  (rb_deflate_initialize): ditto</div><div class='del'>-	  (rb_deflate_init_copy): ditto</div><div class='del'>-	  (rb_inflate_initialize): ditto</div><div class='del'>-	  (gzfile_ensure_close): ditto</div><div class='del'>-	  (rb_gzfile_closed_p): ditto</div><div class='del'>-	  (rb_gzfile_path): ditto</div><div class='del'>-	  (rb_gzwriter_initialize): ditto</div><div class='del'>-	  (rb_gzreader_initialize): ditto</div><div class='del'>-	  (rb_gzreader_unused): ditto</div><div class='del'>-	  [ruby-core:65377] [Feature #10319]</div><div class='del'>-</div><div class='del'>-Sat Oct  4 16:24:41 2014  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/test_syslog.rb (TestSyslog#test_log): In AIX, each output</div><div class='del'>-	  line of LOG_PERROR to stderr has an additional empty line appended,</div><div class='del'>-	  so skip that line.</div><div class='del'>-</div><div class='del'>-Sat Oct  4 16:05:49 2014  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/socket/test_unix.rb (TestSocket_UNIXSocket#test_too_long_path):</div><div class='del'>-	  sockaddr_un.sun_path in AIX is defined as char[1024],</div><div class='del'>-	  so "a" * 300 is not too long. "a" * 3000 would be enough.</div><div class='del'>-</div><div class='del'>-Sat Oct  4 09:12:03 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/sample/example*.rb: Add wait input to quit for examples</div><div class='del'>-	  with patch provided by @windwiny [Fixes GH-705]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/705</div><div class='del'>-</div><div class='del'>-Sat Oct  4 09:08:18 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole.c: [DOC] Fix typo in :nodoc: reported by</div><div class='del'>-	  @windwiny to [Fix GH-705] https://github.com/ruby/ruby/pull/705</div><div class='del'>-</div><div class='del'>-	* ext/pty/pty.c: ditto</div><div class='del'>-</div><div class='del'>-Sat Oct  4 08:59:45 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/ossl_rand.c: [DOC] Add call signature for pseudo_bytes</div><div class='del'>-	  and random_bytes, wrap lines at 80 chars, and remove useless</div><div class='del'>-	  comments.</div><div class='del'>-</div><div class='del'>-Sat Oct  4 08:49:34 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/ossl_rand.c: [DOC] Add rdoc for method descriptions</div><div class='del'>-	  By @vipulnsward [Fixes GH-657] https://github.com/ruby/ruby/pull/657</div><div class='ctx'> </div><div class='del'>-Sat Oct  4 08:23:48 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Sat May 28 10:39:47 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/ossl_rand.c: Use rb_define_module_function instead of</div><div class='del'>-	  macro. [Fixes GH-686] https://github.com/ruby/ruby/pull/686</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Converted exception for</div><div class='add'>+	  unavailable Unicode data files to failed assertion.</div><div class='ctx'> </div><div class='del'>-Sat Oct  4 06:04:56 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Sat May 28 10:26:18 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole_method.c(olemethod_set_member): remove</div><div class='del'>-	  redundant NULL check.</div><div class='del'>-	* ext/win32ole/win32ole_type.c(oletype_set_member): ditto.</div><div class='add'>+	* lib/cgi/util.rb: added missing quote.</div><div class='add'>+	  [fix GH-1363][ci skip] Patch by @dwaller</div><div class='ctx'> </div><div class='del'>-Sat Oct  4 00:25:04 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Fri May 27 17:38:49 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* .travis.yml: removed needless preparation for gcc.</div><div class='add'>+	* variable.c (rb_local_constants_i): exclude hidden constants.</div><div class='add'>+	  [ruby-core:75575] [Bug #12389]</div><div class='ctx'> </div><div class='del'>-Fri Oct  3 23:41:20 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Fri May 27 17:09:44 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* .travis.yml: enabled gcc build with osx on travis.</div><div class='add'>+	* transcode.c (str_transcode0): scrub in the given encoding when</div><div class='add'>+	  the source encoding is given, not in the encoding of the</div><div class='add'>+	  receiver.  [ruby-core:75732] [Bug #12431]</div><div class='ctx'> </div><div class='del'>-Fri Oct  3 23:22:23 2014  Hiroshi Shirosaki  &lt;h.shirosaki@gmail.com&gt;</div><div class='add'>+Fri May 27 15:07:32 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* template/fake.rb.in: fix make install failure due to MSYS path</div><div class='del'>-	  with mingw on MSYS environment.</div><div class='del'>-	  [ruby-core:64965] [Bug #10230]</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args): remove nul padding which</div><div class='add'>+	  caused syntax error if fmt is not a string literal.</div><div class='ctx'> </div><div class='del'>-Fri Oct  3 21:02:32 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args_verify): suppress array-bounds</div><div class='add'>+	  warnings by old clang.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_io.rb (TestIO#test_advise): avoid to infinite loop.</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args0): make extractor macros</div><div class='add'>+	  inline functions, which do not validate the format and are</div><div class='add'>+	  unnecessary to be expanded.</div><div class='ctx'> </div><div class='del'>-Fri Oct  3 19:26:01 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Fri May 27 01:00:36 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* .travis.yml: enabled test results of linux.</div><div class='add'>+	* symbol.c (is_identchar): use ISDIGIT instead of rb_enc_isalnum.</div><div class='add'>+	  Though rb_enc_isalnum is encoding aware function, its argument here</div><div class='add'>+	  is *m, which is a single byte. Therefore ISDIGIT is faster.</div><div class='ctx'> </div><div class='del'>-Fri Oct  3 18:52:16 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* symbol.c (is_special_global_name): ditto.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_io.rb (TestIO#test_advise): added workaround of fadvise(2)</div><div class='del'>-	  with tmpfs and old linux kernel. [ruby-core:65355][Bug #10313]</div><div class='add'>+	* symbol.c (rb_enc_symname_type): ditto.</div><div class='ctx'> </div><div class='del'>-Fri Oct  3 18:22:45 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Fri May 27 00:39:40 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* .travis.yml: Disabled to generate document on travis.</div><div class='del'>-	  Reduce test running time.</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args): add nul padding here to</div><div class='add'>+	  apply to all references.</div><div class='ctx'> </div><div class='del'>-Fri Oct  3 12:42:15 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args_verify): move length mismatch</div><div class='add'>+	  check outside conditional operators.</div><div class='ctx'> </div><div class='del'>-	* lib/matrix.rb: Add hstack &amp; vstack methods.</div><div class='del'>-	  Based on a patch by creasywuqiong. [Fix GH-344]</div><div class='add'>+Thu May 26 14:21:10 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Oct  3 12:37:48 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='add'>+	* ext/openssl/ossl_pkey_dh.c (ossl_dh_compute_key): Check that the DH</div><div class='add'>+	  has 'p' (the prime) before calling DH_size(). We can create a DH with</div><div class='add'>+	  no parameter but DH_size() does not check and dereferences NULL.</div><div class='add'>+	  [ruby-core:75720] [Bug #12428]</div><div class='ctx'> </div><div class='del'>-	* lib/matrix.rb: Fix Matrix.rows copy bug.</div><div class='del'>-	  Patch by Arron Mabrey. [Fix GH-707]</div><div class='add'>+	* ext/openssl/ossl_pkey_dsa.c (ossl_dsa_sign): Ditto. DSA_size() does</div><div class='add'>+	  not check dsa-&gt;q.</div><div class='ctx'> </div><div class='del'>-Fri Oct  3 06:06:28 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* ext/openssl/ossl_pkey_rsa.c (ossl_rsa_public_encrypt,</div><div class='add'>+	  ossl_rsa_public_decrypt, ossl_rsa_private_encrypt,</div><div class='add'>+	  ossl_rsa_private_decrypt): Ditto. RSA_size() does not check rsa-&gt;n.</div><div class='ctx'> </div><div class='del'>-	* st.c (next_pow2): new function (from old bignum.c)</div><div class='del'>-	  (new_size): use next_pow2 function</div><div class='add'>+Thu May 26 14:13:52 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Oct  3 05:58:58 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args_count): verify length with</div><div class='add'>+	  counting variables together.</div><div class='ctx'> </div><div class='del'>-	* vm_trace.c (rb_tp_t): pack 56 =&gt; 48 bytes on 64-bit</div><div class='add'>+Thu May 26 09:45:41 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Oct  2 18:41:45 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_comprehensive.rb: Add set of comprehensive</div><div class='add'>+	  (across most Unicode characters; later across most character encodings)</div><div class='add'>+	  tests for case mapping.</div><div class='ctx'> </div><div class='del'>-	* ext/etc/etc.c (etc_nprocessors): Windows support.</div><div class='del'>-	  see [Feature #10267]</div><div class='add'>+Thu May 26 05:00:13 2016  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Thu Oct  2 12:21:52 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* class.c (rb_define_class): Fix documentation.</div><div class='ctx'> </div><div class='del'>-	* ext/etc/etc.c (etc_nprocessors): New method.</div><div class='del'>-	  Accepted by matz at RubyKaigi 2014.</div><div class='del'>-	  [ruby-core:65142] [Feature #10267]</div><div class='add'>+Wed May 25 20:50:12 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Oct  2 07:56:49 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* re.c (unescape_nonascii): scan hex up to only 3 characters.</div><div class='add'>+	  [Bug #12420] [Bug #12423]</div><div class='ctx'> </div><div class='del'>-	* iseq.c (rb_iseq_line_trace_each): explicit cast</div><div class='del'>-	  Fix https://travis-ci.org/ruby/ruby/jobs/36814282</div><div class='add'>+Wed May 25 19:07:19 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Oct  2 05:40:05 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* enc/unicode.c: Handle DOTLESS_i by hand because it isn't involved in folding.</div><div class='ctx'> </div><div class='del'>-	* ruby.h: set rb_event_flag_t to uint32_t</div><div class='del'>-	  [ruby-core:65315] [misc #10249]</div><div class='add'>+Wed May 25 18:30:53 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Oct  2 05:32:17 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* regparse.c (fetch_token_in_cc): raise error if given octal escaped</div><div class='add'>+	  character is too big. [Bug #12420] [Bug #12423]</div><div class='ctx'> </div><div class='del'>-	* io.c (fptr_finalize): free memory before GC sweep</div><div class='del'>-	  [ruby-core:65269] [Feature #10295]</div><div class='add'>+Wed May 25 17:45:15 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Oct  2 05:27:24 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* ext/openssl, test/openssl: Drop OpenSSL &lt; 0.9.8 support.</div><div class='ctx'> </div><div class='del'>-	* marshal.c (w_class): check dump_arg-&gt;compat_tbl before lookup</div><div class='del'>-	  (w_object): lazy init -&gt;compat_tbl before insert</div><div class='del'>-	  (obj_alloc_by_class): ditto</div><div class='del'>-	  (clear_dump_arg): free only non-NULL -&gt;compat_tbl</div><div class='del'>-	  (clear_load_arg): ditto for -&gt;compat_tbl</div><div class='del'>-	  (marshal_dump): -&gt;compat_tbl defaults to zero</div><div class='del'>-	  (marshal_load): ditto for -&gt;compat_tbl</div><div class='del'>-	  (r_entry0): check l-&gt;compat_tbl before lookup</div><div class='del'>-	  (r_fixup_compat): ditto</div><div class='del'>-	  [ruby-core:65305] [Feature #10302]</div><div class='add'>+Wed May 25 17:43:30 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Oct  1 21:14:34 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* ext/openssl/openssl_missing.h, ext/openssl/ossl.h: Remove</div><div class='add'>+	  unnecessary 'extern "C"' blocks. We don't use C++ and these headers</div><div class='add'>+	  are local to ext/openssl, so there is no need to enclose with it.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole_type.c: use typed data.</div><div class='add'>+Wed May 25 17:42:58 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Oct  1 18:15:42 2014  Nolan Evans  &lt;nolane@gmail.com&gt;</div><div class='add'>+	* ext/openssl/extconf.rb: Remove check of OPENSSL_FIPS macro. This is</div><div class='add'>+	  unneeded because we can check the macro directly in source code,</div><div class='add'>+	  just as we already do for OPENSSL_NO_* macros.</div><div class='ctx'> </div><div class='del'>-	* compile.c: remove commented out code.</div><div class='add'>+	* ext/openssl/ossl.c: Replace occurrences of HAVE_OPENSSL_FIPS with</div><div class='add'>+	  OPENSSL_FIPS.</div><div class='ctx'> </div><div class='del'>-Wed Oct  1 17:38:53 2014  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='add'>+Wed May 25 17:13:35 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/fileutils/test_fileutils.rb: AIX does not allow</div><div class='del'>-	  a sticky bit on a regular file.</div><div class='add'>+	* class.c (rb_scan_args): merge code for n_trail.</div><div class='ctx'> </div><div class='del'>-Wed Oct  1 17:31:41 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+Wed May 25 17:11:34 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* NEWS:  Add RubyGems update.</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args_validate): move failed</div><div class='add'>+	  condition to the terminal.  [ruby-core:75714] [Bug #12426]</div><div class='ctx'> </div><div class='del'>-Wed Oct  1 17:28:58 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+Wed May 25 13:13:37 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems:  Update to RubyGems 2.4.2.</div><div class='del'>-	* test/rubygems:  ditto.</div><div class='add'>+	* regcomp.c: remove condition for debug output because prelude</div><div class='add'>+	  doesn't use regexp now.</div><div class='ctx'> </div><div class='del'>-Tue Sep 30 22:25:32 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed May 25 13:10:30 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (parser_data_type): separate ripper data type for from</div><div class='del'>-	  parser.</div><div class='add'>+	* regcomp.c (compile_length_tree): return error code immediately</div><div class='add'>+	  if compile_length_tree raised error [Bug #12418]</div><div class='ctx'> </div><div class='del'>-Tue Sep 30 18:46:31 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Wed May 25 08:01:39 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole_typelib.c: use typed data.</div><div class='add'>+	* enc/unicode.c: Fix flag error for switch from titlecase to lowercase.</div><div class='ctx'> </div><div class='del'>-Tue Sep 30 09:51:46 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Tests for above error.</div><div class='ctx'> </div><div class='del'>-	* common.mk: fixed broken reference of update-config_files task</div><div class='add'>+Wed May 25 01:13:55 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Mon Sep 29 22:54:51 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ossl_pkey_ec.c (ec_key_new_from_group): Create a new</div><div class='add'>+	  EC_KEY on given EC group. Extracted from ossl_ec_key_initialize().</div><div class='add'>+	  (ossl_ec_key_s_generate): Added. Create a new EC instance and</div><div class='add'>+	  generate a random private and public key.</div><div class='add'>+	  (ossl_ec_key_initialize): Use ec_key_new_from_group().</div><div class='add'>+	  (Init_ossl_ec): Define the new method EC.generate. This change is</div><div class='add'>+	  for consistency with other PKey types.  [ruby-core:45541] [Bug #6567]</div><div class='ctx'> </div><div class='del'>-	* win32/file.c (append_wstr): set expanded length, not length of</div><div class='del'>-	  appended string.  fix "probable buffer overflow" bug.</div><div class='del'>-	  [ruby-core:65317] [Bug #10304]</div><div class='add'>+	* test/openssl/test_pkey_ec.rb: Test that EC.generate works.</div><div class='ctx'> </div><div class='del'>-	* string.c (str_make_independent_expand): drop NOFREE flag after</div><div class='del'>-	  reallocation, static buffer is not pointed anymore.</div><div class='del'>-	  [ruby-core:65317] [Bug #10304]</div><div class='add'>+Wed May 25 00:37:16 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sun Sep 28 23:59:17 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+	* ext/openssl/ossl_pkey_ec.c (ossl_ec_key_generate_key): Fix up RDoc.</div><div class='add'>+	  (Init_ossl_ec): Rename EC#generate_key to EC#generate_key!. Make the</div><div class='add'>+	  old name an alias of #generate_key!. This change is for consistency</div><div class='add'>+	  with other PKey types.  [ruby-core:45541] [Bug #6567]</div><div class='ctx'> </div><div class='del'>-	* gc.c (rb_gcdebug_print_obj_condition): use RVALUE_REMEMBERED</div><div class='del'>-	  because GET_HEAP_REMEMBERSET_BITS is obsoleted.</div><div class='add'>+	* test/openssl/test_pkey_ec.rb: Use EC#generate_key! instead of</div><div class='add'>+	  EC#generate_key.</div><div class='ctx'> </div><div class='del'>-Sun Sep 28 11:14:14 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+Wed May 25 00:23:05 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* common.mk: Created new target update-unicode to download</div><div class='del'>-	  some Unicode data files.</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args_set): check the arity after</div><div class='add'>+	  adjusting argc for an option hash, for optimization in simpler</div><div class='add'>+	  cases.</div><div class='ctx'> </div><div class='del'>-Fri Sep 26 15:03:19 2014  Masaki Matsushita &lt;glass.saga@gmail.com&gt;</div><div class='add'>+Wed May 25 00:21:52 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/uri/rfc3986_parser.rb: raise URI::InvalidURIError when</div><div class='del'>-	  uri doesn't respond to #to_str. [ruby-core:64453] [Bug #10150]</div><div class='add'>+	* configure.in (XCFLAGS): merge flags only for ruby itself from</div><div class='add'>+	  ruby_cflags.</div><div class='ctx'> </div><div class='del'>-	* test/uri/test_parser.rb: test for above.</div><div class='add'>+Tue May 24 22:04:15 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Sep 27 10:31:48 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+	* ext/openssl/ossl_cipher.c (ossl_cipher_set_key, ossl_cipher_set_iv):</div><div class='add'>+	  Reject too long values as well as too short ones. Currently they</div><div class='add'>+	  just truncate the input but this would hide bugs and lead to</div><div class='add'>+	  unexpected encryption/decryption results.</div><div class='ctx'> </div><div class='del'>-	* gems/bundled_gems: upgraded to power_assert 0.1.4.</div><div class='add'>+	* test/openssl/test_cipher.rb: Test that Cipher#key= and #iv= reject</div><div class='add'>+	  Strings with invalid length.</div><div class='ctx'> </div><div class='del'>-Fri Sep 26 12:52:36 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue May 24 21:32:21 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/stringio/stringio.c (strio_write): ASCII-8BIT StringIO</div><div class='del'>-	  should be writable any encoding strings, without conversion.</div><div class='del'>-	  [ruby-core:65240] [Bug #10285]</div><div class='add'>+	* ext/openssl/ossl_x509ext.c (ossl_x509ext_set_value): Use</div><div class='add'>+	  ASN1_OCTET_STRING_set() instead of M_ASN1_OCTET_STRING_set(). Macros</div><div class='add'>+	  prefixed by "M_" are discouraged to be used from outside OpenSSL</div><div class='add'>+	  library[1].</div><div class='add'>+	  (ossl_x509ext_get_value): Likewise, use ASN1_STRING_print() instead</div><div class='add'>+	  of M_ASN1_OCTET_STRING_print().</div><div class='add'>+	  [1] https://git.openssl.org/gitweb/?p=openssl.git;a=blob;f=CHANGES;h=bf61913d7b01212b4d8b2f3c13d71d645914f67c;hb=b6079a7835f61daa9fb2cbf9addfa86049523933#l878</div><div class='ctx'> </div><div class='del'>-Fri Sep 26 05:21:01 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* ext/openssl/ossl.h: Include openssl/asn1.h instead of</div><div class='add'>+	  openssl/asn1_mac.h. It just includes openssl/asn1.h and defines some</div><div class='add'>+	  additional "M_" macros.</div><div class='ctx'> </div><div class='del'>-	* object.c (rb_class_real): do not dereference 0 VALUE</div><div class='add'>+Tue May 24 18:52:11 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_module.rb (test_inspect_segfault):</div><div class='del'>-	  Test case and bug report by Thomas Stratmann.</div><div class='del'>-	  [ruby-core:65214] [Bug #10282]</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args_verify): verify the format to</div><div class='add'>+	  scan if no invalid chars and variable argument length matching,</div><div class='add'>+	  at the compile time if possible.</div><div class='ctx'> </div><div class='del'>-Fri Sep 26 05:12:10 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Tue May 24 17:18:46 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* man/ruby.1: document stack size env variables</div><div class='del'>-	  [Feature #10197]</div><div class='add'>+	* include/ruby/defines.h (ERRORFUNC, WARNINGFUNC): add fallback</div><div class='add'>+	  definitions.</div><div class='ctx'> </div><div class='del'>-Thu Sep 25 19:37:34 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Tue May 24 16:37:43 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* io.c (free_io_buffer): new function for a common pattern</div><div class='del'>-	  (clear_readconv): use free_io_buffer</div><div class='del'>-	  (rb_io_fptr_finalize): ditto</div><div class='add'>+	* configure.in (ruby_cflags): separate from optflags [Bug #12409]</div><div class='add'>+	  -fexcess-precision=standard and -fp-model precise are set to this now.</div><div class='ctx'> </div><div class='del'>-Thu Sep 25 07:51:07 2014  Ayumu AIZAWA  &lt;ayumu.aizawa@gmail.com&gt;</div><div class='add'>+	* configure.in (cflags): use ruby_cflags.</div><div class='ctx'> </div><div class='del'>-	* lib/matrix.rb: Fix docs. Patched by Ben Woodall. [GH-726]</div><div class='add'>+Tue May 24 16:20:53 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Sep 24 19:04:04 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+	* configure.in (ERRORFUNC, WARNINGFUNC): __error__ and __warning__</div><div class='add'>+	  attributes take a parenthesized string literal.</div><div class='ctx'> </div><div class='del'>-	* enc/unicode/data: New directory for downloaded Unicode</div><div class='del'>-	  data files.</div><div class='add'>+Tue May 24 12:35:56 2016  URABE Shyouhei  &lt;shyouhei@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Sep 24 18:59:59 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+	* common.mk: sort lines, and add missing dependencies suggested</div><div class='add'>+	  by tool/update-deps</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb: Adjusting example for</div><div class='del'>-	  Downloader.download to implementation changes in r47693.</div><div class='add'>+Mon May 23 21:33:36 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Sep 24 18:06:06 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+	* include/ruby/missing.h (isfinite): move from numeric.c.</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb: Removing unused method</div><div class='del'>-	  Downloader.download_if_modified_since.</div><div class='del'>-	  (if ever used, just replace with Downloader.download)</div><div class='add'>+Mon May 23 21:09:06 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Sep 24 17:59:59 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+	* ext/openssl/ossl.c (Init_openssl): Avoid reference to unset global</div><div class='add'>+	  variable. ossl_raise() may be called before dOSSL is set. Since</div><div class='add'>+	  global variables default to 0 and the default value of dOSSL set in</div><div class='add'>+	  Init_openssl() is also Qfalse, there is no real issue but confusing.</div><div class='add'>+	  Patch by Bertram Scharpf &lt;software@bertram-scharpf.de&gt;</div><div class='add'>+	  [ruby-core:58264] [Bug #9101]</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb: Fixing raise after return.</div><div class='add'>+Mon May 23 20:32:16 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Sep 24 17:55:55 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+	* ext/openssl/ossl_asn1.c, ext/openssl/ossl_bn.c,</div><div class='add'>+	  ext/openssl/ossl_cipher.c, ext/openssl/ossl_digest.c</div><div class='add'>+	  ext/openssl/ossl_engine.c, ext/openssl/ossl_ns_spki.c</div><div class='add'>+	  ext/openssl/ossl_pkcs12.c, ext/openssl/ossl_pkcs7.c</div><div class='add'>+	  ext/openssl/ossl_pkey.c, ext/openssl/ossl_pkey_ec.c</div><div class='add'>+	  ext/openssl/ossl_rand.c, ext/openssl/ossl_ssl.c</div><div class='add'>+	  ext/openssl/ossl_x509attr.c, ext/openssl/ossl_x509cert.c</div><div class='add'>+	  ext/openssl/ossl_x509ext.c, ext/openssl/ossl_x509store.c: Use</div><div class='add'>+	  StringValueCStr() where NUL-terminated string is expected.</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb: Made Unicode data file location available</div><div class='del'>-	  via :unicode Symbol.</div><div class='add'>+Mon May 23 20:20:12 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Sep 24 10:45:45 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+	* ext/bigdecimal/bigdecimal.c (isfinite): get rid of a warning on</div><div class='add'>+	  cygwin. [Bug #12417][ruby-core:75691]</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb: Small fix to documentation comment.</div><div class='add'>+Mon May 23 19:41:27 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Sep 23 22:00:20 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ossl_rand.c (ossl_rand_egd, ossl_rand_egd_bytes):</div><div class='add'>+	  RAND_egd{_bytes,}() return -1 on failure, not 0.</div><div class='add'>+	  Patch by cremno phobia &lt;cremno@mail.ru&gt;</div><div class='add'>+	  [ruby-core:63795] [Bug #10053]</div><div class='add'>+	  (ossl_pseudo_bytes): Similar, RAND_pseudo_bytes() may return 0 or</div><div class='add'>+	  -1 on failure.</div><div class='ctx'> </div><div class='del'>-	* parse.y (parse_ident): just after a label, new expression should</div><div class='del'>-	  start, cannot be a modifier.  [ruby-core:65211] [Bug #10279]</div><div class='add'>+Mon May 23 15:52:07 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Sep 23 16:07:07 2014  Martin Duerst &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='add'>+	* ext/bigdecimal/bigdecimal.c (isfinite): isfinite does not always</div><div class='add'>+	  exist.  fixed build error on Windows introduced at r55123.</div><div class='ctx'> </div><div class='del'>-	* tool/downloader.rb: added Downloader.download_if_modified_since</div><div class='del'>-	  to reduce downloads of large files that change only rarely.</div><div class='del'>-	  [ruby-core:65164] [CommonRuby - Feature #10084]</div><div class='add'>+Mon May 23 13:19:41 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Sep 23 11:55:09 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args0): make compile error if the</div><div class='add'>+	  format is wrong or does not match with the variable argument</div><div class='add'>+	  length if possible.</div><div class='ctx'> </div><div class='del'>-	* .travis.yml: added rubyspec into travis tasks and eliminate to stdout.</div><div class='add'>+Mon May 23 12:47:09 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Sep 22 20:00:29 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args0): raise fatal error if</div><div class='add'>+	  variable argument length does not match, it is a bug in the code</div><div class='add'>+	  which uses rb_scan_args, not a runtime error.</div><div class='ctx'> </div><div class='del'>-	* test/win32ole/test_win32ole_variant.rb</div><div class='del'>-	  (test_conversion_time2date_with_msec): test by using only</div><div class='del'>-	  assert_in_delta  to avoid to fail when converting Time object with</div><div class='del'>-	  999999999 nanoseconds into VT_DATE Variant.</div><div class='add'>+Mon May 23 12:30:29 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Sep 22 19:49:12 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): consider</div><div class='add'>+	  non-finite float values not to raise FloatDomainError.</div><div class='add'>+	  [ruby-core:75682] [Bug #12414]</div><div class='ctx'> </div><div class='del'>-	* doc/syntax/methods.rdoc: [DOC] [] and []= methods by @process</div><div class='del'>-	  [Fixes GH-662] https://github.com/ruby/ruby/pull/662</div><div class='add'>+Mon May 23 12:21:18 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Sep 22 18:21:35 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* array.c (rb_ary_fill): suppress warnings: 'item' may be used</div><div class='add'>+	  uninitialized in this function</div><div class='ctx'> </div><div class='del'>-	* .travis.yml: Only osx build is enabled. linux builds is random failure</div><div class='del'>-	  and test results of major linux is covered by rubyci.</div><div class='add'>+Mon May 23 07:41:49 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Sep 22 12:10:29 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* dir.c (dir_close): update RDoc for 2.3 #close change</div><div class='add'>+	  [ruby-core:75679] [Bug #12413]</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_time_tz.rb: Fix test error with tzdata-2014g.</div><div class='del'>-	  [ruby-core:65058] [Bug #10245] Reported by Vit Ondruch.</div><div class='add'>+Sun May 22 20:01:21 2016  Masatoshi SEKI  &lt;m_seki@mva.biglobe.ne.jp&gt;</div><div class='ctx'> </div><div class='del'>-Mon Sep 22 09:28:43 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* lib/drb/timeridconv.rb: use finalizer trick instead of thread.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/ancdata.c ({send,recv}msg_args_struct): 24 =&gt; 16 bytes</div><div class='del'>-	* ext/socket/init.c (connect_arg): ditto</div><div class='del'>-	* ext/socket/raddrinfo.c (getnameinfo_arg): 56 =&gt; 48 bytes</div><div class='del'>-	  (reductions only for 64-bit systems)</div><div class='add'>+	* test/drb/ut_timerholder.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Mon Sep 22 02:04:25 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sun May 22 17:25:18 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/drb/drb.rb: Support graceful shutdown.</div><div class='del'>-	  (DRbTCPSocket#initialize): Create a pipe for shutdown notification.</div><div class='del'>-	  (DRbTCPSocket#close): Invoke close_shutdown_pipe.</div><div class='del'>-	  (DRbTCPSocket#close_shutdown_pipe): New private method.</div><div class='del'>-	  (DRbTCPSocket#accept): Use accept_or_shutdown.</div><div class='del'>-	  (DRbTCPSocket#accept_or_shutdown): New private method which returns</div><div class='del'>-	  nil on shutdown.</div><div class='del'>-	  (DRbServer#stop_service): Use shutdown instead of Thread#kill.</div><div class='del'>-	  (DRbServer#run): Break infinite loop when main_loop returns nil.</div><div class='del'>-	  (DRbServer#main_loop): @protocol.accept may return nil.</div><div class='add'>+	* test/ruby/enc/test_case_options.rb: adjust test class name</div><div class='add'>+	  to match file name</div><div class='ctx'> </div><div class='del'>-	* lib/drb/ssl.rb: Follow above change.</div><div class='add'>+Sun May 22 17:24:07 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/drb/unix.rb: Ditto.</div><div class='add'>+	* rename test/ruby/enc/test_casing_options.rb to test_case_options.rb</div><div class='add'>+	  for consistency</div><div class='ctx'> </div><div class='del'>-Sun Sep 21 13:54:36 2014  Masaki Matsushita &lt;glass.saga@gmail.com&gt;</div><div class='add'>+Sun May 22 17:06:55 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* time.c: raise exception when minutes of utc_offset is out of 00-59.</div><div class='del'>-	  patch is from Kenichi Kamiya.</div><div class='del'>-	  [ruby-dev:47539] [Bug #8679]</div><div class='add'>+	* transcode.c (enc_arg, str_transcode_enc_args, econv_args):</div><div class='add'>+	  remove volatile, and add GC guards in callers.</div><div class='add'>+	  [ruby-core:75664] [Bug #12411]</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_time.rb: test for above.</div><div class='del'>-	  patch is from Kenichi Kamiya.</div><div class='add'>+Sun May 22 16:27:00 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Sep 21 19:04:08 2014  Narihiro Nakamura &lt;authornari@gmail.com&gt;</div><div class='add'>+	* ext/-test-/integer/core_ext.c: move testutil/integer.c.</div><div class='ctx'> </div><div class='del'>-	* st.c (do_hash_bin): unused macro.</div><div class='add'>+	* test/lib/-test-/integer.rb: extract implementation details from</div><div class='add'>+	  test/unit/assertions.rb.  [Bug #12408]</div><div class='ctx'> </div><div class='del'>-Sun Sep 21 18:45:01 2014  Narihiro Nakamura &lt;authornari@gmail.com&gt;</div><div class='add'>+Sun May 22 14:57:43 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (parser_class_nest): unused variable after YARV</div><div class='del'>-	  merged (r11439).</div><div class='add'>+	* include/ruby/oniguruma.h: Extend OnigEncodingTypeDefine to define a</div><div class='add'>+	  new encoding primitive 'case_map' for case mapping</div><div class='ctx'> </div><div class='del'>-Sun Sep 21 18:14:03 2014  Narihiro Nakamura &lt;authornari@gmail.com&gt;</div><div class='add'>+	* enc/utf-8.c, utf_16be/le.c, utf_32be/le.c:</div><div class='add'>+	  add onigenc_unicode_case_map as case_map primitive</div><div class='ctx'> </div><div class='del'>-	* st.c (numberof): unused. internal.h has same macro.</div><div class='add'>+	* enc/ascii.c, big5.c, cp949.c, emacs_mule.c, euc_jp/kr/tw.c, gb18030.c,</div><div class='add'>+	  gbk.c, iso_8859_1/2/3/4/5/6/7/8/9/10/11/13/14/15/16.c, koi8_r/u.c,</div><div class='add'>+	  shift_jis.c, us_ascii.c, windows_1250/1251/1252.c:</div><div class='add'>+	  add onigenc_not_support_case_map as case_map primitive</div><div class='ctx'> </div><div class='del'>-	* node.c (F_CUSTOM2): unused.</div><div class='add'>+Sun May 22 14:45:45 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sun Sep 21 14:11:23 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* regenc.h/c: Define new function onigenc_not_support_case_map</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (native_set_thread_name): New function to</div><div class='del'>-	  set thread name visible with ps command on GNU/Linux.</div><div class='del'>-	  Ex. ps -o %c -L</div><div class='add'>+Sun May 22 12:14:06 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* thread.c (thread_start_func_2): Call native_set_thread_name at</div><div class='del'>-	  beginning.</div><div class='del'>-	  (rb_thread_inspect_msg): Extract from rb_thread_inspect.</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args): use original rb_scan_args</div><div class='add'>+	  when fmt is dynamic.</div><div class='ctx'> </div><div class='del'>-Sun Sep 21 12:49:11 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sun May 22 11:41:12 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.c (rb_iseq_defined_string): trim redundant semi-colon</div><div class='add'>+	* class.c (rb_scan_args): moved to bottom of the file to make the</div><div class='add'>+	  effect of `#undef rb_scan_args` the minimum.</div><div class='ctx'> </div><div class='del'>-Sun Sep 21 12:19:29 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* file.c (rb_find_file_ext_safe): clear tmp buffer on failure</div><div class='del'>-	  (rb_find_file_safe): ditto</div><div class='del'>-</div><div class='del'>-Sat Sep 20 04:42:18 2014  Masaki Matsushita &lt;glass.saga@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/csv.rb: avoid unnecessary object allocations.</div><div class='del'>-	  patch is from Andrew Vit. [ruby-core:63215] [Feature #9952]</div><div class='del'>-</div><div class='del'>-Sun Sep 21 12:10:18 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rexml/**/*.rb: removed commented-out code.</div><div class='del'>-</div><div class='del'>-Sat Sep 20 03:46:58 2014  Masaki Matsushita &lt;glass.saga@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* array.c: use rb_equal_opt() for performance improvement.</div><div class='del'>-	  [ruby-core:64954] [Feature #10227]</div><div class='del'>-</div><div class='del'>-Sun Sep 21 11:16:56 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole.c (rbtime2vtdate, vtdate2rbtime): fix</div><div class='del'>-	  the bug in conversion of milliseconds. [Bug #10258]</div><div class='del'>-</div><div class='del'>-	* test/win32ole/test_win32ole_variant.rb</div><div class='del'>-	  (test_conversion_dbl2date_with_msec,</div><div class='del'>-	  test_conversion_time2date_with_msec): use assert_in_delta instead</div><div class='del'>-	  of assert_equal to treat an acceptable error range.</div><div class='del'>-</div><div class='del'>-Sun Sep 21 11:03:32 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (ruby_signal): although "EINVAL from sigaction(2) is</div><div class='del'>-	  not a bug", but even it is a failure.  pointed at toRuby/guRuby</div><div class='del'>-	  in RubyHiroba.</div><div class='del'>-</div><div class='del'>-Sat Sep 20 03:00:26 2014  Masaki Matsushita &lt;glass.saga@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/tempfile.rb: define parameters appropriately and some</div><div class='del'>-	  refactoring.</div><div class='del'>-</div><div class='del'>-	* lib/tmpdir.rb: ditto.</div><div class='del'>-</div><div class='del'>-Sat Sep 20 23:58:21 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* enum.c (enum_chunk): Deprecate the state management.</div><div class='del'>-	  (enum_slice_before): Ditto.</div><div class='del'>-</div><div class='del'>-Sat Sep 20 15:39:11 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* enum.c (enum_slice_when): New method: Enumerable#slice_when.</div><div class='del'>-	  (slicewhen_i): New function.</div><div class='del'>-	  (slicewhen_ii): New function.</div><div class='del'>-</div><div class='del'>-	* enumerator.c (InitVM_Enumerator): New method:</div><div class='del'>-	  Enumerator::Lazy#slice_when.</div><div class='del'>-</div><div class='del'>-	  [ruby-core:62499] [Feature #9826]</div><div class='del'>-</div><div class='del'>-Sat Sep 20 11:55:19 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* .travis.yml: added new configurations for osx on travis ci.</div><div class='del'>-	  [fix GH-723]</div><div class='del'>-	* test/ruby/test_object.rb: tweaked to memory leak limit for osx build.</div><div class='del'>-</div><div class='del'>-Sat Sep 20 10:48:41 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (assoc): allow quoted ID as a key of a hash literal.</div><div class='del'>-	  [ruby-core:34453] [Feature #4276]</div><div class='del'>-</div><div class='del'>-Sat Sep 20 10:23:00 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* compile.c (iseq_set_arguments): store local variable IDs in</div><div class='del'>-	  temporary list as Symbols.  previously these are stored as</div><div class='del'>-	  Fixnums to prevent from GC, but IDs of dynamic symbols can</div><div class='del'>-	  exceed Fixnum range and cause RangeError at inverting from</div><div class='del'>-	  Fixnum.  [ruby-dev:48564] [Bug #10266]</div><div class='del'>-</div><div class='del'>-Sat Sep 20 10:02:51 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name#pretty_print):</div><div class='del'>-	  New method.</div><div class='del'>-	  (OpenSSL::X509::Certificate#pretty_print): Ditto.</div><div class='del'>-</div><div class='del'>-	* ext/openssl/lib/openssl/bn.rb (OpenSSL::BN#pretty_print): Ditto.</div><div class='del'>-</div><div class='del'>-Sat Sep 20 07:55:57 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (eval_string_with_cref): fix super from eval with</div><div class='del'>-	  scope.  set klass in the current control frame to the class of</div><div class='del'>-	  the receiver in the context to be evaluated, this class/module</div><div class='del'>-	  must match the actual receiver to call super.</div><div class='del'>-	  [ruby-core:65122] [Bug #10263]</div><div class='del'>-</div><div class='del'>-Fri Sep 19 20:06:00 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* symbol.c (rb_str_dynamic_intern): check if the stem ID of</div><div class='del'>-	  attrset ID is already registered as a static ID.</div><div class='del'>-	  [ruby-dev:48559] [Bug #10259]</div><div class='del'>-</div><div class='del'>-Fri Sep 19 15:48:09 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* win32/Makefile.sub (VCSUP): nothing to do if this worktree is not</div><div class='del'>-	  under any VCS (it means that the worktree may be from the release</div><div class='del'>-	  package).</div><div class='del'>-</div><div class='del'>-Fri Sep 19 10:47:03 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_math.rb (TestMath#assert_infinity): Float#finite?</div><div class='del'>-	  returns true also for NaN, so use Float#infinite? instead.</div><div class='del'>-	  [ruby-core:65117] [Feature #10261]</div><div class='del'>-</div><div class='del'>-Fri Sep 19 05:36:16 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* NEWS: note --with-jemalloc option [ci skip]</div><div class='del'>-</div><div class='del'>-Thu Sep 18 16:26:27 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rubygems/test_gem_commands_setup_command.rb: @ui uses StringIO</div><div class='del'>-	  as its streams, and Encoding.default_external does not effect to</div><div class='del'>-	  StringIOs already exist.  so, we need to set external_encoding of</div><div class='del'>-	  @ui.outs directly.  this problem (test failure) does not appear in</div><div class='del'>-	  the environments default_external is us-ascii or utf-8.</div><div class='del'>-</div><div class='del'>-Thu Sep 18 15:02:15 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rubygems/test_gem_specification.rb: '/' is not always the root.</div><div class='del'>-</div><div class='del'>-Thu Sep 18 09:36:37 2014  Scott Francis  &lt;scott.francis@shopify.com&gt;</div><div class='del'>-</div><div class='del'>-	* vm_method.c (Init_Method): make global method cache size</div><div class='del'>-	  configurable by environment variable</div><div class='del'>-	  "RUBY_GLOBAL_METHOD_CACHE_SIZE"  [Fix GH-719]</div><div class='del'>-</div><div class='del'>-Thu Sep 18 07:03:36 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/-ext-/string/test_modify_expand.rb: increase limit</div><div class='del'>-	  for {je,tc}malloc [Bug #10236]</div><div class='del'>-</div><div class='del'>-Thu Sep 18 06:41:18 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/zlib/zlib.c (struct gzfile): pack (288 =&gt; 272 bytes) on 64-bit</div><div class='del'>-</div><div class='del'>-Thu Sep 18 05:44:05 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/socket/init.c (rsock_connect): refactor for blocking</div><div class='del'>-	  (wait_connectable): clear error before wait</div><div class='del'>-	  [Bug #9356]</div><div class='del'>-</div><div class='del'>-Wed Sep 17 23:12:36 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/rfc3986_parser.rb: specify a regexp for :OPAQUE; generic.rb</div><div class='del'>-	  assumes it is present, and will refuse all values otherwise.</div><div class='del'>-	  by Matthew Draper &lt;matthew@trebex.net&gt;</div><div class='del'>-	  https://github.com/ruby/ruby/pull/718 fix GH-718</div><div class='del'>-</div><div class='del'>-Wed Sep 17 16:22:58 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/zlib/zlib.c (zlib_mem_alloc): check overflow</div><div class='del'>-</div><div class='del'>-Wed Sep 17 11:33:35 2014  Laurent Arnoud  &lt;laurent@spkdev.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/fiddle/test_import.rb (Fiddle::TestImport#test_sizeof):</div><div class='del'>-	  added test for long long [fix GH-716]</div><div class='del'>-</div><div class='del'>-Wed Sep 17 11:09:21 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* tool/rbinstall.rb: fixed invalid options with latest rubygems.</div><div class='del'>-	  https://github.com/rubygems/rubygems/issues/1013</div><div class='del'>-</div><div class='del'>-Tue Sep 16 19:19:00 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* benchmark/bm_app_aobench.rb: update outdated links to the</div><div class='del'>-	  original program.  [ruby-dev:48550] [Feature #10247]</div><div class='del'>-</div><div class='del'>-Tue Sep 16 01:06:40 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* reg*.c: Merge Onigmo 5.15.0 38a870960aa7370051a3544</div><div class='del'>-</div><div class='del'>-Mon Sep 15 16:21:10 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* io.c (struct io_advise_struct): 32 =&gt; 24 bytes on 64-bit</div><div class='del'>-	* io.c (struct io_internal_writev_struct): 24 =&gt; 16 bytes on 64-bit</div><div class='del'>-	* process.c (struct waitpid_arg): ditto</div><div class='del'>-</div><div class='del'>-Mon Sep 15 10:29:25 2014  Natalie Weizenbaum  &lt;nweiz@google.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/pathname/lib/pathname.rb (SAME_PATHS):</div><div class='del'>-	  Pathname#relative_path_from uses String#casecmp to compare strings</div><div class='del'>-	  on case-insensitive filesystem platforms (e.g., Windows). This can</div><div class='del'>-	  return nil for strings with different encodings, and the code</div><div class='del'>-	  previously assumed that it always returned a Fixnum.  [Fix GH-713]</div><div class='del'>-</div><div class='del'>-Mon Sep 15 09:43:18 2014  Sho Hashimoto  &lt;sho.hsmt@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/fiddle/lib/fiddle/import.rb (Fiddle::Importer#sizeof): fix typo,</div><div class='del'>-	  SIZEOF_LONG_LON.  [Fix GH-714]</div><div class='del'>-</div><div class='del'>-Mon Sep 15 08:13:40 2014  Matthew Draper  &lt;matthew@trebex.net&gt;</div><div class='del'>-</div><div class='del'>-	* sprintf.c (rb_str_format): rational 'f' format works for more</div><div class='del'>-	  values.  [fix GH-717]</div><div class='del'>-</div><div class='del'>-Sun Sep 14 16:57:27 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* template/vm.inc.tmpl: "insns.c" =&gt; "insns.def"</div><div class='del'>-	* tool/instruction.rb: typo fix</div><div class='del'>-</div><div class='del'>-Sun Sep 14 12:29:52 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/test_tracer.rb: fixed testcase for rubygems update.</div><div class='del'>-</div><div class='del'>-Sun Sep 14 12:29:02 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rubygems:  Update to RubyGems 2.4.1 master(713ab65)</div><div class='del'>-	  Complete history at:</div><div class='del'>-	  https://github.com/rubygems/rubygems/blob/master/History.txt#L3-L216</div><div class='del'>-</div><div class='del'>-	* test/rubygems:  ditto.</div><div class='del'>-</div><div class='del'>-Sun Sep 14 11:03:24 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/psych/lib/psych.rb: update version</div><div class='del'>-	* ext/psych/psych.gemspec: ditto</div><div class='del'>-</div><div class='del'>-Sun Sep 14 08:43:37 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ccan/container_of/container_of.h (container_of_or_null): added</div><div class='del'>-	  [ccan 7ec5b8e06b2fd5fa98b1fcde1158c286d2d429d8] (David Gibson)</div><div class='del'>-</div><div class='del'>-Sun Sep 14 08:41:44 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ccan/list/list.h (list_del_init, list_node_init): new functions</div><div class='del'>-	  for multiple list_del() calls</div><div class='del'>-	  [ccan ec8654d94d3c5c47aa5f82698f7e8048c79765b1] (Rusty Russell)</div><div class='del'>-</div><div class='del'>-Sat Sep 13 22:19:26 2014  Bernard Potocki  &lt;bernard.potocki@imanel.org&gt;</div><div class='del'>-</div><div class='del'>-	* hash.c (rb_hash_aset): fix misleading example which may suggest</div><div class='del'>-	  that Hash.store will return self instead of value - Hash#store</div><div class='del'>-	  is returning value and update itself, as well as Hash#[]=.</div><div class='del'>-	  [Fix GH-715]</div><div class='del'>-</div><div class='del'>-Sat Sep 13 15:16:31 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* class.c: use ALLOC(rb_subclass_entry_t)</div><div class='del'>-</div><div class='del'>-Sat Sep 13 14:14:00 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* process.c (free_exec_arg): remove</div><div class='del'>-	  (memsize_exec_arg): ptr is never NULL</div><div class='del'>-	  (exec_arg_data_type): use RUBY_TYPED_DEFAULT_FREE</div><div class='del'>-</div><div class='del'>-	* variable.c (autoload_i_free): remove</div><div class='del'>-	  (autoload_data_i_type): use RUBY_TYPED_DEFAULT_FREE</div><div class='del'>-	  (autoload_memsize): ptr is never NULL</div><div class='del'>-</div><div class='del'>-	* vm_backtrace.c (location_free): remove</div><div class='del'>-	  (location_mark): ptr is never NULL</div><div class='del'>-	  (location_data_type): use RUBY_TYPED_DEFAULT_FREE</div><div class='del'>-	  (backtrace_mark): ditto</div><div class='del'>-	  (backtrace_free): ditto</div><div class='del'>-</div><div class='del'>-Sat Sep 13 13:43:07 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* doc/NEWS-2.0.0: fix typo for default RUBY_FIBER_MACHINE_STACK_SIZE</div><div class='del'>-	  [ci skip]</div><div class='del'>-</div><div class='del'>-Sat Sep 13 11:16:58 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole_event.c(ev_advise, ole_event_free,</div><div class='del'>-	  fev_s_allocate, fev_unadvise): avoid segmentation fault when COM</div><div class='del'>-	  server freed before calling Unadvise from WIN32OLE_EVENT object.</div><div class='del'>-	* ext/win32ole/win32ole.c: ditto.</div><div class='del'>-</div><div class='del'>-Sat Sep 13 09:47:44 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* man/ruby.1: use https for *.ruby-lang.org links</div><div class='del'>-</div><div class='del'>-Sat Sep 13 06:31:23 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (thread_alloc): remove needless volatile</div><div class='del'>-</div><div class='del'>-Sat Sep 13 06:13:55 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* proc.c (proc_free): remove, use RUBY_TYPED_DEFAULT_FREE</div><div class='del'>-	  (proc_mark, proc_memsize): remove needless branching</div><div class='del'>-</div><div class='del'>-	* vm.c (env_free): remove, use RUBY_TYPED_DEFAULT_FREE</div><div class='del'>-	  (env_mark, env_memsize): remove needless branching</div><div class='del'>-</div><div class='del'>-Sat Sep 13 05:52:15 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* proc.c (rb_proc_alloc): inline and move to vm.c</div><div class='del'>-	  (rb_proc_wrap): new wrapper function used by rb_proc_alloc</div><div class='del'>-	  (proc_dup): simplify alloc + copy + wrap operation</div><div class='del'>-	  [ruby-core:64994]</div><div class='del'>-</div><div class='del'>-	* vm.c (rb_proc_alloc): new inline function</div><div class='del'>-	  (rb_vm_make_proc): call rb_proc_alloc</div><div class='del'>-</div><div class='del'>-	* vm_core.h: remove rb_proc_alloc, add rb_proc_wrap</div><div class='del'>-</div><div class='del'>-	* benchmark/bm_vm2_newlambda.rb: short test to show difference</div><div class='del'>-</div><div class='del'>-Sat Sep 13 04:40:04 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* process.c (Init_process): subclass Thread as Process::Waiter</div><div class='del'>-	  (rb_detach_process): use Process::Waiter instead of singleton class</div><div class='del'>-	  Thanks to headius and nobu. [Bug #10231]</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_process.rb (test_process_detach): new test</div><div class='del'>-</div><div class='del'>-	* inits.c (rb_call_inits): call Init_Thread before Init_process to</div><div class='del'>-	  ensure Process::Waiter may be a subclass of Thread</div><div class='del'>-</div><div class='del'>-Fri Sep 12 18:14:28 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (env_alloc): inline to avoid extra zeroing</div><div class='del'>-	  tiny speedup [ruby-core:64980]</div><div class='del'>-</div><div class='del'>-Fri Sep 12 17:13:29 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_method.c (rb_method_entry_make, remove_method): ditto.</div><div class='del'>-</div><div class='del'>-Fri Sep 12 14:39:55 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* gems/bundled_gems: Upgraded to test-unit-3.0.1 and minitest-5.4.1</div><div class='del'>-</div><div class='del'>-Fri Sep 12 06:55:40 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (Init_frozen_strings): use st_init_table_with_size</div><div class='del'>-</div><div class='del'>-Fri Sep 12 06:15:37 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (sym_find): remove Symbol.find because we have Symbol GC now.</div><div class='del'>-	  https://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20140904Japan</div><div class='del'>-	  If you still want this, request again on Redmine. [Feature #7854]</div><div class='del'>-	  https://bugs.ruby-lang.org/issues/7854</div><div class='del'>-</div><div class='del'>-	* ext/-test-/symbol/init.c (sym_find): moved from string.c for tests.</div><div class='del'>-</div><div class='del'>-Fri Sep 12 04:24:03 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* insns.def (once): define and use fake RUNNING_THREAD_ONCE_DONE</div><div class='del'>-	  pointer to indicate is-&gt;once.running_thread is done.</div><div class='del'>-</div><div class='del'>-	* vm_core.h (iseq_inline_storage_entry): remove done field,</div><div class='del'>-	  allowing the union to be reduced from 24=&gt;16 bytes on 64-bit</div><div class='del'>-	  [Feature #10187]</div><div class='del'>-</div><div class='del'>-Thu Sep 11 20:10:00 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (rb_thread_mark): use rb_gc_mark_values() to mark VM stack.</div><div class='del'>-</div><div class='del'>-Thu Sep 11 19:50:57 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (rb_vm_register_special_exception): make new function to</div><div class='del'>-	  make and register special exceptions.</div><div class='del'>-</div><div class='del'>-	* vm.c (rb_vm_mark): do not need to mark special exceptions</div><div class='del'>-	  because they are registered by rb_gc_register_mark_object().</div><div class='del'>-</div><div class='del'>-	* eval.c (Init_eval): use rb_vm_register_special_exception().</div><div class='del'>-</div><div class='del'>-	* gc.c (Init_GC): ditto.</div><div class='del'>-</div><div class='del'>-	* proc.c (Init_Proc): ditto.</div><div class='del'>-</div><div class='del'>-	* thread.c (Init_Thread): ditto.</div><div class='del'>-</div><div class='del'>-Thu Sep 11 19:32:30 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (rb_gc_mark_values): added.</div><div class='del'>-	  This function is similar to rb_gc_mark_locations(), but not</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args): overwrite only if GCC and</div><div class='add'>+	  optimized. Visual C++ 14 or later can compile it but make it</div><div class='ctx'> 	  conservative.</div><div class='ctx'> </div><div class='del'>-	* internal.h: ditto.</div><div class='del'>-</div><div class='del'>-	* vm.c (env_mark): use rb_gc_mark_values() because env values should</div><div class='del'>-	  be Ruby VALUEs.</div><div class='del'>-</div><div class='del'>-Thu Sep 11 19:16:39 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_mark_ptr): rename to gc_mark_set.</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_mark): add gc_mark_ptr() to skip is_markable_object()</div><div class='del'>-	  check. gc_mark_maybe() can use gc_mark_ptr() directly because</div><div class='del'>-	  passed pointer is checked by is_pointer_to_heap().</div><div class='del'>-</div><div class='del'>-Thu Sep 11 18:40:16 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* .gitignore: ignored temporary files and coverage results.</div><div class='del'>-</div><div class='del'>-Thu Sep 11 18:15:30 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* .gitignore: ignored only simplecov.</div><div class='del'>-	* coverage/README: Added coverage docs.</div><div class='del'>-</div><div class='del'>-Thu Sep 11 17:25:31 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h, gc.c: add new internal events</div><div class='del'>-	  RUBY_INTERNAL_EVENT_GC_ENTER and</div><div class='del'>-	  RUBY_INTERNAL_EVENT_GC_EXIT.</div><div class='del'>-</div><div class='del'>-	  When invoking GC process, GC_ENTER event is called.</div><div class='del'>-	  When exiting from GC process, GC_EXIT event is called.</div><div class='del'>-</div><div class='del'>-	  Incremental GC (incremental marking and lazy sweep) can call</div><div class='del'>-	  these events many times.</div><div class='del'>-</div><div class='del'>-	  For example (minor marking):</div><div class='del'>-	  (1) GC_ENTER</div><div class='del'>-	  - (2) GC_START (minor GC)</div><div class='del'>-	    (minor marking)</div><div class='del'>-	  - (3) GC_END_MARK</div><div class='del'>-	    (start lazy sweep)</div><div class='del'>-	  (4) GC_EXIT</div><div class='del'>-	    (ruby process)</div><div class='del'>-	  (5) GC_ENTER</div><div class='del'>-	    (lazy sweep)</div><div class='del'>-	  (6) GC_EXIT</div><div class='del'>-	    (ruby process)</div><div class='del'>-	    (... repeat (5), (6))</div><div class='del'>-	  (7) GC_ENTER</div><div class='del'>-	      (finish lazy sweep)</div><div class='del'>-	    - (8) GC_END_SWEEP</div><div class='del'>-	  (9) GC_EXIT</div><div class='del'>-</div><div class='del'>-	  2nd example (incremental major marking):</div><div class='del'>-	  (1) GC_ENTER</div><div class='del'>-	  - (2) GC_START (minor GC)</div><div class='del'>-	    (start incremental marking)</div><div class='del'>-	  (3) GC_EXIT</div><div class='del'>-	    (ruby process)</div><div class='del'>-	  (4) GC_ENTER</div><div class='del'>-	    (incremental marking)</div><div class='del'>-	  (5) GC_EXIT</div><div class='del'>-	     (ruby process)</div><div class='del'>-	     (... repeat (4), (5))</div><div class='del'>-	  (6) GC_ENTER</div><div class='del'>-	    (finish incremental marking)</div><div class='del'>-	  - (7) GC_END_MARK</div><div class='del'>-	    (start lazy sweep)</div><div class='del'>-	  (8) GC_EXIT</div><div class='del'>-	    (ruby process)</div><div class='del'>-	  (9) GC_ENTER</div><div class='del'>-	    (lazy sweep)</div><div class='del'>-	  (10) GC_EXIT</div><div class='del'>-	    (ruby process)</div><div class='del'>-	    (... repeat (9), (10))</div><div class='del'>-	  (11) GC_ENTER</div><div class='del'>-	    (finish lazy marking)</div><div class='del'>-	  - (12) GC_STOP_SWEEP</div><div class='del'>-	  (13) GC_EXIT</div><div class='del'>-</div><div class='del'>-	  These internal events enable to measure GC pause time completely.</div><div class='del'>-</div><div class='del'>-Thu Sep 11 17:04:54 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/benchmark.rb: remove CLOCK_MONOTONIC_RAW support</div><div class='del'>-	  Thanks to Vit Ondruch for reporting the issue on ARM.</div><div class='del'>-	  [Bug #10202]</div><div class='del'>-</div><div class='del'>-Thu Sep 11 14:31:57 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h: freeze nil/true/false.</div><div class='del'>-	  [Feature #8923]</div><div class='del'>-</div><div class='del'>-	* gc.c (should_be_finalizable): check frozen after checkin FL_ABLE.</div><div class='del'>-</div><div class='del'>-	* object.c (rb_obj_taint): check</div><div class='del'>-	  OBJ_TAINTABLE(obj).</div><div class='del'>-</div><div class='del'>-	* object.c (rb_obj_freeze): remove immediate_frozen_tbl</div><div class='del'>-	  because all of immediate values are frozen. YAY!</div><div class='del'>-</div><div class='del'>-	* object.c (rb_obj_frozen_p): ditto.</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_eval.rb: skip instance_variable_set for</div><div class='del'>-	  frozen objects.</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_weakmap.rb: check ArgumentError instead of</div><div class='del'>-	  RuntimeError.</div><div class='del'>-</div><div class='del'>-Thu Sep 11 10:03:16 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rdoc.rb, lib/rdoc, test/rdoc: Update to RDoc 4.2.0.alpha(21b241a)</div><div class='del'>-</div><div class='del'>-Wed Sep 10 17:52:25 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* compile.c (rb_vm_addr2insn): rename to rb_vm_insn_addr2insn</div><div class='del'>-	  to clear what address.</div><div class='del'>-</div><div class='del'>-Wed Sep 10 16:22:26 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_gc.rb: fix condition.</div><div class='del'>-</div><div class='del'>-Wed Sep 10 15:29:46 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h (rb_call_info_t): ci-&gt;flag becomes 32-bit unsigned int</div><div class='del'>-	  ci-&gt;index becomes a 32-bit signed int (from signed long).</div><div class='del'>-	  Reorder for better packing on 64-bit, giving an 8 byte reduction</div><div class='del'>-	  from 104 to 96 bytes for each ci.</div><div class='del'>-	  [Feature #10187]</div><div class='del'>-</div><div class='del'>-	* compile.c (new_callinfo, setup_args, iseq_compile_each,</div><div class='del'>-	  iseq_build_from_ary_body): adjust for type changes</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c (vm_getivar): ditto</div><div class='del'>-</div><div class='del'>-Wed Sep 10 15:07:35 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* compile.c (rb_iseq_translate_threaded_code):</div><div class='del'>-	  modify in-place w/o copy</div><div class='del'>-	  (rb_vm_addr2insn): new function for debug</div><div class='del'>-	  (rb_iseq_original_iseq): ditto</div><div class='del'>-	  (iseq_set_sequence): assign iseq_encoded directly</div><div class='del'>-	  [Feature #10185]</div><div class='del'>-</div><div class='del'>-	* vm_core (rb_iseq_t): move original -&gt;iseq to bottom</div><div class='del'>-</div><div class='del'>-	* iseq.c (iseq_free, iseq_free): adjust for new layout</div><div class='del'>-	  (rb_iseq_disasm): use original iseq for dump</div><div class='del'>-	  (iseq_data_to_ary): ditto</div><div class='del'>-	  (rb_iseq_line_trace_each): ditto</div><div class='del'>-	  (rb_iseq_build_for_ruby2cext): use iseq_encoded directly</div><div class='del'>-</div><div class='del'>-	* vm_dump.c (rb_vmdebug_debug_print_pre): use original iseq</div><div class='del'>-</div><div class='del'>-Wed Sep 10 15:00:11 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* time.c (time_mark): remove NULL check</div><div class='del'>-	  (time_memsize): ditto</div><div class='del'>-	  (time_free): remove, use RUBY_TYPED_DEFAULT_FREE instead</div><div class='del'>-	  [Feature #10219]</div><div class='del'>-</div><div class='del'>-Wed Sep 10 14:14:57 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (encs enc trans libencs libenc libtrans): force to run</div><div class='del'>-	  enk.mk because common.mk does not know the dependency, but enk.mk</div><div class='del'>-	  knows. [ruby-dev:48530] [Bug #10220]</div><div class='del'>-</div><div class='del'>-Wed Sep 10 11:59:10 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_stat): update rdoc.</div><div class='del'>-</div><div class='del'>-Wed Sep 10 11:52:08 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_stat_internal): rename:</div><div class='del'>-	  * malloc_increase -&gt; malloc_increase_bytes</div><div class='del'>-	  * malloc_limit -&gt; malloc_increase_bytes_limit</div><div class='del'>-	  * oldmalloc_increase -&gt; oldmalloc_increase_bytes</div><div class='del'>-	  * oldmalloc_limit -&gt; oldmalloc_increase_bytes_limit</div><div class='del'>-	  ref: [Feature #9924]</div><div class='del'>-</div><div class='del'>-Wed Sep 10 11:45:40 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_stat_internal): rename `heap_used' to `heap_allocated_pages'.</div><div class='del'>-	  ref: [Feature #9924]</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_gc.rb: add constraints test for gc stat information.</div><div class='add'>+Sat May 21 22:45:50 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Sep 10 11:31:16 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args): don't use ALWAYS_INLINE with</div><div class='add'>+	  `inline`.  if gcc needs this duplication, do in ALWAYS_INLINE macro.</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_stat_internal): rename:</div><div class='del'>-	  * remembered_shady_object -&gt; remembered_wb_unprotected_objects</div><div class='del'>-	  * remembered_shady_object_limit -&gt; remembered_wb_unprotected_objects_limit</div><div class='del'>-	  * old_object -&gt; old_objects</div><div class='del'>-	  * old_object_limit -&gt; old_objects_limit</div><div class='del'>-	  ref: [Feature #9924]</div><div class='add'>+Sat May 21 21:11:56 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Sep 10 11:12:25 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* include/ruby/ruby.h (rb_scan_args): use __VA_ARGS__ instead of</div><div class='add'>+	  va_arg to allow compilers optimize more aggressive.</div><div class='add'>+	  https://gustedt.wordpress.com/2011/07/10/avoid-writing-va_arg-functions/</div><div class='add'>+	  rb_scan_args is now expected to be statically resolved.</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_stat_internal): support:</div><div class='del'>-	  * total_allocated_pages</div><div class='del'>-	  * total_freed_pages</div><div class='del'>-	  ref: [Feature #9924]</div><div class='add'>+Sun May 22 02:41:52 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Sep 10 10:48:04 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* ext/zlib/zlib.c: remove hacky macro introduced at r30437.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_gc.rb: catch up last fix.</div><div class='add'>+	* ext/zlib/zlib.c (gzfile_make_header): cast as long (instead of int).</div><div class='ctx'> </div><div class='del'>-Wed Sep 10 10:36:08 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* ext/zlib/zlib.c (gzfile_make_footer): ditto.</div><div class='ctx'> </div><div class='del'>-	* gc.c (objspace_total_slot): rename objspace_available_slots.</div><div class='add'>+Sat May 21 21:07:18 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (objspace_live_slot, objspace_free_slot): rename</div><div class='del'>-	  ..._slot() to ..._slots().</div><div class='add'>+	* configure.in (ALWAYS_INLINE): force compilers the function inlined.</div><div class='ctx'> </div><div class='del'>-	* gc.c (objspace_free_slot): should subtract heap_pages_final_slots.</div><div class='add'>+Sat May 21 16:16:03 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_stat_internal):</div><div class='del'>-	  * add `heap_available_slots' field</div><div class='del'>-	  * rename heap_live_slot to heap_live_slots</div><div class='del'>-	  * rename heap_free_slot to heap_free_slots</div><div class='del'>-	  ref: [Feature #9924]</div><div class='add'>+	* ext/openssl/ossl_ssl.c (ossl_ssl_stop): Don't free the SSL struct</div><div class='add'>+	  here. Since some methods such as SSLSocket#connect releases GVL,</div><div class='add'>+	  there is a chance of use after free if we free the SSL from another</div><div class='add'>+	  thread. SSLSocket#stop was documented as "prepares it for another</div><div class='add'>+	  connection" so this is a slightly incompatible change. However when</div><div class='add'>+	  this sentence was added (r30090, Add toplevel documentation for</div><div class='add'>+	  OpenSSL, 2010-12-06), it didn't actually. The current behavior is</div><div class='add'>+	  from r40304 (Correct shutdown behavior w.r.t GC., 2013-04-15).</div><div class='add'>+	  [ruby-core:74978] [Bug #12292]</div><div class='ctx'> </div><div class='del'>-Wed Sep 10 07:22:53 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* ext/openssl/lib/openssl/ssl.rb (sysclose): Update doc.</div><div class='ctx'> </div><div class='del'>-	* gc.c: refactoring for RGENGC_PROFILE &gt; 0.</div><div class='add'>+	* test/openssl/test_ssl.rb: Test this.</div><div class='ctx'> </div><div class='del'>-	  * rename rb_objspace_t::profile::..._count</div><div class='del'>-	    to rb_objspace_t::profile::total_..._count</div><div class='del'>-	  * rename promote_infant_types to promote_types</div><div class='add'>+Sat May 21 14:41:14 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_remember_unprotected): count remembered shady objects here.</div><div class='add'>+	* ext/openssl/ossl.c: [DOC] Fix SSL client example. The variable name</div><div class='add'>+	  was wrong. Patch by Andreas Tiefenthaler &lt;at@an-ti.eu&gt; (@pxlpnk).</div><div class='add'>+	  [GH ruby/openssl#32]</div><div class='ctx'> </div><div class='del'>-Wed Sep 10 03:12:12 2014  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='add'>+Sat May 21 14:25:38 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (init_mark_stack): MEMZERO() receive type as 2nd argument instead</div><div class='del'>-	  of size.</div><div class='del'>-	  Coverity Scan found this bug.</div><div class='add'>+	* ext/openssl/ossl_pkey_ec.c: rename PKey::EC#private_key? and</div><div class='add'>+	  #public_key? to #private? and #public? for consistency with other</div><div class='add'>+	  PKey types. Old names remain as alias.  [ruby-core:45541] [Bug #6567]</div><div class='ctx'> </div><div class='del'>-Tue Sep  9 21:55:39 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* test/openssl/test_pkey_ec.rb (test_check_key): check private? and</div><div class='add'>+	  public? works correctly.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/sample/excel2.rb: remove some commented-out code.</div><div class='del'>-	  rotate graph more slowly to see graph clearly.</div><div class='add'>+Sat May 21 12:40:36 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Sep  9 19:52:33 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* ext/openssl/lib/openssl/buffering.rb (read_nonblock, readpartial):</div><div class='add'>+	  Remove impossible EOFError raise. Patch by Zach Anker</div><div class='add'>+	  &lt;zanker@squareup.com&gt;.  [GH ruby/openssl#23]</div><div class='ctx'> </div><div class='del'>-	* gc.c: rename rb_objspace_t::marked_objects to marked_slots.</div><div class='add'>+Sat May 21 11:18:42 2016  Evgeni Golov  &lt;evgeni@golov.de&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_marks_start): should be clear first.</div><div class='add'>+	* lib/ipaddr.rb: [DOC] fix documentation of IN6MASK to mention</div><div class='add'>+	  IPv6.  [Fix GH-1349]</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_marks_start): remembered shady objects are also marked.</div><div class='add'>+Sat May 21 11:12:53 2016  Dan Martinez  &lt;dfm@razorwind.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_stat_internal): add heap_marked_slots.</div><div class='add'>+	* io.c (Init_IO): [DOC] define dummy ARGF instead of ARGF.class to</div><div class='add'>+	  re-enable the generation of ARGF documentation.  [Fix GH-1358]</div><div class='ctx'> </div><div class='del'>-Tue Sep  9 18:58:48 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Sat May 21 11:07:29 2016  0x01f7  &lt;souk.0x01f7@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c: rename</div><div class='del'>-	  * total_allocated_object_num -&gt; total_allocated_objects</div><div class='del'>-	  * total_allocated_object_num_at_gc_start -&gt; total_allocated_objects_at_gc_start</div><div class='del'>-	  * total_freed_object_num -&gt; total_freed_objects</div><div class='add'>+	* doc/syntax/methods.rdoc (Method Names): add proper closing tag.</div><div class='add'>+	  [Fix GH-1356]</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_stat_internal):</div><div class='del'>-	  * rename total_allocated_object -&gt; total_allocated_objects</div><div class='del'>-	  * rename total_freed_object -&gt; total_freed_objects</div><div class='add'>+Sat May 21 09:26:28 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Sep  9 18:51:36 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* configure.in (RUBY_CHECK_SETJMP): fix missing macro definition</div><div class='add'>+	  for the configured result.  fix up r55021.</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_stat_internal): fix symbol names</div><div class='del'>-	  * heap_final_slot -&gt; heap_final_slots</div><div class='del'>-	  * heap_swept_slot -&gt; heap_swept_slots</div><div class='add'>+Sat May 21 00:36:32 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Sep  9 18:18:07 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* process.c (rb_execarg_commandline): build command line string</div><div class='add'>+	  from argument vector in rb_execarg.</div><div class='add'>+	  [ruby-core:75611] [Bug #12398]</div><div class='ctx'> </div><div class='del'>-	* gc.c (rb_objspace_t::heap_pages): rename field names:</div><div class='del'>-	  * used -&gt; allocated_pages</div><div class='del'>-	  * increment -&gt; allocatable_pages</div><div class='del'>-	  * length -&gt; sorted_length</div><div class='del'>-	  And remove unused `limit' field.</div><div class='add'>+Fri May 20 23:25:42 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c: rename macros:</div><div class='del'>-	  * heap_pages_used -&gt; heap_allocated_pages</div><div class='del'>-	  * heap_pages_length -&gt; heap_pages_sorted_length</div><div class='del'>-	  * heap_pages_increment -&gt; heap_allocatable_pages</div><div class='add'>+	* ext/openssl/ossl.c (ossl_pem_passwd_value): Added. Convert the</div><div class='add'>+	  argument to String with StringValue() and validate the length is in</div><div class='add'>+	  4..PEM_BUFSIZE. PEM_BUFSIZE is a macro defined in OpenSSL headers.</div><div class='add'>+	  (ossl_pem_passwd_cb): When reading/writing encrypted PEM format, we</div><div class='add'>+	  used to pass the password to PEM_def_callback() directly but it was</div><div class='add'>+	  problematic. It is not NUL character safe. And surprisingly, it</div><div class='add'>+	  silently truncates the password to 1024 bytes.  [GH ruby/openssl#51]</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_stat_internal): fix symbol names</div><div class='del'>-	  * heap_used -&gt; heap_allocated_pages</div><div class='del'>-	  * heap_eden_page_length -&gt; heap_eden_pages</div><div class='del'>-	  * heap_tomb_page_length -&gt; heap_tomb_pages</div><div class='del'>-	  * heap_increment -&gt; heap_allocatable_pages</div><div class='del'>-	  * heap_length -&gt; heap_sorted_length</div><div class='add'>+	* ext/openssl/ossl.h: Add function prototype declaration of newly</div><div class='add'>+	  added ossl_pem_passwd_value().</div><div class='ctx'> </div><div class='del'>-	  ref: [Feature #9924]</div><div class='del'>-	  https://docs.google.com/spreadsheets/d/11Ua4uBr6o0k-nORrZLEIIUkHJ9JRzRR0NyZfrhEEnc8/edit?usp=sharing</div><div class='del'>-	  Yellow color fields in this table are changed.</div><div class='add'>+	* ext/openssl/ossl_pkey.c (ossl_pkey_new_from_data): Use</div><div class='add'>+	  ossl_pem_passwd_value() to validate the password String.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_gc.rb: catch up this change.</div><div class='del'>-</div><div class='del'>-Tue Sep  9 14:56:03 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: continue layout changing.</div><div class='del'>-</div><div class='del'>-	  newobj_of() also touch:</div><div class='del'>-	  (4) increment total_allocated_object_num</div><div class='del'>-	  (5) check hook_events</div><div class='del'>-</div><div class='del'>-	  And gather fields related to marking phase.</div><div class='del'>-</div><div class='del'>-Tue Sep  9 14:21:50 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: fix layout of rb_objspace_t to improve cache locality.</div><div class='del'>-</div><div class='del'>-	  newobj_of() accesses:</div><div class='del'>-	  (1) rb_objspace_t::flags</div><div class='del'>-	  (2) rb_objspace_t::eden_heap::freelist</div><div class='del'>-	  (3) and rb_objspace_t::eden_heap::free_pages if freelist is NULL.</div><div class='del'>-</div><div class='del'>-Tue Sep  9 14:09:36 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: move rb_objspace_t::flags::gc_stressful after during_gc</div><div class='del'>-	  to make accessing both parameters easy.</div><div class='del'>-</div><div class='del'>-	* gc.c (heap_get_freeobj): add LIKELY() hint.</div><div class='del'>-</div><div class='del'>-	* gc.c (heap_get_freeobj_from_next_freepage): ditto.</div><div class='del'>-</div><div class='del'>-	* gc.c (newobj_of): check both parameters at once for exceptional</div><div class='del'>-	  case.</div><div class='del'>-</div><div class='del'>-Tue Sep  9 13:51:32 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: add rb_objspace_t::flags::gc_stressful and</div><div class='del'>-	  ruby_gc_stressful macro.</div><div class='del'>-	  Rename objspace-&gt;gc_stress to objspace-&gt;gc_stress_mode.</div><div class='del'>-</div><div class='del'>-	  If objspace-&gt;gc_stress_mode is true (!nil and !false) then</div><div class='del'>-	  ruby_gc_stressful becomes TRUE.</div><div class='del'>-</div><div class='del'>-	  ruby_gc_stressful will speedup newobj_of() slightly.</div><div class='del'>-</div><div class='del'>-	* gc.c: initialize ruby_gc_stress(full|_mode) by gc_params.gc_stress</div><div class='del'>-	  even if ENABLE_VM_OBJSPACE is false.</div><div class='del'>-</div><div class='del'>-Tue Sep  9 13:05:50 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: remove ruby_disable_gc_stress and add ruby_disable_gc</div><div class='del'>-	  to speed-up newobj_of().</div><div class='del'>-</div><div class='del'>-	* gc.c (ready_to_gc): check ruby_disable_gc.</div><div class='del'>-</div><div class='del'>-	* signal.c: use ruby_disable_gc.</div><div class='del'>-</div><div class='del'>-Tue Sep  9 12:11:41 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: rename gc_stat entries and check stat transition.</div><div class='del'>-</div><div class='del'>-Tue Sep  9 12:06:03 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_sweep_rest): remove wrong modification of during_gc flag.</div><div class='del'>-</div><div class='del'>-Tue Sep  9 11:39:41 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: pack boolean values into rb_objspace_t::flags with bit fields</div><div class='del'>-	  to improve cache locality.</div><div class='del'>-</div><div class='del'>-Tue Sep  9 11:11:05 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_object.rb: extend timeout.</div><div class='del'>-</div><div class='del'>-Tue Sep  9 09:02:07 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/mkmf.rb (MakeMakefile#pkg_config): append --cflags to also</div><div class='del'>-	  $CXXFLAGS, as they are often used by C++ compiler.</div><div class='del'>-	  [ruby-core:54532] [Bug #8315]</div><div class='del'>-</div><div class='del'>-Tue Sep  9 07:03:22 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* compile.c: remove needless SYM2ID &lt;-&gt; ID2SYM conversions</div><div class='del'>-	  [misc #10207]</div><div class='add'>+	* ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize, ossl_dsa_export):</div><div class='add'>+	  ditto.</div><div class='ctx'> </div><div class='del'>-Tue Sep  9 05:48:42 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* ext/openssl/ossl_pkey_ec.c (ossl_ec_key_initialize,</div><div class='add'>+	  ossl_ec_key_to_string): ditto.</div><div class='ctx'> </div><div class='del'>-	* symbol.c (rb_intern_cstr_without_pindown): check dsymbol on return</div><div class='del'>-	  This is not a complete fix for bug 10206, but seems to reduce</div><div class='del'>-	  that crash and also looks correct.</div><div class='add'>+	* ext/openssl/ossl_pkey_rsa.c (ossl_rsa_initialize, ossl_rsa_export):</div><div class='add'>+	  ditto.</div><div class='ctx'> </div><div class='del'>-Tue Sep  9 04:36:24 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* test/openssl/test_pkey_{dsa,ec,rsa}.rb: test this.</div><div class='ctx'> </div><div class='del'>-	* vm_core.h (rb_env_t): use flexible array</div><div class='del'>-	  This reduces allocations and speeds up the lambda calculus</div><div class='del'>-	  fizzbuzz (bm_app_lc_fizzbuzz.rb) benchmark [ruby-core:64858]</div><div class='del'>-	* proc.c (get_local_variable_ptr): deconst to adjust for flex array</div><div class='del'>-	* vm.c (env_mark, env_free, env_memsize): remove check for env-&gt;env</div><div class='del'>-	* vm.c (env_alloc): single allocation for flex array</div><div class='del'>-	* vm.c (vm_make_env_each): adjust env_alloc call</div><div class='add'>+Fri May 20 23:45:53 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Mon Sep  8 16:08:22 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* id_table.c (list_id_table_init): When unaligned word access is</div><div class='add'>+	  prohibited and sizeof(VALUE) is 8 (64-bit machines),</div><div class='add'>+	  capa should always be even number for 8-byte word alignment</div><div class='add'>+	  of the values of a table. This code assumes that sizeof(ID) is 4,</div><div class='add'>+	  sizeof(VALUE) is 8, and xmalloc() returns 8-byte aligned memory.</div><div class='add'>+	  This fixes bus error on 64-bit SPARC Solaris 10.</div><div class='add'>+	  [Bug #12406][ruby-dev:49631]</div><div class='ctx'> </div><div class='del'>-	* benchmark/bm_app_lc_fizzbuzz.rb: should skip output on benchmark.</div><div class='add'>+Fri May 20 22:30:09 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Mon Sep  8 16:04:02 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* symbol.h (rb_id2sym): Use HAVE_BUILTIN___BUILTIN_CONSTANT_P</div><div class='ctx'> </div><div class='del'>-	* benchmark/bm_app_lc_fizzbuzz.rb: `answer.to_a' does not return</div><div class='del'>-	  a string, but an array.</div><div class='add'>+Fri May 20 22:19:00 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-Mon Sep  8 13:18:37 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* ext/date/date_core.c: [DOC] fix typos.</div><div class='add'>+	  [fix GH-1360] patched by @soundasleep</div><div class='ctx'> </div><div class='del'>-	* benchmark/bm_app_lc_fizzbuzz.rb: added.</div><div class='add'>+Fri May 20 21:26:58 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	  This program is described closely in "Understanding Computation"</div><div class='del'>-	  chapter 6 by Tom Stuart. &lt;http://computationbook.com/&gt;</div><div class='add'>+	* include/ruby/defines.h (RB_GNUC_EXTENSION, RB_GNUC_EXTENSION_BLOCK):</div><div class='add'>+	  macros for skipping __extension__ on non-GCC compilers.</div><div class='add'>+	* eval_error.c (warn_print): use RB_GNUC_EXTENSION_BLOCK instead of</div><div class='add'>+	  __extension__ because __extension__ is a GNU extension.</div><div class='add'>+	  Fix compile error on Solaris 10 with Oracle Solaris Studio 12.x.</div><div class='add'>+	  [Bug #12397] [ruby-dev:49629].</div><div class='add'>+	* internal.h (rb_fstring_cstr, rb_fstring_enc_cstr): ditto</div><div class='add'>+	* include/ruby/encoding.h (rb_enc_str_new, rb_enc_str_new_cstr): ditto</div><div class='add'>+	* include/ruby/intern.h (rb_str_new, rb_str_new_cstr,</div><div class='add'>+	  rb_usascii_str_new, rb_utf8_str_new, rb_tainted_str_new_cstr,</div><div class='add'>+	  rb_usascii_str_new_cstr, rb_utf8_str_new_cstr,</div><div class='add'>+	  rb_external_str_new_cstr, rb_locale_str_new_cstr,</div><div class='add'>+	  rb_str_buf_new_cstr, rb_str_cat_cstr, rb_exc_new_cstr): ditto</div><div class='ctx'> </div><div class='del'>-	  Japanese translation will be published soon.</div><div class='del'>-	  &lt;http://www.oreilly.co.jp/books/9784873116976/&gt;</div><div class='add'>+Fri May 20 21:17:13 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Sep  8 12:01:39 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* ext/win32ole/win32ole.c (fole_missing): make substring or dup to</div><div class='add'>+	  share the content if possible.</div><div class='ctx'> </div><div class='del'>-	* gc.c: add incremental GC algorithm. [Feature #10137]</div><div class='add'>+Fri May 20 19:48:48 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	  Please refer this ticket for details.</div><div class='add'>+	* internal.h (NEW_PARTIAL_MEMO_FOR): shrink buffer array not to</div><div class='add'>+	  mark non-VALUE fields.  fix check_rvalue_consistency abort with</div><div class='add'>+	  RGENGC_CHECK_MODE=2.</div><div class='ctx'> </div><div class='del'>-	  This change also introduces the following changes.</div><div class='add'>+	* internal.h (NEW_CMP_OPT_MEMO): exclude struct cmp_opt_data from</div><div class='add'>+	  the valid array range.</div><div class='ctx'> </div><div class='del'>-	  * Remove RGENGC_AGE2_PROMOTION and introduce object age (0 to 3).</div><div class='del'>-	    Age can be count with FL_PROMOTE0 and FL_PROMOTE1 flags in</div><div class='del'>-	    RBasic::flags (2 bit). Age == 3 objects become old objects.</div><div class='del'>-	  * WB_PROTECTED flag in RBasic to WB_UNPROTECTED bitmap.</div><div class='del'>-	  * LONG_LIVED bitmap to represent living objects while minor GCs</div><div class='del'>-	    It specifies (1) Old objects and (2) remembered shady objects.</div><div class='del'>-	  * Introduce rb_objspace_t::marked_objects which counts marked</div><div class='del'>-	    objects in current marking phase. marking count is needed to</div><div class='del'>-	    introduce incremental marking.</div><div class='del'>-	  * rename mark related function and sweep related function to</div><div class='del'>-	    gc_(marks|sweep)_(start|finish|step|rest|continue).</div><div class='del'>-	  * rename rgengc_report() to gc_report().</div><div class='del'>-	  * Add obj_info() function to get cstr of object details.</div><div class='del'>-	  * Add MEASURE_LINE() macro to measure execution time of specific line.</div><div class='del'>-	  * and many small fixes.</div><div class='add'>+	* enum.c (slicewhen_i): exclude inverted too.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h: add flag USE_RINCGC.</div><div class='del'>-	  Now USE_RINCGC can be set only with USE_RGENGC.</div><div class='add'>+Thu May 19 21:21:57 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h: introduce FL_PROMOTED0 and add FL_PROMOTED1</div><div class='del'>-	  to count object age.</div><div class='add'>+	* re.c (rb_reg_match_m_p): [DOC] fix return value in rdoc.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h: rewrite write barriers for incremental marking.</div><div class='add'>+	* test/ruby/test_regexp.rb (TestRegexp#test_match_p): add some</div><div class='add'>+	  tests from document.</div><div class='ctx'> </div><div class='del'>-	* debug.c: catch up flag name changes.</div><div class='add'>+Thu May 19 13:22:44 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* internal.h: add rb_gc_writebarrier_remember() instead of</div><div class='del'>-	  rb_gc_writebarrier_remember_promoted().</div><div class='add'>+	* ext/openssl/ossl.c (Init_openssl): register an ex_data index for</div><div class='add'>+	  X509_STORE and X509_STORE_CTX respectively. Since they don't share</div><div class='add'>+	  the ex_data index registry, we can't use the same index.</div><div class='add'>+	  (ossl_verify_cb): use the the correct index.</div><div class='ctx'> </div><div class='del'>-	* array.c (ary_memcpy0): use rb_gc_writebarrier_remember().</div><div class='add'>+	* ext/openssl/ossl_ssl.c (ossl_ssl_verify_callback): ditto.</div><div class='ctx'> </div><div class='del'>-	* array.c (rb_ary_modify): ditto.</div><div class='add'>+	* ext/openssl/ossl_x509store.c (ossl_x509store_set_vfy_cb): ditto.</div><div class='add'>+	  (ossl_x509stctx_verify): ditto.</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_hash_keys): ditto.</div><div class='add'>+	* ext/openssl/ossl.h (void ossl_clear_error): add extern declarations</div><div class='add'>+	  of ossl_store_{ctx_,}ex_verify_cb_idx.</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_hash_values): ditto.</div><div class='add'>+	* ext/openssl/openssl_missing.c: remove X509_STORE_set_ex_data and</div><div class='add'>+	  X509_STORE_get_ex_data.</div><div class='ctx'> </div><div class='del'>-	* object.c (init_copy): use rb_copy_wb_protected_attribute() because</div><div class='del'>-	  FL_WB_PROTECTED is moved from RBasic::flags.</div><div class='add'>+	* ext/openssl/openssl_missing.h: implement X509_STORE_get_ex_data,</div><div class='add'>+	  X509_STORE_set_ex_data and X509_STORE_get_ex_new_index as macros.</div><div class='ctx'> </div><div class='del'>-	* test/objspace/test_objspace.rb: catch up ObjectSpace.dump() changes.</div><div class='add'>+Thu May 19 13:11:35 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sun Sep  7 12:47:06 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl_x509attr.c (ossl_x509attr_set_value): check that the</div><div class='add'>+	  argument is an OpenSSL::ASN1::Data before converting to ASN1_TYPE.</div><div class='add'>+	  This fixes SEGV on OpenSSL::X509::Attribute#value=(non-asn1-value).</div><div class='ctx'> </div><div class='del'>-	* process.c: PTHREAD_CANCEL_DISABLE is not defined on Android.</div><div class='add'>+	* test/openssl/test_x509attr.rb: add tests for OpenSSL::X509::Attribute.</div><div class='ctx'> </div><div class='del'>-Sat Sep  6 20:59:06 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu May 19 12:10:10 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* process.c (has_privilege): The gid zero is not a privilege.</div><div class='add'>+	* re.c (rb_reg_match_m_p): fix match against empty string.</div><div class='add'>+	  rb_str_offset returns the end when the position exceeds the</div><div class='add'>+	  length.  fix the range parameter of onig_search.</div><div class='add'>+	  [ruby-core:75604] [Bug #12394]</div><div class='ctx'> </div><div class='del'>-Sat Sep  6 20:19:16 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu May 19 11:37:36 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* process.c (struct child_handler_disabler_state): cancelstate field</div><div class='del'>-	  added.</div><div class='del'>-	  (disable_child_handler_before_fork): Record cancelstate.</div><div class='del'>-	  (disable_child_handler_fork_parent): Restore cancelstate.</div><div class='add'>+	* re.c (rb_reg_match_m_p): should return false if no match, as the</div><div class='add'>+	  document says.  [Feature #8110]</div><div class='ctx'> </div><div class='del'>-Sat Sep  6 19:27:10 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu May 19 00:17:01 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* process.c (struct child_handler_disabler_state): Defined.</div><div class='add'>+	* re.c (reg_names_iter): specify capacify</div><div class='ctx'> </div><div class='del'>-Sat Sep  6 18:31:32 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Wed May 18 21:29:59 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rake.rb, lib/rake/*, test/rake/*: Update latest rake master(e47d023)</div><div class='add'>+	* thread.c (recursive_list_access): a object id may be a Bignum.  so,</div><div class='add'>+	  the list must be a objhash, instead of a identhash.</div><div class='add'>+	  this fixes many test errors on mswin64 CI.</div><div class='ctx'> </div><div class='del'>-Sat Sep  6 16:38:08 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Wed May 18 19:33:54 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole_variant.c (ole_val2variant_err,</div><div class='del'>-	  ole_val2variantdata, Init_win32ole_variant): support VT_ERROR</div><div class='del'>-	  variant with error code. add WIN32OLE_VARIANT::NoParam.</div><div class='del'>-	* test/win32ole/test_win32ole_variant.rb(test_c_noparam,</div><div class='del'>-	  test_vt_error_noparam): ditto.</div><div class='del'>-	* ext/win32ole/win32ole.c: ditto.</div><div class='add'>+	* re.c (rb_reg_match_m_p): Introduce Regexp#match?, which returns</div><div class='add'>+	  bool and doesn't save backref.</div><div class='ctx'> </div><div class='del'>-Sat Sep  6 11:08:52 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed May 18 16:52:03 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (arg_ambiguous_gen): fix warning message, "even" does</div><div class='del'>-	  not mean the number of spaces here.  state the place to put a</div><div class='del'>-	  space and the operator.  [ruby-core:64790] [Bug #10204]</div><div class='add'>+	* ext/openssl/ossl_pkcs12.c (ossl_pkcs12_initialize): pop errors</div><div class='add'>+	  leaked by PKCS12_parse(). This is a bug in OpenSSL, which exists</div><div class='add'>+	  in the versions before the version 1.0.0t, 1.0.1p, 1.0.2d.</div><div class='ctx'> </div><div class='del'>-Sat Sep  6 08:44:40 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Wed May 18 16:04:54 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rdoc/generator/template/darkfish/js/jquery.js: Backport</div><div class='del'>-	  rdoc/rdoc@74f60fcb04fee1778fe2694d1a0ea6513f8e67b7</div><div class='add'>+	* tool/downloader.rb (Downloader::RubyGems.download): verify gems</div><div class='add'>+	  only if RubyGems is 2.4 or later.  old RubyGems fails to verify</div><div class='add'>+	  almost all of bundled gems.</div><div class='ctx'> </div><div class='del'>-Sat Sep  6 08:10:44 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Wed May 18 14:52:38 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_io.rb (test_readpartial_locktmp): use IO#nonblock=</div><div class='del'>-	  Old fcntl invocation may drop necessary flags on some platforms.</div><div class='add'>+	* string.c (rb_str_modify_expand): check integer overflow.</div><div class='add'>+	  [ruby-core:75592] [Bug #12390]</div><div class='ctx'> </div><div class='del'>-Sat Sep  6 07:46:51 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Wed May 18 13:11:44 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_io.rb (test_readpartial_locktmp): avoid EBADF</div><div class='del'>-	  [ruby-core:64773] [ruby-core:64775]</div><div class='add'>+	* re.c (match_ary_subseq): get subseq of match array without creating</div><div class='add'>+	  temporary array.</div><div class='ctx'> </div><div class='del'>-Sat Sep  6 01:34:31 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* re.c (match_ary_aref): get element(s) of match array without creating</div><div class='add'>+	  temporary array.</div><div class='ctx'> </div><div class='del'>-	* process.c (rb_f_exec): Call before_exec_async_signal_safe and</div><div class='del'>-	  after_exec_async_signal_safe around rb_exec_async_signal_safe.</div><div class='del'>-	  (rb_exec_async_signal_safe): Don't call</div><div class='del'>-	  before_exec_async_signal_safe and after_exec_async_signal_safe.</div><div class='del'>-	  (rb_exec_without_timer_thread): Call before_exec and</div><div class='del'>-	  after_exec.</div><div class='del'>-	  (disable_child_handler_fork_child): Make SIGPIPE handler SIG_DFL.</div><div class='add'>+	* re.c (match_aref): Use match_ary_subseq with handling irregulars.</div><div class='ctx'> </div><div class='del'>-Sat Sep  6 00:49:41 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* re.c (match_values_at): Use match_ary_aref.</div><div class='ctx'> </div><div class='del'>-	* signal.c (ruby_signal): Don't set SA_SIGINFO for SIG_IGN and</div><div class='del'>-	  SIG_DFL.</div><div class='add'>+Wed May 18 13:03:07 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 21:45:33 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl_x509cert.c (ossl_x509_verify): X509_verify()</div><div class='add'>+	  family may put errors on 0 return (0 means verification failure).</div><div class='add'>+	  Clear OpenSSL error queue before return to Ruby. Since the queue is</div><div class='add'>+	  thread global, remaining errors in the queue can cause an unexpected</div><div class='add'>+	  error in the next OpenSSL operation.  [ruby-core:48284] [Bug #7215]</div><div class='ctx'> </div><div class='del'>-	* process.c (disable_child_handler_before_fork): New function.</div><div class='del'>-	  (disable_child_handler_fork_parent): Ditto.</div><div class='del'>-	  (disable_child_handler_fork_child): Ditto.</div><div class='del'>-	  (retry_fork_async_signal_safe): Call above functions to disable</div><div class='del'>-	  signal handlers in child process.</div><div class='add'>+	* ext/openssl/ossl_x509crl.c (ossl_x509crl_verify): ditto.</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 21:02:54 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl_x509req.c (ossl_x509req_verify): ditto.</div><div class='ctx'> </div><div class='del'>-	* process.c (handle_fork_error): Make try_gc_p argument volatile to</div><div class='del'>-	  suppress "clobbered" warning.</div><div class='add'>+	* ext/openssl/ossl_x509store.c (ossl_x509stctx_verify): ditto.</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 20:48:06 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl_pkey_dh.c (dh_generate): clear the OpenSSL error</div><div class='add'>+	  queue before re-raising exception.</div><div class='ctx'> </div><div class='del'>-	* process.c (handle_fork_error): Don't need state_p argument.</div><div class='add'>+	* ext/openssl/ossl_pkey_dsa.c (dsa_generate): ditto.</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 20:35:52 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl_pkey_rsa.c (rsa_generate): ditto.</div><div class='ctx'> </div><div class='del'>-	* process.c (has_privilege): Fix a return value.</div><div class='add'>+	* ext/openssl/ossl_ssl.c (ossl_start_ssl): ditto.</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 19:00:40 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* test/openssl: check that OpenSSL.errors is empty every time after</div><div class='add'>+	  running a test case.</div><div class='ctx'> </div><div class='del'>-	* lib/shellwords.rb: proofreading documentation.</div><div class='del'>-	  [Bug #10155][ruby-core:64471]</div><div class='add'>+Wed May 18 12:07:42 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 18:34:33 2014  Laurent Arnoud  &lt;laurent@spkdev.net&gt;</div><div class='add'>+	* ext/openssl/ossl.c (ossl_clear_error): Extracted from</div><div class='add'>+	  ossl_make_error(). This prints errors in the OpenSSL error queue if</div><div class='add'>+	  OpenSSL.debug is true, and clears the queue.</div><div class='add'>+	  (ossl_make_error): use ossl_clear_error().</div><div class='ctx'> </div><div class='del'>-	* test/csv/test_row.rb: Added some missing tests in CSV.</div><div class='del'>-	  [fix GH-710]</div><div class='del'>-	* test/csv/test_table.rb: ditto.</div><div class='add'>+	* ext/openssl/ossl.h: add prototype declaration of ossl_make_error().</div><div class='add'>+	  (OSSL_BIO_reset) use ossl_clear_error() to clear the queue. Clearing</div><div class='add'>+	  silently makes debugging difficult.</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 12:57:52 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl_engine.c (ossl_engine_s_by_id): ditto.</div><div class='ctx'> </div><div class='del'>-	* process.c (has_privilege): Refine uid/gid check.</div><div class='add'>+	* ext/openssl/ossl_ns_spki.c (ossl_spki_initialize): ditto.</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 12:40:55 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl_pkcs7.c (ossl_pkcs7_verify): ditto.</div><div class='ctx'> </div><div class='del'>-	* configure.in: Check sys/id.h, getuidx and getgidx for AIX.</div><div class='add'>+	* ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize): ditto.</div><div class='ctx'> </div><div class='del'>-	* process.c (getresuid): Defined for AIX.</div><div class='del'>-	  (getresgid): Ditto</div><div class='del'>-	  AIX don't have getresuid/getresgid but getuidx/getgidx.</div><div class='add'>+	* ext/openssl/ossl_pkey_ec.c (ossl_ec_key_initialize): ditto.</div><div class='add'>+	  (ossl_ec_group_initialize): ditto.</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 12:28:21 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl_ssl.c (ossl_ssl_shutdown): ditto.</div><div class='ctx'> </div><div class='del'>-	* process.c (has_privilege): Fix assignments.</div><div class='add'>+Wed May 18 11:53:49 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 11:10:13 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* ext/openssl/ossl_pkey_ec.c (ossl_ec_point_mul): Validate the</div><div class='add'>+	  arguments before passing to EC_POINT(s)_mul(). Add description of this</div><div class='add'>+	  method.  [ruby-core:65152] [Bug #10268]</div><div class='ctx'> </div><div class='del'>-	* lib/rdoc/generator/pot/po.rb: fixed broken tests for trailing whitespace.</div><div class='del'>-	* test/rdoc/test_rdoc_generator_pot.rb: ditto.</div><div class='del'>-	* test/rdoc/test_rdoc_generator_pot_po.rb: ditto.</div><div class='add'>+	* test/openssl/test_pkey_ec.rb (test_ec_point_mul): Test that</div><div class='add'>+	  OpenSSL::PKey::EC::Point#mul works.</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 10:41:07 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Wed May 18 11:19:59 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* test/rdoc/test_rdoc_rdoc.rb (TestRDocRDoc#test_parse_file_encoding):</div><div class='del'>-	  typofix.</div><div class='add'>+	* ext/openssl/ossl_bn.c (try_convert_to_bnptr): Extracted from</div><div class='add'>+	  GetBNPtr(). This doesn't raise exception but returns NULL on error.</div><div class='add'>+	  (GetBNPtr): Raise TypeError if conversion fails.</div><div class='add'>+	  (ossl_bn_eq): Implement BN#==.</div><div class='add'>+	  (ossl_bn_eql): #eql? should not raise TypeError even if the argument</div><div class='add'>+	  is not compatible with BN.</div><div class='add'>+	  (ossl_bn_hash): Implement BN#hash.</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 10:39:14 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* ext/openssl/ossl_bn.c (Init_ossl_bn): Define #== and #hash.</div><div class='ctx'> </div><div class='del'>-	* lib/rdoc.rb, lib/rdoc, test/rdoc: Update to RDoc 4.2.0.alpha(313287)</div><div class='add'>+	* test/openssl/test_bn.rb: Test BN#eql?, #== and #hash</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 06:04:22 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Wed May 18 10:17:41 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm.c: remove unused USE_THREAD_RECYCLE [misc #10198]</div><div class='add'>+	* include/ruby/ruby.h (RB_INTEGER_TYPE_P): new macro and</div><div class='add'>+	  underlying inline function to check if the object is an</div><div class='add'>+	  Integer (Fixnum or Bignum).</div><div class='ctx'> </div><div class='del'>-Fri Sep  5 00:29:08 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Wed May 18 09:52:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in (dirfd): Check function.</div><div class='add'>+	* enum.c (enum_sum, hash_sum, hash_sum_i, enum_sum_i, sum_iter):</div><div class='add'>+	  Optimize for hashes when each method isn't redefined.</div><div class='ctx'> </div><div class='del'>-	* dir.c (dir_fileno): New method.</div><div class='del'>-	  [ruby-dev:48265] [Feature #9880]</div><div class='add'>+Wed May 18 09:14:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Sep  4 23:39:52 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* enum.c (enum_sum, int_range_sum): Extract int_range_sum from</div><div class='add'>+	  enum_sum.</div><div class='ctx'> </div><div class='del'>-	* process.c (has_privilege): New function.</div><div class='del'>-	  (retry_fork_async_signal_safe): Don't use vfork() for privileged</div><div class='del'>-	  process.</div><div class='add'>+Wed May 18 03:16:06 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in (getresuid): Check function.</div><div class='del'>-	  (getresgid): Ditto.</div><div class='add'>+	* re.c (match_values_at): fix regression at r55036.</div><div class='add'>+	  MatchData#values_at accepts Range.</div><div class='ctx'> </div><div class='del'>-Thu Sep  4 20:22:14 2014  Laurent Arnoud  &lt;laurent@spkdev.net&gt;</div><div class='add'>+Wed May 18 02:02:58 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/pathname/test_pathname.rb: added testcase for Pathname#mountpoint?.</div><div class='del'>-	  [fix GH-709]</div><div class='add'>+	* re.c (match_aref): remove useless condition and call rb_fix2int.</div><div class='add'>+	  rb_reg_nth_match handles negative index.</div><div class='ctx'> </div><div class='del'>-Thu Sep  4 20:09:21 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Wed May 18 01:57:43 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* symbian/*: removed Symbian support.</div><div class='del'>-	  [Feature #10199][ruby-core:64725]</div><div class='del'>-	* dln.c: ditto.</div><div class='del'>-	* include/ruby/defines.h: ditto.</div><div class='del'>-	* thread_pthread.c: ditto.</div><div class='del'>-	* vm.c: ditto.</div><div class='add'>+	* re.c (match_values_at): MatchData#values_at supports named captures</div><div class='add'>+	  [Feature #9179]</div><div class='ctx'> </div><div class='del'>-Thu Sep  4 17:44:40 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* re.c (namev_to_backref_number): separated.</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_helper): use #ifdef instead of #if.</div><div class='del'>-	  gcc's -Wundef option shows warning for undefined macro.</div><div class='add'>+Wed May 18 00:05:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* numeric.c (flo_is_finite_p): ditto.</div><div class='add'>+	* enum.c (enum_sum): Optimize for a range from int to int.</div><div class='ctx'> </div><div class='del'>-	* vm_dump.c (rb_vmdebug_thread_dump_state): ditto.</div><div class='add'>+	* test/ruby/test_enum.rb (test_range_sum): Move from test_range.rb,</div><div class='add'>+	  and add assertions for some conditions.</div><div class='ctx'> </div><div class='del'>-	* vm_core.h: define VM_DEBUG_VERIFY_METHOD_CACHE to 0.</div><div class='add'>+	* test/ruby/test_enum.rb (test_hash_sum): Move from test_hash.rb.</div><div class='ctx'> </div><div class='del'>-Thu Sep  4 03:57:46 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* test/ruby/test_hash.rb, test/ruby/test_range.rb: Remove test_sum.</div><div class='ctx'> </div><div class='del'>-	* man/ruby.1: spelling fix ("bellow" =&gt; "below") [ci-skip]</div><div class='add'>+Tue May 17 23:08:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Sep  4 03:52:16 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* enum.c (enum_sum): [DOC] Write documentation.</div><div class='ctx'> </div><div class='del'>-	* man/ruby.1: add trailing slash to URLs [ci-skip]</div><div class='add'>+Tue May 17 22:53:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Sep  3 19:10:28 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* enum.c (enum_sum): Implement Enumerable#sum.</div><div class='ctx'> </div><div class='del'>-	* process.c (before_fork_ruby): Renamed from before_fork.</div><div class='del'>-	  (after_fork_ruby): Renamed from after_fork.</div><div class='add'>+	* test/ruby/test_enum.rb (test_sum): Test sum for Enumerable.</div><div class='ctx'> </div><div class='del'>-Wed Sep  3 18:56:05 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/ruby/test_hash.rb (test_sum): Test sum for Hash.</div><div class='ctx'> </div><div class='del'>-	* process.c (forked_child): Removed.</div><div class='add'>+	* test/ruby/test_range.rb (test_sum): Test sum for Range.</div><div class='ctx'> </div><div class='del'>-Wed Sep  3 16:56:07 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue May 17 22:11:41 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* object.c (rb_obj_copy_ivar): allocate no memory for empty</div><div class='del'>-	  instance variables.  [ruby-core:64700] [Bug #10191]</div><div class='add'>+	* object.c, numeric.c, enum.c, ext/-test-/bignum/mul.c,</div><div class='add'>+	  lib/rexml/quickpath.rb, lib/rexml/text.rb, lib/rexml/xpath_parser.rb,</div><div class='add'>+	  lib/rubygems/specification.rb, lib/uri/generic.rb,</div><div class='add'>+	  bootstraptest/test_eval.rb, basictest/test.rb,</div><div class='add'>+	  test/-ext-/bignum/test_big2str.rb, test/-ext-/bignum/test_div.rb,</div><div class='add'>+	  test/-ext-/bignum/test_mul.rb, test/-ext-/bignum/test_str2big.rb,</div><div class='add'>+	  test/csv/test_data_converters.rb, test/date/test_date.rb,</div><div class='add'>+	  test/json/test_json_generate.rb, test/minitest/test_minitest_mock.rb,</div><div class='add'>+	  test/openssl/test_cipher.rb, test/rexml/test_jaxen.rb,</div><div class='add'>+	  test/ruby/test_array.rb, test/ruby/test_basicinstructions.rb,</div><div class='add'>+	  test/ruby/test_bignum.rb, test/ruby/test_case.rb,</div><div class='add'>+	  test/ruby/test_class.rb, test/ruby/test_complex.rb,</div><div class='add'>+	  test/ruby/test_enum.rb, test/ruby/test_eval.rb,</div><div class='add'>+	  test/ruby/test_iseq.rb, test/ruby/test_literal.rb,</div><div class='add'>+	  test/ruby/test_math.rb, test/ruby/test_module.rb,</div><div class='add'>+	  test/ruby/test_numeric.rb, test/ruby/test_range.rb,</div><div class='add'>+	  test/ruby/test_rational.rb, test/ruby/test_refinement.rb,</div><div class='add'>+	  test/ruby/test_rubyvm.rb, test/ruby/test_struct.rb,</div><div class='add'>+	  test/ruby/test_variable.rb, test/rubygems/test_gem_specification.rb,</div><div class='add'>+	  test/thread/test_queue.rb: Use Integer instead of Fixnum and Bignum.</div><div class='ctx'> </div><div class='del'>-Wed Sep  3 12:05:17 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Tue May 17 15:26:10 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* process.c (retry_fork_async_signal_safe): Use vfork() if available.</div><div class='del'>-	  vfork() is still faster than fork() especially when the parent</div><div class='del'>-	  process uses big memory.</div><div class='add'>+	* [Feature #12005] Unify Fixnum and Bignum into Integer</div><div class='ctx'> </div><div class='del'>-	  ruby -rbenchmark -e 'a = "a" * 1_000_000_000; puts Benchmark.measure { system("true") }'</div><div class='del'>-	  fork:   0.000000   0.010000   0.010000 (  0.014968)</div><div class='del'>-	  vfork:  0.000000   0.000000   0.000000 (  0.000912)</div><div class='del'>-	  on Debian sid.</div><div class='add'>+	* include/ruby/ruby.h (rb_class_of): Return rb_cInteger for fixnums.</div><div class='ctx'> </div><div class='del'>-Wed Sep  3 11:33:08 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* insns.def (INTEGER_REDEFINED_OP_FLAG): Unified from</div><div class='add'>+	  FIXNUM_REDEFINED_OP_FLAG and BIGNUM_REDEFINED_OP_FLAG.</div><div class='ctx'> </div><div class='del'>-	* test/openssl/test_pkey_rsa.rb (OpenSSL#test_sign_verify_memory_leak):</div><div class='del'>-	  added timeout into testcase for low performance environment.</div><div class='del'>-	  [Bug #9984][ruby-core:63367]</div><div class='add'>+	* vm_core.h: Ditto.</div><div class='ctx'> </div><div class='del'>-Wed Sep  3 07:50:15 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* vm_insnhelper.c (opt_eq_func): Use INTEGER_REDEFINED_OP_FLAG instead</div><div class='add'>+	  of FIXNUM_REDEFINED_OP_FLAG.</div><div class='ctx'> </div><div class='del'>-	* configure.in: Use AC_FUNC_FORK.</div><div class='add'>+	* vm.c (vm_redefinition_check_flag): Use rb_cInteger instead of</div><div class='add'>+	  rb_cFixnum and rb_cBignum.</div><div class='add'>+	  (C): Use Integer instead of Fixnum and Bignum.</div><div class='ctx'> </div><div class='del'>-	* io.c: Use HAVE_WORKING_FORK instead of HAVE_FORK.</div><div class='add'>+	* numeric.c (fix_succ): Removed.</div><div class='add'>+	  (Init_Numeric): Define Fixnum as Integer.</div><div class='ctx'> </div><div class='del'>-	* process.c: Ditto.</div><div class='add'>+	* bignum.c (bignew): Use rb_cInteger instead of rb_cBignum.</div><div class='add'>+	  (rb_int_coerce): replaced from rb_big_coerce and return fixnums</div><div class='add'>+	  as-is.</div><div class='add'>+	  (Init_Bignum): Define Bignum as Integer.</div><div class='add'>+	  Don't define ===.</div><div class='ctx'> </div><div class='del'>-Wed Sep  3 00:12:44 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* error.c (builtin_class_name): Return "Integer" for fixnums.</div><div class='ctx'> </div><div class='del'>-	* process.c (retry_fork_async_signal_safe): Don't return on in child</div><div class='del'>-	  process.</div><div class='add'>+	* sprintf.c (ruby__sfvextra): Use rb_cInteger instead of rb_cFixnum.</div><div class='ctx'> </div><div class='del'>-Tue Sep  2 23:47:35 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/-test-/testutil: New directory to test.</div><div class='add'>+	  Currently it provides utilities for fixnum and bignum.</div><div class='ctx'> </div><div class='del'>-	* process.c (retry_fork_async_signal_safe): Specialized version of</div><div class='del'>-	  retry_fork respect to rb_fork_async_signal_safe.</div><div class='del'>-	  (retry_fork_ruby): Specialized version of retry_fork respect to</div><div class='del'>-	  rb_fork_ruby.</div><div class='del'>-	  (rb_fork_ruby): Removed.</div><div class='add'>+	* ext/json/generator/generator.c: Define mInteger_to_json.</div><div class='ctx'> </div><div class='del'>-Tue Sep  2 23:26:26 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* lib/mathn.rb (Fixnum#/): Redefinition removed.</div><div class='ctx'> </div><div class='del'>-	* process.c (send_child_error): Simplified.</div><div class='del'>-	  (recv_child_error): Ditto.</div><div class='add'>+Tue May 17 11:58:58 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Sep  2 22:56:25 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* configure.in (RUBY_CHECK_BUILTIN_SETJMP): declare t as NORETURN</div><div class='add'>+	  to suppress warnings by -Wsuggest-attribute=noreturn.</div><div class='add'>+	  [ruby-core:75510] [Bug #12383]</div><div class='ctx'> </div><div class='del'>-	* process.c (rb_fork_async_signal_safe): Inline rb_fork_internal.</div><div class='del'>-	  (rb_fork_ruby): Ditto.</div><div class='del'>-	  (rb_fork_internal): Removed.</div><div class='del'>-	  (chfunc_protect): Removed.</div><div class='add'>+Tue May 17 10:40:18 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Sep  2 22:43:52 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* configure.in (RUBY_CHECK_SETJMP): needs the header and proper</div><div class='add'>+	  arguments for builtin setjmp functions.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_io.rb (test_new_with_block): Set autoclose to avoid</div><div class='del'>-	  EBADF.</div><div class='add'>+Mon May 16 20:00:30 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Sep  2 22:01:51 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='add'>+	* enc/unicode.h: Additional uses of ONIG_CASE_MAPPING compilation switch</div><div class='ctx'> </div><div class='del'>-	* Makefile.in (update-coverage): Remove a never executed line.</div><div class='add'>+Mon May 16 19:46:33 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Sep  2 19:48:26 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* include/ruby/oniguruma.h: Introducing ONIG_CASE_MAPPING compilation</div><div class='add'>+	  switch</div><div class='ctx'> </div><div class='del'>-	* process.c (handle_fork_error): Extracted from retry_fork.</div><div class='add'>+	* include/ruby/oniguruma.h, enc/unicode.h: Using ONIG_CASE_MAPPING</div><div class='add'>+	  compilation switch</div><div class='ctx'> </div><div class='del'>-Tue Sep  2 17:02:53 2014  Vit Ondruch  &lt;v.ondruch@tiscali.cz&gt;</div><div class='add'>+Mon May 16 19:29:31 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/rbinstall.rb: fixed error of local installation.</div><div class='del'>-	  [Bug #10192][ruby-core:64702]</div><div class='add'>+	* gems/bundled_gems: Update xmlrpc-0.1.1. xmlrpc-0.1.0 didn't allow</div><div class='add'>+	  to install on 2.4.0dev.</div><div class='ctx'> </div><div class='del'>-Tue Sep  2 16:58:03 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Mon May 16 13:28:59 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/runner.rb: reporting test coverage for test-all with COVERAGE env.</div><div class='del'>-	  [Feature #10189][ruby-core:64681][fix GH-708]</div><div class='del'>-	* Makefile.in: added task for coverage report.</div><div class='del'>-	* common.mk: added definition of forked simplecov url.</div><div class='del'>-	* .gitignore: ignored coverage directory.</div><div class='add'>+	* configure.in (FUNC_STDCALL, FUNC_CDECL, FUNC_FASTCALL): set</div><div class='add'>+	  macro names explicitly to the old names, which are accidentally</div><div class='add'>+	  changed at r54985, for backward compatibilities.</div><div class='add'>+	  fiddle also depends on these names to fallback to ANSI names.</div><div class='add'>+	  [ruby-core:75494] [Bug #12377]</div><div class='ctx'> </div><div class='del'>-Mon Sep  1 20:11:02 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Mon May 16 11:39:02 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (rbtime2vtdate): try to convert millisecond</div><div class='del'>-	  of Time object to millisecond of VT_DATE VARIANT.</div><div class='del'>-	* test/win32ole/test_win32ole_variant.rb</div><div class='del'>-	  (test_conversion_time2date_with_msec): ditto.</div><div class='add'>+	* lib/xmlrpc.rb, lib/xmlrpc/*, test/xmlrpc: XMLRPC is bundled gem</div><div class='add'>+	  on Ruby 2.4. It is extracted to https://github.com/ruby/xmlrpc</div><div class='add'>+	  [Feature #12160][ruby-core:74239]</div><div class='add'>+	* gems/bundled_gems: ditto.</div><div class='ctx'> </div><div class='del'>-Sun Aug 31 16:58:49 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon May 16 06:06:21 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/benchmark.rb: Fix a syntax error.</div><div class='add'>+	* proc.c: fix RDoc of Proc#===/call/yield/[]</div><div class='add'>+	  [Bug #12332]</div><div class='ctx'> </div><div class='del'>-Sun Aug 31 08:46:44 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sun May 15 20:55:31 2016  Masatoshi SEKI  &lt;m_seki@mva.biglobe.ne.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/zlib/zlib.c (gzfile_reset): preserve ZSTREAM_FLAG_GZFILE</div><div class='del'>-	  [Bug #10101]</div><div class='add'>+	* lib/drb/timeridconv.rb: don't use keeper thread. [Bug #12342]</div><div class='ctx'> </div><div class='del'>-	* test/zlib/test_zlib.rb (test_rewind): test each_byte</div><div class='add'>+	* test/drb/ut_timerholder.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Sat Aug 30 19:22:47 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sun May 15 16:15:25 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* symbol.c (rb_sym2id): do not return garbage object</div><div class='add'>+	* array.c (rb_ary_entry): extract rb_ary_elt to organize if-conditions</div><div class='add'>+	  and check whether is embedded at once.</div><div class='ctx'> </div><div class='del'>-Sat Aug 30 06:39:48 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+Sun May 15 10:57:26 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych/visitors/yaml_tree.rb: fix NameError dumping and</div><div class='del'>-	  loading. Fixes GH #85. Thanks @brentdax for the patch!</div><div class='del'>-	* test/psych/test_exception.rb: test for fix</div><div class='add'>+	* vm_insnhelper.c (vm_get_ev_const): warn deprecated constant even</div><div class='add'>+	  in the class context.  [ruby-core:75505] [Bug #12382]</div><div class='ctx'> </div><div class='del'>-Sat Aug 30 06:23:40 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+Sun May 15 03:13:01 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych/scalar_scanner.rb: fix loading strings that</div><div class='del'>-	  look like integers but have a newline. Fixes GH #189</div><div class='del'>-	* test/psych/test_string.rb: test for fix</div><div class='add'>+	* iseq.h (struct iseq_compile_data): use struct rb_id_table</div><div class='add'>+	  instead of st_table.</div><div class='ctx'> </div><div class='del'>-Sat Aug 30 06:10:39 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+	* iseq.c (prepare_iseq_build): don't allocate ivar_cache_table</div><div class='add'>+	  until it has at least one element.</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych/visitors/to_ruby.rb: merge keys with a hash</div><div class='del'>-	  should merge the hash in to the parent.</div><div class='del'>-	* test/psych/test_merge_keys.rb: test for change. Fixes GH #202</div><div class='add'>+	* iseq.c (compile_data_free): free ivar_cache_table only if it</div><div class='add'>+	  is allocated.</div><div class='ctx'> </div><div class='del'>-Sat Aug 30 06:00:26 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+	* compile.c (get_ivar_ic_value): allocate if the table is not</div><div class='add'>+	  allocated yet.</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych/visitors/to_ruby.rb: quoted "&lt;&lt;" strings</div><div class='del'>-	  should not be treated as merge keys.</div><div class='del'>-	* ext/psych/lib/psych/visitors/yaml_tree.rb: hashes with keys</div><div class='del'>-	  containing "&lt;&lt;" should roundtrip.</div><div class='del'>-	* test/psych/test_merge_keys.rb: test for change. Fixes GH #203</div><div class='add'>+Sat May 14 09:04:34 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 29 17:56:44 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* lib/mkmf.rb (pkg_config): use xsystem consistently to set up</div><div class='add'>+	  library path environment variable as well as latter pkg-config</div><div class='add'>+	  calls.  [ruby-dev:49619] [Bug #12379]</div><div class='ctx'> </div><div class='del'>-	* test/net/imap/test_imap_response_parser.rb: removed needless code.</div><div class='add'>+Sat May 14 00:16:54 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 29 17:36:58 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* random.c (make_seed_value): append leading-zero-guard and get</div><div class='add'>+	  rid of making a local copy of the seed.</div><div class='ctx'> </div><div class='del'>-	* test/rinda/test_rinda.rb: removed useless assignment variables.</div><div class='del'>-	* test/rss/rss-assertions.rb: ditto.</div><div class='del'>-	* test/rss/test_maker_itunes.rb: ditto.</div><div class='add'>+Fri May 13 08:46:42 2016  cremno  &lt;cremno@mail.ru&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 29 16:18:26 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* NEWS: drop FreeBSD &lt; 4 support.  [Fix GH-1339]</div><div class='add'>+	  The most recent version affected by this is 3.5 and was released</div><div class='add'>+	  in 2000.</div><div class='add'>+	  https://www.freebsd.org/releases/3.5R/announce.html</div><div class='add'>+	  https://en.wikipedia.org/wiki/History_of_FreeBSD#Version_history</div><div class='ctx'> </div><div class='del'>-	* string.c: revert part of r47311, add rb_vm_fstring_table(),</div><div class='del'>-	  remove vm_core.h dependency. [ruby-core:64627]</div><div class='add'>+Fri May 13 03:12:09 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 29 15:17:13 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* include/ruby/defines.h (GCC_VERSION_SINCE): moved from internal.h.</div><div class='ctx'> </div><div class='del'>-	* string.c: remove static frozen_strings</div><div class='del'>-	* string.c (Init_frozen_strings): new function</div><div class='del'>-	* string.c (rb_fstring): remove check for frozen strings,</div><div class='del'>-	  use per-VM table</div><div class='del'>-	* string.c (rb_str_free): use per-VM table</div><div class='del'>-	* string.c (Init_String): use per-VM table</div><div class='del'>-	* vm_core.h (rb_vm_t): add frozen_strings table</div><div class='del'>-	* internal.h (Init_frozen_strings): new function prototype</div><div class='del'>-	* eval.c (ruby_setup): call Init_frozen_strings</div><div class='del'>-	  [Feature #10182]</div><div class='add'>+Fri May 13 03:11:20 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug 27 23:10:24 2014  Masaki Matsushita &lt;glass.saga@gmail.com&gt;</div><div class='add'>+	* configure.in (__builtin_constant_p): check.</div><div class='ctx'> </div><div class='del'>-	* lib/tempfile.rb: remove "require 'thread'". its features are no</div><div class='del'>-	  longer used.</div><div class='add'>+	* internal.h: Use HAVE_BUILTIN___BUILTIN_CONSTANT_P</div><div class='ctx'> </div><div class='del'>-Wed Aug 27 21:19:40 2014  gogo tanaka  &lt;mail@tanakakazuki.com&gt;</div><div class='add'>+Fri May 13 03:10:39 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/drb/acl.rb: Removed meaningless #to_s methods in interpolation.</div><div class='del'>-	  [Feature #10174][ruby-core:64584]</div><div class='del'>-	* lib/erb.rb: ditto.</div><div class='del'>-	* lib/observer.rb: ditto.</div><div class='del'>-	* lib/rake/invocation_chain.rb: ditto.</div><div class='del'>-	* lib/rubygems/command_manager.rb: ditto.</div><div class='del'>-	* lib/rubygems/config_file.rb: ditto.</div><div class='del'>-	* lib/uri/common.rb: ditto.</div><div class='add'>+	* configure.in: use alternative keyword</div><div class='add'>+	  to avoid macros conflicts with them.</div><div class='ctx'> </div><div class='del'>-Wed Aug 27 21:08:20 2014  gogo tanaka  &lt;mail@tanakakazuki.com&gt;</div><div class='add'>+Thu May 12 01:54:08 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/drb/drb.rb: use attr_reader instead of Module#attr.</div><div class='del'>-	  [Feature #10172][ruby-core:64582]</div><div class='del'>-	* lib/irb/ruby-token.rb: ditto.</div><div class='del'>-	* lib/net/telnet.rb: ditto.</div><div class='del'>-	* lib/rdoc/ruby_token.rb: ditto.</div><div class='del'>-	* lib/thwait.rb: ditto.</div><div class='add'>+	* lib/mkmf.rb (try_func): get rid of conflict of declarations of</div><div class='add'>+	  main().  checking local symbol reference does not make sense.</div><div class='ctx'> </div><div class='del'>-Wed Aug 27 19:52:33 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Thu May 12 00:18:19 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (vtdate2rbtime): try to convert millisecond</div><div class='del'>-	  of VT_DATE VARIANT to nsec of Time object.</div><div class='del'>-	* test/win32ole/test_win32ole_variant.rb</div><div class='del'>-	  (test_conversion_dbl2date_with_msec): ditto.</div><div class='add'>+	* win32/Makefile.sub (HAVE_QSORT_S): use qsort_s only for Visual Studio</div><div class='add'>+	  2012 or later, because VS2010 seems to causes a SEGV in</div><div class='add'>+	  test/ruby/test_enum.rb.</div><div class='ctx'> </div><div class='del'>-Wed Aug 27 09:57:29 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Wed May 11 23:59:47 2016  Masaya Tarui  &lt;tarui@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_complex.rb: removed unreachable code.</div><div class='del'>-	* test/ruby/test_rational.rb: ditto.</div><div class='add'>+	* vm_insnhelper.c (vm_getivar): describe fast-path explicit</div><div class='add'>+	  (compiler friendly). [Bug #12274].</div><div class='ctx'> </div><div class='del'>-Wed Aug 27 07:59:17 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Wed May 11 21:30:07 2016  Masaya Tarui  &lt;tarui@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (iseq_set_sequence): check for multiplication overflow</div><div class='add'>+	* compile.c (iseq_compile_each): share InlineCache during same</div><div class='add'>+	  instance variable accesses. Reducing memory consumption,</div><div class='add'>+	  rising cache hit rate and rising branch prediction hit rate</div><div class='add'>+	  are expected. A part of [Bug #12274].</div><div class='ctx'> </div><div class='del'>-Tue Aug 26 22:07:42 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* iseq.h (struct iseq_compile_data): introduce instance</div><div class='add'>+	  variable IC table for sharing.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_complex.rb: cherry-picked working assertions from r47251.</div><div class='del'>-	* test/ruby/test_rational.rb: cherry-picked working assertions from r47263.</div><div class='add'>+	* iseq.c (prepare_iseq_build, compile_data_free):</div><div class='add'>+	  construct/destruct above table.</div><div class='ctx'> </div><div class='del'>-Tue Aug 26 21:07:56 2014  gogo tanaka  &lt;mail@tanakakazuki.com&gt;</div><div class='add'>+Wed May 11 17:18:53 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/mathn.rb (Fixnum#**, Bignum#**, Float#**, Rational#**):</div><div class='del'>-	  remove as these are now built-in.  [ruby-core:63973] [Bug #10086]</div><div class='add'>+	* util.c (ruby_qsort): use qsort_s if available, for Microsoft</div><div class='add'>+	  Visual Studio 2005 (msvcr80.dll) and mingw.</div><div class='ctx'> </div><div class='del'>-Tue Aug 26 20:46:55 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Wed May 11 10:33:26 2016  Marcus Stollsteimer  &lt;sto.mar@web.de&gt;</div><div class='ctx'> </div><div class='del'>-	* time.c (rb_time_unmagnify_to_float): Avoid double rounding.</div><div class='del'>-	  Reported by Tsuyoshi Sawada.</div><div class='del'>-	  https://bugs.ruby-lang.org/issues/10135#note-1</div><div class='add'>+	* COPYING: Remove trailing-whitespaces.</div><div class='add'>+	  [ci skip][fix GH-1348]</div><div class='ctx'> </div><div class='del'>-Tue Aug 26 17:12:47 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue May 10 21:05:45 2016  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* io.c (io_close): ignore only "closed stream" IOError and</div><div class='del'>-	  NoMethodError, do not swallow other exceptions at the end of</div><div class='del'>-	  block.  [ruby-core:64463] [Bug #10153]</div><div class='add'>+	* insns.def (defineclass): Also raise an error when redeclaring the</div><div class='add'>+	  superclass of a class as Object and it has another superclass.</div><div class='add'>+	  [Bug #12367] [ruby-core:75446]</div><div class='ctx'> </div><div class='del'>-Tue Aug 26 13:46:33 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='add'>+	* test/ruby/test_class.rb: test for above.</div><div class='ctx'> </div><div class='del'>-	* template/fake.rb.in: fix failed to make install when @srcdir@ is</div><div class='del'>-	  absolute path.</div><div class='add'>+Tue May 10 14:57:09 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug 26 13:43:50 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* random.c (obj_random_bytes): base on bytes method instead of</div><div class='add'>+	  rand method, not to call toplevel rand method.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_range.rb: added workaround for VERBOSE message.</div><div class='add'>+Tue May 10 13:07:28 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug 26 12:38:02 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* configure.in (-fexcess-precision=standard): before r54895 -std=c99</div><div class='add'>+	  is specified and it implied -fexcess-precision=standard.</div><div class='add'>+	  Now with -std=gnu99, it should be explicitly specified.</div><div class='add'>+	  https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html</div><div class='ctx'> </div><div class='del'>-	* test/test_mathn.rb: added workaround for VERBOSE messages.</div><div class='add'>+Mon May  9 10:51:59 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug 26 11:44:04 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* thread.c (rb_thread_atfork_internal): move th to an argument.</div><div class='ctx'> </div><div class='del'>-	* lib/shell/process-controller.rb: removed commented-out code.</div><div class='add'>+	* thread.c (rb_thread_atfork): do not repeat GET_THREAD().</div><div class='ctx'> </div><div class='del'>-Tue Aug 26 11:39:01 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Mon May  9 10:46:36 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/thwait.rb (ThreadsWait): removed needless constant.</div><div class='add'>+	* thread.c (rb_thread_atfork, rb_thread_atfork_before_exec): do</div><div class='add'>+	  nothing unless working fork is available.</div><div class='ctx'> </div><div class='del'>-Tue Aug 26 09:27:10 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* thread_sync.c (rb_mutex_abandon_all): define only if working</div><div class='add'>+	  fork is available.</div><div class='ctx'> </div><div class='del'>-	* lib/mathn.rb: mathn library is deprecated on ruby 2.2.</div><div class='del'>-	  [Feature #10169][ruby-core:64553]</div><div class='add'>+	* thread_sync.c (rb_mutex_abandon_keeping_mutexes): ditto.</div><div class='ctx'> </div><div class='del'>-Tue Aug 26 09:25:03 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* thread_sync.c (rb_mutex_abandon_locking_mutex): ditto.</div><div class='ctx'> </div><div class='del'>-	* lib/mathn.rb: removed commented-out code.</div><div class='add'>+	* thread_win32.c (gvl_init): never used.</div><div class='ctx'> </div><div class='del'>-Mon Aug 25 20:15:50 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Mon May  9 07:18:06 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c(fole_s_connect, fole_initialize): raise a</div><div class='del'>-	  security error with the tainted string object.</div><div class='del'>-	* ext/win32ole/win32ole_event.c(ev_advise): ditto.</div><div class='del'>-	* test/win32ole/test_win32ole.rb(test_s_new_exc_svr_tainted,</div><div class='del'>-	  test_s_new_exc_host_tainted): ditto.</div><div class='del'>-	* test/win32ole/test_win32ole_event.rb(test_s_new_exc_tainted): ditto.</div><div class='add'>+	* include/ruby/{defines,ruby}.h: need to define function attributes</div><div class='add'>+	  alternatives in defines.h instead of ruby.h, because they are used</div><div class='add'>+	  in oniguruma.h and the header used without including ruby.h at</div><div class='add'>+	  encoding library sources.</div><div class='ctx'> </div><div class='del'>-Mon Aug 25 12:56:54 2014  Ivan Korunkov  &lt;ivankorunkov@ya.ru&gt;</div><div class='add'>+Mon May  9 06:30:12 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/logger.rb (format_datetime): use "%6N" to show microsecond.</div><div class='del'>-	  [Fix GH-704]</div><div class='add'>+	* include/ruby/ruby.h (CONSTFUNC, PUREFUNC): fixed build errors on</div><div class='add'>+	  non-gcc build environments introduced at r54952.</div><div class='ctx'> </div><div class='del'>-Mon Aug 25 11:02:07 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Mon May  9 02:51:51 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_core.h (rb_iseq_location_t): change first_lineno type to VALUE</div><div class='del'>-	* iseq.c (rb_iseq_build_for_ruby2cext): update based on argument</div><div class='add'>+	* gc.c (rb_gc_unprotect_logging): throw rb_memerror when it cannot</div><div class='add'>+	  allocate memory. This is pointed out by Facebook's Infer.</div><div class='ctx'> </div><div class='del'>-Sun Aug 24 16:14:46 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* gc.c (gc_prof_setup_new_record): ditto.</div><div class='ctx'> </div><div class='del'>-	* lib/e2mmap.rb: remove needless instance variables.</div><div class='del'>-	* lib/irb.rb: ditto.</div><div class='del'>-	* lib/irb/**/*.rb: ditto.</div><div class='del'>-	* lib/shell.rb: ditto.</div><div class='add'>+	* regparse.c (parse_regexp): ditto.</div><div class='ctx'> </div><div class='del'>-Sun Aug 24 12:44:26 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* util.c (MALLOC): use xmalloc and xfree like above.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_complex.rb: removed needless conditions.</div><div class='del'>-	* test/ruby/test_rational.rb: ditto.</div><div class='add'>+Mon May  9 02:39:16 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Aug 24 11:47:39 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* configure.in: check function attribute const and pure,</div><div class='add'>+	  and define CONSTFUNC and PUREFUNC if available.</div><div class='add'>+	  Note that I don't add those options as default because</div><div class='add'>+	  it still shows many false-positive (it seems not to consider</div><div class='add'>+	  longjmp).</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_rational.rb: fixed indent.</div><div class='add'>+	* vm_eval.c (stack_check): get rb_thread_t* as an argument</div><div class='add'>+	  to avoid duplicate call of GET_THREAD().</div><div class='ctx'> </div><div class='del'>-Sun Aug 24 11:44:11 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Sun May  8 21:01:14 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_rational.rb: remove commented-out code.</div><div class='add'>+	* ext/openssl/extconf.rb: assume it doesn't have SSLv2 related</div><div class='add'>+	  functions when OPENSSL_NO_SSL2 is defined.</div><div class='add'>+	  Usually openssl's header and the library (libssl) have the same</div><div class='add'>+	  set of functions, but on some environment the library has functions</div><div class='add'>+	  whose headers doesn't declare. (openssl/opensslconf.h and libssl.so</div><div class='add'>+	  aren't be synchronized)</div><div class='add'>+	  To detect such case explicitly check feature macro and remove</div><div class='add'>+	  related functions.</div><div class='ctx'> </div><div class='del'>-Sun Aug 24 11:09:29 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sun May  8 18:51:33 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/benchmark.rb (measure): reduce allocations as in r47260</div><div class='add'>+	* file.c (rb_home_dir_of): return the default home path if the</div><div class='add'>+	  user name is the current user name, on platforms where struct</div><div class='add'>+	  pwd is not supported.  a temporary measure against</div><div class='add'>+	  [Bug #12226].</div><div class='ctx'> </div><div class='del'>-Sun Aug 24 10:35:54 2014  Pete Higgins  &lt;pete@peterhiggins.org&gt;</div><div class='add'>+Sun May  8 08:51:38 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/benchmark.rb (module Benchmark): define BENCHMARK_CLOCK</div><div class='del'>-	  (realtime): use Process.clock_gettime(BENCHMARK_CLOCK)</div><div class='del'>-	  Reduces allocations to improve performance [Feature #10165]</div><div class='add'>+	* configure.in: add -Wsuggest-attribute=format and suppress warnings.</div><div class='ctx'> </div><div class='del'>-	* test/benchmark/test_benchmark.rb (test_realtime_output): new test</div><div class='add'>+Sun May  8 08:31:03 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 22 20:23:54 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* configure.in: add -Wsuggest-attribute=noreturn and suppress warnings.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_fstring): fix condition (easy to cause infinite loop!).</div><div class='add'>+Sun May  8 08:19:16 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 22 20:07:43 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* configure.in: add -Werror=implicit-int to avoid missing type of</div><div class='add'>+	  function declaration.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_fstring, fstr_update_callback): simply delete garbage</div><div class='del'>-	  key first.</div><div class='add'>+Sat May  7 22:22:37 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	  Garbage keys can be swept by lazy sweeping invoked by creating new</div><div class='del'>-	  fstring.  So that simply do:</div><div class='del'>-	  (1) delete garbage key and return `fstr_update_callback' immediately</div><div class='del'>-	  (2) try again `fstr_update_callback()' to create a new fstr.</div><div class='add'>+	* lib/webrick/ssl.rb: Accept string value for SSLCertName. It is used</div><div class='add'>+	  to invoke ssl server with command line.</div><div class='add'>+	  [fix GH-1329] Patch by @kerlin</div><div class='add'>+	* test/webrick/test_ssl_server.rb: Added test for GH-1329</div><div class='ctx'> </div><div class='del'>-	  This bug can be cause memory corruption, reported by</div><div class='del'>-	  http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20140821T220302Z.fail.html.gz</div><div class='add'>+Sat May  7 21:55:12 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 22 19:30:39 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* test/webrick/test_ssl_server.rb: Added basic test for `webrick/ssl`</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_complex.rb: removed commented-out code.</div><div class='add'>+Sat May  7 16:22:13 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 22 19:25:28 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* random.c (int_pair_to_real_inclusive): optimize to multiply</div><div class='add'>+	  without Bignum.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_complex.rb: fixed broken tests. Math is not</div><div class='del'>-	  compatible CMath now.</div><div class='add'>+Sat May  7 07:58:02 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 22 15:36:09 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* process.c (rb_exec_getargs): honor the expected argument types</div><div class='add'>+	  over the conversion method.  the basic language functionality</div><div class='add'>+	  should be robust.  [ruby-core:75388] [Bug #12355]</div><div class='ctx'> </div><div class='del'>-	* common.mk (Doxyfile): revert r43888, not to require preinstalled</div><div class='del'>-	  ruby.  [ruby-core:64488] [Bug #10161]</div><div class='add'>+Fri May  6 08:16:26 2016  David Silva  &lt;david.silva@digital.cabinet-office.gov.uk&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 22 12:32:15 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* enum.c (enum_find): [DOC] add more examples to the documentation</div><div class='add'>+	  of Enumerable#detect, to show that it equals to Enumerable#find.</div><div class='add'>+	  [Fix GH-1340]</div><div class='ctx'> </div><div class='del'>-	* lib/shell.rb: removed commented-out code.</div><div class='del'>-	* lib/shell/builtin-command.rb: ditto.</div><div class='del'>-	* lib/shell/command-processor.rb: ditto.</div><div class='add'>+Thu May  5 18:08:31 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 22 12:21:46 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* test/ruby/test_complexrational.rb: Remove duplicated raise.</div><div class='ctx'> </div><div class='del'>-	* lib/complex.rb: removed deprecated library.</div><div class='del'>-	* lib/rational.rb: ditto.</div><div class='add'>+Thu May  5 14:41:05 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 22 11:38:49 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* string.c (rb_str_sub): Fix a special match variable name.</div><div class='add'>+	  [ci skip]</div><div class='ctx'> </div><div class='del'>-	* lib/prettyprint.rb: removed PrettyPrint#first?</div><div class='del'>-	  because it is obsoleted method since Ruby 1.8.2</div><div class='add'>+Thu May  5 12:22:17 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Aug 21 17:10:31 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* vm_eval.c (rb_eval_cmd, rb_catch_obj): use TH_JUMP_TAG with the</div><div class='add'>+	  same rb_thread_t used for TH_PUSH_TAG, instead of JUMP_TAG with</div><div class='add'>+	  the current thread global variable.</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c (constat_attr): manage reverse video internally</div><div class='del'>-	  since Windows console window does not manage it.  based on the</div><div class='del'>-	  patch by white leaf in [ruby-dev:48483].  [Bug #10158]</div><div class='add'>+Thu May  5 10:49:33 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Aug 21 14:45:41 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* random.c (fill_random_bytes_syscall): use arc4random_buf if</div><div class='add'>+	  available.</div><div class='ctx'> </div><div class='del'>-	* lib/e2mmap.rb: removed commented-out code.</div><div class='add'>+Wed May  4 23:13:58 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Aug 21 13:23:34 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* numeric.c (fix_plus): Remove rb_nucomp_add prototype</div><div class='add'>+	  declaration.</div><div class='ctx'> </div><div class='del'>-	* lib/rinda/ring.rb: split executable code into sample directory.</div><div class='del'>-	* sample/rinda-ring.rb: ditto.</div><div class='add'>+	* numeric.c (fix_mul): Remove rb_nucomp_mul prototype</div><div class='add'>+	  declaration.</div><div class='ctx'> </div><div class='del'>-Thu Aug 21 13:21:45 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* internal.h (rb_nucomp_add, rb_nucomp_mul): add prototype</div><div class='add'>+	  declarations.</div><div class='ctx'> </div><div class='del'>-	* lib/drb/acl.rb: split executable code into sample directory.</div><div class='del'>-	* sample/drb/acl.rb: ditto.</div><div class='add'>+Wed May  4 18:38:00 2016  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='ctx'> </div><div class='del'>-Thu Aug 21 12:55:35 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* lib/net/http/header.rb (Net::HTTPHeader#{each_header,each_name,</div><div class='add'>+	  each_capitalized_name,each_value,each_capitalized}): Return</div><div class='add'>+	  sized enumerators.</div><div class='ctx'> </div><div class='del'>-	* .gitignore: ignored temporary file for Changelog.</div><div class='del'>-	  http://mkosaki.blog46.fc2.com/blog-entry-1284.html</div><div class='add'>+	* test/net/http/test_httpheader.rb: add test for above.</div><div class='ctx'> </div><div class='del'>-Thu Aug 21 12:40:22 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Wed May  4 17:53:15 2016  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/net/imap.rb: split executable code into sample directory.</div><div class='del'>-	* sample/net-imap.rb: ditto.</div><div class='add'>+	* lib/set.rb (Set#{delete_if,keep_if,collect!,reject!,select!,classify,divide},</div><div class='add'>+	  SortedSet#{delete_if,keep_if}): Return sized enumerators.</div><div class='ctx'> </div><div class='del'>-Thu Aug 21 12:23:56 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* test/test_set.rb: add test for above.</div><div class='ctx'> </div><div class='del'>-	* lib/net/imap.rb: removed commented-out code.</div><div class='add'>+Tue May  3 23:25:48 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug 20 17:27:02 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c: [DOC] Update result of 123456789 ** -2.</div><div class='add'>+	  [ruby-dev:49606] [Bug #12339]</div><div class='ctx'> </div><div class='del'>-	* configure.in (RUBY_TRY_CFLAGS, RUBY_TRY_LDFLAGS),</div><div class='del'>-	  (RUBY_CHECK_BUILTIN_SETJMP, RUBY_SETJMP_TYPE),</div><div class='del'>-	  (RUBY_STACK_GROW_DIRECTION): quote defun names, for some</div><div class='del'>-	  versions of autoconf possibly.  [ruby-core:64473] [Bug #10156]</div><div class='add'>+Tue May  3 23:13:16 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug 19 22:28:32 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* internal.h (RCOMPLEX_SET_IMAG): undef RCOMPLEX_SET_IMAG</div><div class='add'>+	  instead of duplicated undef RCOMPLEX_SET_REAL.</div><div class='ctx'> </div><div class='del'>-	* sprintf.c (rb_str_format): fix condition to round.</div><div class='del'>-	  [ruby-core:64454] [Bug #10151]</div><div class='add'>+Tue May  3 22:55:07 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug 19 22:22:45 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* complex.c (rb_complex_set_imag): Fix to properly set imag</div><div class='add'>+	  of complex.</div><div class='ctx'> </div><div class='del'>-	* enc/trans/euckr-tbl.rb (EUCKR_TO_UCS_TBL): add missing euro and</div><div class='del'>-	  registered signs.  [ruby-core:64452] [Bug #10149]</div><div class='add'>+Tue May  3 22:19:55 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug 19 13:59:43 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* configure.in (warnflags): use -std=gnu99 instead of</div><div class='add'>+	  -std=iso9899:1999. [Feature #12336]</div><div class='ctx'> </div><div class='del'>-	* compar.c (rb_cmperr): preserve encodings of arguments in the</div><div class='del'>-	  message.</div><div class='add'>+Tue May  3 22:10:09 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug 19 10:13:23 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* string.c (count_utf8_lead_bytes_with_word): Use __builtin_popcount</div><div class='add'>+	  only if it can use SSE 4.2 POPCNT whose latency is 3 cycle.</div><div class='ctx'> </div><div class='del'>-	* ext/thread/thread.c (get_array): check instance variables are</div><div class='del'>-	  initialized properly.  [ruby-core:63826][Bug #10062]</div><div class='add'>+	* internal.h (rb_popcount64): use __builtin_popcountll because now</div><div class='add'>+	  it is in fast path.</div><div class='ctx'> </div><div class='del'>-Mon Aug 18 17:06:27 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue May  3 14:19:18 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* sprintf.c (rb_str_format): support rational 'f' format.</div><div class='del'>-	  [ruby-core:64382] [Bug #10136]</div><div class='add'>+	* parse.y (new_if_gen): set newline flag to NODE_IF to trace all</div><div class='add'>+	  if/elsif statements.  [ruby-core:67720] [Bug #10763]</div><div class='ctx'> </div><div class='del'>-Mon Aug 18 08:03:46 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Tue May  3 05:35:54 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* spec/default.mspec: use 2.2 definition.</div><div class='add'>+	* process.c (disable_child_handler_fork_child):</div><div class='add'>+	  initialize handler for SIGPIPE for !POSIX_SIGNAL</div><div class='ctx'> </div><div class='del'>-Sun Aug 17 19:41:40 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+Mon May  2 23:03:42 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (obj_memsize_of): don't calculate memsize of T_NODE</div><div class='del'>-	  when called from check_gen_consistency. It fixes segmentation</div><div class='del'>-	  fault on RGENGC_CHECK_MODE &gt;= 1 introduced by r47188.</div><div class='add'>+	* win32/win32.c, include/ruby/win32.h (rb_w32_utruncate): implements new</div><div class='add'>+	  truncate alternative which accepts UTF-8 path.</div><div class='ctx'> </div><div class='del'>-Sun Aug 17 17:08:12 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* file.c (truncate): use above function.</div><div class='add'>+	  [Bug #12340]</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (ole_invoke): use RHASH_SIZE instead of</div><div class='del'>-	  calling Hash#length method.</div><div class='add'>+Mon May  2 20:59:21 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Aug 16 19:32:06 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* re.c (str_coderange): to avoid function call when the string already</div><div class='add'>+	  has coderange information.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole_event.c (evs_length): use RARRAY_LEN instead</div><div class='del'>-	  of calling Array#length method.</div><div class='add'>+	* re.c (rb_reg_prepare_enc): add shortcut path when the regexp has</div><div class='add'>+	  the same encoding of given string.</div><div class='ctx'> </div><div class='del'>-Sat Aug 16 10:20:17 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* re.c (rb_reg_prepare_re): avoid duplicated allocation of</div><div class='add'>+	  onig_errmsg_buffer.</div><div class='ctx'> </div><div class='del'>-	* time.c (time_timespec): fix tv_nsec overflow</div><div class='del'>-	  [Bug #10144]</div><div class='ctx'> </div><div class='del'>-Fri Aug 15 20:34:17 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Mon May  2 12:34:52 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: separate WIN32OLE_EVENT src from</div><div class='del'>-	  win32ole.c.</div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_event.c: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_event.h: ditto.</div><div class='del'>-	* ext/win32ole/depend: ditto.</div><div class='add'>+	* test/ruby/test_refinement.rb (test_inspect): Use Integer instead of</div><div class='add'>+	  Fixnum.</div><div class='ctx'> </div><div class='del'>-Fri Aug 15 19:38:00 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Mon May  2 06:58:38 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.c (rb_iseq_clone): Should not insert write barrier from</div><div class='del'>-	  non-RVALUE data (to non-RVALUE data, of course).</div><div class='add'>+	* complex.c: Don't refer rb_cFixnum and rb_cBignum.</div><div class='add'>+	  (k_fixnum_p): Use FIXNUM_P.</div><div class='add'>+	  (k_bignum_p): Use RB_TYPE_P.</div><div class='ctx'> </div><div class='del'>-	  Ruby 2.1 also has a same problem.</div><div class='add'>+Mon May  2 01:27:59 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug 15 19:34:33 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* test/ruby/test_numeric.rb (test_step): Use Integer::FIXNUM_MAX.</div><div class='ctx'> </div><div class='del'>-	* string.c (setup_fake_str): fake strings should not set class by</div><div class='del'>-	  RBASIC_SET_CLASS() because it insert write barriers to fake</div><div class='del'>-	  (non-RVALUE) structure.</div><div class='add'>+Mon May  2 01:15:01 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	  It can cause unexpected behaviour.</div><div class='add'>+	* test/ruby/test_module.rb (test_name): Use Integer instead of Fixnum.</div><div class='ctx'> </div><div class='del'>-	  Ruby 2.1 also have a same problem (setup_fake_str() in parse.y).</div><div class='add'>+Mon May  2 01:00:04 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* symbol.c (setup_fake_str): ditto.</div><div class='add'>+	* test/lib/test/unit/assertions.rb (assert_fixnum): Defined.</div><div class='add'>+	  (assert_bignum): Defined.</div><div class='ctx'> </div><div class='del'>-Fri Aug 15 19:27:25 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* test/ruby/test_bignum.rb: Use assert_bignum.</div><div class='ctx'> </div><div class='del'>-	* array.c (rb_ary_tmp_new_fill): added.</div><div class='del'>-	  This function creates internal use only array (which is completely</div><div class='del'>-	  hided by ObjectSpace.each_object) with filling nil.</div><div class='add'>+	* test/ruby/test_integer_comb.rb: Use assert_fixnum and assert_bignum.</div><div class='ctx'> </div><div class='del'>-	  Otherwise, it can be includes strange VALUEs.</div><div class='add'>+	* test/ruby/test_optimization.rb: Ditto.</div><div class='ctx'> </div><div class='del'>-	* internal.h: added.</div><div class='add'>+Mon May  2 00:41:53 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* node.h: use rb_ary_tmp_new_fill() for MEMO.</div><div class='add'>+	* vm_trace.c (recalc_remove_ruby_vm_event_flags): Add a cast to</div><div class='add'>+	  avoid signed integer overflow.</div><div class='ctx'> </div><div class='del'>-Fri Aug 15 10:13:37 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Mon May  2 00:06:04 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/gserver.rb: removed unmaintained code.</div><div class='del'>-	  [ruby-core:40313][Feature #5480]</div><div class='del'>-	* lib/xmlrpc/httpserver.rb: ditto.</div><div class='add'>+	* test/lib/envutil.rb: Define Integer::{FIXNUM_MIN,FIXNUM_MAX}.</div><div class='ctx'> </div><div class='del'>-Fri Aug 15 09:22:12 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* test/ruby/test_bignum.rb: Use Integer::{FIXNUM_MIN,FIXNUM_MAX}.</div><div class='ctx'> </div><div class='del'>-	* vm_core.h (rb_thread_struct): reorder to pack</div><div class='del'>-	* cont.c (rb_context_struct, rb_fiber_struct): ditto</div><div class='del'>-	  On x86-64, these changes reduces:</div><div class='del'>-	  rb_thread_struct to 1000 bytes (from 1016)</div><div class='del'>-	  rb_context_struct to 1288 bytes (from 1312)</div><div class='del'>-	  rb_fiber_struct to 2272 bytes (from 2304)</div><div class='add'>+	* test/ruby/test_bignum.rb: Ditto.</div><div class='ctx'> </div><div class='del'>-Fri Aug 15 09:06:31 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* test/ruby/test_integer_comb.rb: Ditto.</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.h: define RB_NATIVETHREAD_LOCK_INIT and</div><div class='del'>-	  RB_NATIVETHREAD_COND_INIT macros</div><div class='add'>+	* test/ruby/test_marshal.rb: Ditto.</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (native_mutex_lock, native_mutex_unlock,</div><div class='del'>-	  native_mutex_trylock, native_mutex_initialize,</div><div class='del'>-	  native_mutex_destroy, native_cond_wait):</div><div class='del'>-	  use rb_nativethread_lock_t instead of pthread_mutex_t</div><div class='del'>-	  [Feature #10134]</div><div class='add'>+	* test/ruby/test_optimization.rb: Ditto.</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (native_mutex_debug): make argument type-agnostic</div><div class='del'>-	  to avoid later cast.</div><div class='add'>+Sun May  1 23:59:59 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (register_cached_thread_and_wait):</div><div class='del'>-	  replace PTHREAD_COND_INITIALIZER with RB_NATIVETHREAD_COND_INIT,</div><div class='del'>-	  use native_mutex_{lock,unlock}</div><div class='add'>+	* array.c (rb_ary_sum): fix for mathn</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (use_cached_thread):</div><div class='del'>-	  use native_mutex_{lock,unlock}</div><div class='add'>+	* test/ruby/test_array.rb (test_sum): ditto.</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (native_sleep):</div><div class='del'>-	  use rb_nativethread_lock_t to match th-&gt;interrupt_lock,</div><div class='del'>-	  use native_mutex_{lock,unlock}</div><div class='add'>+Sun May  1 23:51:54 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (timer_thread_lock): use rb_nativethread_lock_t type</div><div class='add'>+	* test/lib/test/unit.rb (Options#non_options): fixed wrong regexp.</div><div class='add'>+	  if both positives and negatives were specified, positives had to</div><div class='add'>+	  be specified from the beginning.</div><div class='ctx'> </div><div class='del'>-Fri Aug 15 08:10:29 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sun May  1 21:00:07 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* cont.c (cont_mark): fix typo in unused path [ci skip]</div><div class='add'>+	* win32/win32.c: drop Win2K support.</div><div class='ctx'> </div><div class='del'>-Fri Aug 15 06:00:56 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sun May  1 20:39:47 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm.c (rb_thread_mark): update comment about marking `me'</div><div class='del'>-	  [ruby-core:64340] [ruby-core:64341]</div><div class='add'>+	* cont.c, hash.c, random.c, win32/win32.c: cleanup some Win9x/ME/NT4</div><div class='add'>+	  support leftovers.</div><div class='add'>+	  [fix GH-1328] patched by @cremno</div><div class='ctx'> </div><div class='del'>-Fri Aug 15 05:53:59 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sun May  1 07:30:44 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* README.EXT: preliminary documentation for RB_GC_GUARD</div><div class='del'>-	  [Bug #10100] [ruby-core:60741]</div><div class='add'>+	* string.c (search_nonascii): use nlz on big endian environments.</div><div class='ctx'> </div><div class='del'>-Thu Aug 14 00:26:19 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* internal.h (nlz_intptr): defined.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: separate WIN32OLE_RECORD src from</div><div class='del'>-	  win32ole.c</div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_record.c: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_record.h: ditto.</div><div class='del'>-	* ext/win32ole/depend: ditto.</div><div class='add'>+Sun May  1 00:03:30 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug 13 21:41:04 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* configure.in (__builtin_ctz): check.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: separate WIN32OLE_VARIANT src from</div><div class='del'>-	  win32ole.c.</div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_variant.c: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_variant.c: ditto.</div><div class='del'>-	* ext/win32ole/depend: ditto.</div><div class='add'>+	* configure.in (__builtin_ctzll): check.</div><div class='ctx'> </div><div class='del'>-Wed Aug 13 20:09:37 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* internal.h (rb_popcount32): defined for ntz_int32.</div><div class='add'>+	  it can use __builtin_popcount but this function is not used on</div><div class='add'>+	  GCC environment because it uses __builtin_ctz.</div><div class='add'>+	  When another function uses this, using __builtin_popcount</div><div class='add'>+	  should be re-considered.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: remove unused variable.</div><div class='add'>+	* internal.h (rb_popcount64): ditto.</div><div class='ctx'> </div><div class='del'>-Wed Aug 13 19:31:27 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* internal.h (ntz_int32): defined for ntz_intptr.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (ole_search_handler_method, rescue_callback,</div><div class='del'>-	  folerecord_inspect): use PRIsVALUE in rb_sprintf.</div><div class='add'>+	* internal.h (ntz_int64): defined for ntz_intptr.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole_param.c (foleparam_inspect): ditto.</div><div class='add'>+	* internal.h (ntz_intptr): defined as ntz for uintptr_t.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole_variable.c (folevariable_inspect): use</div><div class='del'>-	  PRIsVALUE in rb_sprintf, use rb_inspect.</div><div class='add'>+	* string.c (search_nonascii): unroll and use ntz.</div><div class='ctx'> </div><div class='del'>-Wed Aug 13 11:54:41 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Sat Apr 30 21:54:13 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/irb/completion.rb: reverted r47163.</div><div class='del'>-	  because another case can't be show completion target.</div><div class='add'>+	* numeric.c (Init_Numeric): Gather Fixnum method definitions.</div><div class='ctx'> </div><div class='del'>-Wed Aug 13 11:17:00 2014  Shimpei Makimoto  &lt;github@makimoto.org&gt;</div><div class='add'>+Sat Apr 30 21:28:14 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/irb.rb: Prevent irb from crashing when exception with</div><div class='del'>-	  nil backtrace is raised.</div><div class='del'>-	  [fix GH-434][ruby-core:58078][Bug #9063]</div><div class='del'>-	* test/irb/test_raise_no_backtrace_exception.rb: ditto.</div><div class='add'>+	* numeric.c (rb_int_div): Define Integer#/.</div><div class='ctx'> </div><div class='del'>-Wed Aug 13 11:08:55 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* bignum.c (rb_big_div): Don't define Bignum#/.</div><div class='ctx'> </div><div class='del'>-	* lib/irb/completion.rb: fixed broken completion list with</div><div class='del'>-	  String including spaces. Contributed from @dunric. [fix GH-465]</div><div class='add'>+	* lib/mathn.rb (Integer#/): Replace Integer#/ instead of Bignum#/.</div><div class='ctx'> </div><div class='del'>-Wed Aug 13 00:07:01 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Sat Apr 30 21:11:08 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: separate WIN32OLE_PARAM src from win32ole.c</div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_param.c: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_param.h: ditto.</div><div class='del'>-	* ext/win32ole/depend: ditto.</div><div class='add'>+	* numeric.c (rb_int_plus): Define Integer#+.</div><div class='ctx'> </div><div class='del'>-Tue Aug 12 23:17:47 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* bignum.c (rb_big_plus): Don't define Bignum#+.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: refactoring. move some methods</div><div class='del'>-	  into win32ole_type.c / win32ole_method.c</div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_method.c: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_method.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_type.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_type.h: ditto.</div><div class='add'>+Sat Apr 30 21:01:20 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug 12 22:59:48 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* numeric.c (rb_int_minus): Define Integer#-.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: refactoring. move</div><div class='del'>-	  ole_typelib_from_itypeinfo into win32ole_typelib.c.</div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_typelib.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_typelib.h: ditto.</div><div class='add'>+	* bignum.c (rb_big_minus): Don't define Bignum#-.</div><div class='ctx'> </div><div class='del'>-Tue Aug 12 21:49:40 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Sat Apr 30 20:53:33 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (ole_create_dcom): use the converted</div><div class='del'>-	  result if the argument can be converted to a string, to get rid</div><div class='del'>-	  of invalid access. Thanks to nobu. [ruby-dev:48467] [Bug #10127]</div><div class='add'>+	* numeric.c (rb_int_mul): Define Integer#*.</div><div class='ctx'> </div><div class='del'>-Tue Aug 12 14:22:58 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* bignum.c (rb_big_mul): Don't define Bignum#*.</div><div class='ctx'> </div><div class='del'>-	* configure.in: ignored working directory same as prefix value.</div><div class='del'>-	  [ruby-core:54999] [Bug #8409]</div><div class='add'>+Sat Apr 30 20:30:44 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug 12 13:34:25 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* numeric.c (rb_int_modulo): Define Integer#%.</div><div class='ctx'> </div><div class='del'>-	* lib/fileutils.rb: enable to remove with non-owner directory.</div><div class='del'>-	  [ruby-dev:45976] [Bug #6756]</div><div class='del'>-	* test/fileutils/test_fileutils.rb: add testcase for #6756.</div><div class='add'>+	* bignum.c (rb_big_modulo): Don't define Bignum#%.</div><div class='ctx'> </div><div class='del'>-Tue Aug 12 12:57:28 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Sat Apr 30 20:17:08 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_exec.c: improve performance in ppc64 arch.</div><div class='del'>-	  [ruby-core:63437] [Feature #9997]</div><div class='add'>+	* numeric.c (int_equal): Define Integer#==.</div><div class='ctx'> </div><div class='del'>-Tue Aug 12 12:14:52 2014  Akira Matsuda &lt;ronnie@dio.jp&gt;</div><div class='add'>+	* bignum.c (rb_big_eq): Don't define Bignum#==.</div><div class='ctx'> </div><div class='del'>-	* lib/fileutils.rb: fix typo.</div><div class='del'>-	  [ruby-dev:47831] [Bug #9180]</div><div class='add'>+Sat Apr 30 19:41:15 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug 12 10:10:42 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* numeric.c (int_gt): Define Integer#&gt;.</div><div class='ctx'> </div><div class='del'>-	* vm_method.c (release_method_definition): use rb_free_method_entry</div><div class='add'>+	* bignum.c (rb_big_gt): Don't define Bignum#&gt;.</div><div class='add'>+	  Renamed from big_gt.</div><div class='ctx'> </div><div class='del'>-Tue Aug 12 06:16:09 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* internal.h (rb_big_gt): Declared.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: separate WIN32OLE_METHOD src from</div><div class='del'>-	  win32ole.c.</div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_method.c: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_method.h: ditto.</div><div class='del'>-	* ext/win32ole/depend: ditto.</div><div class='add'>+Sat Apr 30 19:24:40 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Aug 11 22:19:15 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* numeric.c (int_ge): Define Integer#&gt;=.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole_variable.c (folevariable_inspect): refactoring.</div><div class='add'>+	* bignum.c (rb_big_ge): Don't define Bignum#&gt;=.</div><div class='add'>+	  Renamed from big_ge.</div><div class='ctx'> </div><div class='del'>-Mon Aug 11 20:47:27 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* internal.h (rb_big_ge): Declared.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: separate WIN32OLE_VARIABLE src from</div><div class='del'>-	  win32ole.c</div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_variable.c: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_variable.h: ditto.</div><div class='del'>-	* ext/win32ole/depend: ditto.</div><div class='add'>+Sat Apr 30 19:20:40 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Aug 11 16:17:21 2014  Tony Miller  &lt;mcfiredrill@gmail.com&gt;</div><div class='add'>+	* doc/standard_library.rdoc: Remove obsoleted classes and modules.</div><div class='ctx'> </div><div class='del'>-	* dir.c (rb_dir_exists_p): [DOC] Document that Dir.exists? is</div><div class='del'>-	  deprecated.  [ruby-core:64135] [Bug #10102]</div><div class='add'>+Sat Apr 30 19:09:23 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Aug 11 11:26:33 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (int_lt): Define Integer#&lt;.</div><div class='ctx'> </div><div class='del'>-	* lib/tempfile.rb: start rdoc parsing inside singleton class</div><div class='del'>-	  definition to include the document there.</div><div class='del'>-	  [ruby-core:64157] [Bug #10105]</div><div class='add'>+	* bignum.c (rb_big_lt): Don't define Bignum#&lt;.</div><div class='add'>+	  Renamed from big_lt.</div><div class='ctx'> </div><div class='del'>-Sun Aug 10 12:22:43 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* internal.h (rb_big_lt): Declared.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole_type.c: refactoring.</div><div class='add'>+Sat Apr 30 18:44:05 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Aug 10 10:34:00 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* numeric.c (int_le): Define Integer#&lt;=.</div><div class='ctx'> </div><div class='del'>-	* lib/cgi/session/pstore.rb: separated sample code.</div><div class='del'>-	* lib/open3.rb: ditto.</div><div class='add'>+	* bignum.c (rb_big_le): Don't define Bignum#&lt;=.</div><div class='add'>+	  Renamed from big_le.</div><div class='ctx'> </div><div class='del'>-Sun Aug 10 10:03:24 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* internal.h (rb_big_le): Declared.</div><div class='ctx'> </div><div class='del'>-	* lib/irb/ext/multi-irb.rb: removed commented-out code.</div><div class='add'>+Sat Apr 30 18:11:44 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Aug  9 11:02:07 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* bignum.c (Init_Bignum): Define Integer::GMP_VERSION.</div><div class='ctx'> </div><div class='del'>-	* lib/irb.rb: removed commented-out code.</div><div class='del'>-	* lib/irb/**/*.rb: ditto.</div><div class='add'>+Sat Apr 30 16:58:18 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Aug  9 10:35:30 2014  Laurent Arnoud  &lt;laurent@spkdev.net&gt;</div><div class='add'>+	* numeric.c (int_remainder): Define Integer#remainder.</div><div class='ctx'> </div><div class='del'>-	* lib/cmath.rb: fixed indent. [fix GH-696]</div><div class='del'>-	* lib/drb/ssl.rb: ditto.</div><div class='del'>-	* lib/irb/**/*.rb: ditto.</div><div class='add'>+	* bignum.c (rb_big_remainder): Don't define Bignum#remainder.</div><div class='ctx'> </div><div class='del'>-Sat Aug  9 10:28:03 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* internal.h (rb_big_remainder): Declared.</div><div class='ctx'> </div><div class='del'>-	* test/minitest/test_minitest_unit.rb: removed obsoleted condition</div><div class='del'>-	  for Ruby 1.8.</div><div class='del'>-	* test/ruby/test_time_tz.rb: ditto.</div><div class='add'>+Sat Apr 30 15:29:24 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Aug  9 10:18:00 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* numeric.c (rb_int_uminus): {Fixnum,Bignum}#-@ is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-	* test/cgi/test_cgi_core.rb: removed obsoleted condition for Ruby 1.8.</div><div class='del'>-	* test/cgi/test_cgi_header.rb: ditto.</div><div class='del'>-	* test/cgi/test_cgi_multipart.rb: ditto.</div><div class='del'>-	* test/cgi/test_cgi_tag_helper.rb: ditto.</div><div class='add'>+	* bignum.c (rb_big_uminus): Don't define Bignum#-@.</div><div class='ctx'> </div><div class='del'>-Sat Aug  9 00:34:37 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Sat Apr 30 14:42:20 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: separate WIN32OLE_TYPE src from win32ole.c.</div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_type.c: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_type.h: ditto.</div><div class='del'>-	* ext/win32ole/depend: ditto.</div><div class='add'>+	* numeric.c (rb_int_idiv): {Fixnum,Bignum}#div is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-Fri Aug  8 01:53:37 2014  Masaki Matsushita &lt;glass.saga@gmail.com&gt;</div><div class='add'>+	* bignum.c (rb_big_idiv): Don't define Bignum#div.</div><div class='ctx'> </div><div class='del'>-	* lib/securerandom.rb: use OpenSSL::BN for performance improvement.</div><div class='add'>+Sat Apr 30 14:25:55 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* benchmark/bm_securerandom.rb: benchmark script.</div><div class='add'>+	* numeric.c (rb_int_modulo): {Fixnum,Bignum}#modulo is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-Fri Aug  8 17:19:57 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* bignum.c (rb_big_modulo): Don't define Bignum#modulo.</div><div class='ctx'> </div><div class='del'>-	* lib/open-uri.rb: remove needless condition for old ruby version.</div><div class='del'>-	* test/open-uri/test_open-uri.rb: ditto.</div><div class='add'>+Sat Apr 30 14:04:30 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug  8 16:40:59 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* numeric.c (int_divmod): {Fixnum,Bignum}#divmod is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-	* lib/irb/init.rb: removed unreachable code.</div><div class='add'>+	* bignum.c (rb_big_divmod): Don't define Bignum#divmod.</div><div class='ctx'> </div><div class='del'>-Fri Aug  8 16:34:22 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Sat Apr 30 13:20:00 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/drb/drb.rb: removed unreachable code.</div><div class='add'>+	* numeric.c (int_fdiv): {Fixnum,Bignum}#fdiv is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-Fri Aug  8 14:33:49 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* bignum.c (rb_big_fdiv): Don't define Bignum#fdiv.</div><div class='ctx'> </div><div class='del'>-	* lib/webrick/httpproxy.rb: remove needless condition</div><div class='del'>-	  for old ruby version.</div><div class='add'>+Sat Apr 30 12:25:43 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug  8 01:07:10 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (rb_int_pow): {Fixnum,Bignum}#** is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-	* parse.y (parser_yylex): fix invalid char in eval, should raise</div><div class='del'>-	  an syntax error too, as well as directly coded.</div><div class='del'>-	  [ruby-core:64243] [Bug #10117]</div><div class='add'>+	* bignum.c (rb_big_pow): Don't define Bignum#**.</div><div class='ctx'> </div><div class='del'>-Thu Aug  7 23:25:29 2014  Masaki Matsushita &lt;glass.saga@gmail.com&gt;</div><div class='add'>+Sat Apr 30 12:28:59 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/open3.rb: avoid unnecessary write if stdin_data is empty.</div><div class='add'>+	* bignum.c (rb_big_comp): Renamed from rb_big_neg.</div><div class='ctx'> </div><div class='del'>-Thu Aug  7 21:42:49 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* numeric.c (fix_comp): Renamed from fix_rev.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole_typelib.c (foletypelib_version): return</div><div class='del'>-	  version string.</div><div class='add'>+Sat Apr 30 12:25:43 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/win32ole/test_win32ole_typelib.rb (test_version): ditto.</div><div class='add'>+	* numeric.c (int_comp): {Fixnum,Bignum}#~ is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-Thu Aug  7 15:13:13 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* bignum.c (rb_big_neg): Don't define Bignum#~.</div><div class='ctx'> </div><div class='del'>-	* lib/cgi.rb: remove needless condition for old ruby version.</div><div class='add'>+	* internal.h (rb_big_neg): Declared.</div><div class='ctx'> </div><div class='del'>-Thu Aug  7 06:04:49 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Apr 30 12:07:42 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (parser_yyerror): preserve source code encoding in</div><div class='del'>-	  syntax error messages.  [ruby-core:64228] [Bug #10114]</div><div class='add'>+	* numeric.c (int_and): {Fixnum,Bignum}#&amp; is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 20:56:02 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* bignum.c (rb_big_and): Don't define Bignum#&amp;.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: separate src of WIN32OLE_TYPELIB from</div><div class='del'>-	  win32ole.c</div><div class='add'>+Sat Apr 30 11:56:15 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_typelib.c: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_typelib.h: ditto.</div><div class='del'>-	* ext/win32ole/depend: ditto.</div><div class='add'>+	* ext/thread: removed dummy extension library.  thread_sync.c</div><div class='add'>+	  provides "thread.rb" already.</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 20:44:07 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='add'>+Sat Apr 30 11:53:48 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* enum.c (enum_one): [DOC] Move enum.one? documentation before the</div><div class='del'>-	  relevant method.  Submitted by @vipulnsward. [Fixes GH-687]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/687</div><div class='add'>+	* numeric.c (int_or): {Fixnum,Bignum}#| is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 20:25:47 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='add'>+	* bignum.c (rb_big_or): Don't define Bignum#|.</div><div class='ctx'> </div><div class='del'>-	* lib/set.rb (Set#replace): Check if an object given is enumerable</div><div class='del'>-	  before clearing self.  Reported by yui-knk. [GH-675]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/675</div><div class='add'>+Sat Apr 30 11:18:47 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 20:07:26 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* vm_trace.c: Fix typos. [ci skip]</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (olerecord_ivar_set): remove rb_str_subseq.</div><div class='add'>+Sat Apr 30 10:09:04 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 19:09:27 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='add'>+	* ext/pty/pty.c (establishShell): honor USER environment variable</div><div class='add'>+	  and login name over uid, one uid can be shared by some login</div><div class='add'>+	  names.</div><div class='ctx'> </div><div class='del'>-	* lib/set.rb (Set): Implement Set#clone by splitting</div><div class='del'>-	  initialize_copy into initialize_dup and initialize_clone.</div><div class='del'>-	  Submitted by yui-knk. [Fixes GH-661]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/661</div><div class='add'>+Fri Apr 29 22:40:28 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 18:42:58 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* doc/maintainers.rdoc (ext/io/nonblock): still maintained, as</div><div class='add'>+	  well as ext/io/wait, which is the origin.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: separate src of WIN32OLERuntimeError</div><div class='del'>-	  from win32ole.c.</div><div class='add'>+Fri Apr 29 21:18:12 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.h: ditto</div><div class='del'>-	* ext/win32ole/depend: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_error.c: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_error.h: ditto.</div><div class='add'>+	* doc/maintainers.rdoc (ext/win32): of course, it's still maintained.</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 04:33:58 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Fri Apr 29 21:03:10 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/net/http.rb (Net::HTTP.proxy_uri): use initializer instead</div><div class='del'>-	  of parser to handle IPv6 address. [Bug #9129]</div><div class='add'>+	* gems/bundled_gems: Update latest gems, test-unit-3.1.8 and rake-11.1.2.</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 04:16:05 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Fri Apr 29 20:43:02 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/net/http/requests.rb (Net::HTTP::Options::RESPONSE_HAS_BODY):</div><div class='del'>-	  OPTIONS requests may have response bodies. [Feature #8429]</div><div class='del'>-	  http://tools.ietf.org/html/rfc7231#section-4.3.7</div><div class='add'>+	* doc/maintainers.rdoc: Update latest maintainers list on Ruby 2.4</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 03:18:04 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Fri Apr 29 19:52:45 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/net/http/generic_request.rb (Net::HTTP::GenericRequest#exec):</div><div class='del'>-	  handle req['host'] in update_uri.</div><div class='add'>+	* doc/maintainers.rdoc: Removed deprecated entries. These are already deleted.</div><div class='ctx'> </div><div class='del'>-	* lib/net/http/generic_request.rb</div><div class='del'>-	  (Net::HTTP::GenericRequest#update_uri):</div><div class='del'>-	  use req['host'] if it is explicitly set. Even if URI is given,</div><div class='del'>-	  it is already used for the initial value of req['host'].</div><div class='del'>-	  Therefore overwritten value should be respected. [Bug #10054]</div><div class='add'>+Fri Apr 29 19:48:45 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 03:17:34 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* doc/maintainers.rdoc: Removed Ruby 1.8 entries. It's not necessary to</div><div class='add'>+	  Ruby 2.4 or later.</div><div class='ctx'> </div><div class='del'>-	* lib/net/http/generic_request.rb</div><div class='del'>-	  (Net::HTTP::GenericRequest#update_uri):</div><div class='del'>-	  handle scheme, host, and port to reflect connection to @uri.</div><div class='add'>+Thu Apr 28 17:03:17 2016  Nicholas Maccharoli  &lt;nmaccharoli@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/net/http.rb (Net::HTTP#begin_transport): move trivial handling</div><div class='del'>-	  to Net::HTTP::GenericRequest#update_uri.</div><div class='add'>+	* hash.c (rb_hash_update_{block,func}_callback): dry up hash</div><div class='add'>+	  update callback code.  [Fix GH-1338]</div><div class='ctx'> </div><div class='add'>+Thu Apr 28 16:52:05 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 02:16:43 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* re.c (rb_reg_prepare_enc): use rb_enc_asciicompat(enc) instead of</div><div class='add'>+	  rb_enc_str_asciicompat_p(str) to avoid useless rb_enc_get(str) call.</div><div class='ctx'> </div><div class='del'>-	* lib/net/http/generic_request.rb</div><div class='del'>-	  (Net::HTTP::GenericRequest#initialize):</div><div class='del'>-	  optimize object allocation.</div><div class='add'>+Thu Apr 28 16:33:41 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 01:16:47 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* lib/optparse.rb: [DOC] fix example code.  base on the code by</div><div class='add'>+	  Semyon Gaivoronskiy in [ruby-core:75224].  [Bug #12323]</div><div class='ctx'> </div><div class='del'>-	* lib/uri/generic.rb (URI::Generic#path_query): remove a private method.</div><div class='add'>+Thu Apr 28 09:33:03 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 01:15:47 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.6.4.</div><div class='add'>+	  Please see entries of 2.6.4 on</div><div class='add'>+	  https://github.com/rubygems/rubygems/blob/master/History.txt</div><div class='ctx'> </div><div class='del'>-	* lib/uri/generic.rb (URI::Generic#normalize!): use String#empty?</div><div class='add'>+Thu Apr 28 04:49:07 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/uri/generic.rb (URI::Generic#path_query): optimized.</div><div class='add'>+	* configure.in (rb_cv_lgamma_r_pm0): check if lgamma_r(+0.0)</div><div class='add'>+	  returns positive infinity, in addition to lgamma_r(-0.0).</div><div class='add'>+	  AIX returns an incorrect result of negative infinity.</div><div class='ctx'> </div><div class='del'>-	* lib/uri/generic.rb (URI::Generic#to_s): optimized.</div><div class='add'>+	* math.c (ruby_lgamma_r): handle +0.0, in addition to -0.0.</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 00:15:10 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Thu Apr 28 01:11:14 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/uri/http.rb (URI::HTTP#request_uri): optimized.</div><div class='del'>-	  decrease object allocation, and ensure always create at least one new</div><div class='del'>-	  object for return value.</div><div class='add'>+	* time.c: define _DEFAULT_SOURCE because glibc 2.20 deprecates</div><div class='add'>+	  _BSD_SOURCE.</div><div class='add'>+	  https://sourceware.org/glibc/wiki/Release/2.20</div><div class='ctx'> </div><div class='del'>-Wed Aug  6 03:41:21 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+Thu Apr 28 00:27:55 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych/visitors/to_ruby.rb: backwards compatibility for</div><div class='del'>-	  hashes emitted by Syck. Github #198</div><div class='del'>-	* test/psych/test_hash.rb: test for change.</div><div class='add'>+	* numeric.c (int_xor): {Fixnum,Bignum}#^ is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-Tue Aug  5 19:27:59 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* bignum.c (rb_big_xor): Don't define Bignum#^.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (ole_invoke): skip VariantClear when</div><div class='del'>-	  argument is VT_RECORD variant.</div><div class='add'>+Wed Apr 27 20:53:59 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Aug  5 15:52:51 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* numeric.c (int_aref): {Fixnum,Bignum}#[] is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-	* gems/bundled_gems: Upgrade to test-unit-3.0.0 and minitest-5.4.0.</div><div class='add'>+	* bignum.c (rb_big_aref): Don't define Bignum#&lt;&lt;.</div><div class='ctx'> </div><div class='del'>-Mon Aug  4 21:50:09 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* internal.h (rb_big_aref): Declared.</div><div class='ctx'> </div><div class='del'>-	* test/win32ole/test_win32ole_record.rb: add for WIN32OLE_RECORD</div><div class='del'>-	  test(need .NET Framework 3.5 to run test).</div><div class='add'>+Wed Apr 27 16:10:35 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Aug  4 19:49:34 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* tool/instruction.rb: fix to follow current implementation.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (ole_invoke): call rb_hash_foreach instead</div><div class='del'>-	  of rb_block_call.</div><div class='add'>+Wed Apr 27 15:47:54 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: add comment for rdoc of WIN32OLE_VARIANT</div><div class='del'>-	  class.</div><div class='add'>+	* ext/stringio/stringio.c (strio_s_new): warn if a block is given,</div><div class='add'>+	  as well as IO.new.</div><div class='ctx'> </div><div class='del'>-Mon Aug  4 09:12:47 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Wed Apr 27 14:29:47 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* variable.c: cleanup to use rb_const_lookup</div><div class='del'>-	  [Feature #10107]</div><div class='add'>+	* error.c (ruby_only_for_internal_use): raise fatal error when</div><div class='add'>+	  deprecated function only for internal use is called, not just a</div><div class='add'>+	  warning.</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c: ditto</div><div class='add'>+Tue Apr 26 23:42:30 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Aug  3 10:55:07 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* tool/redmine-backporter.rb (rel): should not raise exceptions even if</div><div class='add'>+	  the user input is wrong.  only reports the error and continue process.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/encoding.h (rb_check_symbol_cstr): ditto.</div><div class='add'>+Tue Apr 26 23:35:23 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Aug  3 10:43:08 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ruby.c (process_options): convert -e script to the encoding</div><div class='add'>+	  given by a command line option on Windows.  assume it is the</div><div class='add'>+	  expected encoding.  [ruby-dev:49461] [Bug #11900]</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (vm_call_method): unusable super class should cause</div><div class='del'>-	  method missing when BasicObject is refined but not been using.</div><div class='del'>-	  [ruby-core:64166] [Bug #10106]</div><div class='add'>+Tue Apr 26 21:11:02 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Aug  2 23:47:45 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* numeric.c (rb_int_lshift): {Fixnum,Bignum}#&lt;&lt; is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: separate WIN32OLE::VARIANT src file</div><div class='del'>-	  from win32ole.c</div><div class='del'>-	* ext/win32ole/win32ole.h: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_variant_m.c: ditto.</div><div class='del'>-	* ext/win32ole/win32ole_variant_m.h: ditto.</div><div class='del'>-	* ext/win32ole/depend: ditto.</div><div class='del'>-	* ext/.document: ditto.</div><div class='add'>+	* bignum.c (rb_big_lshift): Don't define Bignum#&lt;&lt;.</div><div class='ctx'> </div><div class='del'>-Sat Aug  2 14:34:58 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Tue Apr 26 20:59:40 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: add comments for rdoc.</div><div class='add'>+	* numeric.c (rb_int_rshift): {Fixnum,Bignum}#&gt;&gt; is unified into</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-Sat Aug  2 10:26:57 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* bignum.c (rb_big_rshift): Don't define Bignum#&gt;&gt;.</div><div class='ctx'> </div><div class='del'>-	* object.c (rb_obj_itself): new method Object#itself.  based on the</div><div class='del'>-	  patch by Rafael Franca in [ruby-core:64156].</div><div class='del'>-	  [EXPERIMENTAL] this method may be renamed due to compatibilities.</div><div class='del'>-	  [ruby-core:44704] [Feature #6373]</div><div class='add'>+Tue Apr 26 20:46:16 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug  1 22:30:40 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* numeric.c (int_size): {Fixnum,Bignum}#size is unified into Integer.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (folerecord_initialize): accept</div><div class='del'>-	  only 2 arguments. The 2nd argument should be WIN32OLE object or</div><div class='del'>-	  WIN32OLE_RECORD object.</div><div class='add'>+	* bignum.c (rb_big_size_m): Don't define Bignum#size.</div><div class='ctx'> </div><div class='del'>-Fri Aug  1 20:17:33 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* internal.h (rb_big_size_m): Declared.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (ole_variant2val): call</div><div class='del'>-	  folerecord_s_allocate instead of WIN32OLE_RECORD.new.</div><div class='add'>+Tue Apr 26 20:09:08 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Aug  1 18:39:57 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* numeric.c (rb_int_bit_length): {Fixnum,Bignum}#bit_length is</div><div class='add'>+	  unified into Integer.</div><div class='ctx'> </div><div class='del'>-	* test/date/test_date.rb: remove commented-out code.</div><div class='del'>-	* test/date/test_date_arith.rb: ditto.</div><div class='del'>-	* test/date/test_date_attr.rb: ditto.</div><div class='del'>-	* test/date/test_date_parse.rb: ditto.</div><div class='add'>+	* bignum.c (rb_big_bit_length): Don't define Bignum#bit_length.</div><div class='ctx'> </div><div class='del'>-Fri Aug  1 16:35:32 2014  Evan Miller  &lt;evan@squareup.com&gt;</div><div class='add'>+	* internal.h (rb_big_bit_length): Declared.</div><div class='ctx'> </div><div class='del'>-	* numeric.c (flodivmod): all results are NaN if divisor is NaN.</div><div class='del'>-	  [fix GH-692]</div><div class='add'>+Tue Apr 26 19:56:16 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Aug 01 07:28:12 2014  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='add'>+	* numeric.c (int_abs): Integer#{abs,magnitude} moved from</div><div class='add'>+	  Fixnum and Bignum.</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c: [DOC] Add description of</div><div class='del'>-	  `BigDecimal.new` exceptions.  Patched by @joker1007 and</div><div class='del'>-	  @prathamesh-sonpatki [Fixes GH-690]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/690</div><div class='add'>+	* bignum.c (rb_big_abs): Don't define Bignum#{abs,magnitude}.</div><div class='ctx'> </div><div class='del'>-Thu Jul 31 22:20:12 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* internal.h (rb_big_abs): Declared.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: add WIN32OLE_RECORD#inspect.</div><div class='add'>+Mon Apr 25 14:39:11 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jul 31 20:35:32 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* ext/rbconfig/sizeof/extconf.rb: just check the existence of each</div><div class='add'>+	  types, to reduce configuration time, especially cross-compiling.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: add</div><div class='del'>-	  WIN32OLE_RECORD#ole_instance_variable_set and</div><div class='del'>-	  WIN32OLE_RECORD#ole_instance_variable_get</div><div class='add'>+	* template/sizes.c.tmpl: calculate sizes of checked types at</div><div class='add'>+	  compilation time.</div><div class='ctx'> </div><div class='del'>-Wed Jul 30 23:28:10 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+Mon Apr 25 11:27:27 2016  Marcus Stollsteimer  &lt;sto.mar@web.de&gt;</div><div class='ctx'> </div><div class='del'>-	* sprintf.c (rb_str_format): like r47006, get rid of</div><div class='del'>-	  function calls in RSTRING_PTR().</div><div class='add'>+	* doc/extension.rdoc: Improvements to english grammars.</div><div class='add'>+	  [Bug #12246][ruby-core:74792][ci skip]</div><div class='ctx'> </div><div class='del'>-Wed Jul 30 22:10:29 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+Mon Apr 25 11:17:50 2016  Marcus Stollsteimer  &lt;sto.mar@web.de&gt;</div><div class='ctx'> </div><div class='del'>-	* process.c (rlimit_resource_type, rlimit_resource_value):</div><div class='del'>-	  get rid of inadvertent dynamic symbol pin-down.</div><div class='add'>+	* encoding.c: Fix return value of `Encoding::ISO8859_1.name`</div><div class='add'>+	  [Bug #12313][ruby-core:75147][ci skip]</div><div class='add'>+	* ext/bigdecimal/bigdecimal.c: Fix code sample of `BigDecimal.new`</div><div class='ctx'> </div><div class='del'>-	* re.c (match_backref_number): ditto.</div><div class='add'>+Sun Apr 24 23:29:16 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* signal.c (esignal_init, rb_f_kill, trap_signm): ditto.</div><div class='add'>+	* configure.in: add missing -lm for AIX.</div><div class='ctx'> </div><div class='del'>-	* transcode.c (econv_opts): ditto.</div><div class='add'>+Sun Apr 24 18:33:58 2016  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_trace.c (symbol2event_flag): ditto.</div><div class='add'>+	* vm_insnhelper.c (INLINE): disable r54738 if __NO_INLINE__ is defined.</div><div class='add'>+	  It caused "undefined reference to `vm_getivar'".</div><div class='ctx'> </div><div class='del'>-Wed Jul 30 21:29:39 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Sun Apr 24 09:32:12 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (ole_invoke): pass WIN32OLE_RECORD variant</div><div class='del'>-	  by reference when invoke OLE methods at first.</div><div class='add'>+	* test/ruby/test_array.rb: Add test cases for Array#sum with</div><div class='add'>+	  non-numeric objects.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (olerecord_set_ivar): release</div><div class='del'>-	  IRecordInfo interface before setting another IRecordInfo interface.</div><div class='add'>+Sun Apr 24 04:21:27 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Jul 30 13:17:35 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* vm_insnhelper.c (INLINE): define as `inline` when it is optimized.</div><div class='add'>+	  define as `static inline` when it is not optimized to keep</div><div class='add'>+	  the symbol generated.</div><div class='ctx'> </div><div class='del'>-	* gc.c: remove unused macros.</div><div class='add'>+	* vm_insnhelper.c (vm_getivar): use `INLINE` to force inline</div><div class='add'>+	  so that a compiler inlines it into vm_getinstancevariable</div><div class='add'>+	  and optimizes out is_attr and related branches.</div><div class='ctx'> </div><div class='del'>-Tue Jul 29 22:21:37 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* vm_insnhelper.c (vm_getivar): use `inline` to recommend inline.</div><div class='add'>+	  Without this vm1_ivar_set is degraded.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (hash2olerec): ignore WIN32OLE_RECORD</div><div class='del'>-	  instance variable if the variable is nil.</div><div class='add'>+	  benchmark results:</div><div class='add'>+	  minimum results in each 5 measurements.</div><div class='add'>+	  Execution time (sec)</div><div class='add'>+	  name    ruby 2.4.0dev (2016-04-23 trunk 54727) [x86_64-linux]   ruby 2.4.0dev (2016-04-23 trunk 54733) [x86_64-linux]       built-ruby</div><div class='add'>+	  loop_whileloop 0.641                                                   0.642 0.646</div><div class='add'>+	  vm1_ivar* 1.002                                                   0.999 0.831</div><div class='add'>+	  vm1_ivar_set* 0.369                                                   1.106 0.362</div><div class='ctx'> </div><div class='del'>-Tue Jul 29 19:43:27 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	  Speedup ratio: compare with the result of `ruby 2.4.0dev (2016-04-23</div><div class='add'>+	  trunk 54727) [x86_64-linux]' (greater is better)</div><div class='add'>+	  name    ruby 2.4.0dev (2016-04-23 trunk 54733) [x86_64-linux]</div><div class='add'>+	  built-ruby</div><div class='add'>+	  loop_whileloop</div><div class='add'>+	  0.998        0.991</div><div class='add'>+	  vm1_ivar*</div><div class='add'>+	  1.003        1.205</div><div class='add'>+	  vm1_ivar_set*</div><div class='add'>+	  0.334        1.018</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (folerecord_method_missing): refactoring.</div><div class='del'>-	  divide functionality of folerecord_method_missing into</div><div class='del'>-	  olerecord_ivar_set and olerecord_ivar_get.</div><div class='add'>+Sat Apr 23 18:01:21 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jul 28 20:20:08 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* vm_insnhelper.c (vm_getivar): specify inline instead of static inline.</div><div class='add'>+	  vm_getivar is called by vm_call_ivar and vm_getinstancevariable.</div><div class='add'>+	  At least with GCC 4.8 and 5.3 on Linux, they are inlining it into</div><div class='add'>+	  vm_call_ivar but not vm_getinstancevariable.</div><div class='add'>+	  By `inline`, they correctly inline it and gains performance.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win23ole.c (folerecord_method_missing): support</div><div class='del'>-	  setter of member of WIN32OLE_RECORD object.</div><div class='add'>+	  Speedup ratio: compare with the result of `ruby 2.4.0dev (2016-04-23</div><div class='add'>+	  trunk 54727) [x86_64-linux]' (greater is better)</div><div class='add'>+	  name    built-ruby</div><div class='add'>+	  loop_whileloop       1.001</div><div class='add'>+	  vm1_ivar*            1.189</div><div class='add'>+	  vm1_ivar_set*        1.024</div><div class='ctx'> </div><div class='del'>-Mon Jul 28 06:37:19 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	  Note the `inline`'s meaning is different between old GCC</div><div class='add'>+	  and C99. Old GCC's inline means C99's extern inline.</div><div class='add'>+	  https://gcc.gnu.org/onlinedocs/gcc/Inline.html</div><div class='add'>+	  Since Ruby specify -std=iso9899:1999, it works like C99.</div><div class='ctx'> </div><div class='del'>-	* vm_eval.c: [DOC] Fix rdoc formatting of patch from [Bug #9551]</div><div class='add'>+Sat Apr 23 16:11:39 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jul 28 06:34:43 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* include/ruby/ruby.h (rb_mul_size_overflow): use UNLIKELY</div><div class='add'>+	  by user side to improve generality.</div><div class='ctx'> </div><div class='del'>-	* vm_eval.c: [DOC] [Bug #9551] Improve clarity of Kernel::catch</div><div class='del'>-	  documentation, patch by Jesse Sielaff.</div><div class='add'>+Sat Apr 23 16:10:02 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jul 28 06:24:54 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* include/ruby/ruby.h (RB_LIKELY): use prefix in ruby.h.</div><div class='ctx'> </div><div class='del'>-	* lib/uri/common.rb: [DOC] [Bug #9563] Recommend using URI.escape</div><div class='del'>-	  before parsing a uri to avoid invalid characters. Reported by</div><div class='del'>-	  Evgeniy Serykh.</div><div class='add'>+	* intern.h (LIKELY): define with RB_LIKELY.</div><div class='ctx'> </div><div class='del'>-Mon Jul 28 05:55:56 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Sat Apr 23 13:27:25 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* time.c: [DOC] Clarify %Y in strftime, which can accept any digits</div><div class='del'>-	  and will output at least 4 digits as the year. Reported by Yury</div><div class='del'>-	  Trofimenko [Bug #10049]</div><div class='add'>+	* NEWS: Add descriptions for Time#to_time updates.</div><div class='add'>+	  [Bug #12271]</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb: ditto</div><div class='add'>+Sat Apr 23 13:21:24 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jul 28 05:32:06 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* NEWS: Add descriptions for DateTime#to_time updates.</div><div class='add'>+	  [Bug #12189]</div><div class='ctx'> </div><div class='del'>-	* lib/uri/common.rb: [DOC] [Bug #10075] Clarify how URI.join arguments</div><div class='del'>-	  are handled by RFC3986, originally reported by John Feminella.</div><div class='add'>+Sat Apr 23 11:21:27 2016  Marcus Stollsteimer  &lt;sto.mar@web.de&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jul 28 05:21:41 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* ext/date/date_core.c (Init_date_core): [DOC] Convert DateTime</div><div class='add'>+	  documentation to RDoc from Markdown.</div><div class='add'>+	  [ruby-core:75136] [Bug #12311]</div><div class='ctx'> </div><div class='del'>-	* file.c: [DOC] Clarify how File.file? handles symbolic links. Also</div><div class='del'>-	  cleaned up the rdoc style for this method, more to follow.</div><div class='del'>-	  Originally reported by Michael Renner [Bug #10067]</div><div class='add'>+Sat Apr 23 09:03:35 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jul 28 05:12:22 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* ruby.c: cygwin does not use w32_cmdvector, command line can be</div><div class='add'>+	  other than UTF-8.  [ruby-dev:49519] [Bug #12184]</div><div class='ctx'> </div><div class='del'>-	* time.c: [DOC] Remove dead link and old bug report, which hasn't been</div><div class='del'>-	  reproduced in a few years. Reported by Federico Builes [Bug #10071]</div><div class='add'>+Sat Apr 23 01:00:03 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jul 28 04:39:58 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* configure.in: don't use the system-provided round(3) on AIX.</div><div class='add'>+	  In AIX, round(0.49999999999999994) returns 1.0.</div><div class='add'>+	  Use round() in numeric.c instead.</div><div class='ctx'> </div><div class='del'>-	* ext/zlib/zlib.c: [DOC] Remove default value of Zlib constants, as</div><div class='del'>-	  they may change in the implementation without notice. Patched by</div><div class='del'>-	  @robin850 [Fixes GH-682] https://github.com/ruby/ruby/pull/682</div><div class='add'>+Fri Apr 22 21:00:44 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jul 28 04:35:35 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* test/ruby/test_time_tz.rb: Tests depends on Europe/Moscow removed</div><div class='add'>+	  to avoid test failures due to the tzdata change.</div><div class='add'>+	  https://github.com/eggert/tz/commit/8ee11a301cf173afb0c76e0315b9f9ec8ebb9d95</div><div class='add'>+	  Found by naruse.</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/ossl_hmac.c: Fix NO_HMAC warning [Fixes GH-665]</div><div class='del'>-	  Patched by @vipulnsward https://github.com/ruby/ruby/pull/665</div><div class='add'>+Fri Apr 22 20:18:40 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jul 27 19:49:36 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* include/ruby/ruby.h (rb_mul_size_overflow): added to handle</div><div class='add'>+	  mul overflow efficiently.</div><div class='ctx'> </div><div class='del'>-	* lib/cgi/core.rb: remove unused variables.</div><div class='del'>-	* lib/erb.rb: ditto.</div><div class='del'>-	* lib/mkmf.rb: ditto.</div><div class='del'>-	* lib/net/http/response.rb: ditto.</div><div class='del'>-	* lib/optparse/version.rb: ditto.</div><div class='del'>-	* lib/prime.rb: ditto.</div><div class='del'>-	* lib/racc/parser.rb: ditto.</div><div class='del'>-	* lib/rexml/document.rb: ditto.</div><div class='del'>-	* lib/rexml/dtd/dtd.rb: ditto.</div><div class='del'>-	* lib/rexml/element.rb: ditto.</div><div class='del'>-	* lib/rexml/functions.rb: ditto.</div><div class='del'>-	* lib/rexml/parsers/xpathparser.rb: ditto.</div><div class='add'>+	* include/ruby/ruby.h (rb_alloc_tmp_buffer2): use rb_mul_size_overflow</div><div class='add'>+	  and avoid division where it can define DSIZE_T.</div><div class='ctx'> </div><div class='del'>-Sun Jul 27 05:11:21 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* gc.c (xmalloc2_size): moved from ruby.h and use rb_mul_size_overflow.</div><div class='ctx'> </div><div class='del'>-	* lib/irb.rb: [DOC] PROMPT_I cannot be nil, patch by @hgillane</div><div class='del'>-	  Fixes documenting-ruby/ruby#37</div><div class='del'>-	  https://github.com/documenting-ruby/ruby/pull/37</div><div class='add'>+Fri Apr 22 20:34:04 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jul 27 02:41:50 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* time.c (time_asctime): [DOC] add ctime example, not only</div><div class='add'>+	  asctime.  [ruby-core:75126] [Bug #12310]</div><div class='ctx'> </div><div class='del'>-	* lib/shell/command-processor.rb: remove unused variable.</div><div class='del'>-	* lib/shell/system-command.rb: ditto.</div><div class='del'>-	* lib/tmpdir.rb: ditto.</div><div class='del'>-	* lib/uri/generic.rb: ditto.</div><div class='add'>+Fri Apr 22 18:44:32 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jul 27 02:08:31 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* variable.c: use uint32_t instead of long to avoid confusion about</div><div class='add'>+	  the type of ivtbl-&gt;numiv.</div><div class='ctx'> </div><div class='del'>-	* lib/weakref.rb: split executable code into sample directory.</div><div class='del'>-	* sample/weakref.rb: ditto.</div><div class='add'>+Fri Apr 22 15:09:27 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jul 27 02:06:55 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* eval_jump.c (exec_end_procs_chain): restore previous error info</div><div class='add'>+	  for each end procs.  [ruby-core:75038] [Bug #12302]</div><div class='ctx'> </div><div class='del'>-	* lib/delegate.rb: split executable code into sample directory.</div><div class='del'>-	* sample/delegate.rb: ditto.</div><div class='add'>+Fri Apr 22 15:04:56 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jul 27 01:46:34 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* tool/redmine-backporter.rb: the fullpath of merger.rb is too long to</div><div class='add'>+	  copy&amp;paste on Windows.  show shorter name instead on the platform.</div><div class='add'>+	  I'm sure that the user of this command on Windows is only me.</div><div class='ctx'> </div><div class='del'>-	* proc.c (method_super_method): [DOC] Method#super_method</div><div class='add'>+Fri Apr 22 14:52:04 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jul 27 01:22:39 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* tool/merger.rb: remove temporary file.</div><div class='ctx'> </div><div class='del'>-	* proc.c (method_super_method): new method Method#super_method,</div><div class='del'>-	  which returns a method object of the method to be called by</div><div class='del'>-	  `super` in the receiver method object.</div><div class='del'>-	  [ruby-core:62202] [Feature #9781]</div><div class='add'>+Fri Apr 22 11:27:03 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jul 26 17:22:14 2014  URABE Shyouhei  &lt;shyouhei@ruby-lang.org&gt;</div><div class='add'>+	* lib/net/http.rb: Improve documentation for SSL requests via GET method.</div><div class='add'>+	  [fix GH-1325][ci skip] Patch by @jsyeo</div><div class='ctx'> </div><div class='del'>-	* ext/objspace/objspace_dump.c (dump_append): avoid fflush.</div><div class='add'>+Fri Apr 22 10:51:13 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	  because dump_append_string_value() iterates over each chars,</div><div class='del'>-	  fflush()-ing here effectively issues system calls on every single</div><div class='del'>-	  bytes exist in a ruby process.</div><div class='add'>+	* lib/webrick/ssl.rb: Support to add SSLCiphers option.</div><div class='add'>+	  [fix GH-1321] Patch by @rhadoo</div><div class='ctx'> </div><div class='del'>-Sat Jul 26 16:55:18 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Fri Apr 22 10:43:19 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.h (struct iseq_compile_data_storage): reduce overhead</div><div class='del'>-	  to 16 bytes (from 32) on 64-bit</div><div class='add'>+	* file.c, win32/file.c: Removed obsoleted safe level checks.</div><div class='add'>+	  [fix GH-1327] Patch by @cremno</div><div class='ctx'> </div><div class='del'>-Sat Jul 26 16:28:06 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Fri Apr 22 10:01:48 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_core.h (struct rb_iseq_struct): reduce to 280 bytes</div><div class='del'>-	  (from 288 bytes) on 64-bit</div><div class='add'>+	* benchmark/bm_so_meteor_contest.rb: fix a typo.</div><div class='add'>+	  [fix GH-1330][ci skip] Patch by @sachin21</div><div class='ctx'> </div><div class='del'>-Sat Jul 26 06:44:43 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Fri Apr 22 04:57:01 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (struct parse_params): shrink to 320 to 304 bytes on 64-bit</div><div class='add'>+	* gc.c (rb_alloc_tmp_buffer_with_count): added like xmalloc2 to</div><div class='add'>+	  avoid duplicated check of size.</div><div class='ctx'> </div><div class='del'>-Sat Jul 26 05:58:35 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* gc.c (ruby_xmalloc2): added to keep separate layers.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h (ZALLOC, ZALLOC_N): implement</div><div class='del'>-	  (Data_Make_Struct, TypedData_Make_Struct):</div><div class='del'>-	  ZALLOC replaces ALLOC+memset</div><div class='del'>-	  [ruby-core:63951][Feature #10082]</div><div class='del'>-	* compile.c (iseq_seq_sequence): ZALLOC_N replaces ALLOC_N+MEMZERO</div><div class='del'>-	* cont.c (fiber_t_alloc): ZALLOC replaces ALLOC+MEMZERO</div><div class='del'>-	* io.c (rb_io_reopen): ditto</div><div class='del'>-	* iseq.c (prepare_iseq_build): ditto</div><div class='del'>-	* parse.y (new_args_tail_gen, parser_new, ripper_s_allocate): ditto</div><div class='del'>-	* re.c (match_alloc): ditto</div><div class='del'>-	* variable.c (rb_const_set): ditto</div><div class='del'>-	* ext/socket/raddrinfo.c (get_addrinfo): ditto</div><div class='del'>-	* ext/strscan/strscan.c (strscan_s_allocate): ditto</div><div class='del'>-	* gc.c (rb_objspace_alloc): calloc replaces malloc+MEMZERO</div><div class='add'>+	* include/ruby/ruby.h (rb_alloc_tmp_buffer2): added to check</div><div class='add'>+	  the size more statically.</div><div class='ctx'> </div><div class='del'>-Sat Jul 26 05:54:54 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Fri Apr 22 04:54:40 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* symbol.c (dsymbol_check): remove unneeded semi-colon</div><div class='add'>+	* include/ruby/ruby.h (LIKELY): moved from internal.h.</div><div class='ctx'> </div><div class='del'>-Fri Jul 25 14:07:27 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* include/ruby/ruby.h (UNLIKELY): ditto.</div><div class='ctx'> </div><div class='del'>-	* gc.c: change objspace::rgengc::parent_object_is_old (boolean)</div><div class='del'>-	  to objspace::rgengc::parent_object (VALUE).</div><div class='del'>-	  Use Qfalse or RVALUE pointer instead of FALSE and TRUE.</div><div class='add'>+Thu Apr 21 01:44:19 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_marks_body): should clear parent_object just before</div><div class='del'>-	  gc_mark_roots() because there are no parents objects</div><div class='del'>-	  for root objects.</div><div class='add'>+	* gc.c (objspace_malloc_prepare): remove size check because it is</div><div class='add'>+	  used by objspace_xmalloc and objspace_xcalloc.</div><div class='add'>+	  objspace_xmalloc introduces its own check in this commit.</div><div class='add'>+	  objspace_xcalloc checks with xmalloc2_size (ruby_xmalloc2_size).</div><div class='ctx'> </div><div class='del'>-Fri Jul 25 13:45:39 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* gc.c (objspace_xmalloc0): common xmalloc function.</div><div class='ctx'> </div><div class='del'>-	* gc.c (rb_gc_writebarrier_remember_promoted): should remember only</div><div class='del'>-	  OLD objects on RGENGC_AGE2_PROMOTION.</div><div class='add'>+	* gc.c (objspace_xmalloc): introduce its own size check.</div><div class='ctx'> </div><div class='del'>-Fri Jul 25 13:42:02 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* gc.c (objspace_xmalloc2): separated from ruby_xmalloc2 to clarify</div><div class='add'>+	  the layer who has the responsibility to check the size.</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_mark_stacked_objects): fix error message.</div><div class='add'>+	* gc.c (objspace_xrealloc): remove duplicated size check.</div><div class='ctx'> </div><div class='del'>-Fri Jul 25 13:18:00 2014  Will Farrington  &lt;wfarrington@digitalocean.com&gt;</div><div class='add'>+	* gc.c (ruby_xmalloc2): use objspace_xmalloc2.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (sock_gethostname): Use NI_MAXHOST to support</div><div class='del'>-	  hostnames longer than 64 characters if the system supports it.</div><div class='del'>-	  [fixes GH-683]</div><div class='add'>+	* include/ruby/ruby.h (ruby_xmalloc2_size): follow the size limit</div><div class='add'>+	  as SSIZE_MAX. Note that ISO C says size_t is unsigned integer.</div><div class='ctx'> </div><div class='del'>-Fri Jul 25 12:21:11 2014  Santiago Pastorino  &lt;santiago@wyeworks.com&gt;</div><div class='add'>+Thu Apr 21 12:14:04 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (defined_expr): make the condition if the receiver</div><div class='del'>-	  is explicit or implicit cleaner.  [fix GH-681]</div><div class='add'>+	* configure.in: check if succeeded in creating config.h.</div><div class='ctx'> </div><div class='del'>-Fri Jul 25 03:53:52 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* tool/ifchange: ignore failures when TEST_COLORS unmatched. just</div><div class='add'>+	  use the default value if expected name is not contained in it.</div><div class='add'>+	  [ruby-core:75046] [Bug #12303]</div><div class='ctx'> </div><div class='del'>-	* doc/keywords.rdoc:  [DOC] Describe each keyword.</div><div class='add'>+Wed Apr 20 17:33:31 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jul 24 22:40:24 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* ext/cgi/escape/escape.c (cgiesc_unescape): define unescape</div><div class='add'>+	  method instead of _unescape, and should pass the optional</div><div class='add'>+	  argument to the super method.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (Init_win32ole): add WIN32OLE_RECORD#initialize</div><div class='add'>+	* lib/cgi/util.rb (CGI::Util#_unescape): remove intermediate</div><div class='ctx'> 	  method.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (ole_val2variant): convert WIN32OLE_RECORD</div><div class='del'>-	  object to VT_RECORD variant.</div><div class='del'>-</div><div class='del'>-Thu Jul 24 20:10:59 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: fix major GC flags.</div><div class='del'>-	  * add GPR_FLAG_MAJOR_BY_FORCE, which indicates</div><div class='del'>-	    major GC by METHOD, CAPI and so on (see GC_BY).</div><div class='del'>-	  * remove GPR_FLAG_MAJOR_BY_RESCAN because not used.</div><div class='del'>-	  * remove GPR_FLAG_MAJOR_BY_STRESS, use FORCE instead.</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_gc.rb: catch up.</div><div class='del'>-</div><div class='del'>-Thu Jul 24 15:55:02 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/io.h (struct rb_io_buffer_t): PACKED_STRUCT should not</div><div class='del'>-	  be used for platform-specific optimization. PACKED_STRUCT_UNALIGNED</div><div class='del'>-	  should be used. [ruby-core:63988] [Bug #10088]</div><div class='del'>-</div><div class='del'>-Thu Jul 24 04:42:13 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/benchmark.rb: split executable code into sample directory.</div><div class='del'>-	* sample/benchmark.rb: ditto.</div><div class='del'>-</div><div class='del'>-Thu Jul 24 04:36:49 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/tempfile.rb: split executable code into sample directory.</div><div class='del'>-	* sample/tempfile.rb: ditto.</div><div class='del'>-</div><div class='del'>-Thu Jul 24 04:29:36 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/pstore.rb: split executable code into sample directory.</div><div class='del'>-	* sample/pstore.rb: ditto.</div><div class='del'>-</div><div class='del'>-Wed Jul 23 23:50:11 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/defines.h, siphash.c, st.c (UNALIGNED_WORD_ACCESS):</div><div class='del'>-	  add PowerPC64 too, which is capable to access unaligned words.</div><div class='del'>-	  patched by Gustavo Frederico Temple Pedrosa in [ruby-core:63937].</div><div class='del'>-	  [Feature #10081]</div><div class='del'>-</div><div class='del'>-	* regint.h (PLATFORM_UNALIGNED_WORD_ACCESS): ditto.</div><div class='del'>-</div><div class='del'>-Wed Jul 23 04:04:38 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/drb/extserv.rb: remove duplicate code with sample directory.</div><div class='del'>-	  contributed from @vipulnsward. [fix GH-679]</div><div class='del'>-</div><div class='del'>-Tue Jul 22 12:56:24 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (rb_str_count): fix wrong single-byte optimization.</div><div class='del'>-	  7bit ascii can be a trailing byte in Shift_JIS.</div><div class='del'>-	  [ruby-dev:48442] [Bug #10078]</div><div class='del'>-</div><div class='del'>-Tue Jul 22 01:48:38 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/io.h (rb_io_buffer_t): fix packing on gcc</div><div class='del'>-	  r46892 caused packing to be a no-op on gcc (4.7.2-5, Debian)</div><div class='del'>-	  [Bug #10079][ruby-core:63912]</div><div class='del'>-</div><div class='del'>-Mon Jul 21 15:55:42 2014  fuji70  &lt;fujifuji70@gmail.com&gt;</div><div class='add'>+Wed Apr 20 15:52:28 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/optparse.rb (getopts): print default values and descriptions</div><div class='del'>-	  in the help message.  [fix GH-676]</div><div class='add'>+	* error.c (syntax_error_initialize): move the default message,</div><div class='add'>+	  "compile error", from parse.y.  the default parameter should</div><div class='add'>+	  belong to the class definition.</div><div class='ctx'> </div><div class='del'>-Sun Jul 20 14:26:27 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* parse.y (yycompile0): use the default parameter.</div><div class='ctx'> </div><div class='del'>-	* vm_core.h (rb_proc_t): reduce to 64 bytes from 72 on 64-bit</div><div class='add'>+Wed Apr 20 10:25:53 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jul 20 13:50:34 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* compile.c (append_compile_error): use rb_syntax_error_append.</div><div class='ctx'> </div><div class='del'>-	* transcode.c (rb_econv_t): reduce to 184 bytes from 200 on 64-bit</div><div class='add'>+	* error.c (rb_syntax_error_append): append messages into a</div><div class='add'>+	  SyntaxError exception instance.</div><div class='ctx'> </div><div class='del'>-Sun Jul 20 12:44:23 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* parse.y (yycompile0): make new SyntaxError instance in main</div><div class='add'>+	  mode, otherwise error_buffer should be a SyntaxError if error</div><div class='add'>+	  has occurred.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/io.h (rb_io_buffer_t): pack structure</div><div class='del'>-	  Reduces rb_io_t from 200 to 192 bytes, allowing rb_io_t to</div><div class='del'>-	  occupy one less cache line.</div><div class='del'>-	  [Feature #10050]</div><div class='add'>+Tue Apr 19 17:42:47 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jul 20 12:41:53 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* error.c (err_vcatf): rename, and separate appending message from</div><div class='add'>+	  creating a string buffer.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/io.h (rb_io_t): shrink to 200 bytes from 216 on 64-bit</div><div class='del'>-	  This puts us within 8 bytes of being three cache lines instead of</div><div class='del'>-	  four lines on x86-64.  This breaks the ABI.</div><div class='del'>-	  [Feature #10050]</div><div class='add'>+	* error.c (rb_syntax_error_append): merge rb_error_vsprintf and</div><div class='add'>+	  rb_compile_err_append.</div><div class='ctx'> </div><div class='del'>-Sun Jul 20 12:36:46 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* parse.y (parser_compile_error): use rb_syntax_error_append.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/oniguruma.h (struct re_pattern_buffer): shrink to 448</div><div class='del'>-	  bytes from 464 bytes on 64-bit.  This breaks the ABI.</div><div class='del'>-	  [Feature #10034]</div><div class='add'>+Tue Apr 19 13:46:19 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jul 20 01:06:06 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* compile.c (append_compile_error, compile_bug): pass iseq and get</div><div class='add'>+	  error info and file from it, not by the thread error info.</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/ossl.c: use encryptor instead of encrypter in doc.</div><div class='del'>-	  contributed from @vipulnsward. [fix GH-663]</div><div class='add'>+	* error.c (rb_report_bug_valist): take va_list instead of variadic</div><div class='add'>+	  arguments, and just report the bug but not abort.</div><div class='ctx'> </div><div class='del'>-Sun Jul 20 00:32:44 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Apr 19 13:18:12 2016  Naotoshi Seo  &lt;sonots@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* io.c (rb_io_initialize): [DOC] fix rdoc of append mode.  it does</div><div class='del'>-	  not move the pointer at open.  [ruby-core:63747] [Bug #10039]</div><div class='add'>+	* lib/time.rb: revert r54167 because it would break</div><div class='add'>+	  backward compatibilities, and it is documented that</div><div class='add'>+	  Time.parse does not take into account time zone</div><div class='add'>+	  abbreations other than ones described in RFC 822</div><div class='ctx'> </div><div class='del'>-Sat Jul 19 12:40:50 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Apr 19 13:12:03 2016  Naotoshi Seo  &lt;sonots@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (iseq_compile_each): allow to access private attribute</div><div class='del'>-	  reader in op_assign.  [ruby-core:63817] [Bug #10060]</div><div class='add'>+	* ChangeLog: Fix dates of previous commits</div><div class='ctx'> </div><div class='del'>-Sat Jul 19 11:56:36 2014  Grey Baker  &lt;greysteil@gmail.com&gt;</div><div class='add'>+Tue Apr 19 12:45:03 2016  Naotoshi Seo  &lt;sonots@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (Time#apply_offset): Guards against a `nil` return</div><div class='del'>-	  value from `Time.month_days` when offsetting date.  Out of range</div><div class='del'>-	  values are then caught when `Time.utc` is called (as usual).</div><div class='add'>+	* ChangeLog: Add descriptions for logger updates</div><div class='add'>+	* NEWS: Add descriptions for logger updates</div><div class='ctx'> </div><div class='del'>-	  Previously a `nil` return value from `Time.month_days` would</div><div class='del'>-	  have the `&lt;` operator called on it, and raise `NoMethodError`.</div><div class='del'>-	  [fix GH-667]</div><div class='add'>+Tue Apr 19 12:45:02 2016  Naotoshi Seo  &lt;sonots@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rdoc/parser/changelog.rb (RDoc#parse_entries): fix dirty hack.</div><div class='add'>+	* lib/logger.rb: Add shift_period_suffix option</div><div class='ctx'> </div><div class='del'>-Sat Jul 19 06:19:01 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Tue Apr 19 12:45:01 2016  Naotoshi Seo  &lt;sonots@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: refactoring.</div><div class='add'>+	* lib/logger.rb: Allow specifying logger parameters in constructor</div><div class='add'>+	  such as level, progname, datetime_format, formatter.</div><div class='ctx'> </div><div class='del'>-Fri Jul 18 22:34:41 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+Mon Apr 18 16:07:01 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (folevariant_initialize): WIN32OLE_VARIANT</div><div class='del'>-	  does not support VT_RECORD. VT_RECORD should be supported in</div><div class='del'>-	  WIN32OLE_RECORD.</div><div class='add'>+	* compile.c (iseq_peephole_optimize): should not replace the</div><div class='add'>+	  current target INSN, not to follow the replaced dangling link in</div><div class='add'>+	  the caller.  [ruby-core:74993] [Bug #11816]</div><div class='ctx'> </div><div class='del'>-	* test/win32ole/test_win32ole_variant.rb (test_s_new_vt_record_exc):</div><div class='del'>-	  ditto.</div><div class='del'>-</div><div class='del'>-Fri Jul 18 19:54:03 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole.c (folevariant_initialize): remove unnecessary</div><div class='del'>-	  code.</div><div class='del'>-</div><div class='del'>-Fri Jul 18 19:11:03 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='del'>-</div><div class='del'>-	* lib/matrix/eigenvalue_decomposition: Style fix</div><div class='del'>-	  Patch by Gogo Tanaka [#10058]</div><div class='del'>-</div><div class='del'>-Fri Jul 18 19:03:53 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='del'>-</div><div class='del'>-	* lib/matrix.rb: Avoid using `and`.</div><div class='del'>-	  Patch by gogo tanaka [#10058]</div><div class='del'>-</div><div class='del'>-Fri Jul 18 17:41:54 2014  GoGo tanaka  &lt;qlli.illb@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/matrix/test_matrix.rb: Add tests for Matrix class.</div><div class='del'>-	  [Feature #10057][ruby-core:63809]</div><div class='del'>-</div><div class='del'>-Fri Jul 18 10:14:42 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/fileutils.rb: added missing options of FileUtils.touch by @Domon.</div><div class='del'>-	  [fix GH-669]</div><div class='del'>-</div><div class='del'>-Thu Jul 17 19:57:27 2014  Herwin  &lt;herwin@quarantainenet.nl&gt;</div><div class='del'>-</div><div class='del'>-	* ext/thread/thread.c (rb_szqueue_push): add optional parameter,</div><div class='del'>-	  non_block defaulted to false.  [ruby-core:63794] [Feature #10052]</div><div class='del'>-</div><div class='del'>-Wed Jul 16 23:01:43 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole.c (ole_variant2val): support array of</div><div class='del'>-	  VT_RECORD variant.</div><div class='del'>-</div><div class='del'>-Wed Jul 16 20:21:49 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h (struct rb_iseq_struct): stack_max is changed to int</div><div class='del'>-	  because all calculations related to stack_max in compile.c</div><div class='del'>-	  (iseq_set_sequence) and vm_insnhelper.c (vm_push_frame) are</div><div class='del'>-	  conducted by using int. This partly reverts r23945.</div><div class='del'>-	* vm_insnhelper.c (vm_push_frame): ditto. This reverts r42401.</div><div class='del'>-</div><div class='del'>-Wed Jul 16 19:55:32 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h (struct rb_iseq_struct): temporal workaround of [Bug 10037].</div><div class='del'>-	  Add padding on big-endian 64-bit architecture (e.g. sparc64).</div><div class='del'>-</div><div class='del'>-Wed Jul 16 19:32:23 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole.c (fole_record_method_missing): call</div><div class='del'>-	  rb_hash_fetch instead of rb_hash_aref.</div><div class='del'>-</div><div class='del'>-Wed Jul 16 18:08:47 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* iseq.c (rb_iseq_defined_string): use rb_gc_mark_object() instead of</div><div class='del'>-	  marking from vm_mark().</div><div class='del'>-</div><div class='del'>-	* vm.c (rb_vm_mark): ditto.</div><div class='del'>-</div><div class='del'>-Wed Jul 16 18:03:50 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_mark_roots): call rb_vm_mark directly.</div><div class='del'>-</div><div class='del'>-	* vm.c: remove mark function for RubyVM object because</div><div class='del'>-	  RubyVM object marked manually.</div><div class='del'>-</div><div class='del'>-Wed Jul 16 12:25:39 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* regcomp.c: Merge Onigmo 5.14.1 25a8a69fc05ae3b56a09.</div><div class='del'>-	  this includes Support for Unicode 7.0 [Bug #9092].</div><div class='del'>-</div><div class='del'>-Tue Jul 15 23:59:27 2014  Jared Jennings  &lt;jared.jennings.ctr@us.af.mil&gt;</div><div class='del'>-</div><div class='del'>-	* ext/digest: make built-in digest function implementations</div><div class='del'>-	  indicate success or failure of init and final functions.</div><div class='del'>-	  [ruby-core:61614] [Bug #9659]</div><div class='del'>-</div><div class='del'>-	* ext/digest/digest.c: expect digest init and finish functions to</div><div class='del'>-	  indicate success or failure; raise exception on failure.</div><div class='del'>-	  [ruby-core:61614] [Bug #9659]</div><div class='del'>-</div><div class='del'>-Tue Jul 15 20:31:40 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole.c: modify document for WIN32OLE_RECORD.</div><div class='del'>-</div><div class='del'>-Tue Jul 15 12:42:23 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* defs/default_gems: change version definition file of rake.</div><div class='del'>-</div><div class='del'>-Tue Jul 15 12:00:03 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rake.rb, lib/rake/*.rb: Upgrade to rake-10.3.2</div><div class='del'>-	  [fix GH-668]</div><div class='del'>-	* test/rake/*.rb: ditto.</div><div class='del'>-</div><div class='del'>-Mon Jul 14 19:14:51 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole.c: modify WIN32OLE class document and</div><div class='del'>-	  add comment for constants of WIN32OLE.</div><div class='del'>-</div><div class='del'>-Mon Jul 14 16:38:45 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h (struct rb_iseq_struct): reduce to 288 bytes</div><div class='del'>-	  on x86-64 (from 296 bytes)</div><div class='del'>-</div><div class='del'>-Mon Jul 14 16:07:25 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* iseq.h (struct iseq_catch_table_entry): shrink to 32 bytes</div><div class='del'>-	  on x86-64 (from 48 bytes)</div><div class='del'>-</div><div class='del'>-Mon Jul 14 16:04:41 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* iseq.h (struct iseq_catch_table): new flexible array struct</div><div class='del'>-		 (iseq_catch_table_bytes): allocated size function</div><div class='del'>-	* vm_core.h (struct rb_iseq_struct): update catch_table member</div><div class='del'>-	  This reduces the struct from 304 to 296 bytes on x86-64.</div><div class='del'>-	* compile.c (iseq_set_exception_table): update for struct changes</div><div class='del'>-	* iseq.c (iseq_free): ditto</div><div class='del'>-	* iseq.c (iseq_memsize): ditto</div><div class='del'>-	* iseq.c (rb_iseq_disasm): ditto</div><div class='del'>-	* iseq.c (iseq_data_to_ary): ditto</div><div class='del'>-	* iseq.c (rb_iseq_build_for_ruby2cext): ditto (untested)</div><div class='del'>-	* vm.c (vm_exec): ditto</div><div class='del'>-	* vm_core.h (struct rb_iseq_struct): ditto</div><div class='del'>-	* vm_insnhelper.c (vm_throw): ditto</div><div class='del'>-</div><div class='del'>-Sun Jul 13 17:49:52 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/ossl_cipher.c: Fix call to ciphers class method and</div><div class='del'>-	  spell out `encryption` by @vipulnsward [fix GH-664]</div><div class='del'>-</div><div class='del'>-Sun Jul 13 17:31:51 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/gdbm/gdbm.c: fix wrong arguments in GetDBM2 macro.</div><div class='del'>-	* ext/sdbm/init.c: ditto.</div><div class='del'>-</div><div class='del'>-Sun Jul 13 17:25:50 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/dbm/dbm.c: fix wrong arguments in GetDBM2 macro by @v2e4lisp.</div><div class='del'>-	  [fix GH-655]</div><div class='del'>-</div><div class='del'>-Sun Jul 13 16:44:56 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h (struct rb_call_info_struct): improve packing</div><div class='del'>-	  This reduces the struct from 112 to 104 bytes on x86-64.</div><div class='del'>-</div><div class='del'>-Sun Jul 13 15:53:25 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h (struct rb_iseq_struct): stack_max is uint32_t</div><div class='del'>-	  This reduces the struct from 312 to 304 bytes on x86-64.</div><div class='del'>-</div><div class='del'>-Sun Jul 13 10:56:26 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (rb_cv_broken_backtrace): exit with failure</div><div class='del'>-	  normally, no needs to abort.  [ruby-core:63678] [Bug #10008]</div><div class='del'>-</div><div class='del'>-Sat Jul 12 15:10:22 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* ext/win32ole/win32ole.c (fole_record_method_missing): correct</div><div class='del'>-	  fields Hash key.</div><div class='del'>-</div><div class='del'>-Sat Jul 12 04:17:40 2014  KOSAKI Motohiro  &lt;kosaki.motohiro@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/smtp.rb (Net::SMTP#data): enable buffering while</div><div class='del'>-	  'data' send for optimizing Net::SMTP#send_message.</div><div class='del'>-	  [ruby-dev:48329] [misc #9981]</div><div class='del'>-	  patch by Masahiro Tomita.</div><div class='del'>-</div><div class='del'>-Sat Jul 12 01:13:45 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='add'>+Mon Apr 18 12:56:31 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/envutil.rb (assert_no_memory_leak): On Solaris 9 or later,</div><div class='del'>-	  if possible, execute child ruby with environment variables</div><div class='del'>-	  LD_PRELOAD=libumem.so UMEM_OPTIONS="backend=mmap". With these</div><div class='del'>-	  variables, freed memory is immediately returned to the OS.</div><div class='del'>-	  [Bug #10020] [ruby-dev:48391]</div><div class='add'>+	* numeric.c (flo_truncate): add an optional parameter, digits, as</div><div class='add'>+	  well as Float#round.  [Feature #12245]</div><div class='ctx'> </div><div class='del'>-Fri Jul 11 20:49:10 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* numeric.c (int_truncate): add an optional parameter, digits, as</div><div class='add'>+	  well as Integer#round.  [Feature #12245]</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c: add WIN32OLE_RECORD class to support</div><div class='del'>-	  VT_RECORD OLE variables.</div><div class='add'>+Sun Apr 17 04:18:56 2016  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jul 11 17:15:08 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* tool/redmine-backporter.rb: revisions are strings.</div><div class='ctx'> </div><div class='del'>-	* lib/abbrev.rb: remove executable.</div><div class='add'>+Sat Apr 16 14:26:49 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jul 11 16:45:39 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* ext/date/date_core.c : remove not used f_getlocal macro.</div><div class='add'>+	  After r54553 f_getlocal macro is not used.</div><div class='ctx'> </div><div class='del'>-	* lib/fileutils.rb: handle ENOENT error with symlink targeted to</div><div class='del'>-	  non-exists file. [ruby-dev:45933] [Bug #6716]</div><div class='add'>+Sat Apr 16 14:15:24 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jul 11 15:59:42 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* ext/date/date_core.c : remove not used f_utc6 macro.</div><div class='add'>+	  After r54169 f_utc6 macro is not used.</div><div class='ctx'> </div><div class='del'>-	* array.c: Clarify documentation for Array#insert.</div><div class='del'>-	  [ruby-core:62934] [Bug #9901]</div><div class='add'>+Sat Apr 16 10:00:11 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jul 11 15:39:36 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* struct.c (struct_make_members_list, rb_struct_s_def): member</div><div class='add'>+	  names should be unique. [ruby-core:74971] [Bug #12291]</div><div class='ctx'> </div><div class='del'>-	* io.c: Improve Documentation by @dapplebeforedawn.</div><div class='del'>-	  [fix GH-658] [ruby-core:63579] [Bug #10012]</div><div class='add'>+	* struct.c (struct_make_members_list): extract making member name</div><div class='add'>+	  list from char* va_list, with creating symbols without</div><div class='add'>+	  intermediate IDs.</div><div class='ctx'> </div><div class='del'>-Fri Jul 11 14:19:14 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='add'>+Sat Apr 16 01:33:27 2016  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/matrix.rb: Fix sign for cross_product [#9499]</div><div class='add'>+	* tool/redmine-backporter.rb: sort revisions.</div><div class='ctx'> </div><div class='del'>-Fri Jul 11 11:11:50 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Sat Apr 16 01:16:02 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* benchmark/prepare_so_k_nucleotide.rb: use require_relative.</div><div class='add'>+	* array.c (rb_ary_sum): Don't yield same element twice.</div><div class='add'>+	  Found by nagachika.</div><div class='ctx'> </div><div class='del'>-	* benchmark/prepare_so_reverse_complement.rb: ditto.</div><div class='add'>+Sat Apr 16 01:03:32 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jul 11 10:09:03 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* array.c (rb_ary_sum): Fix SEGV by [1/2r, 1].sum.</div><div class='ctx'> </div><div class='del'>-	* pack.c (encodes): fix buffer overrun by tail_lf.  Thanks to</div><div class='del'>-	  Mamoru Tasaka and Tomas Hoger.  [ruby-core:63604] [Bug #10019]</div><div class='add'>+Fri Apr 15 23:52:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jul 10 23:51:36 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='add'>+	* rational.c (rb_rational_plus): rename from rb_rational_add</div><div class='add'>+	  to be aligned with rb_fix_plus.</div><div class='ctx'> </div><div class='del'>-	* hash.c (ruby_setenv): Fix TestEnv#test_aset failure on Solaris 9.</div><div class='del'>-	  When name contains '=', ruby_setenv raises Errno::EINVAL.</div><div class='del'>-	  That is the same behavior as Solaris 10.</div><div class='del'>-	  NULL check for malloc return value is also added.</div><div class='del'>-</div><div class='del'>-Thu Jul 10 15:02:55 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c (vm_callee_setup_keyword_arg): adjust VM stack</div><div class='del'>-	  pointer to get rid of overwriting splat arguments by arguments</div><div class='del'>-	  for `to_hash` conversion.  [ruby-core:63593] [Bug #10016]</div><div class='del'>-</div><div class='del'>-Thu Jul 10 01:09:57 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* symbol.c: remove rb_gc_mark_symbols().</div><div class='del'>-</div><div class='del'>-	  fstrings referred by static symbols and pinned dynamic symbols</div><div class='del'>-	  are registered by rb_gc_register_mark_object().</div><div class='del'>-</div><div class='del'>-	  fstrings referred by dynamic symbols (not pinned symbols)</div><div class='del'>-	  are referred from global_symbols.dsymbol_fstr_hash (Hash object).</div><div class='del'>-</div><div class='del'>-	  Note that fstrings referred from dynamic symbols must live logger</div><div class='del'>-	  than symbol objects themselves because rb_gc_free_dsymbol() uses</div><div class='del'>-	  fstrings to remove from symbol tables.</div><div class='del'>-	  This is why we can not mark fstrings from dynamic symbols.</div><div class='del'>-</div><div class='del'>-	  This technique reduces root objects for GC marking.</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_mark_roots): ditto.</div><div class='add'>+	* array.c (rb_ary_sum): ditto.</div><div class='ctx'> </div><div class='ctx'> 	* internal.h: ditto.</div><div class='ctx'> </div><div class='del'>-Thu Jul 10 00:24:18 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk (DTRACE_DEPENDENT_OBJS): fix build failure on Solaris</div><div class='del'>-	  introduced in r46768. Object files containing dtrace probes should</div><div class='del'>-	  be listed in DTRACE_DEPENDENT_OBJS.</div><div class='del'>-</div><div class='del'>-Wed Jul  9 17:07:28 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* symbol.c, symbol.h: Symbol class implementation and internals,</div><div class='del'>-	  split from parse.y.</div><div class='del'>-</div><div class='del'>-Wed Jul  9 14:45:39 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y: change Symbol &lt;-&gt; ID relationship to avoid</div><div class='del'>-	  exposing IDs from collectable symbols.</div><div class='del'>-	  [Bug #10014]</div><div class='del'>-</div><div class='del'>-	  Now, rb_check_id() returns 0 if corresponding symbol is</div><div class='del'>-	  pinned dynamic symbol.</div><div class='del'>-</div><div class='del'>-	  There is remaining intern_cstr_without_pindown(), it can return</div><div class='del'>-	  IDs from collectable symbols. We must be careful to use it</div><div class='del'>-	  (only used in parse.y).  I think it should be removed if</div><div class='del'>-	  it does not have impact for performance.</div><div class='del'>-</div><div class='del'>-	* parse.y:</div><div class='del'>-	  add:</div><div class='del'>-	  * STATIC_SYM2ID()</div><div class='del'>-	  * STATIC_ID2SYM()</div><div class='del'>-	  rename:</div><div class='del'>-	  * rb_pin_dynamic_symbol() -&gt; dsymbol_pindown()</div><div class='del'>-</div><div class='del'>-	* internal.h:</div><div class='del'>-	  remove:</div><div class='del'>-	  * rb_check_id_without_pindown()</div><div class='del'>-	  * rb_sym2id_without_pindown()</div><div class='del'>-	  add:</div><div class='del'>-	  * rb_check_symbol()</div><div class='del'>-	  * rb_check_symbol_cstr()</div><div class='del'>-</div><div class='del'>-	* load.c: use rb_check_id() or rb_check_id_cstr().</div><div class='del'>-</div><div class='del'>-	* object.c: ditto.</div><div class='del'>-</div><div class='del'>-	* struct.c: ditto.</div><div class='del'>-</div><div class='del'>-	* thread.c: ditto.</div><div class='del'>-</div><div class='del'>-	* vm_method.c: ditto.</div><div class='del'>-</div><div class='del'>-	* string.c (sym_find): use only rb_check_symbol().</div><div class='del'>-</div><div class='del'>-	* sprintf.c (rb_str_format): use rb_check_symbol_cstr().</div><div class='del'>-</div><div class='del'>-Wed Jul  9 12:21:55 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (symbols_i): delete garbage symbols for Symbol.all_symbols.</div><div class='del'>-</div><div class='del'>-Wed Jul  9 05:49:08 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* thread_pthread.h (struct rb_global_vm_lock_struct):</div><div class='del'>-	  do not expose pthread type for lock</div><div class='del'>-</div><div class='del'>-Wed Jul  9 05:41:40 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* thread_pthread.h: remove unneeded semaphore.h include</div><div class='del'>-</div><div class='del'>-Wed Jul  9 00:12:28 2014  Keiju Ishitsuka  &lt;keiju@ishitsuka.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/irb/ruby-lex.rb: fix counting indent in identify_string_dvar.</div><div class='del'>-</div><div class='del'>-Tue Jul  8 16:58:02 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/memory_status.rb (Memory::PSCMD): use ps command which</div><div class='del'>-	  outputs expected result.  [ruby-dev:48370] [Bug #10010]</div><div class='del'>-</div><div class='del'>-Tue Jul  8 14:45:17 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (dsymbol_alloc): set global_symbols.minor_marked to 0.</div><div class='del'>-</div><div class='del'>-	* parse.y (dsymbol_check): set RSYMBOL(sym)-&gt;fstr to 0</div><div class='del'>-	  because we should not touch fstr after that.</div><div class='del'>-</div><div class='del'>-	* parse.y (rb_gc_free_dsymbol): skip deleting str and sym</div><div class='del'>-	  from tables if fstr == 0.</div><div class='del'>-</div><div class='del'>-Mon Jul  7 14:31:52 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y: remove global_symbols::pinned_dsym</div><div class='del'>-	  (and ::pinned_dsym_minor_marked).</div><div class='del'>-</div><div class='del'>-	  Mark pinned dsymbols by rb_gc_register_mark_object() because</div><div class='del'>-	  they are immortal.</div><div class='del'>-</div><div class='del'>-	* parse.y (rb_gc_free_dsymbol): rename parameter name `ptr' to `sym'.</div><div class='del'>-</div><div class='del'>-Mon Jul  7 12:45:51 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: revert miss-commit.</div><div class='del'>-</div><div class='del'>-Mon Jul  7 12:40:59 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y: need to use updated (re-created) symbols.</div><div class='del'>-</div><div class='del'>-Mon Jul  7 11:02:55 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* tool/mkconfig.rb: remove not to require rbconfig/obsolete.rb.</div><div class='del'>-</div><div class='del'>-	* lib/rbconfig/obsolete.rb: removed.</div><div class='del'>-</div><div class='del'>-Mon Jul  7 10:52:03 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y: do not use rb_gc_resurrect(), but create a new dynamic</div><div class='del'>-	  symbol for garbage dynamic symbol.</div><div class='del'>-</div><div class='del'>-	* common.mk: use gc.h by parse.y.</div><div class='del'>-</div><div class='del'>-Mon Jul  7 02:18:42 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (fstr_update_callback): do not use rb_gc_resurrect()</div><div class='del'>-	  any more.</div><div class='del'>-</div><div class='del'>-	  Make new frozen string and replace with garbage frozen string.</div><div class='del'>-</div><div class='del'>-	* common.mk: use gc.h from string.c.</div><div class='del'>-</div><div class='del'>-Mon Jul  7 00:36:13 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: rename is_dying_object() to is_garbage_object().</div><div class='del'>-</div><div class='del'>-	* gc.h: rb_objspace_garbage_object_p() as an exported function.</div><div class='del'>-</div><div class='del'>-Sun Jul  6 21:30:35 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (is_dying_object): fix missed condition.</div><div class='del'>-</div><div class='del'>-	* gc.c (is_live_object): move frequent path first.</div><div class='del'>-</div><div class='del'>-Sun Jul  6 21:00:11 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: rename is_dead_object() to is_dying_object().</div><div class='del'>-	  This function is not opposite against is_live_object()</div><div class='del'>-	  because is_dying_object() does *not* check object type.</div><div class='del'>-</div><div class='del'>-	* gc.c (is_dying_object): change condition.</div><div class='del'>-</div><div class='del'>-	* gc.c (is_live_object): use T_NONE instead of 0.</div><div class='del'>-</div><div class='del'>-	* gc.c (rb_objspace_dying_object_p): added.</div><div class='del'>-</div><div class='del'>-Sun Jul  6 13:37:27 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (rb_gc_register_mark_object): change data structure.</div><div class='del'>-	  From single array, to array of arrays. Each array only has 1024</div><div class='del'>-	  entries.</div><div class='del'>-</div><div class='del'>-	* vm.c (Init_vm_objects): change default capa from 1 to 128.</div><div class='del'>-</div><div class='del'>-Sat Jul  5 05:05:53 2014  Vipul A M  &lt;vipulnsward@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/irb/locale.rb (IRB::Locale#modifier): fix wrong attr_reader</div><div class='del'>-	  `modifieer` =&gt; `modifier` from irb locale.  [fix GH-656]</div><div class='del'>-</div><div class='del'>-Fri Jul  4 20:45:26 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y: rename symbols::sym_id to symbols::str_id.</div><div class='del'>-	  This table is not {Symbol =&gt; ID} table, but</div><div class='del'>-	  {String =&gt; ID} table.</div><div class='del'>-</div><div class='del'>-	* parse.y (lookup_sym_id): also rename lookup_sym_id() to</div><div class='del'>-	  lookup_str_id() because key is not Symbol, but String.</div><div class='del'>-</div><div class='del'>-Fri Jul  4 18:42:04 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (must_be_dynamic_symbol): fix missed-condition.</div><div class='del'>-</div><div class='del'>-Fri Jul  4 18:38:11 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (rb_pin_dynamic_symbol): should be `static' function.</div><div class='del'>-</div><div class='del'>-Fri Jul  4 18:03:35 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (must_be_dynamic_symbol): refactoring.</div><div class='del'>-	  * add `inline'.</div><div class='del'>-	  * use UNLIKELY().</div><div class='del'>-	  * check only DYNAMIC_SYM_P(), otherwise it is a bug.</div><div class='del'>-	  * lookup_id_str() is not needed in second condition.</div><div class='del'>-</div><div class='del'>-Fri Jul  4 11:53:56 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y: remove unused code</div><div class='del'>-	  surrounded by `#if ENABLE_SELECTOR_NAMESPACE'</div><div class='del'>-</div><div class='del'>-Fri Jul  4 10:08:24 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/rubygems/test_gem_package.rb: avoid tempfile leaks using Tempfile#close!</div><div class='del'>-	* test/rubygems/test_gem_request_set.rb: ditto.</div><div class='del'>-	* test/rubygems/test_gem_request_set_gem_dependency_api.rb: ditto.</div><div class='del'>-</div><div class='del'>-Fri Jul  4 04:42:05 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/http/response.rb (Net::Inflater#inflate_adapter):</div><div class='del'>-	  prevent automatic encoding conversion.</div><div class='del'>-</div><div class='del'>-Fri Jul  4 04:39:52 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/http/response.rb (Net::HTTPResponse.each_response_header):</div><div class='del'>-	  raise first exception even if inflate_body_io.finish raises error.</div><div class='del'>-	  when begin block raises error, finish usually raises error too.</div><div class='del'>-</div><div class='del'>-Fri Jul  4 02:56:04 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/generic.rb (URI::Generic#query=): remove validation, just</div><div class='del'>-	  escape. [Feature #2542]</div><div class='del'>-</div><div class='del'>-	* lib/uri/generic.rb (URI::Generic#fragment=): ditto.</div><div class='del'>-</div><div class='del'>-	* lib/uri/generic.rb (URI::Generic#check_query): removed.</div><div class='del'>-</div><div class='del'>-	* lib/uri/generic.rb (URI::Generic#set_query): ditto.</div><div class='del'>-</div><div class='del'>-	* lib/uri/generic.rb (URI::Generic#check_fragment): ditto.</div><div class='del'>-</div><div class='del'>-	* lib/uri/generic.rb (URI::Generic#set_fragment): ditto.</div><div class='del'>-</div><div class='del'>-Thu Jul  3 12:40:22 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (--with-static-linked-ext): fix for extensions to</div><div class='del'>-	  be linked statically.</div><div class='del'>-</div><div class='del'>-	* Makefile.in, common.mk: use ENCSTATIC for enc directory.</div><div class='del'>-</div><div class='del'>-	* ext/extmk.rb: supply dependencies of statically linked extension</div><div class='del'>-	  libraries.</div><div class='del'>-</div><div class='del'>-Wed Jul  2 15:45:49 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_heap_lazy_sweep): simplify logic.</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_page_sweep): return TRUE if empty slots are available.</div><div class='del'>-</div><div class='del'>-Wed Jul  2 09:48:42 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* logger.rb: removed unmaintained code.</div><div class='del'>-	  [Feature #9860][ruby-core:62724]</div><div class='del'>-	* test/logger/test_application.rb: ditto.</div><div class='del'>-</div><div class='del'>-Wed Jul  2 03:20:00 2014  Charlie Somerville  &lt;charliesome@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* node.c (dump_node): handle nd_value == (NODE *)-1 to mean this</div><div class='del'>-	  keyword argument is required</div><div class='del'>-</div><div class='del'>-Wed Jul  2 02:57:27 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (rb_vm_env_local_variables): returns array of local</div><div class='del'>-	  variable name symbols in the environment by envval.</div><div class='del'>-</div><div class='del'>-	* proc.c (bind_local_variables): use rb_vm_env_local_variables.</div><div class='del'>-</div><div class='del'>-Wed Jul  2 02:23:52 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* proc.c (bind_receiver): new method to return the bound receiver</div><div class='del'>-	  of the binding object.  [ruby-dev:47613] [Feature #8779]</div><div class='del'>-</div><div class='del'>-Wed Jul  2 02:14:37 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* proc.c (bind_local_variables): update env from envval for each</div><div class='del'>-	  iterations.  [ruby-dev:48351] [Bug #10001]</div><div class='del'>-</div><div class='del'>-Tue Jul  1 23:46:34 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* NEWS: [DOC] mention about Binding#local_variables, introduced at</div><div class='del'>-	  r44392 (see [Feature #8773]).</div><div class='del'>-</div><div class='del'>-Tue Jul  1 23:30:51 2014  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* numeric.c (num_step_scan_args): table argument of rb_get_kwargs() is</div><div class='del'>-	  array of IDs, not Symbols. [ruby-dev:48353] [Bug #9811]</div><div class='del'>-</div><div class='del'>-Tue Jul  1 16:18:22 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/digest/lib/digest/hmac.rb, test/digest/test_digest_hmac.rb:</div><div class='del'>-	  Digest::HMAC is finally removed as previously noticed.</div><div class='del'>-	  [fix GH-648]</div><div class='del'>-</div><div class='del'>-Tue Jul  1 11:13:43 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/date/lib/date/format.rb: removed empty file by @vipulnsward.</div><div class='del'>-	* ext/date/lib/date.rb: removed needless require.</div><div class='del'>-	  [fix GH-647]</div><div class='del'>-</div><div class='del'>-Mon Jun 30 16:42:52 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_stat_internal): return size_t value instead of VALUE</div><div class='del'>-	  and remove `out' parameter.</div><div class='del'>-</div><div class='del'>-	* gc.c: add braces for `if' statements.</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_stat_internal): fix comment.</div><div class='del'>-</div><div class='del'>-Mon Jun 30 15:07:34 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: support `USE_RGENGC == 0'.</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_gc.rb: ditto.</div><div class='del'>-</div><div class='del'>-Mon Jun 30 11:36:04 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* file.c: [DOC] document File.join returns a string.</div><div class='del'>-	  Contributed by @dapplebeforedawn. [fix GH-646]</div><div class='del'>-</div><div class='del'>-Sat Jun 28 22:57:01 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/pathname/pathname.c (path_birthtime): Windows support.</div><div class='del'>-	  see [Feature #9857] [ruby-dev:48339]</div><div class='del'>-</div><div class='del'>-Sat Jun 28 22:44:16 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/pathname/pathname.c (path_birthtime): New method,</div><div class='del'>-	  Pathname#birthtime.</div><div class='del'>-	  Proposed by Kazuhiro NISHIYAMA.  [ruby-dev:48232] [Feature #9857]</div><div class='del'>-</div><div class='del'>-Sat Jun 28 20:29:03 2014  Simon Baird  &lt;simon.baird@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/bigdecimal/lib/bigdecimal/math.rb (BigMath#PI): change error</div><div class='del'>-	  message about zero or negative precision for clarity and</div><div class='del'>-	  consistency with other methods.  [GH-644]</div><div class='del'>-</div><div class='del'>-Sat Jun 28 15:32:57 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/webrick/utils.rb (create_listeners): Close socket objects.</div><div class='del'>-</div><div class='del'>-Sat Jun 28 13:58:48 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* eval.c (setup_exception): should not overwrite SystemStackError</div><div class='del'>-	  backtrace if set already.  [ruby-core:63377] [Feature #6216]</div><div class='del'>-</div><div class='del'>-	* eval.c (setup_exception): get rid of method calls before raising</div><div class='del'>-	  stack overflow, not to cause stack overflow again.</div><div class='del'>-</div><div class='del'>-	* defs/id.def: add IDs for backtraces.</div><div class='del'>-</div><div class='del'>-Sat Jun 28 04:08:22 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/mailto.rb: update to latest specs, RFC 6068 and HTML5.</div><div class='del'>-</div><div class='del'>-	* lib/uri/mailto.rb (HEADER_PATTERN): removed.</div><div class='del'>-</div><div class='del'>-	* lib/uri/mailto.rb (HEADER_REGEXP): use RFC 6068 hfields.</div><div class='del'>-</div><div class='del'>-	* lib/uri/mailto.rb (EMAIL_REGEXP): use HTML5 email regexp.</div><div class='del'>-</div><div class='del'>-	* lib/uri/mailto.rb (URI::MailTo.build): support multiple to addresses.</div><div class='del'>-</div><div class='del'>-	* lib/uri/mailto.rb (URI::MailTo#initialize): Support multiple to</div><div class='del'>-	  addresses. Don't check with regexp, only split.</div><div class='del'>-</div><div class='del'>-	* lib/uri/mailto.rb (URI::MailTo#check_to): verify by matching</div><div class='del'>-	  URI path-rootless and HTML5 email regexp with unescaped one.</div><div class='del'>-</div><div class='del'>-	* lib/uri/mailto.rb (URI::MailTo#check_headers): verify only by</div><div class='del'>-	  HEADER_REGEXP.</div><div class='del'>-</div><div class='del'>-	* lib/uri/mailto.rb (URI::MailTo#set_headers): don't check by</div><div class='del'>-	  HEADER_REGEXP, only split it.</div><div class='del'>-</div><div class='del'>-Sat Jun 28 00:35:10 2014  Lauri Tirkkonen  &lt;lotheac@iki.fi&gt;</div><div class='del'>-</div><div class='del'>-	* tool/mkconfig.rb: fix empty RbConfig::CONFIG["prefix"] when</div><div class='del'>-	  configured --with-rubyarchprefix, remove prefix from rubyarchdir</div><div class='del'>-	  after expansion for the case it does not start with '$(prefix)'.</div><div class='del'>-	  [fix GH-643]</div><div class='del'>-</div><div class='del'>-Fri Jun 27 15:20:12 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rubygems/test_case.rb: rescue Gem::LoadError in Gem::TestCase.</div><div class='del'>-	  because it's effected by removing minitest from stdlib.</div><div class='del'>-</div><div class='del'>-Fri Jun 27 12:29:37 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rubygems/specification.rb: fixed broken condition caused</div><div class='del'>-	  by removing YAML::ENGINE.</div><div class='del'>-	* lib/rubygems/package/old.rb: ditto.</div><div class='del'>-</div><div class='del'>-Fri Jun 27 05:33:26 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* hash.c (env_shift): fix memory leak on Windows, free environment</div><div class='del'>-	  strings block always.  [ruby-dev:48332] [Bug #9983]</div><div class='del'>-</div><div class='del'>-Fri Jun 27 03:41:53 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* sprintf.c (GETASTER): should not use the numbered argument to be</div><div class='del'>-	  formatted, raise ArgumentError instead.</div><div class='del'>-	  [ruby-dev:48330] [Bug #9982]</div><div class='del'>-</div><div class='del'>-Thu Jun 26 18:18:28 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/with_different_ofs.rb: move into test library directory.</div><div class='del'>-	* test/csv/base.rb: fix require path for with_different_ofs.rb.</div><div class='del'>-	* test/digest/test_digest_extend.rb: ditto.</div><div class='del'>-</div><div class='del'>-Thu Jun 26 18:06:50 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/profile_test_all.rb: move into test library directory.</div><div class='del'>-	* test/runner.rb: fix require path for profile_test_all.rb.</div><div class='del'>-</div><div class='del'>-Thu Jun 26 17:57:57 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/webrick/httpproxy.rb: remove useless assigned variables.</div><div class='del'>-	* lib/webrick/httpservlet/cgihandler.rb: ditto.</div><div class='del'>-	* lib/webrick/httpservlet/erbhandler.rb: ditto.</div><div class='del'>-	* lib/webrick/server.rb: ditto.</div><div class='del'>-</div><div class='del'>-Thu Jun 26 08:28:01 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* hash.c (env_select): fix memory leak and crash on Windows, make</div><div class='del'>-	  keys array first instead of iterating on environ directly.</div><div class='del'>-	  [ruby-dev:48325] [Bug #9978]</div><div class='del'>-</div><div class='del'>-Thu Jun 26 02:45:04 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* eval_error.c (error_print): put a newline after an anonymous</div><div class='del'>-	  exception class name.</div><div class='del'>-</div><div class='del'>-Wed Jun 25 22:31:32 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* hash.c (ruby_setenv): fix memory leak on Windows, free</div><div class='del'>-	  environment strings block after check for the size.</div><div class='del'>-	  [ruby-dev:48323] [Bug #9977]</div><div class='del'>-</div><div class='del'>-Wed Jun 25 15:44:12 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* ccan/container_of/container_of.h (container_off_var):</div><div class='del'>-	  avoid warning with -Wcast-qual</div><div class='del'>-	  [ccan ba5ad771af4aa9e085498de6c3c665c52694460f (Rusty Russell)]</div><div class='del'>-</div><div class='del'>-Wed Jun 25 10:19:59 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* hash.c (env_aset, env_has_key, env_assoc, env_has_value),</div><div class='del'>-	  (env_rassoc, env_key): prohibit tainted strings if $SAFE is</div><div class='del'>-	  non-zero.  [Bug #9976]</div><div class='del'>-</div><div class='del'>-Tue Jun 24 14:46:17 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/gserver.rb: remove redundant use of to_s in interpolation.</div><div class='del'>-	* lib/logger.rb: ditto.</div><div class='del'>-	* lib/optparse.rb: ditto.</div><div class='del'>-	* lib/rbconfig/obsolete.rb: ditto.</div><div class='del'>-	* lib/resolv.rb: ditto.</div><div class='del'>-	* lib/webrick/httpresponse.rb: ditto.</div><div class='del'>-</div><div class='del'>-Tue Jun 24 10:50:06 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* hash.c (env_path_str_new): make PATH environment variable</div><div class='del'>-	  string, to be frozen.</div><div class='del'>-</div><div class='del'>-Tue Jun 24 10:40:52 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* tool/make-snapshot: download bundle gems when package making.</div><div class='del'>-	  [Feature #9852][ruby-core:62676]</div><div class='del'>-	* gems/bundled_gems: listed bundled gems for Ruby 2.2.</div><div class='del'>-</div><div class='del'>-Tue Jun 24 10:20:35 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* tool/downloader.rb: make Downloader class to general download utility.</div><div class='del'>-	  It can be used without config.guess and config.sub.</div><div class='del'>-	* tool/get-config_files: ditto.</div><div class='del'>-	* tool/make-snapshot: ditto.</div><div class='del'>-</div><div class='del'>-Tue Jun 24 06:17:52 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* eval.c (setup_exception): "mesg == sysstack_error" and</div><div class='del'>-	  sysstack_error_p(mesg) are duplicated.</div><div class='del'>-	  r46502 seems to want to use latter.</div><div class='del'>-</div><div class='del'>-Tue Jun 24 06:15:36 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/tk/tcltklib.c: fix format specifiers for VALUE and</div><div class='del'>-	  Tcl_Interp*.  [ruby-core:63283] [Bug #9972]</div><div class='del'>-</div><div class='del'>-Tue Jun 24 05:40:41 2014  KOSAKI Motohiro  &lt;kosaki.motohiro@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* nacl/nacl-config.rb: Use File.exist? instead of executable?</div><div class='del'>-	  for irt_core. Recent nacl_sdk has non-executable irt_core.</div><div class='del'>-	  Patch by Shinichiro Hamaji.</div><div class='del'>-	  [Fixes GH-529] https://github.com/ruby/ruby/pull/529</div><div class='del'>-</div><div class='del'>-Mon Jun 23 18:44:45 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* tool/config_files.rb: rename class ConfigFiles to Downloader.</div><div class='del'>-	* tool/get-config_files: ditto.</div><div class='del'>-	* tool/make-snapshot: ditto.</div><div class='del'>-</div><div class='del'>-Mon Jun 23 18:03:13 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* tool/rbinstall.rb: support to install bundle gems.</div><div class='del'>-</div><div class='del'>-Mon Jun 23 17:33:11 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/imap.rb (Net::IMAP#fetch): [DOC] Describe how a range in</div><div class='del'>-	  +set+ is interpreted, and mention -1 which can be used for '*'.</div><div class='del'>-</div><div class='del'>-Mon Jun 23 16:22:50 2014  URABE Shyouhei  &lt;shyouhei@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h (struct RHash): no longer. [Feature #9889]</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h (RHASH): ditto.</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h (RHASH_ITER_LEV): deprecated.  Will be deleted later.</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h (RHASH_IFNONE): ditto.</div><div class='del'>-</div><div class='del'>-	* internal.h (struct RHash): moved here.</div><div class='del'>-</div><div class='del'>-	* internal.h (RHASH): ditto.</div><div class='del'>-</div><div class='del'>-	* hash.c (rb_hash_iter_lev): do not use this.</div><div class='del'>-</div><div class='del'>-	* hash.c (rb_hash_ifnone): ditto.</div><div class='del'>-</div><div class='del'>-Mon Jun 23 13:30:11 2014  URABE Shyouhei  &lt;shyouhei@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h (struct RComplex): no longer. [Feature #9888]</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h (RCOMPLEX): ditto.</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h (RCOMPLEX_SET_REAL): deprecated.  Will be deleted later.</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h (RCOMPLEX_SET_IMAG): ditto.</div><div class='del'>-</div><div class='del'>-	* internal.h (struct RFloat): moved here.</div><div class='del'>-</div><div class='del'>-	* internal.h (RCOMPLEX): ditto.</div><div class='del'>-</div><div class='del'>-	* complex.c (rb_complex_set_real): do not use this.</div><div class='del'>-</div><div class='del'>-	* complex.c (rb_complex_set_imag): ditto.</div><div class='del'>-</div><div class='del'>-Mon Jun 23 13:10:15 2014  URABE Shyouhei  &lt;shyouhei@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h (struct RFloat): no longer.  [Feature #9863]</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h (RFLOAT): ditto.</div><div class='del'>-</div><div class='del'>-	* internal.h (struct RFloat): moved here.</div><div class='del'>-</div><div class='del'>-	* internal.h (RFLOAT): ditto.</div><div class='del'>-</div><div class='del'>-Mon Jun 23 12:01:42 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/generic.rb (check_port): allow strings for port= as</div><div class='del'>-	  described in rdoc.</div><div class='del'>-</div><div class='del'>-	* lib/uri/rfc3986_parser.rb (regexp): implementation detail of above.</div><div class='del'>-</div><div class='del'>-Mon Jun 23 11:35:01 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* eval.c (setup_exception): set backtrace in system stack error</div><div class='del'>-	  other than the pre-allocated sysstack_error.  [Feature #6216]</div><div class='del'>-</div><div class='del'>-	* proc.c (Init_Proc): freeze the pre-allocated sysstack_error.</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c (vm_stackoverflow): raise new instance for each</div><div class='del'>-	  times without calling any methods to keep the backtrace with no</div><div class='del'>-	  further stack overflow.</div><div class='del'>-</div><div class='del'>-	* object.c (rb_obj_copy_ivar): extract function to copy instance</div><div class='del'>-	  variables only for T_OBJECT from init_copy.</div><div class='del'>-</div><div class='del'>-Mon Jun 23 11:11:16 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (check_stack_overflow): drop the last tag too close to</div><div class='del'>-	  the fault page, to get rid of stack overflow deadlock.</div><div class='del'>-	  [Bug #9971]</div><div class='del'>-</div><div class='del'>-Sun Jun 22 09:11:15 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/generic.rb: remove registry.</div><div class='del'>-	  'registry' is not used and RFC3986 doesn't use it.</div><div class='del'>-</div><div class='del'>-Sun Jun 22 09:10:09 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/rfc3986_parser.rb: raise exception when given a URI string</div><div class='del'>-	  has non ASCII in order to keep the regexp compiled for US-ASCII.</div><div class='del'>-</div><div class='del'>-Sun Jun 22 09:05:42 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/common.rb (URI::REGEXP): move to lib/uri/rfc2396_parser.rb.</div><div class='del'>-</div><div class='del'>-	* lib/uri/common.rb (URI::Parser): ditto.</div><div class='del'>-</div><div class='del'>-	* lib/uri/common.rb (URI.split): use RFC3986_Parser. [Feature #2542]</div><div class='del'>-</div><div class='del'>-	* lib/uri/common.rb (URI.parse): ditto.</div><div class='del'>-</div><div class='del'>-	* lib/uri/common.rb (URI.join): ditto.</div><div class='del'>-</div><div class='del'>-	* lib/uri/common.rb (URI.extract): deprecated.</div><div class='del'>-</div><div class='del'>-	* lib/uri/common.rb (URI.regexp): ditto.</div><div class='del'>-</div><div class='del'>-	* lib/uri/rfc2396_parser.rb: added.</div><div class='del'>-</div><div class='del'>-	* lib/uri/rfc3986_parser.rb: added.</div><div class='del'>-</div><div class='del'>-Sun Jun 22 09:04:50 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/mailto.rb (initialize): as previous commit, fix arg_check</div><div class='del'>-</div><div class='del'>-Sun Jun 22 09:01:47 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/uri/ftp.rb (initialize): argument checking flag is arg_check,</div><div class='del'>-	  but arg[-1] is fragment.</div><div class='del'>-</div><div class='del'>-	* lib/uri/ftp.rb (initialize): explicitly specify arguments.</div><div class='del'>-</div><div class='del'>-Sat Jun 21 12:50:32 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/fiddle/extconf.rb: supply 0 to fill RUBY_LIBFFI_MODVERSION</div><div class='del'>-	  with 3-digit.  libffi 3.1 returns just 2-digit.</div><div class='del'>-	  [ruby-core:62920] [Bug #9897]</div><div class='del'>-</div><div class='del'>-Sat Jun 21 07:06:13 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* encoding.c (enc_find): [DOC] never accepted a symbol.</div><div class='del'>-	  [ruby-dev:48308] [Bug #9966]</div><div class='del'>-</div><div class='del'>-Fri Jun 20 17:15:43 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/tracepointchecker.rb: add to check TracePoint healthiness.</div><div class='del'>-</div><div class='del'>-	* test/runner.rb: use it.</div><div class='del'>-</div><div class='del'>-Fri Jun 20 07:26:44 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_settracefunc.rb: rewrite tests with</div><div class='del'>-	  assert_consistent_call_return().</div><div class='del'>-</div><div class='del'>-	  assert_consistent_call_return() is also modified to check</div><div class='del'>-	  consistency.</div><div class='del'>-</div><div class='del'>-Fri Jun 20 07:07:28 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* compile.c (rb_iseq_compile_node): put start label of block after</div><div class='del'>-	  trace (b_call).</div><div class='del'>-	  [Bug #9964]</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_settracefunc.rb: add a test.</div><div class='del'>-</div><div class='del'>-	  added assert_consistent_call_return() method check call/return</div><div class='del'>-	  consistency.</div><div class='del'>-</div><div class='del'>-Fri Jun 20 05:26:27 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (rb_catch_protect): fix same problem of [Bug #9961].</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (rb_iterate): ditto.</div><div class='del'>-</div><div class='del'>-Thu Jun 19 21:41:30 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (rb_vm_rewind_cfp): add new function to rewind specified cfp</div><div class='del'>-	  with invoking RUBY_EVENT_C_RETURN.</div><div class='del'>-	  [Bug #9961]</div><div class='del'>-</div><div class='del'>-	* vm_core.h: ditto.</div><div class='del'>-</div><div class='del'>-	* eval.c (rb_protect): use it.</div><div class='del'>-</div><div class='del'>-	* eval.c (rb_rescue2): ditto.</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (rb_iterate): ditto.</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_settracefunc.rb: add a test.</div><div class='del'>-</div><div class='del'>-	* vm_core.h (rb_vm_rewind_cfp): add the prototype declaration.</div><div class='del'>-</div><div class='del'>-Thu Jun 19 19:47:21 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (invoke_block_from_c): move call/return event timing for</div><div class='del'>-	  bmethod. It can invoke inconsistent call event if this call raises</div><div class='del'>-	  argument error.</div><div class='del'>-	  [Bug #9959]</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c (vm_call_bmethod_body): ditto.</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_settracefunc.rb: add a test.</div><div class='del'>-</div><div class='del'>-Thu Jun 19 18:14:47 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm_core.h: add VM_FRAME_MAGIC_RESCUE to recognize normal block or</div><div class='del'>-	  rescue clause.</div><div class='del'>-</div><div class='del'>-	* vm.c (vm_exec): use VM_FRAME_MAGIC_RESCUE on at rescue/ensure.</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_settracefunc.rb: should not invoke b_return at rescue</div><div class='del'>-	  clause.</div><div class='del'>-	  [Bug #9957]</div><div class='del'>-</div><div class='del'>-	* vm_dump.c (control_frame_dump): check VM_FRAME_MAGIC_RESCUE.</div><div class='del'>-</div><div class='del'>-	* vm_dump.c (vm_stack_dump_each): ditto.</div><div class='del'>-</div><div class='del'>-Thu Jun 19 13:39:11 2014  Arne Brasseur  &lt;arne@arnebrasseur.net&gt;</div><div class='del'>-</div><div class='del'>-	* proc.c (rb_method_curry): Implement Method#curry, which delegates</div><div class='del'>-	  to to_proc.curry.  [ruby-core:62212] [Feature #9783]</div><div class='del'>-</div><div class='del'>-Tue Jun 17 16:41:49 2014  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/ftp.rb (gets, readline): read lines without LF properly.</div><div class='del'>-	  [ruby-core:63205] [Bug #9949]</div><div class='del'>-</div><div class='del'>-	* test/net/ftp/test_buffered_socket.rb: related test.</div><div class='del'>-</div><div class='del'>-Tue Jun 17 12:35:24 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* eval.c (extract_raise_opts): pass unknown options to the</div><div class='del'>-	  exception, so that exception class can receive a hash argument.</div><div class='del'>-	  [ruby-core:63203] [Feature #8257]</div><div class='del'>-</div><div class='del'>-Tue Jun 17 12:24:57 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (obj_memsize_of): memsize_of(T_ZOMBIE) returns 0, not a rb_bug.</div><div class='del'>-	  ObjectSpace.count_objects_size() uses memsize_of(T_ZOMBIE).</div><div class='del'>-</div><div class='del'>-	  This bug introduced at r46348.</div><div class='del'>-</div><div class='del'>-Mon Jun 16 19:00:11 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/runner.rb: failure message should be passed as an argument.</div><div class='del'>-</div><div class='del'>-Mon Jun 16 18:42:57 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/runner.rb: capture TracePoint stat before setup and compare</div><div class='del'>-	  it after teardown.</div><div class='del'>-</div><div class='del'>-Mon Jun 16 14:33:56 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* process.c (open): use UTF-8 version function to support</div><div class='del'>-	  non-ascii path properly.  [ruby-core:63185] [Bug #9946]</div><div class='del'>-</div><div class='del'>-Sat Jun 14 10:54:08 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* array.c (rcombinate0): remove recursion, by looping with indexes</div><div class='del'>-	  stored in `p`.</div><div class='del'>-</div><div class='del'>-	* array.c (rpermute0): remove recursion, by looping with indexes</div><div class='del'>-	  stored in `p`.</div><div class='del'>-</div><div class='del'>-	* array.c (permute0): remove recursion, by looping with indexes</div><div class='del'>-	  stored in `p`.  [ruby-core:63103] [Bug #9932]</div><div class='del'>-</div><div class='del'>-Sat Jun 14 10:52:15 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (rb_str_resize): update capa only when buffer get</div><div class='del'>-	  reallocated.</div><div class='del'>-	  http://d.hatena.ne.jp/nagachika/20140613/ruby_trunk_changes_46413_46420#r46413</div><div class='del'>-</div><div class='del'>-Sat Jun 14 08:28:59 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* man/rake.1: [DOC] Update links for Rake, patch by @hsbt [Bug #9904]</div><div class='del'>-	  [Fixes GH-628] https://github.com/ruby/ruby/pull/628</div><div class='del'>-</div><div class='del'>-Fri Jun 13 17:58:58 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm_trace.c: add new method TracePoint.stat to debug</div><div class='del'>-	  TracePoint mechanism.</div><div class='del'>-</div><div class='del'>-	  Ruby users should not use this method. So I don't note this method</div><div class='del'>-	  in the NEWS file.</div><div class='del'>-</div><div class='del'>-	* test/runner.rb: detect zombie active TracePoints with</div><div class='del'>-	  TracePoint.stat.</div><div class='del'>-</div><div class='del'>-Fri Jun 13 17:46:31 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* vm_trace.c: clear and restore recursive checking thread local data</div><div class='del'>-	  to avoid unexpected throw from TracePoint.</div><div class='del'>-	  [Bug #9940]</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_settracefunc.rb: add a test.</div><div class='del'>-</div><div class='del'>-	* thread.c: added</div><div class='del'>-	  * rb_threadptr_reset_recursive_data(rb_thread_t *th);</div><div class='del'>-	  * rb_threadptr_restore_recursive_data(rb_thread_t *th, VALUE old);</div><div class='del'>-</div><div class='del'>-	* vm_core.h: ditto.</div><div class='del'>-</div><div class='del'>-Fri Jun 13 17:33:14 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* array.c (rb_ary_combination): iterate on a shared copy, and use</div><div class='del'>-	  array of indexes instead of array of chosen objects.</div><div class='del'>-	  [ruby-core:63149] [Bug #9939]</div><div class='del'>-</div><div class='del'>-	* array.c (yield_indexed_values): extract from permute0(),</div><div class='del'>-	  rpermute0(), and rcombinate0().</div><div class='del'>-</div><div class='del'>-Fri Jun 13 13:42:58 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* array.c (rb_ary_permutation): `p` is the array of size `r`, as</div><div class='del'>-	  commented at permute0().  since `n &gt;= r` here, buffer overflow</div><div class='del'>-	  never happened, just reduce unnecessary allocation though.</div><div class='del'>-</div><div class='del'>-Thu Jun 12 20:32:28 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (rb_str_resize): should consider the capacity instead</div><div class='del'>-	  of the old length, as pointed out by nagachika.</div><div class='del'>-</div><div class='del'>-Thu Jun 12 18:31:01 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/http/responses.rb: added Net::HTTPPermanentRedirect(308)</div><div class='del'>-	  Contributed by @yorkie [fix GH-638]</div><div class='del'>-</div><div class='del'>-Thu Jun 12 13:27:38 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (rb_str_freeze): shrink the buffer before freezing, as</div><div class='del'>-	  pointed out by Eric Wong at [ruby-core:63119].</div><div class='del'>-</div><div class='del'>-Thu Jun 12 13:09:03 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* file.c (expand_path): shrink expanded path which no longer needs</div><div class='del'>-	  rooms to append.  [ruby-core:63114] [Bug #9934]</div><div class='del'>-</div><div class='del'>-Wed Jun 11 17:37:48 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (rb_cv_scalar_pthread_t): pthread_t is not required</div><div class='del'>-	  to be a scalar type.</div><div class='del'>-</div><div class='del'>-	* thread.c (fill_thread_id_string, thread_id_str): dump pthread_t</div><div class='del'>-	  in hexadecimal form if it is not a scalar type, assume it can be</div><div class='del'>-	  represented in a pointer form otherwise.  based on the patch by</div><div class='del'>-	  Rei Odaira at [ruby-core:62867].  [ruby-core:62857] [Bug #9884]</div><div class='del'>-</div><div class='del'>-	* thread_pthread.c (Init_native_thread, thread_start_func_1),</div><div class='del'>-	  (native_thread_create): set thread_id_str if needed.</div><div class='del'>-</div><div class='del'>-	* vm_core.h (rb_thread_t): add thread_id_string if needed.</div><div class='del'>-</div><div class='del'>-Wed Jun 11 01:53:22 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: invoke GC before memory allocation (xmalloc/xrealloc)</div><div class='del'>-	  when GC.stress = true.</div><div class='del'>-	  [Bug #9859]</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_gc.rb: add a test.</div><div class='del'>-</div><div class='del'>-Tue Jun 10 13:20:14 2014  Takeyuki FUJIOKA  &lt;xibbar@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/cgi/core.rb: Provide a mechanism to specify the</div><div class='del'>-	  max_multipart_length of multipart data.</div><div class='del'>-	  [Feature #8370] patch by Leif Eriksen &lt;leif.eriksen.au@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-Tue Jun 10 10:57:07 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/csv.rb (CSV#&lt;&lt;): honor explicitly given encoding.  based on</div><div class='del'>-	  the patch by DAISUKE TANIWAKI &lt;daisuketaniwaki AT gmail.com&gt; at</div><div class='del'>-	  [ruby-core:62113].  [Bug #9766]</div><div class='del'>-</div><div class='del'>-Mon Jun  9 20:40:48 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: change full GC timing to keep lower memory usage.</div><div class='del'>-</div><div class='del'>-	  Extend heap only at</div><div class='del'>-	  (1) after major GC</div><div class='del'>-	  or</div><div class='del'>-	  (2) after several (two times, at current) minor GC</div><div class='del'>-</div><div class='del'>-	  Details in https://bugs.ruby-lang.org/issues/9607#note-9</div><div class='del'>-	  [Bug #9607]</div><div class='del'>-</div><div class='del'>-Mon Jun  9 16:01:41 2014  Masahiro Ide  &lt;imasahiro9@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gcdebug_sentinel): fix typo, "sentinel" not "sential".</div><div class='del'>-	  [fix GH-634]</div><div class='del'>-</div><div class='del'>-Mon Jun  9 00:04:25 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (posix_fadvise): disable use of posix_fadvise</div><div class='del'>-	  itself on 32-bit AIX.  [ruby-core:62968] [Bug #9914]</div><div class='del'>-</div><div class='del'>-Sun Jun  8 23:28:00 2014    &lt;kanemoto@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* io.c (rb_io_advise): AIX currently does not support a 32-bit call to</div><div class='del'>-	  posix_fadvise() if _LARGE_FILES is defined. Patch by Rei Odaira.</div><div class='del'>-	  [ruby-core:62968] [Bug #9914]</div><div class='del'>-</div><div class='del'>-Sun Jun  8 04:52:40 2014  Jun Hiroe  &lt;Jun.Hiroe@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (rb_str_slice_bang): [DOC] update return value against</div><div class='del'>-	  a fixnum, which has changed because of M17N.  [fix GH-631]</div><div class='del'>-</div><div class='del'>-Sat Jun  7 22:13:42 2014  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* numeric.c (do_coerce): Add a warning when an exception is raised</div><div class='del'>-	  or an invalid value is returned in #coerce called by</div><div class='del'>-	  numeric comparison operators and the exception</div><div class='del'>-	  thrown by the caller has no information on the failure.</div><div class='del'>-	  In the next release such exception should not be rescued or</div><div class='del'>-	  should be the cause of the caller exception. nil is accepted</div><div class='del'>-	  as the "no possible coercion" return value. See #7688.</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_numeric.rb: Add corresponding test.</div><div class='del'>-</div><div class='del'>-Sat Jun  7 18:15:33 2014  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* numeric.c (bit_coerce): remove constant parameter `err'</div><div class='del'>-	  (always TRUE) of bit_coerce().</div><div class='del'>-</div><div class='del'>-Sat Jun  7 16:01:57 2014  Yutaka Kanemoto  &lt;kanemoto@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* cont.c (rb_fiber_struct): keep context.uc_stack.ss_sp and context.uc_stack.ss_size</div><div class='del'>-	  for later use. Patch by Rei Odaira. [ruby-core:62945] [Bug #9905]</div><div class='del'>-</div><div class='del'>-Sat Jun  7 12:51:51 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* io.c (read_all): truncate the buffer before appending read data,</div><div class='del'>-	  instead of truncating before reading.</div><div class='del'>-	  [ruby-core:55951] [Bug #8625]</div><div class='del'>-</div><div class='del'>-Sat Jun  7 12:28:53 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/digest/digest.c (rb_digest_instance_equal): no need to call</div><div class='del'>-	  `to_s` twice.  [Bug #9913]</div><div class='del'>-</div><div class='del'>-Sat Jun  7 11:35:01 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* object.c (rb_mod_initialize_clone): Override Kernel#initialize_clone</div><div class='del'>-	  to avoid an exception on Class.new.freeze.clone.to_s.</div><div class='del'>-	  Reported by Andrew Grimm.  [ruby-core:41858] [Bug #5828]</div><div class='del'>-</div><div class='del'>-Sat Jun  7 06:03:11 2014  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/digest/digest.c (rb_digest_instance_equal):</div><div class='del'>-	  fix #== for non-string arguments. [ruby-core:62967] [Bug #9913]</div><div class='del'>-</div><div class='del'>-	* test/digest/test_digest.rb: add test for above.</div><div class='del'>-</div><div class='del'>-Fri Jun  6 22:19:26 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* compile.c (private_recv_p): check by node type, instead of a</div><div class='del'>-	  magic number.</div><div class='del'>-</div><div class='del'>-	* node.h (NODE_PRIVATE_RECV), parse.y (attrset_gen): remove</div><div class='del'>-</div><div class='del'>-Fri Jun  6 17:07:08 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* compile.c (iseq_compile_each), parse.y (new_attr_op_assign_gen):</div><div class='del'>-	  allow op assign to a private attribute.</div><div class='del'>-	  [ruby-core:62949] [Bug #9907]</div><div class='del'>-</div><div class='del'>-Fri Jun  6 13:39:32 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* io.c (io_setstrbuf, io_read): should not shorten the given buffer until</div><div class='del'>-	  read succeeds.  [ruby-core:55951] [Bug #8625]</div><div class='del'>-</div><div class='del'>-Fri Jun  6 07:41:41 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/psych/lib/psych/visitors/yaml_tree.rb: dump empty symbols with a</div><div class='del'>-	  tag so that they can be parsed on input. [Bug #9873] [ruby-core:62825]</div><div class='del'>-	* test/psych/test_symbol.rb: test for change</div><div class='del'>-</div><div class='del'>-Thu Jun  5 16:08:39 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_page_sweep): refactoring.</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_page_sweep): should not set, but add final_slots into</div><div class='del'>-	  sweep_page-&gt;final_slots.</div><div class='del'>-</div><div class='del'>-Thu Jun  5 14:36:24 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (jemalloc): check for the header regardless drop-in</div><div class='del'>-	  libjemalloc is found, for `malloc_conf` declaration.</div><div class='del'>-</div><div class='del'>-	* version.c (ruby_show_version): show `malloc_conf` if set.</div><div class='del'>-	  [Feature #9113]</div><div class='del'>-</div><div class='del'>-	* configure.in (with-jemalloc): also check for header, for ABIs</div><div class='del'>-	  which JEMALLOC_MANGLE is needed, i.e., Mach-O and PE-COFF</div><div class='del'>-	  platforms.  [ruby-core:62939] [Feature #9113]</div><div class='del'>-</div><div class='del'>-	* include/ruby/missing.h: include alternative malloc header to</div><div class='del'>-	  replace memory management functions.</div><div class='del'>-</div><div class='del'>-	* dln.c, io.c, parse.y, st.c: undef malloc family before</div><div class='del'>-	  re-definition to suppress warnings.</div><div class='del'>-</div><div class='del'>-Thu Jun  5 12:52:18 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* man/ruby.1: remove rubyforge entry.</div><div class='del'>-</div><div class='del'>-Thu Jun  5 12:45:32 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* misc/README: use github link instead of rubyforge.</div><div class='del'>-</div><div class='del'>-Thu Jun  5 10:03:29 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (obj_free): check also FL_PROMOTED bit by RVALUE_OLD_P().</div><div class='del'>-</div><div class='del'>-Thu Jun  5 03:45:28 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in: add --with-jemalloc option</div><div class='del'>-	  [ruby-core:62912]</div><div class='del'>-</div><div class='del'>-Wed Jun  4 22:28:14 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: introduce RZombie to manage zombie objects.</div><div class='del'>-	  Rewrite finalizing logics with this type.</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_verify_internal_consistency): verify zombie (finalizing)</div><div class='del'>-	  objects count.</div><div class='del'>-</div><div class='del'>-Wed Jun  4 22:09:53 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* re.c (match_aref, rb_reg_regsub): consider encoding of captured</div><div class='del'>-	  names, encoding-incompatible should not match.</div><div class='del'>-	  [ruby-dev:48278] [Bug #9903]</div><div class='del'>-</div><div class='del'>-Wed Jun  4 21:23:52 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* re.c (match_aref): should not ignore name after NUL byte.</div><div class='del'>-	  [ruby-dev:48275] [Bug #9902]</div><div class='del'>-</div><div class='del'>-Wed Jun  4 04:08:37 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (core_hash_merge_kwd): should return the result hash, which</div><div class='del'>-	  may be converted from and differ from the given argument.</div><div class='del'>-	  [ruby-core:62921] [Bug #9898]</div><div class='del'>-</div><div class='del'>-Tue Jun  3 23:32:34 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* ruby.c (load_file_internal2): Extracted from load_file_internal.</div><div class='del'>-	  (load_file_internal): Invoke load_file_internal2 using rb_protect.</div><div class='del'>-	  Close an opened FD if load_file_internal2 raises an exception.</div><div class='del'>-</div><div class='del'>-Tue Jun  3 19:11:45 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (rb_objspace_free): should not rest_sweep() here.</div><div class='del'>-	  Some data structures are already freed.</div><div class='del'>-</div><div class='del'>-Tue Jun  3 18:43:51 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_gc.rb: allocate more objects to invoke GC by newobj.</div><div class='del'>-	  GC allows extending pages depends on heap_increment.</div><div class='del'>-</div><div class='del'>-Tue Jun  3 18:01:27 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (rb_gc_call_finalizer_at_exit): add</div><div class='del'>-	  gc_verify_internal_consistency() when RGENGC_CHECK_MODE &gt;= 2.</div><div class='del'>-</div><div class='del'>-Tue Jun  3 17:54:21 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: change the counting method for young objects.</div><div class='del'>-	  clear counter at the beginning of every GC and</div><div class='del'>-	  count promoted (infant-&gt;young) objects.</div><div class='del'>-</div><div class='del'>-	  Some promotions (infant-&gt;young) are transition of promoting to old</div><div class='del'>-	  objects. We should not count such promotions.</div><div class='del'>-</div><div class='del'>-	  With this technique, we don't need to check young objects</div><div class='del'>-	  at obj_free().</div><div class='del'>-</div><div class='del'>-Tue Jun  3 16:38:19 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: add verifying counters code in gc_verify_internal_consistency().</div><div class='del'>-	  gc_verify_internal_consistency() counts all</div><div class='del'>-	  - live objects</div><div class='del'>-	  - young objects (if age2 promotion)</div><div class='del'>-	  - old objects</div><div class='del'>-	  in all pages and compares with objspace managing counters.</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_after_sweep): do gc_verify_internal_consistency()</div><div class='del'>-	  when RGENGC_CHECK_MODE &gt;= 2.</div><div class='del'>-</div><div class='del'>-Tue Jun  3 13:14:04 2014  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/imap.rb (body_type_1part): Gmail IMAP reports a body</div><div class='del'>-	  type as "MIXED" followed immediately by params</div><div class='del'>-	  [ruby-core:62864] [Bug #9885]</div><div class='del'>-	  Patch by @rayners (David Raynes). [Fixes GH-622]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/622</div><div class='del'>-</div><div class='del'>-Tue Jun  3 13:18:24 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (objspace_live_slot): live slot count should not include final</div><div class='del'>-	  slot (contains T_ZOMBIE) count.</div><div class='del'>-</div><div class='del'>-Tue Jun  3 13:03:21 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (obj_free): fix spacing.</div><div class='del'>-</div><div class='del'>-Tue Jun  3 12:59:32 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (check_gen_consistency): fix error message.</div><div class='del'>-</div><div class='del'>-Tue Jun  3 12:40:23 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: count old/young objects more correctly.</div><div class='del'>-</div><div class='del'>-	* gc.c (RVALUE_DEMOTE_FROM_OLD): decrement old object count.</div><div class='del'>-</div><div class='del'>-	* gc.c (RVALUE_DEMOTE_FROM_YOUNG): decrement young object count.</div><div class='del'>-</div><div class='del'>-	* gc.c (rb_gc_resurrect): increment old object count.</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_marks_body): should not add old object count.</div><div class='del'>-	  This code is completely my misunderstanding.</div><div class='add'>+Fri Apr 15 23:42:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (rb_gc_force_recycle): decrement young or old object count</div><div class='del'>-	  correctly.</div><div class='add'>+	* rational.c (rb_rational_add): rename from nurat_add.</div><div class='ctx'> </div><div class='del'>-Tue Jun  3 12:26:47 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* array.c (rb_ary_sum): use rb_rational_add directly.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/memory_status.rb: add $LOAD_PATH to load test/unit</div><div class='del'>-	  correctly for fiddle/import unavailable environments.</div><div class='add'>+	* test/ruby/test_array.rb (test_sum): add assertions for an array of</div><div class='add'>+	  Rational values.</div><div class='ctx'> </div><div class='del'>-Tue Jun  3 09:45:13 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Fri Apr 15 22:31:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* test/openssl/test_ssl.rb (OpenSSL::TestSSL#test_verify_result):</div><div class='del'>-	  shouldn't use same server for respective tests, because the 1st</div><div class='del'>-	  test sometimes kills the server main loop silently.</div><div class='del'>-	  [Bug #9881] [ruby-dev:48266]</div><div class='add'>+	* array.c (rb_ary_sum): apply the precision compensated algorithm</div><div class='add'>+	  for an array in which Rational and Float values are mixed.</div><div class='ctx'> </div><div class='del'>-Tue Jun  3 01:34:59 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* test/ruby/test_array.rb (test_sum): add assertions for the above</div><div class='add'>+	  change.</div><div class='ctx'> </div><div class='del'>-	* README.EXT: [DOC] Add rb_call_super when subclassing from @robin850</div><div class='del'>-	  [Fixes GH-623] https://github.com/ruby/ruby/pull/623</div><div class='add'>+Fri Apr 15 22:30:01 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jun  2 17:14:49 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* thread.c (rb_thread_setname): defer setting native thread name</div><div class='add'>+	  set in initialize until the native thread is created.</div><div class='add'>+	  [ruby-core:74963] [Bug #12290]</div><div class='ctx'> </div><div class='del'>-	* vm.c (ruby_vm_destruct): remove useless call of</div><div class='del'>-	  rb_gc_force_recycle().</div><div class='add'>+Fri Apr 15 20:27:16 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	  At this line, a VM object is already freed</div><div class='del'>-	  (is changed to T_NONE) by rb_gc_call_finalizer_at_exit().</div><div class='add'>+	* lib/irb/ext/save-history.rb: Fix NoMethodError when method is not defined.</div><div class='ctx'> </div><div class='del'>-Mon Jun  2 15:50:24 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Fri Apr 15 15:38:58 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* eval.c (rb_using_refinement): add write-barriers for</div><div class='del'>-	  cref-&gt;nd_refinements.</div><div class='add'>+	* common.mk (benchmark): order options for built-ruby and compare-ruby.</div><div class='ctx'> </div><div class='del'>-Mon Jun  2 12:26:08 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Fri Apr 15 14:14:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* CONTRIBUTING.md: added contributing guide for github. [fix GH-625]</div><div class='add'>+	* test/ruby/test_array.rb (test_sum): add assertions for Rational and</div><div class='add'>+	  Complex numbers.</div><div class='ctx'> </div><div class='del'>-Mon Jun  2 07:30:33 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Fri Apr 15 10:07:11 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/envutil.rb (default_warning): New method.</div><div class='add'>+	* ext/io/console/console.c (console_key_pressed_p): raise the same</div><div class='add'>+	  exception, "unknown virtual key code", for names with nul chars.</div><div class='add'>+	  though console_win32_vk() considers the length and can deal with</div><div class='add'>+	  nul chars, rb_sprintf() raised at PRIsVALUE previously, so quote</div><div class='add'>+	  it if it is unprintable.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_autoload.rb: Use EnvUtil.default_warning.</div><div class='add'>+Fri Apr 15 09:02:58 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Jun  2 07:05:59 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/io/console/console.c (rb_sym2str): fallback definition for</div><div class='add'>+	  older ruby.  [ruby-core:74953] [Bug #12284]</div><div class='ctx'> </div><div class='del'>-	* include/ruby/encoding.h: constify `rb_encoding` arguments.</div><div class='add'>+Thu Apr 14 21:46:36 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* include/ruby/oniguruma.h: constify `OnigEncoding` arguments.</div><div class='add'>+	* array.c (rb_ary_sum): Support the optional argument, init, and</div><div class='add'>+	  block.</div><div class='ctx'> </div><div class='del'>-Sun Jun  1 12:05:10 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu Apr 14 19:02:41 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/drb: Wrap tests definitions by DRbTests module.  This makes</div><div class='del'>-	  several tests (ACLEntryTest, TestBug4409, etc.) easier to understand</div><div class='del'>-	  that they are tests for DRb.</div><div class='add'>+	* lib/irb/ext/save-history.rb: suppress warning: method redefined;</div><div class='add'>+	  discarding old save_history=.</div><div class='ctx'> </div><div class='del'>-Sun Jun  1 11:36:25 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu Apr 14 14:58:14 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rinda/ring.rb (RingFinger#make_socket): Close the socket on</div><div class='del'>-	  exception.</div><div class='add'>+	* ext/tk/tkutil/tkutil.c (tk_hash_kv): the third argument can be</div><div class='add'>+	  nil not only an Array.  reported by @windwiny at</div><div class='add'>+	  https://github.com/ruby/ruby/commit/cdaa94e#commitcomment-17096618</div><div class='ctx'> </div><div class='del'>-Sun Jun  1 06:55:26 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Apr 14 14:28:55 2016  cremno phobia  &lt;cremno@mail.ru&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (intern_str): dynamic attrset ID is registered by</div><div class='del'>-	  `rb_id_attrset()` already, so no further registration is needed.</div><div class='del'>-	  [ruby-core:62861]</div><div class='add'>+	* cont.c (fiber_initialize_machine_stack_context): fix wrong</div><div class='add'>+	  _MSC_VER check, should be decimal but not hexadecimal.</div><div class='add'>+	  [ruby-core:74936] [Bug #12279]</div><div class='ctx'> </div><div class='del'>-Sun Jun  1 04:52:47 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Wed Apr 13 22:51:38 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/English.rb: [DOC] $LOADED_FEATURES moved to load.c [Fixes GH-620]</div><div class='del'>-	  Patch submitted by @leafac in https://github.com/ruby/ruby/pull/620</div><div class='del'>-	* doc/globals.rdoc: Added $LOADED_FEATURES to list</div><div class='add'>+	* array.c (rb_ary_sum): Array#sum is implemented.</div><div class='add'>+	  Kahan's compensated summation algorithm for precise sum of float</div><div class='add'>+	  numbers is moved from ary_inject_op in enum.c.</div><div class='ctx'> </div><div class='del'>-Sat May 31 22:30:14 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* enum.c (ary_inject_op): Don't specialize for float numbers.</div><div class='ctx'> </div><div class='del'>-	* test/lib/leakchecker.rb: Leak checker extracted from</div><div class='del'>-	  test/lib/minitest/unit.rb.</div><div class='add'>+	  [ruby-core:74569] [Feature #12217] proposed by mrkn.</div><div class='ctx'> </div><div class='del'>-Sat May 31 21:15:43 2014  URABE Shyouhei  &lt;shyouhei@ruby-lang.org&gt;</div><div class='add'>+Wed Apr 13 15:56:35 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* thread.c (rb_thread_atfork_internal): My compiler complains</div><div class='del'>-	  about this variable being used before initialized. I looked at</div><div class='del'>-	  the code and expanded the macro and turned out it was actually</div><div class='del'>-	  USED for pointer arithmetic, not dereferenced.  So this was</div><div class='del'>-	  never a serious bug.  But is annoying indeed to see warnings</div><div class='del'>-	  every time.  I added `=0` and all went healthy.</div><div class='add'>+	* numeric.c (flo_ceil): add an optional parameter, digits, as</div><div class='add'>+	  well as Float#round.  [Feature #12245]</div><div class='ctx'> </div><div class='del'>-	* configure.in: Also, I found that the problematic macro expansion</div><div class='del'>-	  only happens when we lack __typeof__ C extension, which shall</div><div class='del'>-	  not be the case of my compiler.  I added AC_C_TYPEOF to kick ass.</div><div class='add'>+	* numeric.c (flo_floor): add an optional parameter, digits, as</div><div class='add'>+	  well as Float#round.  [Feature #12245]</div><div class='ctx'> </div><div class='del'>-Sat May 31 16:32:50 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* numeric.c (int_ceil): add an optional parameter, digits, as</div><div class='add'>+	  well as Integer#round.  [Feature #12245]</div><div class='ctx'> </div><div class='del'>-	* lib/ipaddr.rb: extracted inline tests into test dir.</div><div class='del'>-	* test/test_ipaddr.rb: ditto.</div><div class='add'>+	* numeric.c (int_floor): add an optional parameter, digits, as</div><div class='add'>+	  well as Integer#round.  [Feature #12245]</div><div class='ctx'> </div><div class='del'>-Sat May 31 16:29:21 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Wed Apr 13 14:47:47 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/digest/lib/digest/hmac.rb: extracted inline tests into test dir.</div><div class='del'>-	* test/digest/test_digest_hmac.rb: ditto.</div><div class='add'>+	* file.c (Init_File): add alias File.empty? to File.zero?.</div><div class='add'>+	  [Feature #9969]</div><div class='ctx'> </div><div class='del'>-Sat May 31 16:02:03 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Wed Apr 13 14:36:24 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/test_syslog.rb: remove executable.</div><div class='add'>+	* parse.y (assign_in_cond): allow multiple assignment in</div><div class='add'>+	  conditional expression.  [Feature #10617]</div><div class='ctx'> </div><div class='del'>-Sat May 31 08:58:32 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Apr 13 14:11:59 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* enc/unicode.c (init_case_fold_table): no longer need to</div><div class='del'>-	  initialize tables at runtime.</div><div class='add'>+	* bignum.c (rb_big_size): add wrapper function of BIGSIZE and</div><div class='add'>+	  rename the method function with _m suffix.</div><div class='ctx'> </div><div class='del'>-	* enc/unicode/case-folding.rb (lookup_hash): make perfect hash to</div><div class='del'>-	  lookup case unfolding table 3.</div><div class='add'>+	* numeric.c (int_round_zero_p): extracted from rb_int_round.</div><div class='add'>+	  optimize for Bignum, and convert VALUE returned by Numeric#size</div><div class='add'>+	  to long.</div><div class='ctx'> </div><div class='del'>-	* enc/unicode/case-folding.rb (lookup_hash): make perfect hash to</div><div class='del'>-	  lookup case unfolding table 2.</div><div class='add'>+Wed Apr 13 12:00:08 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* enc/unicode/case-folding.rb (lookup_hash): make perfect hash to</div><div class='del'>-	  lookup case unfolding table 1.</div><div class='add'>+	* test/ruby/test_basicinstructions.rb: add a test to check access</div><div class='add'>+	  instance variables on special const objects.</div><div class='ctx'> </div><div class='del'>-	* enc/unicode/case-folding.rb (lookup_hash): make perfect hash to</div><div class='del'>-	  lookup case folding table.</div><div class='add'>+	  All of such objects are frozen, so that we can not set instance</div><div class='add'>+	  variables for them. But we can read instance variables and return</div><div class='add'>+	  default value (nil).</div><div class='ctx'> </div><div class='del'>-	* enc/unicode/case-folding.rb (print_table): merge non-locale and</div><div class='del'>-	  locale tables, and reduce initializing loops.</div><div class='add'>+Tue Apr 12 20:40:35 2016  Kaneko Yuichiro  &lt;spiketeika@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* enc/unicode/case-folding.rb (CaseFolding): modularize, and add</div><div class='del'>-	  --output-file option.</div><div class='add'>+	* ext/date/date_core.c (time_to_time): should preserve timezone</div><div class='add'>+	  info.  [ruby-core:74889] [Bug #12271]</div><div class='ctx'> </div><div class='del'>-	* enc/unicode/case-folding.rb: script to convert CaseFolding.txt,</div><div class='del'>-	  translated from CaseFolding.py.</div><div class='add'>+Tue Apr 12 11:51:18 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 31 08:31:41 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* compile.c (new_label_body): initialize bit fields, since</div><div class='add'>+	  compile_data_alloc does not clear the memory.  [Bug #12082]</div><div class='ctx'> </div><div class='del'>-	* test/lib/minitest/unit.rb: Check Tempfile leaks for each test method</div><div class='del'>-	  again.</div><div class='add'>+Mon Apr 11 20:18:43 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 31 03:50:50 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* vm_backtrace.c (frame2klass): filter only for imemo_ment.</div><div class='add'>+	  T_IMEMO/imemo_iseq can be passed here.</div><div class='ctx'> </div><div class='del'>-	* lib/delegate.rb: [DOC] Document raise in Delegator class</div><div class='del'>-	  Patch by @lucasmazza. [Fixes GH-621]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/621</div><div class='add'>+Mon Apr 11 17:43:04 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri May 30 21:23:26 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* compile.c (iseq_optimize): disable tail call optimization in</div><div class='add'>+	  rescued, rescue, and ensure blocks.</div><div class='add'>+	  [ruby-core:73871] [Bug #12082]</div><div class='ctx'> </div><div class='del'>-	* lib/webrick/server.rb: Use a pipe to detect server shutdown.</div><div class='del'>-	  shutdown() or close() for listening socket is not a reliable.</div><div class='del'>-	  Actually, both doesn't work (doesn't wake up select()) on</div><div class='del'>-	  DragonFly BSD 3.6.2.</div><div class='add'>+Mon Apr 11 06:54:39 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/webrick/utils.rb: :ShutdownSocketWithoutClose is not required</div><div class='del'>-	  now to immediate server shutdown detection.</div><div class='del'>-	  This fixes fd leaks.</div><div class='add'>+	* file.c (apply2files): apply to a VALUE vector instead of a</div><div class='add'>+	  temporary array.</div><div class='ctx'> </div><div class='del'>-	* test/net/http/utils.rb: Ditto.</div><div class='add'>+Sun Apr 10 20:54:16 2016  Joe Swatosh  &lt;joe.swatosh@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Fri May 30 20:58:37 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/win32/lib/win32/registry.rb (DeleteValue, DeleteKey): fix</div><div class='add'>+	  API names.  [ruby-core:74863] [Bug #12264]</div><div class='ctx'> </div><div class='del'>-	* test/lib/minitest/unit.rb (check_fd_leak): Sort the inspected</div><div class='del'>-	  objects list for a FD.</div><div class='add'>+Sun Apr 10 17:47:42 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri May 30 18:06:55 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* file.c (rb_realpath_internal): no argument conversions since</div><div class='add'>+	  this internal function does not need to_path and encoding</div><div class='add'>+	  conversions, not to be affected by the default internal</div><div class='add'>+	  encoding.</div><div class='ctx'> </div><div class='del'>-	* test/lib/minitest/unit.rb (check_fd_leak): Try GC to delete leaked</div><div class='del'>-	  FDs.</div><div class='add'>+Sat Apr  9 10:03:12 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri May 30 12:05:59 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* load.c (rb_f_load): raise with the original path name before</div><div class='add'>+	  encoding conversion.</div><div class='ctx'> </div><div class='del'>-	* test/lib/test/unit/parallel.rb (_run_suite): orig_stdout may be nil</div><div class='del'>-	  though I don't know the reason.</div><div class='add'>+Sat Apr  9 02:05:10 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri May 30 11:33:35 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* bignum.c (rb_cstr_parse_inum): [EXPERIMENTAL] new function to</div><div class='add'>+	  parse integer in C-string with length.  the name and the</div><div class='add'>+	  arguments may be changed in the future.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_substr): need to reset code range for shared</div><div class='del'>-	  string too, not only copied string.</div><div class='del'>-	  [ruby-core:62842] [Bug #9882]</div><div class='del'>-</div><div class='del'>-Fri May 30 10:22:21 2014  Mark Lorenz  &lt;mlorenz@covermymeds.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/erb.rb (result): [DOC] no longer accepts a Proc, as</div><div class='del'>-	  Kernel.eval does not.  [fix GH-619]</div><div class='del'>-</div><div class='del'>-Fri May 30 07:25:46 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/-test-/dir: Dir#fileno implemented.</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb (find_fds): Don't return the fd used to</div><div class='del'>-	  scan /proc/$$/fd.</div><div class='del'>-</div><div class='del'>-Fri May 30 04:48:00 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (rb_gc_mark_parser): remove, empty since r8758</div><div class='del'>-	* internal.h: ditto, not usable from extensions since 2.0.0</div><div class='del'>-	* gc.c (gc_mark_roots): remove checkpoint for parser</div><div class='del'>-</div><div class='del'>-Thu May 29 23:27:50 2014  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (ruby_signal): should return either `old.sa_sigaction`</div><div class='del'>-	  or `old.sa_handler`, depending on whether `SA_SIGINFO` is set in</div><div class='del'>-	  `old.sa_flags`, because they may not be a union.</div><div class='del'>-	  [ruby-core:62836] [Bug #9878]</div><div class='del'>-</div><div class='del'>-Thu May 29 23:11:20 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* io.c (pipe_open): Close pipes when rb_execarg_fixup() raises</div><div class='del'>-	  an exception.</div><div class='del'>-	  (rb_execarg_fixup_v): New function.</div><div class='del'>-</div><div class='del'>-Thu May 29 22:18:57 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb (capture_subprocess_io): Close fds.</div><div class='del'>-</div><div class='del'>-Thu May 29 19:47:08 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* io.c (rb_io_s_pipe): Close pipes if io_encoding_set() raises an</div><div class='del'>-	  exception.</div><div class='del'>-	  (io_encoding_set_v): New function.</div><div class='del'>-</div><div class='del'>-Thu May 29 19:42:49 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/csv.rb (CSV.open): Close the opened file when an exception</div><div class='del'>-	  occur.</div><div class='del'>-</div><div class='del'>-Thu May 29 19:31:10 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/lib/openssl/ssl.rb (SSLServer#accept): Close a socket</div><div class='del'>-	  if any exception occur.</div><div class='del'>-</div><div class='del'>-Thu May 29 05:05:29 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/ruby.h: Hide Symbol internals.</div><div class='del'>-	  (struct RSymbol): moved to internal.h</div><div class='del'>-	  (RSYMBOL): ditto</div><div class='del'>-</div><div class='del'>-Thu May 29 00:28:56 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/socket/unixsocket.c (rsock_init_unixsock): Open a socket</div><div class='del'>-	  after path length check.</div><div class='del'>-	  This fixes a fd leak by TestSocket_UNIXSocket#test_too_long_path.</div><div class='del'>-</div><div class='del'>-Wed May 28 23:04:35 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_io.rb (test_flush_in_finalizer1): Use</div><div class='del'>-	  ObjectSpace.each_object to close files.</div><div class='del'>-	  GC.start is not reliable.</div><div class='del'>-</div><div class='del'>-Wed May 28 19:00:31 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/imap.rb (Net::IMAP#initialize): Close the opened socket when</div><div class='del'>-	  any exception occur.</div><div class='del'>-	  This fixes a fd leak by IMAPTest#test_imaps_post_connection_check</div><div class='del'>-	  which start_tls_session() raises an exception.</div><div class='del'>-</div><div class='del'>-Wed May 28 18:06:13 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/ossl_ssl.c (ossl_ssl_close): Fix sync_close to work</div><div class='del'>-	  when SSL is not started.</div><div class='del'>-	  This fix the fd leak by test_https_proxy_authentication in</div><div class='del'>-	  test/net/http/test_https_proxy.rb.</div><div class='del'>-</div><div class='del'>-Wed May 28 10:29:28 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (rb_vm_living_threads_foreach): remove function</div><div class='del'>-	  [ruby-core:62745]</div><div class='del'>-	* thread.c (terminate_i): remove</div><div class='del'>-	* thread.c (terminate_all): implement (inlines old terminate_i)</div><div class='del'>-	* thread.c (rb_thread_terminate_all): use terminate_all</div><div class='del'>-	* thread.c (rb_thread_fd_close_i): remove</div><div class='del'>-	* thread.c (rb_thread_fd_close): iterate inline</div><div class='del'>-	* thread.c (thread_list_i): remove</div><div class='del'>-	* thread.c (rb_thread_list): iterate inline</div><div class='del'>-	* thread.c (rb_thread_atfork_internal): iterate inline</div><div class='del'>-	* thread.c (terminate_atfork_i): update types to remove casts</div><div class='del'>-	* thread.c (terminate_atfork_before_exec_i): ditto</div><div class='del'>-	* thread.c (struct thgroup_list_params): remove definition</div><div class='del'>-	* thread.c (thgroup_list_i): remove</div><div class='del'>-	* thread.c (thgroup_list): iterate inline</div><div class='del'>-	* thread.c (check_deadlock_i): remove</div><div class='del'>-	* thread.c (debug_deadlock_check): implement (inlines check_deadlock_i)</div><div class='del'>-	* thread.c (debug_i): remove</div><div class='del'>-	* thread.c (rb_check_deadlock): iterate inline</div><div class='del'>-	* vm.c (vm_mark_each_thread_func): remove</div><div class='del'>-	* vm.c (rb_vm_mark): iterate inline</div><div class='del'>-	* vm_core.h (rb_vm_living_threads_remove): remove</div><div class='del'>-	* vm_trace.c (clear_trace_func_i): remove</div><div class='del'>-	* vm_trace.c (rb_clear_trace_func): iterate inline</div><div class='del'>-</div><div class='del'>-Wed May 28 09:30:51 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (signal_exec): ignore immediate cmd for SIG_IGN</div><div class='del'>-	* signal.c (trap_handler): set cmd to true for SIG_IGN</div><div class='del'>-	* signal.c (trap): handle nil and true values for oldcmd</div><div class='del'>-	  [Bug #9835]</div><div class='del'>-</div><div class='del'>-Wed May 28 01:02:54 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/tempfile.rb (Tempfile#inspect): Show "(closed)" if the tempfile</div><div class='del'>-	  is closed.</div><div class='del'>-</div><div class='del'>-Wed May 28 00:38:09 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb: Use Tempfile#close! instead of</div><div class='del'>-	  Tempfile#unlink to close file descriptors.</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_config.rb: Ditto.</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_io.rb: Ditto.</div><div class='del'>-</div><div class='del'>-Wed May 28 00:06:18 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/ftp.rb (transfercmd): Close TCP server socket even if an</div><div class='del'>-	  exception occur.</div><div class='del'>-</div><div class='del'>-Tue May 27 23:50:07 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/cgi/core.rb: Use Tempfile#close! instead of Tempfile#unlink</div><div class='del'>-	  to close file descriptors.</div><div class='del'>-</div><div class='del'>-Tue May 27 23:06:46 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (parser_number_literal_suffix): refine error message for</div><div class='del'>-	  extra dot and digits.</div><div class='del'>-</div><div class='del'>-Tue May 27 22:44:20 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml: Avoid fd leaks.</div><div class='del'>-</div><div class='del'>-Tue May 27 22:24:25 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_document.rb: Indent.</div><div class='del'>-</div><div class='del'>-Tue May 27 22:15:29 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_document.rb: Wrap by REXMLTests module.</div><div class='del'>-</div><div class='del'>-Tue May 27 22:11:10 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_encoding_2.rb: Remove a needless file.</div><div class='del'>-</div><div class='del'>-Tue May 27 22:10:30 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_contrib.rb: Indent.</div><div class='del'>-</div><div class='del'>-Tue May 27 21:28:16 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/socket/ifaddr.c (ifaddr_inspect_flags): support IFF_SIMPLEX.</div><div class='del'>-</div><div class='del'>-Tue May 27 21:03:03 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/: Use REXMLTests as wrapping module for REXML tests.</div><div class='del'>-	  I avoid using the same module for library in test because</div><div class='del'>-	  it provides "include REXML" environment in test. Normally,</div><div class='del'>-	  users don't use REXML on "include REXML" environment. So I</div><div class='del'>-	  don't want to write tests on "include REXML" environment.</div><div class='del'>-</div><div class='del'>-Tue May 27 20:59:37 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_comment.rb: Remove needless REXML module wrapping.</div><div class='del'>-</div><div class='del'>-Tue May 27 20:56:49 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_pkcs7.rb: Fix inverted expected and actual values.</div><div class='del'>-</div><div class='del'>-Tue May 27 20:26:06 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_io.rb (test_flush_in_finalizer1): some opened fds are</div><div class='del'>-	  remain before GC, so unlink the tempfile is failed.</div><div class='del'>-</div><div class='del'>-Tue May 27 19:07:26 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* io.c (rb_io_autoclose_p): Don't raise on frozen IO.</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb: IO#autoclose? may raise IOError.</div><div class='del'>-</div><div class='del'>-Tue May 27 19:01:49 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_pair.rb: Modify TestSSL#test_read_and_write</div><div class='del'>-	  to handle partial sysreads. [Bug #7398][ruby-core:49563]</div><div class='del'>-	* test/openssl/test_ssl.rb: ditto.</div><div class='del'>-</div><div class='del'>-Tue May 27 18:46:23 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_pkcs7.rb: Add tests for PKCS7#type= and add_data.</div><div class='del'>-	  [Feature #7399][ruby-core:49565]</div><div class='del'>-</div><div class='del'>-Tue May 27 17:45:09 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_hmac.rb (test_binary_update): Added Test for</div><div class='del'>-	  HMAC signing with UTF-8 String. [Bug #7512][ruby-core:50559]</div><div class='del'>-</div><div class='del'>-Tue May 27 17:10:14 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/runner.rb: fixed randomly test failure.</div><div class='del'>-	  [Bug #6573][ruby-core:45563]</div><div class='del'>-</div><div class='del'>-Tue May 27 16:58:12 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/test_timeout.rb (test_timeout): inverted test condition.</div><div class='del'>-	  [Bug #8523]</div><div class='del'>-</div><div class='del'>-Tue May 27 12:24:22 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb: Show leaked file descriptors.</div><div class='del'>-</div><div class='del'>-Tue May 27 11:12:56 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* io.c (rb_io_fileno, rb_io_inspect): non-modification does not</div><div class='del'>-	  error on frozen IO.  [ruby-dev:48241] [Bug #9865]</div><div class='del'>-</div><div class='del'>-Tue May 27 00:00:21 2014  yui-knk  &lt;spiketeika@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* insns.def (defineclass): fix typo in the instruction comment.</div><div class='del'>-	  [fix GH-618]</div><div class='del'>-</div><div class='del'>-Mon May 26 16:33:15 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_file.rb: skip the test of atime on Windows, because</div><div class='del'>-	  Windows delays updating atime about 1 hour.</div><div class='del'>-	  see more details:</div><div class='del'>-	    http://msdn.microsoft.com/en-us/library/windows/desktop/ms724290%28v=vs.85%29.aspx</div><div class='del'>-</div><div class='del'>-Mon May 26 12:25:36 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/optionparser.rb, lib/optparse.rb (OptParse): aliases.</div><div class='del'>-	  [ruby-core:62751] [Feature #9864]</div><div class='del'>-</div><div class='del'>-Mon May 26 07:59:34 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb: Show Finished threads line-by-line.</div><div class='del'>-</div><div class='del'>-Mon May 26 01:39:02 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* lib/csv.rb: Reject nil as data source for CSV.new, patch by @Peeja.</div><div class='del'>-	  [Fixes GH-580] https://github.com/ruby/ruby/pull/580</div><div class='del'>-</div><div class='del'>-Mon May 26 01:07:51 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb: Show leaked threads and tempfiles</div><div class='del'>-	  line-by-line.</div><div class='del'>-</div><div class='del'>-Sun May 25 23:02:06 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb (MiniTest::Assertions#diff): Remove</div><div class='del'>-	  tempfiles.</div><div class='del'>-</div><div class='del'>-Sun May 25 22:42:27 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb: Check tempfile leak for each test class.</div><div class='del'>-</div><div class='del'>-Sun May 25 20:31:49 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (ac_cv_func_{getcontext,setcontext}): do not</div><div class='del'>-	  disable ucontext.h entirely, but disable use of functions only.</div><div class='del'>-	  `ucontext_t` is necessary in the signal handler now.</div><div class='del'>-</div><div class='del'>-Sun May 25 20:00:23 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (check_stack_overflow): revert part of r46100, the</div><div class='del'>-	  previous condition was correct, and fix compilation error on</div><div class='del'>-	  other architecture linux.  [ruby-core:62746] [Bug #9862]</div><div class='del'>-</div><div class='del'>-Sun May 25 17:09:13 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb: Less ObjectSpace.each_object(Tempfile)</div><div class='del'>-	  invocation.</div><div class='del'>-</div><div class='del'>-Sun May 25 16:54:06 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb: Use Thread.list instead of</div><div class='del'>-	  ObjectSpace.each_object(Thread).</div><div class='del'>-</div><div class='del'>-Sun May 25 15:53:54 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rinda/ring.rb (Rinda::RingServer#shutdown): Join the killed</div><div class='del'>-	  threads.</div><div class='del'>-</div><div class='del'>-Sun May 25 15:26:17 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/webrick/utils.rb: Override the inspect method of the thread</div><div class='del'>-	  used in WEBrick::Utils::TimeoutHandler.</div><div class='del'>-</div><div class='del'>-Sun May 25 14:22:30 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl: Join threads.</div><div class='del'>-</div><div class='del'>-Sun May 25 12:46:47 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* error.c (rb_bug_context): new function to report bug with</div><div class='del'>-	  context.</div><div class='del'>-</div><div class='del'>-	* vm_dump.c (rb_vm_bugreport): accepts `ucontext_t` argument to</div><div class='del'>-	  dump machine registers.  based on [GH-584].</div><div class='del'>-</div><div class='del'>-	* signal.c (sigbus, sigsegv): dump machine registers if available.</div><div class='del'>-</div><div class='del'>-Sun May 25 12:32:42 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb: Sort leaked threads and tempfiles.</div><div class='del'>-</div><div class='del'>-Sun May 25 12:15:30 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* signal.c (check_stack_overflow): fix condition to use ucontext</div><div class='del'>-	  register, mcontext_t dereference, and its member names, on Mac</div><div class='del'>-	  OS X.</div><div class='del'>-</div><div class='del'>-Sun May 25 11:58:26 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* enumerator.c: [DOC] Fix example to show Enumerator#peek behavior</div><div class='del'>-	  Patch by Erik Hollembeak [Bug #9814]</div><div class='del'>-</div><div class='del'>-Sun May 25 11:56:33 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vsnprintf.c (BSD_vfprintf): fix string width when precision is</div><div class='del'>-	  given.  as the result of `memchr` is NULL or its offset from the</div><div class='del'>-	  start cannot exceed the size, the comparison was always false.</div><div class='del'>-	  [ruby-core:62737] [Bug #9861]</div><div class='del'>-</div><div class='del'>-Sun May 25 11:32:42 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* lib/yaml.rb: Remove Psych::EngineManager [Bug #8344]</div><div class='del'>-	* test/psych/*: ditto.</div><div class='del'>-</div><div class='del'>-Sun May 25 10:34:15 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* doc/regexp.rdoc: [DOC] Clarify whitespace matching by @allolex</div><div class='del'>-	  [Fixes GH-606] https://github.com/ruby/ruby/pull/606</div><div class='del'>-</div><div class='del'>-Sun May 25 10:19:34 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* enum.c: [DOC] Use #find in example to clarify alias by @rachellogie</div><div class='del'>-	  Patch submitted via documenting-ruby/ruby#34</div><div class='del'>-</div><div class='del'>-Sun May 25 10:16:43 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* cont.c: [DOC] Fix rdoc in example for Fiber#transfer by @majjoha</div><div class='del'>-	  Patch submitted via documenting-ruby/ruby#33</div><div class='del'>-</div><div class='del'>-Sun May 25 10:01:11 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* lib/irb.rb: [DOC] Fixed syntax error in example by @jasdeepsingh.</div><div class='del'>-	  Patch submitted via documenting-ruby/ruby#32</div><div class='del'>-</div><div class='del'>-Sun May 25 09:58:02 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/fileutils/test_fileutils.rb (test_chown_R): Add tests for</div><div class='del'>-	  chown_R. [Feature #9383][ruby-core:59641]</div><div class='del'>-</div><div class='del'>-Sun May 25 09:57:09 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/fileutils/test_fileutils.rb: Added recursively chown tests.</div><div class='del'>-	  [Feature #9303][ruby-core:59325]</div><div class='del'>-</div><div class='del'>-Sun May 25 09:41:56 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* class.c: [DOC] Fixed grammar and examples of instance_methods.</div><div class='del'>-	  By @alex-frost via documenting-ruby/ruby#31</div><div class='del'>-</div><div class='del'>-Sun May 25 09:40:44 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb: Show leaked threads and tempfiles.</div><div class='del'>-</div><div class='del'>-Sun May 25 08:54:38 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_partial_record_read.rb: Testing read_nonblock on</div><div class='del'>-	  a partial TLS record results in IO::WaitReadable by @mohamedhafez.</div><div class='del'>-	  [fix GH-547]</div><div class='del'>-</div><div class='del'>-Sun May 25 08:43:16 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/logger.rb: refactored to include Logger::Period.</div><div class='del'>-</div><div class='del'>-Sun May 25 06:50:19 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c: [DOC] Improve instance_eval description when given a</div><div class='del'>-	  block or String arguments. By @nathanl via documenting-ruby/ruby#28</div><div class='del'>-</div><div class='del'>-Sun May 25 06:29:39 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* array.c: [DOC] Clarify default argument for Array.new.</div><div class='del'>-	  By @Elffers [Fixes GH-610]</div><div class='del'>-</div><div class='del'>-Sat May 24 22:37:20 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* array.c: [DOC] Add more documents to shuffle! and shuffle.</div><div class='del'>-	  Contributed by @JuanitoFatas [ci skip][fix GH-612]</div><div class='del'>-</div><div class='del'>-Sat May 24 22:28:55 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/.document: removed unused configuration.</div><div class='del'>-</div><div class='del'>-Sat May 24 19:08:47 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/spec.rb: Unused file removed.</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/autorun.rb: Don't require minitest/spec.</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/benchmark.rb: Ditto.</div><div class='del'>-</div><div class='del'>-Sat May 24 18:45:30 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/benchmark/test_benchmark.rb: Use test/unit.</div><div class='del'>-</div><div class='del'>-Sat May 24 16:20:59 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* process.c (proc_getgroups, proc_setgroups): use ALLOCV_N</div><div class='del'>-	  [Bug #9856]</div><div class='del'>-</div><div class='del'>-Sat May 24 15:49:39 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/unit.rb (parallelize_me!): Removed.</div><div class='del'>-	  This fixes the line-by-line structure of the test result in verbose</div><div class='del'>-	  mode.  [ruby-core:54905]</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/parallel_each.rb: Removed.</div><div class='del'>-</div><div class='del'>-	* test/minitest/test_minitest_mock.rb: Don't call parallelize_me!.</div><div class='del'>-</div><div class='del'>-	* test/minitest/test_minitest_spec.rb: Ditto.</div><div class='del'>-</div><div class='del'>-	* test/minitest/test_minitest_unit.rb: Ditto.</div><div class='del'>-	  Tests for parallel feature removed.</div><div class='del'>-</div><div class='del'>-Sat May 24 15:29:10 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/hell.rb: Unused file removed.</div><div class='del'>-</div><div class='del'>-	* test/lib/minitest/pride.rb: Ditto.</div><div class='add'>+	* bignum.c (rb_str_to_inum): preserve encoding of the argument in</div><div class='add'>+	  error messages, and no longer needs to copy non-terminated</div><div class='add'>+	  strings.</div><div class='ctx'> </div><div class='del'>-Sat May 24 15:05:32 2014  yui-knk  &lt;spiketeika@gmail.com&gt;</div><div class='add'>+	* bignum.c (rb_str2big_{poweroftwo,normal,karatsuba,gmp}): ditto.</div><div class='ctx'> </div><div class='del'>-	* enumerator.c (yielder_yield_push): Insert a break after the</div><div class='del'>-	  method return value.  [fix GH-617]</div><div class='add'>+Thu Apr  7 19:04:03 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 24 14:59:12 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* doc/regexp.rdoc (comments): [DOC] terminators cannot appear in</div><div class='add'>+	  comments.  [ruby-core:74838] [Bug #12256]</div><div class='ctx'> </div><div class='del'>-	* test/lib/minitest: Remove comments not appropriate now.</div><div class='add'>+Thu Apr  7 11:24:14 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/minitest: Ditto.</div><div class='add'>+	* ext/tk/tkutil/tkutil.c (cbsubst_initialize): fix out-of-bound</div><div class='add'>+	  access when no arguments given.  `p Tk::Event.new` crashed.</div><div class='ctx'> </div><div class='del'>-Sat May 24 14:02:04 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Fri Apr  1 01:26:00 2016  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* NEWS: added minitest changes.</div><div class='add'>+	* ext/coverage/coverage.c: Fully reset coverage to not persist global state.</div><div class='add'>+	  It was returning old file coverages as empty arrays to the user.</div><div class='add'>+	  [ruby-core:74596] [Bug #12220]</div><div class='ctx'> </div><div class='del'>-Sat May 24 13:42:46 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* ext/coverage/coverage.c (rb_coverages): remove unused static state.</div><div class='ctx'> </div><div class='del'>-	* test/lib/test/unit/test-unit.gemspec: removed needless gemspec file.</div><div class='add'>+	* thread.c: Moved and renamed coverage_clear_result_i to reset_coverage_i.</div><div class='ctx'> </div><div class='del'>-Sat May 24 09:39:06 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* test/coverage/test_coverage.rb: improve precision of tests.</div><div class='ctx'> </div><div class='del'>-	* defs/default_gems: removed minitest entry.</div><div class='add'>+Wed Apr  6 22:41:31 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 24 06:17:33 2014  Ryan Davis  &lt;ryand-ruby@zenspider.com&gt;</div><div class='add'>+	* configure.in (rb_cv_lgamma_r_m0): fix the condition for</div><div class='add'>+	  lgamma_r(-0.0).  [Bug #12249]</div><div class='ctx'> </div><div class='del'>-	*  lib/minitest: minitest 4.7.5 removed. Need to support proper</div><div class='del'>-	  gem packaging / installation before minitest 5 can be added.</div><div class='add'>+Wed Apr  6 17:38:42 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 24 05:54:06 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* tool/downloader.rb (RubyGems.download): follow the change of the</div><div class='add'>+	  rubygems ssl_certs directory tree introduced by previous commit.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/mkconstants.rb: More constants</div><div class='add'>+Wed Apr  6 15:00:27 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 24 00:25:34 2014  Ayumu AIZAWA  &lt;ayumu.aizawa@gmail.com&gt;</div><div class='add'>+	* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.6.3.</div><div class='add'>+	  Please see entries of 2.6.3 on</div><div class='add'>+	  https://github.com/rubygems/rubygems/blob/master/History.txt</div><div class='ctx'> </div><div class='del'>-	* NEWS: add information of incompatibility about Prime.prime?</div><div class='del'>-	* lib/prime.rb: fix docs.</div><div class='add'>+Wed Apr  6 14:13:28 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri May 23 21:36:28 2014  Josh Goebel  &lt;dreamer3@gmail.com&gt;</div><div class='add'>+	* configure.in (rb_cv_lgamma_r_m0): check if lgamma_r(-0.0)</div><div class='add'>+	  returns negative infinity.  [Bug #12249]</div><div class='ctx'> </div><div class='del'>-	* net/protocol.rb (using_each_crlf_line): fix SMTP dot-stuffing</div><div class='del'>-	  for messages not ending with a new-line.</div><div class='del'>-	  [ruby-core:61441] [Bug #9627] [fix GH-616]</div><div class='add'>+	* math.c (ruby_lgamma_r): define by the configured result.</div><div class='ctx'> </div><div class='del'>-Fri May 23 03:48:08 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Wed Apr  6 10:56:15 2016  Anton Davydov  &lt;antondavydov.o@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (rb_free_m_tbl): mark function as static</div><div class='add'>+	* lib/logger.rb (Logger#level=): remove unnecessary local</div><div class='add'>+	  variable.</div><div class='ctx'> </div><div class='del'>-	* method.h (rb_free_m_tbl): remove prototype</div><div class='add'>+	* lib/logger.rb (Logger#initialize, Logger#reopen): [DOC] mention</div><div class='add'>+	  the default values.  cherrypicked from [GH-1319].</div><div class='ctx'> </div><div class='del'>-Thu May 22 22:58:27 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Wed Apr  6 10:17:53 2016  cremno phobia  &lt;cremno@mail.ru&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/mkconstants.rb: More TCP option constants.</div><div class='del'>-	  Describe Linux and glibc versions.</div><div class='add'>+	* math.c (ruby_lgamma_r): missing/lgamma_r.c is used on Windows,</div><div class='add'>+	  since msvcrt does not provide it.</div><div class='ctx'> </div><div class='del'>-Thu May 22 20:38:10 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* missing/lgamma_r.c (lgamma_r): fix lgamma(-0.0).</div><div class='add'>+	  [ruby-core:74823] [Bug #12249]</div><div class='ctx'> </div><div class='del'>-	* file.c (stat_birthtime): add birthtime support [Feature #9647]</div><div class='add'>+Wed Apr  6 01:22:55 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* file.c (rb_stat_birthtime): add File::Stat.birthtime</div><div class='add'>+	* math.c (ruby_lgamma_r): mswin's lgamma_r also seems to be wrong.</div><div class='add'>+	  cf. [Bug #12249]</div><div class='ctx'> </div><div class='del'>-	* file.c (rb_file_s_birthtime): add File.birthtime</div><div class='add'>+Wed Apr  6 00:53:31 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* file.c (rb_file_birthtime): add File#birthtime</div><div class='add'>+	* math.c (ruby_lgamma_r): fix lgamma(-0.0) on mingw and OSX.</div><div class='ctx'> </div><div class='del'>-	* configure.in: check struct stat.st_birthtimespec.</div><div class='add'>+	* math.c (ruby_tgamma): fix tgamma(-0.0) on mingw.</div><div class='add'>+	  [ruby-core:74817] [Bug #12249]</div><div class='ctx'> </div><div class='del'>-Thu May 22 19:38:14 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Tue Apr  5 14:50:28 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* file.c: remove IO::Statfs because of reject. [Feature #9772]</div><div class='add'>+	* ext/nkf/nkf-utf8/nkf.c (mime_putc): fix typo.</div><div class='add'>+	  [Bug #12202] [ruby-core:74802]</div><div class='ctx'> </div><div class='del'>-Thu May 22 14:02:13 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Apr  5 00:06:44 2016  Aeris  &lt;aeris@imirhil.fr&gt;</div><div class='ctx'> </div><div class='del'>-	* enc/jis/props.kwd: constify character property tables of JIS</div><div class='del'>-	  based encodings by perfect hash.</div><div class='add'>+	* ext/openssl/ossl_ssl.c (ossl_ssl_tmp_key): Access to ephemeral</div><div class='add'>+	  TLS session key in case of forward secrecy cipher.  Only</div><div class='add'>+	  available since OpenSSL 1.0.2.  [Fix GH-1318]</div><div class='ctx'> </div><div class='del'>-	* enc/euc_jp.c, enc/shift_jis.c: use character property functions.</div><div class='add'>+	* ext/openssl/extconf.rb: Check for SSL_get_server_tmp_key.</div><div class='ctx'> </div><div class='del'>-Wed May 21 12:21:10 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Apr  4 23:37:05 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/option.c: Fix compilation error on Android.</div><div class='del'>-	  Bionic doesn't define TCP state constants.</div><div class='add'>+	* vm_core.h (rb_vm_struct): make at_exit a single linked list but</div><div class='add'>+	  not RArray, not to mark the registered functions by the write</div><div class='add'>+	  barrier.  based on the patches by Evan Phoenix.</div><div class='add'>+	  [ruby-core:73908] [Bug #12095]</div><div class='ctx'> </div><div class='del'>-Wed May 21 11:42:31 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Mon Apr  4 17:43:45 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: workaround for Info.plist to get rid of `dsymutil`</div><div class='del'>-	  crash by wrong files in parent directories.</div><div class='del'>-	  [ruby-core:62594] [Bug #9840]</div><div class='add'>+	* gc.c: change default value of</div><div class='add'>+	  RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO 0.3 -&gt; 0.2</div><div class='add'>+	  RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO 0.8 -&gt; 0.65</div><div class='ctx'> </div><div class='del'>-Tue May 20 20:57:34 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	  These values are same as Ruby 2.0.0.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_dir.rb (test_glob): added testcase of double</div><div class='del'>-	  slash path.</div><div class='add'>+	  This change cause GC counts.</div><div class='add'>+	  However, generational GC reduced each (minor) GC time and</div><div class='add'>+	  increase memory locality. So that not so big impact on my</div><div class='add'>+	  benchmarking results.</div><div class='add'>+	  (surprisingly, this fix speed up programs on some cases)</div><div class='ctx'> </div><div class='del'>-Tue May 20 04:58:54 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	  You can change these values by environment variables</div><div class='add'>+	  if you feel wrong.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/extconf.rb: Don't check fields of struct tcp_info if the</div><div class='del'>-	  structure is not available.</div><div class='add'>+Mon Apr  4 17:36:52 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Mon May 19 23:13:33 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* gc.c (get_envparam_double): take an upper_bound.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/option.c (inspect_tcp_info): Permit longer data.  (glibc</div><div class='del'>-	  2.7 adds tcpi_rcv_rtt, tcpi_rcv_space and tcpi_total_retrans to</div><div class='del'>-	  struct tcp_info.)</div><div class='add'>+	  And also take an accept_zero flag which allow to accept zero</div><div class='add'>+	  even if lower_bound is set.</div><div class='ctx'> </div><div class='del'>-Mon May 19 20:49:07 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* gc.c (ruby_gc_set_params): fix parameters.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/option.c (inspect_tcp_info): New function to inspect</div><div class='del'>-	  struct tcp_info.</div><div class='del'>-	  (sockopt_inspect): Use inspect_tcp_info.</div><div class='add'>+	  RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO set 0.9 as *lower_bound*, so that</div><div class='add'>+	  it should be upper_bound.</div><div class='add'>+	  Set RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO as lower bound.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/extconf.rb: Check tcp_info related things.</div><div class='add'>+	  Also set lower/upper bound of RUBY_GC_HEAP_FREE_SLOTS_GOAL_RATIO to</div><div class='add'>+	  RUBY_GC_HEAP_FREE_SLOTS_MIN/MAX_RATIO.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/rubysocket.h: Include netinet/tcp_fsm.h if available.</div><div class='add'>+Mon Apr  4 16:41:32 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Mon May 19 19:36:39 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* vm.c (Init_VM): should pass tokens.</div><div class='ctx'> </div><div class='del'>-	* test/dbm/test_dbm.rb: Use Etc.uname.</div><div class='add'>+Sun Apr  3 09:34:29 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/gdbm/test_gdbm.rb: Ditto.</div><div class='add'>+	* numeric.c (flodivmod): round division if it is a finite number</div><div class='add'>+	  and module is required.</div><div class='ctx'> </div><div class='del'>-Mon May 19 16:54:22 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (dbl2ival): do not round here.</div><div class='ctx'> </div><div class='del'>-	* ext/etc/etc.c (etc_uname): add support for Windows using</div><div class='del'>-	  GetVersionExW(), GetSystemInfo(), and GetComputerNameExW() with</div><div class='del'>-	  `ComputerNameDnsHostname`.  [Feature #9842]</div><div class='add'>+	* numeric.c (flo_ceil): use dbl2ival.</div><div class='ctx'> </div><div class='del'>-Mon May 19 16:29:48 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (flo_round): round explicitly.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_pat_search): advance by byte offset but not by char</div><div class='del'>-	  offset.  [ruby-core:62669] [Bug #9849]</div><div class='add'>+Sat Apr  2 15:24:18 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon May 19 14:06:18 2014  Shota Fukumori  &lt;her@sorah.jp&gt;</div><div class='add'>+	* include/ruby/intern.h (rb_check_arity): returns argc.</div><div class='ctx'> </div><div class='del'>-	* bin/testrb: Removed. Forgot to remove in r45971.</div><div class='del'>-	  [Feature #9711] [ruby-core:62620]</div><div class='add'>+Fri Apr  1 20:58:33 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sun May 18 16:42:08 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* enc/unicode/case-folding.rb, casefold.h: Data generation to implement</div><div class='add'>+	  swapcase functionality for titlecase characters. Swapcase isn't defined</div><div class='add'>+	  by Unicode, because the purpose/usage of swapcase is unclear anyway.</div><div class='add'>+	  The implementation follows a proposal from Nobu, swapping the case of</div><div class='add'>+	  each component of a titlecase character individually.</div><div class='add'>+	  This means that the titlecase characters have to be decomposed.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_m17n_comb.rb (test_str_crypt): Use Etc.confstr to</div><div class='del'>-	  detect the glibc version.</div><div class='del'>-	  libc.so is not an executable on Debian GNU/kFreeBSD 7.0 (wheezy).</div><div class='add'>+	* enc/unicode.c: Code using the above data.</div><div class='ctx'> </div><div class='del'>-Sun May 18 12:15:54 2014  Jonathan Mukai-Heidt  &lt;johnnymukai@gmail.com&gt;</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Tests for the above.</div><div class='ctx'> </div><div class='del'>-	* io.c (argf_each_line, argf_inplace_mode_set): [DOC] Update ARGF</div><div class='del'>-	  documentation examples.  `ARGF.lines` has been deprecated in</div><div class='del'>-	  favor of `ARGF.each_line`.  [Fixes GH-615]</div><div class='add'>+Fri Apr  1 14:55:28 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sun May 18 11:59:25 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* configure.in (AC_CONFIG_FILES): $srcdir/.git can be a file pointing</div><div class='add'>+	  the real git_dir, such as when the git working tree is a "linked</div><div class='add'>+	  working tree" (a working tree created by git-worktree). So use</div><div class='add'>+	  git-rev-parse --git-dir to check if $srcdir is the top-level of a git</div><div class='add'>+	  repository, not just checking if the $srcdir/.git directory does exist</div><div class='add'>+	  or not.  [ruby-core:74759] [Bug #12239]</div><div class='ctx'> </div><div class='del'>-	* missing/nextafter.c: Include ruby/missing.h.</div><div class='add'>+	* tool/change_maker.rb: use tool/vcs.rb to detect VCS. This used to have</div><div class='add'>+	  its own VCS detection code, while we have tool/vcs.rb.</div><div class='ctx'> </div><div class='del'>-Sun May 18 11:09:28 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* tool/vcs.rb (detect): remove code duplication</div><div class='ctx'> </div><div class='del'>-	* win32/Makefile.sub: Add nextafter.obj to MISSING.</div><div class='add'>+Fri Apr  1 04:50:44 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun May 18 10:46:04 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/openssl/ossl_ssl.c (ossl_sslctx_s_alloc):</div><div class='add'>+	  enable SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER by default</div><div class='add'>+	  [Bug #12126]</div><div class='ctx'> </div><div class='del'>-	* ext/etc/etc.c: Etc.sysconf, Etc.confstr and IO#pathconf implemented.</div><div class='add'>+Fri Apr  1 01:13:55 2016  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/etc/extconf.rb: Check sysconf(), confstr() and fpathconf().</div><div class='add'>+	* thread.c (update_coverage): Do not track coverage in loaded files</div><div class='add'>+	  after Coverage.result. Avoids out-of-bounds access. [Bug #12237]</div><div class='ctx'> </div><div class='del'>-	* ext/etc/mkconstants.rb: New file.</div><div class='add'>+	* ext/coverage/coverage.c (coverage_clear_result_i): document.</div><div class='ctx'> </div><div class='del'>-	   [ruby-core:62600] [Feature #9842]</div><div class='add'>+Thu Mar 31 19:16:16 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Sun May 18 09:58:17 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* gc.c: need to set initial value of GC_HEAP_FREE_SLOTS_GOAL_RATIO.</div><div class='ctx'> </div><div class='del'>-	* ext/etc/etc.c: Etc.uname method implemented.</div><div class='add'>+Thu Mar 31 17:50:27 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/etc/extconf.rb: Check uname() function.</div><div class='add'>+	* gc.c: change additional allocation policy.</div><div class='ctx'> </div><div class='del'>-	  [ruby-core:62139] [Feature #9770]</div><div class='add'>+	  Introduce new environment variable</div><div class='add'>+	  RUBY_GC_HEAP_FREE_SLOTS_GOAL_RATIO (goal_ratio) to calculate the</div><div class='add'>+	  ratio of additional memory.</div><div class='ctx'> </div><div class='del'>-Sun May 18 09:16:33 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	  Before this change, we add pages with the following formula</div><div class='add'>+	  (when free_slots &lt; total_pages * RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO):</div><div class='add'>+	    next_pages = total_pages * RUBY_GC_HEAP_GROWTH_FACTOR</div><div class='ctx'> </div><div class='del'>-	* configure.in: Check nextafter() availability.</div><div class='add'>+	  This addition can allocate too much.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/missing.h (nextafter): New optional declaration.</div><div class='add'>+	  With this change, we increase pages to satisfy the following formula:</div><div class='add'>+	    next_free_slots = next_total_slots * goal_ratio</div><div class='add'>+	  where</div><div class='add'>+	    next_free_slots = free_slots + adding_slots</div><div class='add'>+	    next_total_slots = total_slots + adding_slots.</div><div class='ctx'> </div><div class='del'>-	* missing/nextafter.c: New file.</div><div class='add'>+	  If you want to prepare many free slots, increase this ratio.</div><div class='ctx'> </div><div class='del'>-	* numeric.c: Float#next_float and Float#prev_float implemented.</div><div class='add'>+	  If this variable is 0, then simply multiply</div><div class='add'>+	  RUBY_GC_HEAP_GROWTH_FACTOR.</div><div class='ctx'> </div><div class='del'>-	   [ruby-core:62562] [Feature #9834]</div><div class='add'>+	* gc.c (get_envparam_double): enable to accept 0.</div><div class='ctx'> </div><div class='del'>-Sun May 18 09:02:17 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu Mar 31 17:48:25 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* enum.c: Enumerable#slice_after implemented.</div><div class='add'>+	* gc.c (gc_marks_finish): fix syntax error.</div><div class='ctx'> </div><div class='del'>-	* enumerator.c: Enumerator::Lazy#slice_after implemented.</div><div class='add'>+Thu Mar 31 16:49:36 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	  Requested by Tsuyoshi Sawada.  [ruby-core:58123] [Feature #9071]</div><div class='add'>+	* gc.c: simplify allocate/free detecting logic at the end of marking.</div><div class='ctx'> </div><div class='del'>-Sun May 18 08:22:25 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	  Before this change, heap_pages_min_slots are calculated at the</div><div class='add'>+	  beginning sweeping phase. And this value is used at the end of</div><div class='add'>+	  *next* marking phase.</div><div class='ctx'> </div><div class='del'>-	* io.c (io_setstrbuf): always check if the buffer is modifiable.</div><div class='del'>-	  [ruby-core:62643] [Bug #9847]</div><div class='add'>+	  To simplify it, we use this value at the end of this marking phase.</div><div class='add'>+	  It means that we don't need to store this value as global state.</div><div class='ctx'> </div><div class='del'>-Sun May 18 01:21:23 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	  Also heap_pages_max_slots is calculated at the begging of sweeping</div><div class='add'>+	  phase and used at the end of sweeping phase.</div><div class='add'>+	  To simplify this logic, we introduced new global value</div><div class='add'>+	  heap_pages_freeable_pages it means extra pages count we can free.</div><div class='add'>+	  gc_sweep_step() checks this value and moves empty pages to tomb_heap</div><div class='add'>+	  not more than this value.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h: Hide Rational internal.</div><div class='del'>-	  (RRational): Moved to internal.h</div><div class='del'>-	  (RRATIONAL): Ditto.</div><div class='del'>-	  (RRATIONAL_SET_NUM): Moved to rational.c.</div><div class='del'>-	  (RRATIONAL_SET_DEN): Ditto.</div><div class='add'>+	  Because of this fix, heap_pages_swept_slots is no longer needed.</div><div class='ctx'> </div><div class='del'>-	* rational.c (rb_rational_num): New function.</div><div class='del'>-	  (rb_rational_den): Ditto.</div><div class='add'>+	* gc.c (rb_objspace_t::heap_pages): restruct the objspace global</div><div class='add'>+	  status.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/intern.h (rb_rational_num): Declared.</div><div class='del'>-	  (rb_rational_den): Ditto.</div><div class='add'>+	  remove the following fields</div><div class='add'>+	    * swept_slots (and heap_pages_swept_slots)</div><div class='add'>+	    * min_free_slots (and heap_pages_min_free_slots)</div><div class='add'>+	    * max_free_slots (and heap_pages_max_free_slots)</div><div class='add'>+	  And add the following filed.</div><div class='add'>+	    * freeable_pages (and heap_pages_freeable_pages)</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c: Follow the above change.</div><div class='add'>+	* gc.c (heap_pages_free_unused_pages): unlink tomb heap pages</div><div class='add'>+	  because tomb heap should have only freeable pages.</div><div class='ctx'> </div><div class='del'>-	* ext/date/date_core.c: Ditto.</div><div class='add'>+	* gc.c (heap_extend_pages): add parameters for future extension.</div><div class='ctx'> </div><div class='del'>-	  [ruby-core:60665] [Feature #9513]</div><div class='add'>+Thu Mar 31 16:43:02 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 17 17:04:32 2014  Shota Fukumori  &lt;her@sorah.jp&gt;</div><div class='add'>+	* gc.c: add GC parameters to configure the following values:</div><div class='add'>+	  * RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO:</div><div class='add'>+	    allocate additional pages when free slots is lower than</div><div class='add'>+	    the value (total_slots * (this ratio)).</div><div class='add'>+	  * RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO:</div><div class='add'>+	    allow to free pages when free slots is greater than</div><div class='add'>+	    the value (total_slots * (this ratio)).</div><div class='ctx'> </div><div class='del'>-	* NEWS: Add news about removal of lib/test/**/*.rb.</div><div class='add'>+	  Before this change, these values are hard coded.</div><div class='ctx'> </div><div class='del'>-Sat May 17 16:57:33 2014  Shota Fukumori  &lt;her@sorah.jp&gt;</div><div class='add'>+	* gc.c (ruby_gc_params_t): ditto.</div><div class='ctx'> </div><div class='del'>-	* lib/test: Removed because ruby's test cases now independent to</div><div class='del'>-	  lib/test by r45970. [Feature #9711] [ruby-core:62620]</div><div class='add'>+	* gc.c (ruby_gc_set_params): ditto.</div><div class='ctx'> </div><div class='del'>-	  I'm still considering about the future of lib/minitest, lib/test.</div><div class='del'>-	  (bundling gems?)</div><div class='add'>+Thu Mar 31 15:59:17 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 17 15:06:40 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* gc.c (gc_verify_heap_page): check the number of zombies.</div><div class='ctx'> </div><div class='del'>-	* test/runner.rb: remove dependency test-unit and minitest</div><div class='del'>-	  from stdlib when running with test-all.</div><div class='del'>-	  [Feature #9711][ruby-core:61890]</div><div class='del'>-	* test/testunit/*.rb: ditto.</div><div class='del'>-	* test/lib: ditto.</div><div class='add'>+	* gc.c (gc_verify_heap_pages): check also tomb heap.</div><div class='ctx'> </div><div class='del'>-Sat May 17 11:02:49 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Mar 31 15:48:18 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_helper): try match PLAIN as well as ALPHA, which are</div><div class='del'>-	  separated by previous commits.  [ruby-core:61552] [Bug #9648]</div><div class='add'>+	* gc.c (gc_page_sweep): return free slots count.</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_make_pattern): set PLAIN for non-magical path to</div><div class='del'>-	  skip parts which not need to glob.</div><div class='del'>-	  [ruby-core:61552] [Bug #9648]</div><div class='add'>+	* gc.c (gc_sweep_step): use returned free slots count.</div><div class='ctx'> </div><div class='del'>-	* dir.c (has_magic): return ALPHA at alphabetical name regardless</div><div class='del'>-	  FNM_CASEFOLD flag.</div><div class='add'>+	* gc.c (gc_sweep_step): change variable name `next'</div><div class='add'>+	  to `next_sweep_page'.</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_helper): fix conditions for ALPHA.</div><div class='del'>-	  [ruby-core:61552] [Bug #9648]</div><div class='add'>+Thu Mar 31 11:33:49 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 17 01:49:27 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/date/date_core.c (d_lite_strftime, dt_lite_strftime): [DOC]</div><div class='add'>+	  fix indent not to be a big sole verbatim.</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_helper): reduce matching at non-magical path on</div><div class='del'>-	  Windows.</div><div class='add'>+Thu Mar 31 11:18:19 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 17 01:49:23 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/date/date_core.c (Init_date_core): [DOC] fix misplaced doc</div><div class='add'>+	  of DateTime.  [ruby-core:74729] [Bug #12233]</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_pattern_type): separate names with alphabet but no</div><div class='del'>-	  magical from plain.</div><div class='add'>+Thu Mar 31 03:41:02 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_helper): match plain names as-is to treat super-root</div><div class='del'>-	  same as the root.  [ruby-core:61552] [Bug #9648]</div><div class='add'>+	* ext/nkf/nkf-utf8/nkf.c: Merge upstream 69f7e74dde.</div><div class='add'>+	  fix indent.</div><div class='ctx'> </div><div class='del'>-Fri May 16 17:38:22 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Wed Mar 30 16:33:19 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_marks, gc_marks_body): increase the counter of young objects</div><div class='del'>-	  at the major GC because AGE2Promotion changes all old objects into</div><div class='del'>-	  young objects at major GC.</div><div class='add'>+	* extension.rdoc, extension.ja.rdoc: [DOC] Fix some errors.</div><div class='add'>+	  Renamed files, wrong method names or argument types; the example</div><div class='add'>+	  GetDBM macro is now updated to the current version of the actual</div><div class='add'>+	  code.  patch by Marcus Stollsteimer in [ruby-core:74690].</div><div class='add'>+	  [Bug #12228]</div><div class='ctx'> </div><div class='del'>-Fri May 16 17:26:24 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Wed Mar 30 09:46:01 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_before_sweep): heap_pages_swept_slots should contains</div><div class='del'>-	  heap_pages_increment.</div><div class='add'>+	* lib/open-uri.rb: Use `userinfo` for authenticated proxy.</div><div class='add'>+	  [fix GH-1148] Patch by @SokichiFujita</div><div class='add'>+	* test/open-uri/test_open-uri.rb: ditto.</div><div class='add'>+	  [fix GH-1309] Patch by @jdamick</div><div class='ctx'> </div><div class='del'>-	  For example, GC by exceeding malloc_limit can remain</div><div class='del'>-	  heap_pages_increment.</div><div class='add'>+Wed Mar 30 01:56:06 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu May 15 21:18:43 2014  Hiroshi Shirosaki  &lt;h.shirosaki@gmail.com&gt;</div><div class='add'>+	* ext/nkf/nkf-utf8/nkf.c: Merge upstream 4f3edf80a0.</div><div class='add'>+	  patched by Anton Sivakov [Bug #12201] [Bug #12202]</div><div class='ctx'> </div><div class='del'>-	* configure.in: enable SSE2 on mingw. target='i386-pc-mingw32'.</div><div class='del'>-	  [ruby-core:62095] [Bug #8358]</div><div class='add'>+Wed Mar 30 01:54:30 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu May 15 21:04:06 2014  Hiroshi Shirosaki  &lt;h.shirosaki@gmail.com&gt;</div><div class='add'>+	* tool/redmine-backporter.rb: add given revision to current changesets</div><div class='add'>+	  on associating the revision to the related ticket.</div><div class='ctx'> </div><div class='del'>-	* lib/test/unit/parallel.rb: fix test-all parallel failure if a test</div><div class='del'>-	  is skipped after raise.</div><div class='del'>-	  DL::TestFunc#test_sinf is skipped after raise on mingw ruby.</div><div class='del'>-	  But it causes Marshal.load failure due to undefined class/module</div><div class='del'>-	  DL::DLError when doing test-all parallel and test-all doesn't</div><div class='del'>-	  complete. We create new MiniTest::Skip object to avoid Marshal.load</div><div class='del'>-	  failure.</div><div class='del'>-	  [ruby-core:62133] [Bug #9767]</div><div class='add'>+Wed Mar 30 01:53:17 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/testunit/test_parallel.rb (TestParallel): add a test.</div><div class='add'>+	* tool/merger.rb: update revision.h before merge.</div><div class='ctx'> </div><div class='del'>-	* test/testunit/tests_for_parallel/ptest_forth.rb: ditto.</div><div class='add'>+Tue Mar 29 19:33:54 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu May 15 18:57:23 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* addr2line.c: define toupper for its use. fix r54391.</div><div class='ctx'> </div><div class='del'>-	* gc.c (garbage_collect_body): move gc_heap_prepare_minimum_pages()</div><div class='del'>-	  from gc_sweep().</div><div class='add'>+Tue Mar 29 19:23:46 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu May 15 18:51:25 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* include/ruby/ruby.h (rb_isupper, rb_islower, rb_isalpha, rb_isdigit,</div><div class='add'>+	  rb_isalnum, rb_isxdigit, rb_isblank, rb_isspace, rb_isblank,</div><div class='add'>+	  rb_iscntrl, rb_isprint, rb_ispunct, rb_isgraph,</div><div class='add'>+	  rb_tolower, rb_toupper): use inline function to avoid function call.</div><div class='ctx'> </div><div class='del'>-	* gc.c (heap_extend_pages): calculate next growing heap size.</div><div class='add'>+	* include/ruby/ruby.h (rb_isascii): use inline function to clarify</div><div class='add'>+	  the logic.</div><div class='ctx'> </div><div class='del'>-	* gc.c (heap_set_increment): accept addition pages instead of</div><div class='del'>-	  minimum pages.</div><div class='add'>+Tue Mar 29 18:56:55 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_after_sweep): use heap_etend_pages().</div><div class='add'>+	* tool/redmine-backporter.rb (backport): show merger.rb's path.</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_heap_prepare_minimum_pages): add only 1 page.</div><div class='add'>+	* tool/redmine-backporter.rb (show): show current issue again if no</div><div class='add'>+	  ticket number is given.</div><div class='ctx'> </div><div class='del'>-	* gc.c (heap_ready_to_gc): add only 1 page.</div><div class='add'>+	* tool/redmine-backporter.rb (rel): show error message if current</div><div class='add'>+	  bugs.ruby-lang.org doesn't support the API.</div><div class='ctx'> </div><div class='del'>-Thu May 15 18:42:49 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Tue Mar 29 18:54:34 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c: introduce macros to remove magic number.</div><div class='add'>+	* tool/merger.rb: support to backport header as backport identifier.</div><div class='add'>+	  Now you can specify by 'merge revision(s) 49254: [Backport #10738]'.</div><div class='ctx'> </div><div class='del'>-	  GC_HEAP_FREE_SLOTS_MIN_RATIO = 0.3: guarantee minimum empty slots</div><div class='del'>-	                                      ratio after sweep.</div><div class='del'>-	  GC_HEAP_FREE_SLOTS_MAX_RATIO = 0.8: allow to free pages 0.2 (= 1-0.8)</div><div class='del'>-	                                      of current existing slots.</div><div class='add'>+Tue Mar 29 16:53:44 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu May 15 17:32:51 2014  Hiroshi Shirosaki  &lt;h.shirosaki@gmail.com&gt;</div><div class='add'>+	* enc/unicode/case-folding.rb, casefold.h: Tweaked handling of 6</div><div class='add'>+	  special cases in CaseUnfold_11_Table.</div><div class='ctx'> </div><div class='del'>-	* thread_win32.c (rb_w32_stack_overflow_handler): use Structured</div><div class='del'>-	  Exception Handling by AddVectoredExceptionHandler() for machine</div><div class='del'>-	  stack overflow on mingw.</div><div class='del'>-	  This would be equivalent to the handling using __try and __except</div><div class='del'>-	  on mswin introduced by r43748.</div><div class='add'>+	* enc/unicode.c: Adjustments for above.</div><div class='ctx'> </div><div class='del'>-Wed May 14 19:31:03 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Tests for the above: Some tests in</div><div class='add'>+	  test_titlecase activated; test_greek added. A test in test_cherokee fixed.</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/depend: remove dependency from internal headers.</div><div class='del'>-	  [Feature #9612]</div><div class='add'>+Tue Mar 29 13:31:00 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/ossl.c (ossl_fips_mode_set): ditto.</div><div class='add'>+	* enc/unicode.c: Cleaned up some comments.</div><div class='ctx'> </div><div class='del'>-	* ext/coverage/depend: ditto.</div><div class='add'>+Tue Mar 29 13:24:56 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* include/ruby/thread_native.h: added.</div><div class='add'>+	* enc/unicode/case-folding.rb, casefold.h: Removing data for idempotent</div><div class='add'>+	  titlecasing.</div><div class='ctx'> </div><div class='del'>-	  This header file only provides wrapper functions to control</div><div class='del'>-	  native threads. These wrapper functions are used by MRI</div><div class='del'>-	  implementation.</div><div class='add'>+	* enc/unicode.c: Adjust code to data removal.</div><div class='ctx'> </div><div class='del'>-	* vm_core.h: use include/ruby/thread_native.h.</div><div class='add'>+Tue Mar 29 12:45:18 2016  Laurent Arnoud  &lt;laurent@spkdev.net&gt;</div><div class='ctx'> </div><div class='del'>-	* thread.c: ditto.</div><div class='add'>+	* lib/webrick/httpresponse.rb: Move error_body to method. It allow to</div><div class='add'>+	  override the body more easily. [fix GH-1307]</div><div class='add'>+	* test/webrick/test_httpresponse.rb: ditto.</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.h: ditto.</div><div class='add'>+Tue Mar 29 06:40:53 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* thread_win32.h: ditto.</div><div class='del'>-</div><div class='del'>-	* thread_native.h: removed.</div><div class='add'>+	* error.c (rb_compile_err_append): rb_thread_t::base_block is no</div><div class='add'>+	  longer used.</div><div class='ctx'> </div><div class='del'>-Wed May 14 18:03:28 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* iseq.c (rb_iseq_compile_with_option): ditto, no protection is</div><div class='add'>+	  needed.</div><div class='ctx'> </div><div class='del'>-	* gc.c: enable RGENGC_AGE2_PROMOTION.</div><div class='add'>+Tue Mar 29 06:39:22 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed May 14 18:02:30 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* parse.y (struct parser_params): move parse_in_eval flag from</div><div class='add'>+	  rb_thread_t.</div><div class='ctx'> </div><div class='del'>-	* gc.c (rgengc_rememberset_mark): promote remembered object earlier.</div><div class='add'>+	* parse.y (rb_parser_set_context): set parsing context, not only</div><div class='add'>+	  mild error flag.</div><div class='ctx'> </div><div class='del'>-Mon May 12 23:57:15 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* iseq.c (rb_iseq_compile_with_option): the parser now refers no</div><div class='add'>+	  thread local states to be restored.</div><div class='ctx'> </div><div class='del'>-	* configure.in (rb_cv_atan2_inf_c99): check whether runtime atan2</div><div class='del'>-	  handles Inf as C99. [ruby-core:62536] [Bug #9831]</div><div class='add'>+	* vm_eval.c (eval_string_with_cref): ditto.</div><div class='ctx'> </div><div class='del'>-Mon May 12 20:33:01 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Mar 28 21:24:02 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: Invoke AC_REPLACE_FUNCS for each function.</div><div class='add'>+	* numeric.c (int_pos_p): fix typos.</div><div class='ctx'> </div><div class='del'>-Mon May 12 19:52:11 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Mon Mar 28 14:54:49 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c: count young object correctly and show it in GC.stat</div><div class='del'>-	  on RGENGC_AGE2_PROMOTION.</div><div class='add'>+	* enc/unicode.c: Refactoring in preparation for data reduction for</div><div class='add'>+	  titlecase.</div><div class='ctx'> </div><div class='del'>-	* gc.c (RVALUE_PROMOTE_YOUNG): decrement young object count on</div><div class='del'>-	  YOUNG-&gt;OLD.</div><div class='add'>+Mon Mar 28 14:36:36 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (obj_free): decrement young object count when young object</div><div class='del'>-	  freed.</div><div class='add'>+	* enc/unicode.c: Minor refactoring for I WITH DOT ABOVE.</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_marks): should not clear young object count.</div><div class='add'>+Mon Mar 28 14:26:24 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_stat_internal): GC.stat :young_object information.</div><div class='add'>+	* enc/unicode.c: Removed code now covered by data from table.</div><div class='ctx'> </div><div class='del'>-Mon May 12 01:30:59 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Mar 28 11:49:21 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/ifaddr.c (IS_IFADDRS): Unused macro removed.</div><div class='add'>+	* enc/unicode.c: Adding comments. [ci skip]</div><div class='ctx'> </div><div class='del'>-	* ext/strscan/strscan.c (BUFSIZE): Ditto.</div><div class='add'>+Mon Mar 28 11:30:23 2016  Shinichi Maeshima  &lt;netwillnet@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/zlib/zlib.c (OBJ_IS_FREED): Ditto.</div><div class='add'>+	* lib/rubygems.rb: Fix `Gem.find_spec_for_exe` picks oldest gem.</div><div class='add'>+	  https://github.com/travis-ci/travis-ci/issues/5798</div><div class='add'>+	  https://github.com/rubygems/rubygems/pull/1566</div><div class='add'>+	* test/rubygems/test_gem.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Sun May 11 22:27:18 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Mar 28 11:26:31 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (BUFSIZE): Unused macro removed.</div><div class='add'>+	* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.6.2.</div><div class='add'>+	  Please see entries of 2.6.2 on</div><div class='add'>+	  https://github.com/rubygems/rubygems/blob/master/History.txt</div><div class='ctx'> </div><div class='del'>-	* vm.c (BUFSIZE): Ditto.</div><div class='add'>+Mon Mar 28 11:02:31 2016  Hiroshi Shirosaki  &lt;h.shirosaki@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* pack.c (INT64toNUM): Ditto.</div><div class='del'>-	  (UINT64toNUM): Ditto.</div><div class='del'>-	  (BYTEWIDTH): Ditto.</div><div class='add'>+	* lib/rubygems/test_case.rb: Fix test on Windows for inconsistent temp path.</div><div class='add'>+	  https://github.com/rubygems/rubygems/pull/1554</div><div class='add'>+	  [Bug #12193][ruby-core:74431]</div><div class='ctx'> </div><div class='del'>-	* time.c (lshift): Ditto.</div><div class='del'>-	  (UINT64toNUM): Ditto.</div><div class='del'>-	  (id_lshift): Unused variable removed.</div><div class='add'>+Mon Mar 28 08:19:49 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun May 11 21:23:27 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* sprintf.c (rb_str_format): refactor floating point format of</div><div class='add'>+	  Rational by using generic Integer functions.</div><div class='ctx'> </div><div class='del'>-	* pack.c (swaps): Unused macro removed.</div><div class='del'>-	  (swapi): Ditto.</div><div class='del'>-	  (swapl): Ditto.</div><div class='del'>-	  (swapll): Ditto.</div><div class='add'>+	* sprintf.c (rb_str_format): fix buffer overflow, length must be</div><div class='add'>+	  greater than precision.  reported by William Bowling &lt;will AT</div><div class='add'>+	  wbowling.info&gt;.</div><div class='ctx'> </div><div class='del'>-Sun May 11 08:02:49 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sun Mar 27 12:13:37 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_core.h (rb_vm_t): list_head and counter for living_threads</div><div class='del'>-	  (rb_thread_t): vmlt_node for living_threads linkage</div><div class='del'>-	  (rb_vm_living_threads_init): new function wrapper</div><div class='del'>-	  (rb_vm_living_threads_insert): ditto</div><div class='del'>-	  (rb_vm_living_threads_remove): ditto</div><div class='del'>-	* vm.c (rb_vm_living_threads_foreach): new function wrapper</div><div class='del'>-	* thread.c (terminate_i, thread_start_func_2, thread_create_core,</div><div class='del'>-	  thread_fd_close_i, thread_fd_close): update to use new APIs</div><div class='del'>-	* vm.c (vm_mark_each_thread_func, rb_vm_mark, ruby_vm_destruct,</div><div class='del'>-	  vm_memsize, vm_init2, Init_VM): ditto</div><div class='del'>-	* vm_trace.c (clear_trace_func_i, rb_clear_trace_func): ditto</div><div class='del'>-	* benchmark/bm_vm_thread_close.rb: added to show improvement</div><div class='del'>-	* ccan/build_assert/build_assert.h: added as a dependency of list.h</div><div class='del'>-	* ccan/check_type/check_type.h: ditto</div><div class='del'>-	* ccan/container_of/container_of.h: ditto</div><div class='del'>-	* ccan/licenses/BSD-MIT: ditto</div><div class='del'>-	* ccan/licenses/CC0: ditto</div><div class='del'>-	* ccan/str/str.h: ditto (stripped of unused macros)</div><div class='del'>-	* ccan/list/list.h: ditto</div><div class='del'>-	* common.mk: add CCAN_LIST_INCLUDES</div><div class='del'>-	  [ruby-core:61871][Feature #9632 (part 1)]</div><div class='add'>+	* sprintf.c (rb_str_format): convert Rational to floating point</div><div class='add'>+	  format by using generic Integer functions, not by methods which</div><div class='add'>+	  can be overwritten.</div><div class='ctx'> </div><div class='del'>-Sun May 11 01:10:31 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Mar 26 10:55:12 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* signal.c (rb_f_kill): directly enqueue an ignored signal to self,</div><div class='del'>-	  except for SIGSEGV and SIGBUS.  [ruby-dev:48203] [Bug #9820]</div><div class='add'>+	* numeric.c (rb_int2str): conversion function to String for</div><div class='add'>+	  generic Integer.</div><div class='ctx'> </div><div class='del'>-Sat May 10 22:37:56 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (rb_int_round): rounding function for generic</div><div class='add'>+	  Integers.</div><div class='ctx'> </div><div class='del'>-	* dir.c (push_glob): match in UTF-8 on Mac OS X.</div><div class='del'>-	  [ruby-dev:48213] [Bug #9825]</div><div class='add'>+	* numeric.c (rb_int_{uminus,plus,minus,mul,idiv,modulo}): basic</div><div class='add'>+	  arithmetic functions for generic Integers.</div><div class='ctx'> </div><div class='del'>-Sat May 10 13:32:18 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (FIXNUM_{POSITIVE,NEGATIVE,ZERO}_P): predict macros</div><div class='add'>+	  only for Fixnum.</div><div class='ctx'> </div><div class='del'>-	* thread.c (thread_start_func_2): stop if forked in a sub-thread,</div><div class='del'>-	  the thread has become the main thread.</div><div class='del'>-	  [ruby-core:62070] [Bug #9751]</div><div class='add'>+Sat Mar 26 06:34:24 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 10 09:32:19 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* localeinit.c (rb_locale_charmap_index): fix prototype.</div><div class='add'>+	  patched by Andreas Schwab [Bug #12218]</div><div class='ctx'> </div><div class='del'>-	* man/ruby.1: remove deadlink. [ruby-core:62145][Bug #9773]</div><div class='add'>+Fri Mar 25 16:40:48 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat May 10 08:47:36 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Additional tests title case;</div><div class='add'>+	  some not yet activated.</div><div class='ctx'> </div><div class='del'>-	* signal.c (trap): Return "SYSTEM_DEFAULT" if SIG_DFL is set.</div><div class='add'>+Fri Mar 25 13:38:11 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri May  9 14:27:05 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/extconf.rb: check SSL_CTX_set_next_proto_select_cb</div><div class='add'>+	  function rather than OPENSSL_NPN_NEGOTIATED macro. it exists</div><div class='add'>+	  even if it is disabled by OpenSSL configuration.</div><div class='add'>+	  [ruby-core:74384] [Bug #12182]</div><div class='ctx'> </div><div class='del'>-	* configure.in (RUBY_SETJMP_TYPE): check for setjmp type after</div><div class='del'>-	  CCDLFLAGS is appended to CFLAGS, since __builtin_setjmp can be</div><div class='del'>-	  affected.  [ruby-core:62469] [Bug #9818]</div><div class='add'>+	* ext/openssl/ossl_ssl.c: update #ifdef(s) as above.</div><div class='ctx'> </div><div class='del'>-Fri May  9 03:59:06 2014  Ayumu AIZAWA  &lt;ayumu.aizawa@gmail.com&gt;</div><div class='add'>+	* test/openssl/test_ssl.rb: skip NPN tests if NPN is disabled.</div><div class='ctx'> </div><div class='del'>-	* lib/delegate.rb: Fix example of using delegator.</div><div class='del'>-	  patched from Andrey Koleshko. [Fixes GH-505]</div><div class='add'>+Fri Mar 25 11:08:37 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri May  9 03:42:43 2014  Ayumu AIZAWA  &lt;ayumu.aizawa@gmail.com&gt;</div><div class='add'>+	* lib/uri/http.rb (URI::HTTP#initialize): [DOC] fix example,</div><div class='add'>+	  missing mandatory arguments.  [ruby-core:74540] [Bug #12215]</div><div class='ctx'> </div><div class='del'>-	* lib/shell.rb: add documentation in lib/shell.rb</div><div class='del'>-	  patched from reprah. [Fixes GH-516]</div><div class='add'>+Fri Mar 25 01:50:58 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri May  9 03:28:04 2014  Ayumu AIZAWA  &lt;ayumu.aizawa@gmail.com&gt;</div><div class='add'>+	* thread_pthread.c (reserve_stack): fix reserving position where</div><div class='add'>+	  the stack growing bottom to top. [Bug #12118]</div><div class='ctx'> </div><div class='del'>-	* lib/fileutils.rb: show fileutils require at top.</div><div class='del'>-	  patched from Richard Schneeman. [Fixes GH-604]</div><div class='add'>+Fri Mar 25 01:10:42 2016  Sebastian Schuberth  &lt;sschuberth@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Fri May  9 03:07:09 2014  Ayumu AIZAWA  &lt;ayumu.aizawa@gmail.com&gt;</div><div class='add'>+	* lib/mkmf.rb (find_executable0): On Windows, it is actually valid</div><div class='add'>+	  to surround individual PATH directory entries with double</div><div class='add'>+	  quotes. Remove these before joining the path as otherwise the</div><div class='add'>+	  literal quotes would become part of the path, resulting in the</div><div class='add'>+	  executable not to be found.  [Fix GH-1305]</div><div class='ctx'> </div><div class='del'>-	* lib/prime.rb (Prime#prime?): negative numbers can't be primes</div><div class='del'>-	  by definition. reported by Ivan Kataitsev. [Bug #7395]</div><div class='del'>-	* test/test_prime.rb: add test.</div><div class='add'>+Thu Mar 24 22:38:18 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu May  8 14:34:29 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* strftime.c (FMT, FMTV): remove recursive-assignments to get rid</div><div class='add'>+	  of undefined behavior.  [ruby-core:74532] [Bug #12213]</div><div class='ctx'> </div><div class='del'>-	* class.c (rb_mod_init_copy): always clear instance variable,</div><div class='del'>-	  constant and method tables first, regardless the source tables.</div><div class='del'>-	  [ruby-dev:48182] [Bug #9813]</div><div class='add'>+Thu Mar 24 17:44:02 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu May  8 10:53:14 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* strftime.c (FMT_PADDING): extract format for padding.</div><div class='ctx'> </div><div class='del'>-	* configure.in: OpenBSD needs to include sys/param.h before include</div><div class='del'>-	  sys/mount.h. [ruby-dev:48167]</div><div class='add'>+	* strftime.c (FMT_PRECISION): extract precision formula.</div><div class='ctx'> </div><div class='del'>-Thu May  8 10:17:04 2014  Karsten Sperling  &lt;karsten@sperling.co.nz&gt;</div><div class='add'>+	* strftime.c (FMTV): append formatted string to expand the result.</div><div class='ctx'> </div><div class='del'>-	* lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): stop</div><div class='del'>-	  handling requests on shutdown, even if the socket is readable</div><div class='del'>-	  and IO.select() returns true.  [Fixes GH-607]</div><div class='add'>+Thu Mar 24 14:20:21 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/webrick/server.rb (WEBrick::GenericServer#start): IO.select()</div><div class='del'>-	  raises ENOTSOCK on shutdown on Windows.</div><div class='add'>+	* strftime.c (STRFTIME): deal with case conversion flags for</div><div class='add'>+	  recursive formats.</div><div class='ctx'> </div><div class='del'>-Wed May  7 21:45:00 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu Mar 24 12:43:26 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLServer#accept):</div><div class='del'>-	  Consider Socket#accept as well as TCPServer#accept.</div><div class='del'>-	  Reported by Sam Stelfox.  [ruby-core:62064] [Bug #9750]</div><div class='add'>+	* ext/date/date_core.c (dt_lite_iso8601): strftimev() always</div><div class='add'>+	  returns a String, so append them directly.</div><div class='ctx'> </div><div class='del'>-Wed May  7 17:24:07 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/date/date_core.c (d_lite_jisx0301, iso8601_timediv),</div><div class='add'>+	  (dt_lite_jisx0301): format by the format string in local buffer</div><div class='add'>+	  to prevent intermediate strings from GC.</div><div class='ctx'> </div><div class='del'>-	* numeric.c (num_step_scan_args): check keyword arguments and fail</div><div class='del'>-	  if they conflict with positional arguments.</div><div class='del'>-	  [ruby-dev:48177] [Bug #9811]</div><div class='add'>+	* ext/date/date_core.c (mk_inspect_raw, mk_inspect): inspect by</div><div class='add'>+	  "%+"PRIsVALUE, to prevent intermediate strings from GC.</div><div class='ctx'> </div><div class='del'>-Wed May  7 12:06:14 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Thu Mar 24 11:43:32 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* benchmark/driver.rb: remove debug output and output results into</div><div class='del'>-	  specified file.</div><div class='add'>+	* strftime.c (rb_strftime_with_timespec): remove unnecessary</div><div class='add'>+	  check, as `s` equals to `endp` when recursed STRFTIME resized</div><div class='add'>+	  the capacity same as the size.</div><div class='ctx'> </div><div class='del'>-Wed May  7 11:55:40 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Wed Mar 23 21:48:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* benchmark/driver.rb: add '--rawdata-output=[FILE] option to output</div><div class='del'>-	  raw results into FILE.</div><div class='add'>+	* enum.c (ary_inject_op): put subtract operation out of if-clause.</div><div class='ctx'> </div><div class='del'>-Wed May  7 11:25:41 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Mar 23 21:38:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_eval.c (rb_f_local_variables): exclude variables hidden by</div><div class='del'>-	  shadowing.  [ruby-core:60501] [Bug #9486]</div><div class='add'>+	* enum.c (ary_inject_op): Use Kahan's compensated summation algorithm</div><div class='add'>+	  for summing up float values.</div><div class='ctx'> </div><div class='del'>-	* vm.c (collect_local_variables_in_iseq): ditto.</div><div class='add'>+Wed Mar 23 20:56:59 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue May  6 23:29:05 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* strftime.c (rb_strftime_with_timespec): append formatted results</div><div class='add'>+	  to the given string with expanding, and also deal with NUL chars.</div><div class='ctx'> </div><div class='del'>-	* parse.y (new_bv_gen): no duplicated names, if already added in</div><div class='del'>-	  shadowing_lvar().</div><div class='add'>+	* strftime.c (rb_strftime, rb_strftime_timespec): return formatted</div><div class='add'>+	  string, not the length put in the given buffer.</div><div class='ctx'> </div><div class='del'>-	* parse.y (local_tbl_gen): remove local variables duplicated with</div><div class='del'>-	  arguments.</div><div class='del'>-	  [ruby-core:60501] [Bug #9486]</div><div class='add'>+	* time.c (rb_strftime_alloc): no longer needs to retry with</div><div class='add'>+	  reallocating buffers.</div><div class='ctx'> </div><div class='del'>-Tue May  6 18:48:50 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* time.c (time_strftime): no longer needs to split by NUL chars.</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (Time.make_time): Adjust the time zone of "now".</div><div class='add'>+Wed Mar 23 14:23:54 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue May  6 18:33:12 2014  Tadayoshi Funaba  &lt;tadf@dotrb.org&gt;</div><div class='add'>+	* lib/rdoc/ri/driver.rb (interactive): rescue NotFoundError raised in</div><div class='add'>+	  expand_name. (display_name rescues NotFoundError by itself,</div><div class='add'>+	  the original logic looks buggy...)</div><div class='ctx'> </div><div class='del'>-	* io.c (io_{read,write}_nonblock): use rb_get_kwargs instead of</div><div class='del'>-	  rb_hash_aref.</div><div class='add'>+Wed Mar 23 11:44:53 2016  cremno  &lt;cremno@mail.ru&gt;</div><div class='ctx'> </div><div class='del'>-Tue May  6 18:03:05 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* marshal.c (r_long): cast to `signed char`, which is used</div><div class='add'>+	  already, instead of SIGN_EXTEND_CHAR.</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (Time.make_time): Argument validation code moved from</div><div class='del'>-	  Time.parse and Time.strptime.</div><div class='add'>+	* parse.y: SIGN_EXTEND_CHAR is no longer used.  [Fix GH-1302]</div><div class='ctx'> </div><div class='del'>-Tue May  6 17:27:06 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Wed Mar 23 11:38:47 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (Time.parse): [DOC] Fix an example in the documentation</div><div class='del'>-	  to use EST.</div><div class='del'>-	  Reported by Marcus Stollsteimer.</div><div class='del'>-	  [ruby-core:60778] [Bug #9521] and [ruby-core:61718] [Bug #9682]</div><div class='add'>+	* cygwin/GNUmakefile.in (MSYS2_ARG_CONV_EXCL_PARAM):</div><div class='add'>+	  * add missing parentheses and remove double quotes.</div><div class='add'>+	  * rename to get rid of recursive references.</div><div class='add'>+	  * as --excludes-dir option is for a path name, its argument</div><div class='add'>+	    should be converted.</div><div class='add'>+	  [ruby-dev:49526] [Bug #12199]</div><div class='ctx'> </div><div class='del'>-Tue May  6 04:31:48 2014  Tadayoshi Funaba  &lt;tadf@dotrb.org&gt;</div><div class='add'>+Wed Mar 23 10:39:38 2016  Koichi ITO  &lt;koic.ito@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* file.c (rb_f_test): removed meaningless "case 'a'".</div><div class='add'>+	* variable.c: Added documentation about order of `Module#constants`</div><div class='add'>+	  [ci skip][Bug #12121][ruby-dev:49505][fix GH-1301]</div><div class='ctx'> </div><div class='del'>-Tue May  6 01:28:14 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Tue Mar 22 21:08:30 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/open-uri.rb (OpenURI.open_uri): Call StringIO#close only if</div><div class='del'>-	  the StringIO object is not closed yet.</div><div class='del'>-	  Reported by Jordi Massaguer Pla.  [ruby-core:42538] [Bug #6010]</div><div class='add'>+	* include/ruby/oniguruma.h: Additional flag for characters that are titlecase.</div><div class='ctx'> </div><div class='del'>-Tue May  6 01:08:01 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* enc/unicode/case-folding.rb, casefold.h: Using above flag in data.</div><div class='ctx'> </div><div class='del'>-	* benchmark/driver.rb: define File::NULL if not defined and /dev/null</div><div class='del'>-	  is available to run benchmark driver on ruby 1.9.2.</div><div class='add'>+	* enc/unicode.c: Marking capitalized character as unmodified if it is</div><div class='add'>+	  already titlecase.</div><div class='ctx'> </div><div class='del'>-Mon May  5 23:53:24 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Tests for above functionality.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/mkconstants.rb: Add IP_TRANSPARENT.</div><div class='del'>-	  IP_TRANSPARENT is provieded since glibc-2.12.</div><div class='del'>-	  Reported by Eliezer Croitoru.  [ruby-core:50372] [Bug #7476]</div><div class='add'>+Tue Mar 22 14:18:59 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon May  5 22:29:47 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* parse.y (lambda_body, parser_yylex): warn mismatched indentation</div><div class='add'>+	  of lambda block.</div><div class='ctx'> </div><div class='del'>-	* process.c (check_exec_redirect): Open the file in write mode for</div><div class='del'>-	  redirect from [:out, :err].</div><div class='del'>-	  Proposed and implemented by Yusuke Endoh.</div><div class='del'>-	  [ruby-dev:41430] [Feature #3348]</div><div class='add'>+Tue Mar 22 11:36:49 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon May  5 21:52:35 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* time.c (wmul): wrong condition.</div><div class='add'>+	  fixed many test failures on 32bit and LLP64 platforms.</div><div class='ctx'> </div><div class='del'>-	* ext/pathname/lib/pathname.rb (cleanpath_aggressive): make all</div><div class='del'>-	  separators File::SEPARATOR from File::ALT_SEPARATOR.</div><div class='del'>-	  Reported by Daniel Rikowski.</div><div class='del'>-	  Fixed by Nobuyoshi Nakada.  [Bug #9618]</div><div class='add'>+Tue Mar 22 10:31:34 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/pathname/lib/pathname.rb (cleanpath_conservative): ditto.</div><div class='add'>+	* time.c (wdiv, wmod): wdivmod0() assumes the 3rd and the 4th arguments</div><div class='add'>+	  are valid pointers.</div><div class='add'>+	  maybe checking them in wdivmod0() is better manner, but I guess that</div><div class='add'>+	  passing real dummy pointers may be faster than checking and branching</div><div class='add'>+	  in wdivmod0().</div><div class='add'>+	  this commit fixes SEGV on 32bit and LLP64 platforms.</div><div class='ctx'> </div><div class='del'>-Mon May  5 21:48:04 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Tue Mar 22 10:24:04 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/pathname/lib/pathname.rb (Pathname#/): Aliased to Pathname#+.</div><div class='del'>-	  Suggested by Alexey Muranov.  [ruby-core:61432] [Feature #9625]</div><div class='add'>+	* time.c (divmodv): void function never returns any value.</div><div class='ctx'> </div><div class='del'>-Mon May  5 17:26:09 2014  Tadayoshi Funaba  &lt;tadf@dotrb.org&gt;</div><div class='add'>+Tue Mar 22 10:11:01 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* math.c (rb_math_sqrt): omitted exporting an unused function,</div><div class='del'>-	  anyway.</div><div class='del'>-	* internal.h: follows the above change.</div><div class='add'>+	* test/lib/test/unit.rb (Test::Unit::StatusLine#failed): print</div><div class='add'>+	  failed messages only if replacing mode, otherwise defer them</div><div class='add'>+	  until the end, to get rid of interleaving failures with progress</div><div class='add'>+	  messages.  refix r54195.</div><div class='ctx'> </div><div class='del'>-Mon May  5 11:44:03 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Tue Mar 22 03:45:03 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (Time.strptime): Raise ArgumentError if Date._strptime</div><div class='del'>-	  doesn't extract date information.</div><div class='del'>-	  Reported by tadayoshi funaba.  [ruby-core:62349]</div><div class='add'>+	* time.c (MUL_OVERFLOW_FIXWV_P): defined for FIXWV.</div><div class='ctx'> </div><div class='del'>-Mon May  5 01:12:27 2014  Tadayoshi Funaba  &lt;tadf@dotrb.org&gt;</div><div class='add'>+	* time.c (wmul): use MUL_OVERFLOW_FIXWV_P and only switch.</div><div class='ctx'> </div><div class='del'>-	* ext/date/date_core.c (rt_rewrite_frags): a new feature (not a</div><div class='del'>-	  bug fix) of strptime.  applies offset even if the given date is</div><div class='del'>-	  not local time (%s and %Q).  This is an exceptional feature and</div><div class='del'>-	  I do NOT recommend to use this at all.  Thank you git community.</div><div class='add'>+	* time.c (wmul): use mul which has Fixnum optimization.</div><div class='ctx'> </div><div class='del'>-Sun May  4 20:51:32 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* time.c (rb_time_magnify): If WIDEVALUE_IS_WIDER, wmul() has the same</div><div class='add'>+	  optimized logic, else mul() has also the similar logic for Fixnum.</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (Time.force_zone!): Use usual local time if it has</div><div class='del'>-	  expected offset from UTC.</div><div class='add'>+	* time.c (rb_time_unmagnify): almost ditto.</div><div class='ctx'> </div><div class='del'>-Sun May  4 17:58:12 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Tue Mar 22 03:10:09 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (Time.force_zone!): New private method.</div><div class='del'>-	  (Time.make_time): Use Time.force_zone!.</div><div class='del'>-	  (Time.strptime): Ditto.</div><div class='del'>-	  (Time.rfc2822): Ditto.</div><div class='del'>-	  (Time.xmlschema): Ditto.</div><div class='add'>+	* time.c (divmodv): add the case both arguments are Fixnum.</div><div class='ctx'> </div><div class='del'>-	* lib/rss/rss.rb (Time.w3cdtf): Use Time.force_zone!.</div><div class='add'>+	* time.c (wquo): use quo which has Fixnum optimization.</div><div class='ctx'> </div><div class='del'>-Sun May  4 10:22:59 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* time.c (wdivmod0): added for WIDEVALUE_IS_WIDER.</div><div class='ctx'> </div><div class='del'>-	* math.c (math_atan2): return values like as expected by C99 if</div><div class='del'>-	  both two arguments are infinity.  based on the patch by cremno</div><div class='del'>-	  phobia &lt;cremno AT mail.ru&gt; in [ruby-core:62310].  [Feature #9799]</div><div class='add'>+	* time.c (wdivmod): use wdivmod0 and divmodv.</div><div class='add'>+	  divmodv has Fixnum optimization.</div><div class='ctx'> </div><div class='del'>-Sun May  4 03:46:42 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* time.c (wdiv): use wdivmod0 and div to avoid the use of divmodv which</div><div class='add'>+	  calls id_quo whose return value is array.</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (Time.httpdate): Always return a UTC Time object.</div><div class='add'>+	* time.c (wmod): use wdivmod0 and mod to avoid the use of divmodv which</div><div class='add'>+	  calls id_quo whose return value is array.</div><div class='ctx'> </div><div class='del'>-Sun May  4 03:26:39 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Mar 21 22:32:50 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (Time.make_time): Refactored.</div><div class='add'>+	* internal.h (rb_fix_divmod_fix): like r54213, use FIX2NUM only if</div><div class='add'>+	  x == FIXNUM_MIN &amp;&amp; y == -1. This must be a rare case and it is</div><div class='add'>+	  expected compiler to handle well.</div><div class='ctx'> </div><div class='del'>-Sun May  4 02:53:17 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Mar 21 22:15:11 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (Time.rfc2822): Fix year completion.</div><div class='del'>-	  Produce fixed-offset time object if appropriate.</div><div class='del'>-	  (Time.xmlschema): Produce fixed-offset time object if appropriate.</div><div class='add'>+	* time.c (mod): Add Fixnum case.</div><div class='ctx'> </div><div class='del'>-Sat May  3 23:52:20 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* time.c (quo): c can be Fixnum except a == FIXNUM_MIN &amp;&amp; b == -1.</div><div class='add'>+	  Such case can be optimized out because quo()'s argument is constant.</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (make_time): Produce fixed-offset time object if</div><div class='del'>-	  appropriate.</div><div class='del'>-	  (Time.strptime): Use d[:zone] instead of d[:offset].</div><div class='add'>+Mon Mar 21 22:09:24 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rss/rss.rb (Time.w3cdtf): Produce fixed-offset time object if</div><div class='del'>-	  appropriate.</div><div class='add'>+	* internal.h (rb_fix_mul_fix): multiply converted values, not</div><div class='add'>+	  object VALUEs.</div><div class='ctx'> </div><div class='del'>-Sat May  3 20:21:38 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Mar 21 20:18:29 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/time.rb (Time.strptime): Use d[:offset] if d[:seconds] is not</div><div class='del'>-	  given.</div><div class='del'>-	  Reported by tadayoshi funaba.  [ruby-core:62322]</div><div class='add'>+	* common.mk (TEST_EXCLUDES, EXCLUDE_TESTFRAMEWORK): use full spell</div><div class='add'>+	  long option.</div><div class='ctx'> </div><div class='del'>-Sat May  3 04:04:16 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* cygwin/GNUmakefile.in (MSYS2_ARG_CONV_EXCL): suppress path name</div><div class='add'>+	  conversions by msys2.  [ruby-dev:49525] [Bug #12199]</div><div class='ctx'> </div><div class='del'>-	* complex.c (parse_comp): replace ALLOCA_N with ALLOCV_N/ALLOCV_END</div><div class='del'>-	  [Bug #9608]</div><div class='del'>-	* rational.c (read_digits): ditto</div><div class='add'>+Mon Mar 21 19:09:31 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat May  3 00:06:30 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='add'>+	* string.c (enc_succ_alnum_char): try to skip an invalid character</div><div class='add'>+	  gap between GREEK CAPITAL RHO and SIGMA.</div><div class='add'>+	  [ruby-core:74478] [Bug #12204]</div><div class='ctx'> </div><div class='del'>-	* file.c (HAVE_STRUCT_STATVFS_F_BASETYPE): File::Statfs#fstypename</div><div class='del'>-	  is supported on AIX, HP-UX, and Solaris, by using the value of</div><div class='del'>-	  struct statvfs.f_basetype.</div><div class='add'>+Mon Mar 21 18:55:49 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in (HAVE_STRUCT_STATVFS_F_BASETYPE): check struct</div><div class='del'>-	  statvfs.f_basetype which is available on AIX, HP-UX, and Solaris.</div><div class='add'>+	* node.c (rb_gc_mark_node): NODE_MATCH2 can have nd_args, u3,</div><div class='add'>+	  since r54100.</div><div class='ctx'> </div><div class='del'>-Fri May  2 21:04:02 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Mar 20 21:17:13 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (next_id): no reason to set ID_STATIC_SYM here, as ID</div><div class='del'>-	  returned by rb_intern3 can be a dynamic symbol and the static</div><div class='del'>-	  symbol flag is set otherwise.  [Bug #9787]</div><div class='add'>+	* internal.h (rb_int128t2big): declare only when HAVE_INT128_T.</div><div class='add'>+	  fixed a compile error with VC++ introduced at r54203.</div><div class='ctx'> </div><div class='del'>-Fri May  2 11:32:51 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Mar 20 20:10:14 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_io.rb (test_seek, test_seek_symwhence): defer</div><div class='del'>-	  File::Statfs#type call which may not be implemented, to mitigate</div><div class='del'>-	  errors on platforms where SEEK_DATA is available but f_type in</div><div class='del'>-	  struct statfs is not.  [ruby-dev:48154] [Bug #9789]</div><div class='add'>+	* internal.h (DLONG): defined if long is 32bit (and LONG_LONG is 64bit;</div><div class='add'>+	  but LONG_LONG is always defined as 64bit), or there's int128_t.</div><div class='ctx'> </div><div class='del'>-Fri May  2 10:37:55 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* internal.h (DL2NUM): defined if DLONG is defined.</div><div class='ctx'> </div><div class='del'>-	* parse.y (rb_id_attrset): turn dynamically interned Symbol into</div><div class='del'>-	  an ID, since rb_str_dynamic_intern returns a Symbol but not an</div><div class='del'>-	  ID.  [ruby-core:62226] [Bug #9787]</div><div class='add'>+	* internal.h (rb_fix_mul_fix): defined for `Fixnum * Fixnum`.</div><div class='ctx'> </div><div class='del'>-Thu May  1 22:19:34 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='add'>+	* insns.def (opt_mul): use rb_fix_mul_fix().</div><div class='ctx'> </div><div class='del'>-	* file.c: Change AND condition to nested condition.</div><div class='add'>+	* numeric.c (fix_mul): ditto.</div><div class='ctx'> </div><div class='del'>-Thu May  1 00:36:26 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='add'>+	* time.c (mul): ditto.</div><div class='ctx'> </div><div class='del'>-	* file.c (FSTATFS): check availability of struct statfs and</div><div class='del'>-	  struct statvfs in addition to fstatfs(2) and fstatvfs(2).</div><div class='del'>-	  This fixes error in Solaris. [Bug #9788] [ruby-dev:48145]</div><div class='add'>+Sun Mar 20 18:53:49 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Apr 30 19:46:23 2014  Narihiro Nakamura  &lt;authornari@gmail.com&gt;</div><div class='add'>+	* numeric.c (fix_gt, fix_ge, fix_lt, fix_le): optimize comparisons</div><div class='add'>+	  Fixnum against Bignum by rb_big_cmp in inversed order without</div><div class='add'>+	  new Bignum instance.</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_after_sweep): suppress unnecessary expanding heap.</div><div class='del'>-	  Tomb heap pages are freed pages here, so expanding heap is</div><div class='del'>-	  not required.</div><div class='add'>+Sun Mar 20 18:44:52 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Apr 30 17:58:40 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* time.c (add): remove FIXABLE() which is in LONG2NUM().</div><div class='ctx'> </div><div class='del'>-	* vm.c (invoke_block_from_c): add VM_FRAME_FLAG_BMETHOD to record</div><div class='del'>-	  it is bmethod frame.</div><div class='add'>+	* time.c (sub): ditto.</div><div class='ctx'> </div><div class='del'>-	* vm.c (vm_exec): invoke RUBY_EVENT_RETURN event if rollbacked frame</div><div class='del'>-	  is VM_FRAME_FLAG_BMETHOD.</div><div class='del'>-	  [Bug #9759]</div><div class='add'>+	* time.c (mul): ditto.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_settracefunc.rb: add a test for TracePoint/set_trace_func.</div><div class='add'>+Sun Mar 20 04:46:02 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_core.h: rename rb_thread_t::passed_me to</div><div class='del'>-	  rb_thread_t::passed_bmethod_me to clarify the usage.</div><div class='add'>+	* bignum.c (rb_big_cmp): reduce the code.</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (vm_call_bmethod_body): use renamed member.</div><div class='add'>+	* bignum.c (rb_big_eq): If normalized bignum is still bignum,</div><div class='add'>+	  it must be larger than fixnum.</div><div class='ctx'> </div><div class='del'>-Wed Apr 30 17:06:49 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Mar 20 00:58:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (rb_id_attrset): pin down dynamic symbol only. it is</div><div class='del'>-	  possible that attrset ID can be registered as a static symbol</div><div class='del'>-	  after the corresponding attrget ID has been registered as a</div><div class='del'>-	  dynamic, and then the latter may be collected.</div><div class='del'>-	  [ruby-core:62226] [Bug #9787]</div><div class='add'>+	* include/ruby/intern.h (rb_big_odd_p, rb_big_even_p): move to</div><div class='add'>+	  internal.h so that they are exported only for ruby itself.</div><div class='ctx'> </div><div class='del'>-Tue Apr 29 14:17:57 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* internal.h (rb_big_odd_p, rb_big_even_p): ditto.</div><div class='ctx'> </div><div class='del'>-	* lib/tmpdir.rb: Rescue LoadError on etc.so for miniruby.</div><div class='del'>-	  Revert r45707, r45711, r45717.</div><div class='add'>+Sat Mar 19 21:56:23 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Apr 29 12:50:02 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/lib/test/unit.rb (Test::Unit::StatusLine#failed): defer</div><div class='add'>+	  failed messages until the end in verbose mode, to get rid of</div><div class='add'>+	  interleaving failures with progress messages.</div><div class='ctx'> </div><div class='del'>-	* lib/fileutils.rb: Don't need to define fu_get_gid and fu_get_gid in</div><div class='del'>-	  rescue LoadError on 'etc'.</div><div class='add'>+Sat Mar 19 21:53:35 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Apr 29 10:21:38 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+	* numeric.c (fix_cmp): invert the result as the comparison is</div><div class='add'>+	  inverted.</div><div class='ctx'> </div><div class='del'>-	* parse.y (symbols_i): like r45492, call rb_gc_resurrect().</div><div class='add'>+Sat Mar 19 18:32:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Apr 29 04:29:05 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='add'>+	* numeric.c (int_to_f): raise NotImplementedError when a receiver</div><div class='add'>+	  class is unknown.</div><div class='ctx'> </div><div class='del'>-	* file.c (HAVE_STRUCT_STATFS_T_F_FSTYPENAME): Add new macro for</div><div class='del'>-	  statfs_t.</div><div class='del'>-	* file.c (HAVE_STRUCT_STATFS_T_F_TYPE): ditto.</div><div class='add'>+	* test/-ext-/integer/test_my_integer.rb (test_my_integer_to_f): modify</div><div class='add'>+	  a test for the above change.</div><div class='ctx'> </div><div class='del'>-	* file.c (rb_io_statfs): check FSTATFS macro only instead of</div><div class='del'>-	  HAVE_FSTATFS and HAVE_FSTATVFS.</div><div class='add'>+Sat Mar 19 18:21:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* file.c (statfs_type): use new macro.</div><div class='del'>-	* file.c (statfs_fstypename): ditto.</div><div class='del'>-	* file.c (statfs_inspect): ditto.</div><div class='add'>+	* bignum.c (Bignum#&lt;=&gt;): remove it because they are unified with</div><div class='add'>+	  Integer#&lt;=&gt;.</div><div class='ctx'> </div><div class='del'>-Tue Apr 29 00:20:26 2014  Rajarshi Das  &lt;rajarshid@cybage.com&gt;</div><div class='add'>+	* numeric.c (Integer#&lt;=&gt;, Fixnum#&lt;=&gt;): move &lt;=&gt; method from Fixnum to</div><div class='add'>+	  Integer.</div><div class='ctx'> </div><div class='del'>-	* bootstraptest/test_literal.rb: fix typo of "dynamic".  [ci skip]</div><div class='add'>+	* numeric.c (int_cmp): add this method for Integer#&lt;=&gt;.</div><div class='ctx'> </div><div class='del'>-	* regexp.rdoc: fix typo of "organized".  [ci skip]</div><div class='add'>+	* test/-ext-/integer/test_my_integer.rb (test_my_integer_cmp): add a</div><div class='add'>+	  test to examine Integer#&lt;=&gt; for unknown subclasses.</div><div class='ctx'> </div><div class='del'>-	* lib/session.rb: fix typo of "recognized".  [ci skip]</div><div class='add'>+Sat Mar 19 14:46:18 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Apr 28 21:40:27 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* iseq.c (rb_iseq_compile_with_option): make the parser in mild</div><div class='add'>+	  error.</div><div class='ctx'> </div><div class='del'>-	* configure.in (HAVE_STRUCT_STATFS_F_TYPE): check struct statfs.f_type</div><div class='del'>-	  to support OpenBSD.</div><div class='add'>+	* load.c (rb_load_internal0): ditto.</div><div class='ctx'> </div><div class='del'>-	* file.c (statfs_type): use above macro to switch.</div><div class='add'>+	* parse.y (yycompile0): return the error message within the error</div><div class='add'>+	  to be raised.  [Feature #11951]</div><div class='ctx'> </div><div class='del'>-	* file.c (statfs_inspect): ditto.</div><div class='add'>+	* parse.y (parser_compile_error): accumulate error messages in the</div><div class='add'>+	  error_buffer.</div><div class='ctx'> </div><div class='del'>-Mon Apr 28 18:06:08 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Sat Mar 19 03:57:13 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: check struct statvfs and struct statvfs.f_fstypename.</div><div class='add'>+	* time.c (LOCALTIME): organize #ifdefs.</div><div class='ctx'> </div><div class='del'>-	* configure.in: on NetBSD fstatfs is obsoleted.</div><div class='add'>+	* time.c (GMTIME): define only ifndef HAVE_STRUCT_TM_TM_GMTOFF.</div><div class='ctx'> </div><div class='del'>-	* file.c: support NetBSD for File::Statfs.</div><div class='add'>+Sat Mar 19 03:53:31 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Apr 28 17:42:42 2014  Narihiro Nakamura  &lt;authornari@gmail.com&gt;</div><div class='add'>+	* configure.in (rb_cv_member_struct_tm_tm_gmtoff): For Linux (glibc)</div><div class='add'>+	  define _BSD_SOURCE for time.h to define struct tm.tm_gmtoff.</div><div class='ctx'> </div><div class='del'>-	* gc.c: This argument must be a pointer.</div><div class='add'>+	* time.c: define _BSD_SOURCE at the top.</div><div class='ctx'> </div><div class='del'>-Mon Apr 28 17:40:15 2014  Narihiro Nakamura  &lt;authornari@gmail.com&gt;</div><div class='add'>+Sat Mar 19 03:00:50 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c: Fix typos. These are undefined variables.</div><div class='add'>+	* test/-ext-/time/test_new.rb (test_timespec_new): change a gmtoff</div><div class='add'>+	  test to a better one that does not depend on whether the current</div><div class='add'>+	  time is in summer time or not.</div><div class='ctx'> </div><div class='del'>-Sun Apr 27 19:39:42 2014  Tadayoshi Funaba  &lt;tadf@dotrb.org&gt;</div><div class='add'>+Fri Mar 19 00:00:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/date/date_strptime.c (date__strptime_internal): do not</div><div class='del'>-	  overwrite century.</div><div class='add'>+	* bignum.c (rb_big_to_f, Bignum#to_f): removed them because they are</div><div class='add'>+	  unified with int_to_f and Integer#to_f.</div><div class='ctx'> </div><div class='del'>-Sat Apr 26 11:50:08 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* numeric.c (int_to_f): treat Bignum values directly.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_enum.rb (test_flat_map): Added test for flat_map.</div><div class='del'>-	  Contribute from @igaiga. [fix GH-598]</div><div class='add'>+Fri Mar 18 23:41:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Apr 26 10:55:33 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (int_to_f, fix_to_f): rename fix_to_f to int_to_f, and add</div><div class='add'>+	  treatment for subclasses which don't have definitions of to_f method.</div><div class='ctx'> </div><div class='del'>-	* compile.c (compile_array_): make copy a first hash not to modify</div><div class='del'>-	  the argument itself.  keyword splat should be non-destructive.</div><div class='del'>-	  [ruby-core:62161] [Bug #9776]</div><div class='add'>+	* numeric.c (Integer#to_f, Fixnum#to_f): move to_f method from Fixnum</div><div class='add'>+	  to Integer.</div><div class='ctx'> </div><div class='del'>-Sat Apr 26 08:05:36 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* ext/-test-/integer/my_integer.c: define helper class for testing</div><div class='add'>+	  to_f method for a subclass of Integer.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_process.rb (test_rlimit_nofile): Don't limit</div><div class='del'>-	  RLIMIT_NOFILE too small.</div><div class='del'>-	  This fix sporadic "[ASYNC BUG] thread_timer: select" on GNU/Linux.</div><div class='add'>+	* ext/-test-/integer/extconf.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Fri Apr 25 22:54:34 2014  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='add'>+	* ext/-test-/integer/init.c: ditto.</div><div class='ctx'> </div><div class='del'>-	* lib/fileutils.rb (rmdir): rescue Errno::EEXIST in addition to</div><div class='del'>-	  ENOTEMPTY (and ENOENT), because SUSv3 describes that "If the</div><div class='del'>-	  directory is not an empty directory, rmdir() shall fail and set</div><div class='del'>-	  errno to [EEXIST] or [ENOTEMPTY]" and Solaris uses EEXIST.</div><div class='del'>-	  [Bug #9571] [ruby-dev:48017]</div><div class='add'>+	* test/-ext-/integer/test_my_integer.rb: examine to_f method for a</div><div class='add'>+	  subclass of Integer.</div><div class='ctx'> </div><div class='del'>-Fri Apr 25 19:16:30 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Fri Mar 18 22:32:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/webrick/utils.rb: Don't rescue LoadError for 'etc' extension.</div><div class='add'>+	* include/ruby/intern.h (rb_big_hash): Move to internal.h.</div><div class='ctx'> </div><div class='del'>-Fri Apr 25 14:55:59 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* internal.h: ditto.</div><div class='ctx'> </div><div class='del'>-	* configure.in (rb_cv_func___builtin_unreachable): try with an</div><div class='del'>-	  external variable not only by a warning, which might not be</div><div class='del'>-	  shown due to the optimization.  [ruby-core:61647] [Bug #9665]</div><div class='add'>+Fri Mar 18 22:10:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Apr 25 13:11:49 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* bignum.c (Bignum#eql?): remove its definition because it is unified</div><div class='add'>+	  with Numeric#eql?.</div><div class='ctx'> </div><div class='del'>-	* configure.in: NetBSD's ksh, used by configure, needs escapes.</div><div class='add'>+	* numeric.c (num_eql): treat Bignum values directly.</div><div class='ctx'> </div><div class='del'>-Fri Apr 25 12:51:08 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Fri Mar 18 21:57:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: correct pthread_setname_np's prototype on NetBSD.</div><div class='del'>-	  [Bug #9586]</div><div class='add'>+	* bignum.c (rb_big_to_s, Bignum#to_s): remove its definition because</div><div class='add'>+	  it is unified with Integer#to_s.</div><div class='ctx'> </div><div class='del'>-Thu Apr 24 23:17:25 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (int_to_s): treat Bignum values directly.</div><div class='ctx'> </div><div class='del'>-	* lib/fileutils.rb (fu_get_uid, fu_get_gid): Etc.getpwnam/getgrnam may</div><div class='del'>-	  returns nil.</div><div class='add'>+Fri Mar 18 21:30:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/webrick/utils.rb (su): ditto.</div><div class='add'>+	* numeric.c (int_to_s): Move from fix_to_s.</div><div class='ctx'> </div><div class='del'>-Thu Apr 24 22:55:22 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* numeric.c (Integer#to_s): Move from Fixnum#to_s.</div><div class='ctx'> </div><div class='del'>-	* bootstraptest/test_io.rb: Add etc.so to $" before require 'tmpdir'.</div><div class='add'>+Fri Mar 18 16:22:24 2016  Victor Nawothnig  &lt;Victor.Nawothnig@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Thu Apr 24 21:09:55 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='add'>+	* parse.y (parse_numvar): NTH_REF must be less than a half of</div><div class='add'>+	  INT_MAX, as it is left-shifted to be ORed with back-ref flag.</div><div class='add'>+	  [ruby-core:74444] [Bug#12192] [Fix GH-1296]</div><div class='ctx'> </div><div class='del'>-	* man/ruby.1: fix broken link.</div><div class='add'>+Fri Mar 18 12:25:30 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Apr 24 20:53:02 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* gc.c (tick): fix missing close parenthesis.  [Fix GH-1291]</div><div class='ctx'> </div><div class='del'>-	* lib/tmpdir.rb: Don't need to rescue LoadError for etc.so.</div><div class='add'>+Fri Mar 18 10:24:12 2016  Naotoshi Seo  &lt;sonots@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Thu Apr 24 17:39:53 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* ext/date/date_core.c (datetime_to_time): preserve timezone info</div><div class='add'>+	  [Bug #12189] [Fix GH-1295]</div><div class='ctx'> </div><div class='del'>-	* file.c (statfs_inspect): suppress warnings.</div><div class='del'>-	  assume those values won't be larger than LONG_LONG_MAX.</div><div class='add'>+Fri Mar 18 10:17:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Apr 24 11:53:28 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* bignum.c (rb_big_hash): make it public function to be available in</div><div class='add'>+	  other source files, and remove documentation comment for Bignum#hash.</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/ossl_asn1.c (ossl_asn1_initialize): SYMID on a value</div><div class='del'>-	  other than Symbol is an undefined behavior.  fix up r31699.</div><div class='del'>-	  [ruby-core:62142] [Bug #9771]</div><div class='add'>+	* bignum.c (Bignum#hash): remove its definition because it is unified</div><div class='add'>+	  with Object#hash.</div><div class='ctx'> </div><div class='del'>-Thu Apr 24 11:21:37 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* include/ruby/intern.h (rb_big_hash): add a prototype declaration.</div><div class='ctx'> </div><div class='del'>-	* parse.y (rb_sym2id, rb_sym2id_without_pindown): return 0 for</div><div class='del'>-	  non-symbol values, for the time being.</div><div class='add'>+	* hash.c (any_hash): treat Bignum values directly.</div><div class='ctx'> </div><div class='del'>-Thu Apr 24 05:50:13 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Fri Mar 18 02:35:12 2016  Naotoshi Seo  &lt;sonots@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (dsym_node_gen): like r45492, call rb_gc_resurrect().</div><div class='add'>+	* lib/time.rb (parse, strptime): Fix Time.parse/strptime does not</div><div class='add'>+	  have compatibility with DateTime.parse/strptime in terms of parsing</div><div class='add'>+	  timezone [Bug #12190] [Fix GH-1297]</div><div class='ctx'> </div><div class='del'>-Wed Apr 23 20:36:22 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Fri Mar 18 02:17:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/etc/extconf.rb: Build ext/etc unconditionally.</div><div class='add'>+	* numeric.c (fix_zero_p, fix_even_p, fix_odd_p): remove needless</div><div class='add'>+	  functions.</div><div class='ctx'> </div><div class='del'>-Wed Apr 23 14:10:50 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Fri Mar 18 02:15:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* file.c (statfs_fsid): remove statfs.f_fsid because it doesn't return</div><div class='del'>-	  meaningful value portably. http://togetter.com/li/658517</div><div class='add'>+	* numeric.c (int_even_p): treat Fixnum and Bignum values directly.</div><div class='ctx'> </div><div class='del'>-Wed Apr 23 11:03:41 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Mar 18 02:07:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/stringio/stringio.c (strio_write): use rb_str_append to</div><div class='del'>-	  reuse coderange bits other than ASCII-8BIT, and keep</div><div class='del'>-	  taintedness.  [ruby-dev:48118] [Bug #9769]</div><div class='add'>+	* bignum.c (Bignum#even?, Bignum#odd?): remove definitions</div><div class='add'>+	  because they are unified with Integer#even? and Integer#odd?.</div><div class='ctx'> </div><div class='del'>-Wed Apr 23 00:43:00 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (Fixnum#zero?, Fixnum#even?, Fixnum#odd?): remove</div><div class='add'>+	  definitions because they are unified with Numeric#zero?,</div><div class='add'>+	  Integer#even?, and Integer#odd?.</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c, include/ruby/win32.h (ustatfs): implementation of</div><div class='del'>-	  statfs(2) clone. [EXPERIMENTAL]</div><div class='add'>+	* numeric.c (num_zero_p, int_odd_p): treat Fixnum and</div><div class='add'>+	  Bignum values directly.</div><div class='ctx'> </div><div class='del'>-	* file.c (rb_io_statfs): use above function.</div><div class='add'>+	* test/ruby/test_integer.rb (test_odd_p_even_p): remove meaningless</div><div class='add'>+	  test case.</div><div class='ctx'> </div><div class='del'>-	* configure.in, win32/Makefile.sub (struct statfs): available.</div><div class='add'>+Fri Mar 18 01:51:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Apr 22 23:56:24 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* bignum.c (rb_big_even_p, rb_big_odd_p): make them public functions</div><div class='add'>+	  to be available in other source files.</div><div class='ctx'> </div><div class='del'>-	* file.c (rb_io_stafs): use statfs(2) if fstatfs(2) is unavailable.</div><div class='add'>+	* include/ruby/intern.h (rb_big_even_p, rb_big_odd_p): add prototype</div><div class='add'>+	  declarations.</div><div class='ctx'> </div><div class='del'>-	* configure.in (fstatfs): check it.</div><div class='add'>+Fri Mar 18 00:25:56 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Apr 22 22:15:51 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* enum.c (ary_inject_op): Implement the specialized code for sum of</div><div class='add'>+	  float numbers.</div><div class='ctx'> </div><div class='del'>-	* file.c (rb_io_statfs): need to define even if the system doesn't have</div><div class='del'>-	  fstatfs(2).</div><div class='add'>+Fri Mar 18 00:15:05 2016  Yusuke Endoh  &lt;mame@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_file.rb (TestFile#test_statfs): skip if IO#stafs is not</div><div class='del'>-	  implemented.</div><div class='add'>+	* numeric.c (num_step): use rb_equal for zero check. rb_num_coerce_cmp</div><div class='add'>+	  created an object which caused extra overhead.</div><div class='ctx'> </div><div class='del'>-Tue Apr 22 19:32:48 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Thu Mar 17 22:21:34 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* file.c: newly added a class File::Statfs. (experimental)</div><div class='add'>+	* include/ruby/ruby.h (RB_GC_GUARD_PTR): remove intermediate</div><div class='add'>+	  macro, and expand for each RB_GC_GUARD.  [Fix GH-1293]</div><div class='ctx'> </div><div class='del'>-Tue Apr 22 08:22:33 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Thu Mar 17 22:08:33 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (objspace_malloc_increase): don't cause GC by malloc_increase</div><div class='del'>-	  when memop type is MEMOP_TYPE_REALLOC.</div><div class='add'>+	* compile.c (iseq_specialized_instruction): move specialization</div><div class='add'>+	  for opt_newarray_max/min from translation phase.</div><div class='ctx'> </div><div class='del'>-	  GC at realloc is not well maintained.</div><div class='del'>-	  We need a time to make it safe.</div><div class='del'>-	  [ruby-dev:48117]</div><div class='add'>+Thu Mar 17 21:52:09 2016  Yusuke Endoh  &lt;mame@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Apr 22 06:54:15 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* array.c, enum.c: make rdoc format consistent.</div><div class='ctx'> </div><div class='del'>-	* gc.c (objspace_malloc_increase): run full mark if 0x04 bit is</div><div class='del'>-	  set in ruby_gc_stress.  [ruby-core:62103] [Feature #9761]</div><div class='add'>+Thu Mar 17 21:47:57 2016  Yusuke Endoh  &lt;mame@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (objspace_malloc_increase): run GC after realloc not only</div><div class='del'>-	  malloc and calloc by GC.stress.  [ruby-core:62103] [Feature #9761]</div><div class='add'>+	* NEWS: add Array#max, #min, and the optimization.  [Feature #12172]</div><div class='ctx'> </div><div class='del'>-Mon Apr 21 19:12:20 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Thu Mar 17 21:45:02 2016  Yusuke Endoh  &lt;mame@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_coderange_scan_restartable): coderange is always</div><div class='del'>-	  ENC_CODERANGE_VALID if the string is ASCII-8BIT and already has a non</div><div class='del'>-	  ASCII character.</div><div class='add'>+	* compile.c (NODE_CALL): add optimization shortcut for Array#max/min.</div><div class='add'>+	  Now `[x, y].max` is optimized so that a temporal array object is not</div><div class='add'>+	  created in some condition.  [Feature #12172]</div><div class='ctx'> </div><div class='del'>-Mon Apr 21 19:02:44 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* insns.def (opt_newarray_max, opt_newarray_min): added.</div><div class='ctx'> </div><div class='del'>-	* string.c (coderange_scan): remove useless condition `p &lt; e` after</div><div class='del'>-	  search_nonascii.</div><div class='add'>+Thu Mar 17 21:35:52 2016  Yusuke Endoh  &lt;mame@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_coderange_scan_restartable): ditto.</div><div class='add'>+	* array.c (rb_ary_max, rb_ary_min): implement Array#max and min with</div><div class='add'>+	  arguments.  replace super call with rb_nmin_run.</div><div class='ctx'> </div><div class='del'>-Mon Apr 21 18:55:21 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* enum.c (nmin_run): exported (as rb_nmin_run).</div><div class='ctx'> </div><div class='del'>-	* ext/-test-/string/coderange.c: add Bug::String.new#coderange_scan</div><div class='del'>-	  to explicitly scan coderange.</div><div class='add'>+	* internal.h: added a prototype for rb_nmin_run.</div><div class='ctx'> </div><div class='del'>-Mon Apr 21 18:19:35 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Thu Mar 17 21:24:52 2016  Yusuke Endoh  &lt;mame@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (coderange_scan): remove unused logic.</div><div class='add'>+	* array.c (rb_ary_max, rb_ary_min): implement a block by itself instead</div><div class='add'>+	  of delegating Enumerable#max/min.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_coderange_scan_restartable): ditto.</div><div class='add'>+Thu Mar 17 21:09:34 2016  Yusuke Endoh  &lt;mame@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Apr 21 14:11:48 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* array.c (rb_ary_max, rb_ary_min): Array#max and Array#min added.</div><div class='add'>+	  [Feature #12172]</div><div class='ctx'> </div><div class='del'>-	* ext/stringio/stringio.c (strio_putc): fix for non-ascii</div><div class='del'>-	  encoding, like as IO#putc.  [ruby-dev:48114] [Bug #9765]</div><div class='add'>+	* internal.h (OPTIMIZED_CMP): moved from enum.c so that array.c can</div><div class='add'>+	  use it.</div><div class='ctx'> </div><div class='del'>-Sun Apr 20 12:57:15 2014  Masaya Tarui  &lt;tarui@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/test_array.rb (test_max, test_min): tests for Array#max</div><div class='add'>+	  and Array#min.</div><div class='ctx'> </div><div class='del'>-	* st.c (st_foreach_check): change start point of search at check</div><div class='del'>-	  from top to current. [ruby-dev:48047] [Bug #9646]</div><div class='add'>+	* test/ruby/test_enum.rb (test_max, test_min): revised a bit to test</div><div class='add'>+	  Enumerable#max and #min explicitly.</div><div class='ctx'> </div><div class='del'>-Sun Apr 20 08:41:33 2014  Andrew DeMaria  &lt;ademariad@gmail.com&gt;</div><div class='add'>+Thu Mar 17 21:02:42 2016  Yusuke Endoh  &lt;mame@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/mkmf.rb (link_command, libpathflag, create_makefile): prefer</div><div class='del'>-	  user specified `$LIBPATH` than `$DEFLIBPATH`.  [ruby-core:62100]</div><div class='del'>-	  [ruby-trunk - Bug #9760]</div><div class='add'>+	* internal.c: struct cmp_opt_data added for refactoring out a data</div><div class='add'>+	  structure for CMP_OPTIMIZABLE</div><div class='ctx'> </div><div class='del'>-Sun Apr 20 06:01:18 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* array.c (struct ary_sort_data): use struct cmp_opt_data.</div><div class='ctx'> </div><div class='del'>-	* gc.c (rb_gc_writebarrier): drop special case for big hash/array</div><div class='del'>-	  [Bug #9518]</div><div class='add'>+	* enum.c (struct min_t, max_t, min_max_t): use struct cmp_opt_data.</div><div class='ctx'> </div><div class='del'>-Sat Apr 19 15:38:29 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Mar 17 20:55:21 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (primary): flush cmdarg flags inside left-paren in a</div><div class='del'>-	  command argument, to allow parenthesed do-block as an argument</div><div class='del'>-	  without arguments parentheses.  [ruby-core:61950] [Bug #9726]</div><div class='add'>+	* enum.c (ary_inject_op): Extracted from enum_inject.</div><div class='ctx'> </div><div class='del'>-Sat Apr 19 10:07:24 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu Mar 17 18:39:04 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* internal.h (struct RBignum): Use size_t for len.</div><div class='add'>+	* enum.c (enum_inject): Implement the specialized code for sum of</div><div class='add'>+	  integers including Bignums.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/intern.h (rb_big_new): Use size_t instead of long to</div><div class='del'>-	  specify the size of bignum.</div><div class='del'>-	  (rb_big_resize): Ditto.</div><div class='add'>+	* internal.h (rb_fix_plus): Declared to be usable from enum_inject.</div><div class='ctx'> </div><div class='del'>-	* bignum.c: Follow above changes.</div><div class='add'>+	* numeric.c (rb_fix_plus): Defined.</div><div class='ctx'> </div><div class='del'>-	* rational.c: Follow above changes.</div><div class='add'>+Thu Mar 17 17:20:28 2016  Anton Davydov  &lt;antondavydov.o@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* marshal.c: Follow above changes.</div><div class='add'>+	* thread_sync.c: [DOC] Update documentation for Queue class</div><div class='add'>+	  description.  [Fix GH-1292]</div><div class='ctx'> </div><div class='del'>-Sat Apr 19 00:32:07 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu Mar 17 17:14:51 2016  Dinar Valeev  &lt;dvaleev@suse.com&gt;</div><div class='ctx'> </div><div class='del'>-	* numeric.c (rb_num2long): Returns a long.</div><div class='del'>-	  (rb_num2ulong): Returns a unsigned long.</div><div class='add'>+	* gc.c (tick): Use __builtin_ppc_get_timebase for POWER arch.</div><div class='add'>+	  [Fix GH-1291]</div><div class='ctx'> </div><div class='del'>-	* bignum.c (rb_big2long): Returns a long.</div><div class='del'>-	  (rb_big2ulong): Returns a unsigned long.</div><div class='add'>+Thu Mar 17 11:51:48 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* include/ruby/intern.h: Follow above changes.</div><div class='add'>+	* lib/securerandom.rb (gen_random): to avoid blocking on Windows.</div><div class='add'>+	  On Windows OpenSSL RAND_bytes (underlying implementation is</div><div class='add'>+	  RAND_poll in crypto/rand/rand_win.c) may be blocked at</div><div class='add'>+	  NetStatisticsGet.</div><div class='add'>+	  https://wiki.openssl.org/index.php/Random_Numbers#Windows_Issues</div><div class='add'>+	  Instead of this, use Random.raw_seed directly (whose implementation</div><div class='add'>+	  CryptGenRandom is one of the source of</div><div class='add'>+	  entropy of RAND_poll on Windows).</div><div class='add'>+	  https://wiki.openssl.org/index.php/Random_Numbers</div><div class='add'>+	  Note: CryptGenRandom function is PRNG and doesn't check its entropy,</div><div class='add'>+	  so it won't block. [Bug #12139]</div><div class='add'>+	  https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa379942.aspx</div><div class='add'>+	  https://tools.ietf.org/html/rfc4086#section-7.1.3</div><div class='add'>+	  https://eprint.iacr.org/2007/419.pdf</div><div class='add'>+	  http://www.cs.huji.ac.il/~dolev/pubs/thesis/msc-thesis-leo.pdf</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h: Follow above changes.</div><div class='del'>-	  (rb_num2long_inline): No need to cast.</div><div class='del'>-	  (rb_num2ulong_inline): Ditto.</div><div class='add'>+Thu Mar 17 12:09:00 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Apr 19 00:17:20 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* enc/unicode.c: Fixed two macro definitions.</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Test cases that detected</div><div class='add'>+	  the above bugs.</div><div class='ctx'> </div><div class='del'>-	* string.c (SHARABLE_SUBSTRING_P): predicate if substring can be</div><div class='del'>-	  shared with the original string.  true if just at the end of the</div><div class='del'>-	  original string, for the time being.  all substring will be able to</div><div class='del'>-	  be shared in the future.</div><div class='add'>+Thu Mar 17 11:36:27 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Apr 18 21:48:24 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/socket/option.c (inspect_tcpi_msec): more accurate condition</div><div class='add'>+	  for TCPI msec member inspection function.</div><div class='add'>+	  [ruby-core:74388] [Bug #12185]</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_new_frozen): consider the shared string at</div><div class='del'>-	  middle.</div><div class='add'>+Thu Mar 17 08:13:43 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_subseq, rb_str_substr, str_byte_substr): share</div><div class='del'>-	  middle of a string.</div><div class='add'>+	* test/-ext-/time/test_new.rb (test_timespec_new): Time#gmtoff values</div><div class='add'>+	  are the same only when both or neither of the Time objects are in</div><div class='add'>+	  summer time (daylight-saving time).</div><div class='ctx'> </div><div class='del'>-Fri Apr 18 15:40:05 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Thu Mar 17 07:17:36 2016  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c: use uintptr_t instead of VALUE because they are not ruby</div><div class='add'>+	* marshal.c (r_object0):  raise ArgumentError when linking to undefined</div><div class='ctx'> 	  object.</div><div class='ctx'> </div><div class='del'>-Fri Apr 18 14:51:42 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c: check str_strlen's argument, and add comment or</div><div class='del'>-	  use NULL if simply it uses str's enc.</div><div class='del'>-</div><div class='del'>-Fri Apr 18 14:32:40 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (str_strlen): use enc_strlen if the coderange is known.</div><div class='del'>-</div><div class='del'>-Fri Apr 18 14:21:21 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (enc_strlen): move UTF-8 optimization from str_strlen to</div><div class='del'>-	  enc_strlen.</div><div class='del'>-</div><div class='del'>-Fri Apr 18 08:50:18 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (rb_cv_getcwd_malloc): check if getcwd allocates</div><div class='del'>-	  buffer if NULL is given [ruby-core:62072] [Bug #9752]</div><div class='del'>-</div><div class='del'>-Thu Apr 17 16:28:10 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* prelude.rb: [DOC] Update Thread::exclusive docs by @stevenharman.</div><div class='del'>-</div><div class='del'>-Thu Apr 17 10:03:53 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/fileutils.rb (FileUtils#copy_entry): update rdoc about</div><div class='del'>-	  preserve option and permissions, following r31123.</div><div class='del'>-	  [ruby-core:62065] [Bug #9748]</div><div class='del'>-</div><div class='del'>-Wed Apr 16 23:47:36 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* enum.c (dont_recycle_block_arg): fix condition to recycle block</div><div class='del'>-	  argument.  lambda with rest can get internal array directly.</div><div class='del'>-	  [ruby-core:62060] [Bug #9749]</div><div class='del'>-</div><div class='del'>-Wed Apr 16 09:51:16 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/ossl_pkey.c (ossl_pkey_verify): as EVP_VerifyFinal()</div><div class='del'>-	  finalizes only a copy of the digest context, the context must be</div><div class='del'>-	  cleaned up after initialization by EVP_MD_CTX_cleanup() or a</div><div class='del'>-	  memory leak will occur.  [ruby-core:62038] [Bug #9743]</div><div class='del'>-</div><div class='del'>-Tue Apr 15 19:36:42 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/win32.h (rb_w32_cmdvector): removed.</div><div class='del'>-</div><div class='del'>-	* win32/win32.c (rb_w32_sysinit): use WCHAR version of GetCommandLine()</div><div class='del'>-	  internally.</div><div class='del'>-</div><div class='del'>-	* win32/win32.c (w32_cmdvector): renamed from rb_w32_cmdvector.  use</div><div class='del'>-	  WCHAR* instead of char* internally.</div><div class='del'>-</div><div class='del'>-	these changes are expected to not changing the behavior yet.</div><div class='del'>-</div><div class='del'>-Tue Apr 15 19:26:05 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/extmk.rb: Re-generate extmk.mk and dummy makefiles only if</div><div class='del'>-	  really required.</div><div class='del'>-	  This fixes a problem to run multiple test-all concurrently as:</div><div class='del'>-	  make test-all &amp; make test-all &amp; make test-all &amp; ...</div><div class='del'>-</div><div class='del'>-Tue Apr 15 12:49:53 2014  Sam Rawlins  &lt;sam.rawlins@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* enum.c (enum_each_slice, enum_each_cons): make more efficient by</div><div class='del'>-	  allocating less and recycling block argument arrays if possible.</div><div class='del'>-	  [Fixes GH-596]</div><div class='del'>-</div><div class='del'>-Mon Apr 14 18:44:45 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* addr2line.c (fill_lines): get base addrs in fill_lines to use it</div><div class='del'>-	  with dladdr_fbases introduced at r45563.</div><div class='del'>-	  it didn't get before if the executable is not pie.</div><div class='del'>-</div><div class='del'>-Mon Apr 14 18:05:48 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* addr2line.c (main_exe_path): support FreeBSD.</div><div class='del'>-	  At least sh, csh, tcsh, bash, and zsh sets realpath of the main</div><div class='del'>-	  executable for dladdr, but gdb doesn't.</div><div class='del'>-</div><div class='del'>-Mon Apr 14 17:20:10 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* proc.c (umethod_bind): use the ancestor iclass instead of new</div><div class='del'>-	  iclass to get rid of infinite recursion, if the defined module</div><div class='del'>-	  is already included.  [ruby-core:62014] [Bug #9721]</div><div class='del'>-</div><div class='del'>-Sun Apr 13 12:46:58 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* bignum.c (SIZEOF_BDIGIT): Renamed from SIZEOF_BDIGITS.</div><div class='del'>-</div><div class='del'>-	* internal.h: Ditto.</div><div class='del'>-</div><div class='del'>-	* marshal.c: Ditto.</div><div class='del'>-</div><div class='del'>-	* rational.c: Ditto.</div><div class='del'>-</div><div class='del'>-Sun Apr 13 10:18:09 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* common.mk: Unused target, $(MKMAIN_CMD), removed.</div><div class='del'>-</div><div class='del'>-	* Makefile.in (MKMAIN_CMD): Unused macro removed.</div><div class='del'>-</div><div class='del'>-	* win32/Makefile.sub (MKMAIN_CMD): Ditto.</div><div class='del'>-</div><div class='del'>-Sat Apr 12 22:11:10 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (sym_to_proc), proc.c (rb_block_clear_env_self): clear</div><div class='del'>-	  caller's self which is useless, so that it can get collected.</div><div class='del'>-	  [Fixes GH-592]</div><div class='del'>-</div><div class='del'>-Sat Apr 12 09:26:48 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/ossl_ocsp.c:  [DOC] Document OpenSSL::OCSP.</div><div class='del'>-</div><div class='del'>-Fri Apr 11 18:52:38 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* array.c (ARY_SET): added.</div><div class='del'>-</div><div class='del'>-	  ARY_SET() is same functionality of RARRAY_ASET(), but</div><div class='del'>-	  it has an assertion (`ary' doesn't have shared array).</div><div class='del'>-</div><div class='del'>-Fri Apr 11 16:54:26 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* array.c: make shared arrays WB-protected objects.</div><div class='del'>-</div><div class='del'>-	  Shared arrays were WB-unprotected object because</div><div class='del'>-	  sharing array can modify shared array's buffer</div><div class='del'>-	  if it occupied shared array.</div><div class='del'>-</div><div class='del'>-	  [sharing array (ary)] -&gt; [shared array (shared)] -&gt; &lt;buff&gt;</div><div class='del'>-	                |                                       A</div><div class='del'>-	                +---------------------------------------+</div><div class='del'>-	             write `buff' with WB(ary, &amp;buff[i], obj)</div><div class='del'>-	             -&gt; if `ary' and `shared' are old, then only `ary'</div><div class='del'>-	                will be remembered.</div><div class='del'>-	             -&gt; traverse from `ary'. But `shared' is old, so</div><div class='del'>-	                that written `obj' is not marked.</div><div class='del'>-</div><div class='del'>-	  It cause WB miss so that shared arrays were WB-unprotected.</div><div class='del'>-	  (WB-unprotected objects are marked everytime if it is living)</div><div class='del'>-</div><div class='del'>-	  This patch insert WB() for `shared' if it is needed.</div><div class='del'>-</div><div class='del'>-Fri Apr 11 15:05:26 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* proc.c (rb_method_call_with_block, umethod_bind): call with</div><div class='del'>-	  IClass including the module for a module instance method.</div><div class='del'>-	  [ruby-core:61936] [Bug #9721]</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c (vm_search_super_method): allow bound</div><div class='del'>-	  UnboundMethod case.</div><div class='del'>-</div><div class='del'>-Fri Apr 11 12:02:30 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* addr2line.c (rb_dump_backtrace_with_lines): set base address</div><div class='del'>-	  which is retrieved from dladdr to dladdr_fbases, to skip already</div><div class='del'>-	  parsed objects.</div><div class='del'>-</div><div class='del'>-Fri Apr 11 12:44:50 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* array.c (ary_reject): may be turned into a shared array during</div><div class='del'>-	  the given block.  [ruby-dev:48101] [Bug #9727]</div><div class='del'>-</div><div class='del'>-Thu Apr 10 23:41:21 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/net/ftp.rb (Net::FTP#login): [DOC] The default password for</div><div class='del'>-	  anonymous login was changed to "anonymous@" in r25313.</div><div class='del'>-</div><div class='del'>-Thu Apr 10 19:22:58 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_array.rb: remove useless `assert'.</div><div class='del'>-</div><div class='del'>-Thu Apr 10 19:11:11 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* array.c (rb_ary_modify): remember shared array owner if a shared</div><div class='del'>-	  array owner is promoted and a shared array is not promoted.</div><div class='del'>-</div><div class='del'>-	  Now, shared array is WB-unprotected so that shared arrays are not</div><div class='del'>-	  promoted.  All objects referred from shared array should be marked</div><div class='del'>-	  correctly.</div><div class='del'>-</div><div class='del'>-	  [ruby-core:61919] [ruby-trunk - Bug #9718]</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_array.rb: add a test for above.</div><div class='del'>-</div><div class='del'>-Thu Apr 10 18:57:12 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (gc_verify_internal_consistency): move lines and enable</div><div class='del'>-	  allrefs_dump() on RGENGC_CHECK_MODE &gt;= 4.</div><div class='del'>-</div><div class='del'>-Thu Apr 10 15:01:06 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* addr2line.c (append_obj): clear allocated memory.</div><div class='del'>-</div><div class='del'>-	* addr2line.c (rb_dump_backtrace_with_lines): free `base_addrs'.</div><div class='del'>-</div><div class='del'>-Thu Apr 10 14:40:18 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Thu Mar 17 00:45:00 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (rb_gc_writebarrier_unprotect_promoted): disable to dump debug</div><div class='del'>-	  message when RGENGC_CHECK_MODE == 0.</div><div class='add'>+	* test/ruby/test_bignum.rb: Make sure to use Bignum values in the tests.</div><div class='ctx'> </div><div class='del'>-Thu Apr 10 08:13:47 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Wed Mar 16 23:10:25 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* signal.c (check_stack_overflow): Don't use ucontext_t if ucontext.h</div><div class='del'>-	  is not available.</div><div class='del'>-	  Fixes build on Android (x86).</div><div class='add'>+	* defs/keywords (alias, undef): symbol literals are allowed.</div><div class='ctx'> </div><div class='del'>-Wed Apr  9 23:22:44 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* parse.y (parse_percent): should parse symbol literals for alias</div><div class='add'>+	  and undef.  [ruby-dev:47681] [Bug #8851]</div><div class='ctx'> </div><div class='del'>-	* gc.c (mark_current_machine_context): Call SET_STACK_END.</div><div class='del'>-	  This reverts a hunk of r40703 by ko1.</div><div class='del'>-	  This fixes [ruby-dev:48098] [Bug #9717].</div><div class='add'>+Wed Mar 16 21:39:39 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Apr  9 21:02:04 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* enc/trans/JIS: update Unicode's notice. [Bug #11844]</div><div class='ctx'> </div><div class='del'>-	* process.c (OBJ2UID1): Defined even if getpwnam_r is not usable.</div><div class='del'>-	  (OBJ2GID1): Defined even if getgrnam_r is not usable.</div><div class='del'>-	  This fixes compilation error on Android.</div><div class='add'>+Wed Mar 16 20:03:35 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Apr  9 15:16:59 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* proc.c (proc_binding): proc from symbol can not make a binding.</div><div class='add'>+	  [ruby-core:74100] [Bug #12137]</div><div class='ctx'> </div><div class='del'>-	* encoding.c (rb_enc_default_internal): fix rdoc.  `__FILE__` is</div><div class='del'>-	  in filesystem encoding but not `default_internal`.</div><div class='del'>-	  [ruby-core:61894] [Bug #9713]</div><div class='add'>+Wed Mar 16 18:42:45 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Apr  9 14:43:00 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Fixed and activated a test for Cherokee.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_gc.rb: more long timeout.</div><div class='del'>-	  This test failed under RGENGC_CHECK_MODE &gt;= 2.</div><div class='add'>+Wed Mar 16 17:58:56 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Apr  9 13:07:13 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Fixed a logical error.</div><div class='ctx'> </div><div class='del'>-	* configure.in: get rid of __builtin_setjmp/__builtin_longjmp on</div><div class='del'>-	  x64-mingw, which causes SEGV with callcc.</div><div class='del'>-	  [ruby-core:61887] [Bug #9710]</div><div class='add'>+Wed Mar 16 17:57:34 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Apr  9 12:44:54 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Adding tests for Cherokee.</div><div class='add'>+	  One test not yet working.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* string.c (str_buf_cat): should round up the capacity by 4KiB,</div><div class='del'>-	  but not number of rooms.  [ruby-core:61886] [Bug #9709]</div><div class='add'>+Wed Mar 16 15:44:05 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Apr  8 22:55:32 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Adding tests for actual Unicode</div><div class='add'>+	  case mapping. Fixing some aliasing issues.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* lib/mkmf.rb (MakeMakefile#dir_config): [DOC] Improve</div><div class='del'>-	  documentation.</div><div class='add'>+Tue Mar 15 21:38:28 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Apr  8 22:31:44 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* enum.c (enum_inject): Consider redefinition of Fixnum#+.</div><div class='add'>+	  [ruby-dev:49510] [Bug#12178] Reported by usa.</div><div class='ctx'> </div><div class='del'>-	* gc.c: rename `RGENGC_THREEGEN' to `RGENGC_AGE2_PROMOTION'.</div><div class='add'>+Tue Mar 15 20:32:57 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (rgengc_rememberset_mark): don't promote, but remain in</div><div class='del'>-	  remember set for infant objects.</div><div class='add'>+	* enum.c (enum_inject): Implement the specialized code for :+ operator</div><div class='add'>+	  for Fixnums.</div><div class='ctx'> </div><div class='del'>-	* gc.c (RVALUE_PROMOTE_INFANT, RVALUE_PROMOTE_YOUNG): count numbers</div><div class='del'>-	  in these functions.</div><div class='add'>+Tue Mar 15 20:21:01 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Apr  7 21:11:49 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* enum.c (enum_inject): Implement the specialized code for self is an</div><div class='add'>+	  array and a symbol operator is given.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (sock_s_getnameinfo): Save errno for EAI_SYSTEM.</div><div class='del'>-	  Reported by Saravana kumar.  [ruby-core:61820] [Bug #9697]</div><div class='del'>-	  Fixed by Heesob Park.  [ruby-core:61868]</div><div class='add'>+Tue Mar 15 16:29:51 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Mon Apr  7 07:20:23 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* enc/unicode.c: Eliminating common code.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* lib/xmlrpc/client.rb (do_rpc): don't check body length.</div><div class='del'>-	  If HTTP content-encoding is used, the length may be different.</div><div class='del'>-	  [Bug #8182] [ruby-core:53811]</div><div class='add'>+Tue Mar 15 16:17:09 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Mon Apr  7 02:39:48 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='add'>+	* enc/unicode.c: Expansion of some code repetition in preparation for</div><div class='add'>+	  elimination of common code pieces.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* lib/matrix.rb: Add Matrix#cofactor [fix GH-568]</div><div class='del'>-	  Add first_minor [fix GH-568]</div><div class='del'>-	  Handle empty diagonal matrix case [fix GH-576]</div><div class='del'>-	  Patches by gogotanaka</div><div class='add'>+Tue Mar 15 13:49:23 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sun Apr  6 08:52:50 2014  Bugra Barin  &lt;bugrabarin@hotmail.com&gt;</div><div class='add'>+	* enc/unicode.c: Additional macros and code to use mapping data in</div><div class='add'>+	  CaseMappingSpecials array.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* dln.c (dln_load): use wchar version to load a library in</div><div class='del'>-	  non-ascii path on Windows.  based on the patch by Bugra Barin</div><div class='del'>-	  &lt;bugrabarin AT hotmail.com&gt; in [ruby-core:61845].  [Bug #9699]</div><div class='add'>+Tue Mar 15 13:41:22 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Apr  5 19:36:33 2014  Tadayoshi Funaba  &lt;tadf@dotrb.org&gt;</div><div class='add'>+	* internal.h (rb_gc_mark_global_tbl): should be private,</div><div class='add'>+	  but was accidentally exported.</div><div class='ctx'> </div><div class='del'>-	* ext/date/date_core.c (d_lite_cmp): should compare with #&lt;.</div><div class='add'>+Tue Mar 15 12:51:06 2016  Marcus Stollsteimer  &lt;sto.mar@web.de&gt;</div><div class='ctx'> </div><div class='del'>-Sat Apr  5 00:31:21 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* doc/extension.ja.rdoc: Fix RDoc markup in doc/extension*.rdoc.</div><div class='add'>+	  [ci skip][Bug #12143][ruby-core:74143]</div><div class='add'>+	* doc/extension.rdoc: ditto.</div><div class='ctx'> </div><div class='del'>-	* ext/readline/extconf.rb (rl_hook_func_t): check pointer type.</div><div class='del'>-	  [ruby-dev:48089] [Bug #9702]</div><div class='add'>+Tue Mar 15 09:56:41 2016  Ian Lunderskov  &lt;ian.lunderskov@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Fri Apr  4 07:13:44 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* time.c: Minor typo in Time#dst? documentation.</div><div class='add'>+	  [ci skip][fix GH-1290]</div><div class='ctx'> </div><div class='del'>-	* configure.in (ac_cv_func___builtin_setjmp): should not skip</div><div class='del'>-	  flags restoration in RUBY_WERROR_FLAG by `break`.</div><div class='del'>-	  [ruby-dev:48086] [Bug #9698]</div><div class='add'>+Tue Mar 15 04:36:41 2016  Charles Oliver Nutter  &lt;headius@headius.com&gt;</div><div class='ctx'> </div><div class='del'>-Wed Apr  2 21:50:06 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/test_rubyoptions.rb (test_disable): add tests for</div><div class='add'>+	  --disable-gems and --disable-did_you_mean.</div><div class='ctx'> </div><div class='del'>-	* configure.in (ac_cv_func___builtin_setjmp): __builtin_longjmp()</div><div class='del'>-	  in Apple LLVM 5.1 (LLVM 3.4svn) uses `void**`, not `jmp_buf`.</div><div class='del'>-	  [Bug #9692]</div><div class='add'>+Tue Mar 15 03:35:04 2016  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='ctx'> </div><div class='del'>-Wed Apr  2 20:57:15 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* marshal.c (r_object0): Fix Marshal crash for corrupt extended object.</div><div class='ctx'> </div><div class='del'>-	* gc.c, gc.h (rb_objspace_each_objects_without_setup):</div><div class='del'>-	  Add a new (hidden) C-API to iterate objspace snapshot.</div><div class='add'>+Tue Mar 15 01:22:27 2016  Charles Oliver Nutter  &lt;headius@headius.com&gt;</div><div class='ctx'> </div><div class='del'>-	  This API is not safe to call any C-APIs in a given callback</div><div class='del'>-	  function. Be careful to use this C-API.</div><div class='add'>+	* test/ruby/test_rubyoptions.rb: make version matching support</div><div class='add'>+	  JRuby's version output.</div><div class='ctx'> </div><div class='del'>-Wed Apr  2 17:43:17 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Mon Mar 14 19:05:39 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in (ac_cv_func___builtin_setjmp): gcc 4.9 disallows a</div><div class='del'>-	  variable as the second argument of __builtin_longjmp().</div><div class='del'>-	  [ruby-core:61800] [Bug #9692]</div><div class='add'>+	* bignum.c (big2str_2bdigits): reduce div instruction.</div><div class='ctx'> </div><div class='del'>-Wed Apr  2 15:12:18 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Mon Mar 14 18:39:53 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* common.mk: Use redmine-2.x url for DeveloperHowto wiki.</div><div class='del'>-	  [ruby-core:60657] [Bug #9511]</div><div class='add'>+	* include/ruby/oniguruma.h, enc/unicode.c: Adjusting flag assignments</div><div class='add'>+	  and macros to work with unified CaseMappingSpecials array.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Wed Apr  2 11:46:29 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='add'>+Mon Mar 14 16:53:37 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/pathname/lib/pathname.rb (Pathname#join): Fix error with</div><div class='del'>-	  empty args. Reported by ko1 via IRC.</div><div class='add'>+	* compile.c (compile_named_capture_assign): optimize named capture</div><div class='add'>+	  assignments, by replacing repeating global variable accesses</div><div class='add'>+	  with `dup`, and by returning the matched result instead of</div><div class='add'>+	  re-getting it from the MatchData.</div><div class='ctx'> </div><div class='del'>-	* test/pathname/test_pathname.rb (TestPathname#test_join): Add the</div><div class='del'>-	  test for above case.</div><div class='add'>+	* parse.y (reg_named_capture_assign_gen): build just assignment</div><div class='add'>+	  nodes for the optimization.</div><div class='ctx'> </div><div class='del'>-Tue Apr  1 11:39:57 2014  James Edward Gray II  &lt;james@graysoftinc.com&gt;</div><div class='add'>+Mon Mar 14 16:02:59 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/csv.rb: Symbol HeaderConverter: strip leading/trailing space.</div><div class='del'>-	  Reported by Skye Shaw</div><div class='del'>-	  [Fixes GH-575]</div><div class='add'>+	* file.c (ruby_is_fd_loadable): now return -1 if loadable but</div><div class='add'>+	  may block.</div><div class='ctx'> </div><div class='del'>-Tue Apr  1 11:34:04 2014  James Edward Gray II  &lt;james@graysoftinc.com&gt;</div><div class='add'>+	* ruby.c (open_load_file): wait to read by the result of</div><div class='add'>+	  ruby_is_fd_loadable, without fstat.</div><div class='ctx'> </div><div class='del'>-	* lib/csv.rb: Don't attempt to convert nil headers.</div><div class='del'>-	  Reported by Skye Shaw</div><div class='add'>+Mon Mar 14 13:38:38 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Apr  1 17:29:35 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* numeric.c (fix2str): improve r54092 like rb_int2big().</div><div class='ctx'> </div><div class='del'>-	* tool/config_files.rb (ConfigFiles.download): show failed URI.</div><div class='del'>-	  [ruby-core:61792] [Bug #9690]</div><div class='add'>+Mon Mar 14 10:02:23 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Apr  1 12:06:49 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* ext/openssl/ossl_ssl.c (ossl_sslctx_setup): document as MT-unsafe</div><div class='add'>+	  [ruby-core:73803] [Bug #12069]</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (rb_dump_backtrace_with_lines): don't depend hard coded</div><div class='del'>-	  symbol '_start'.</div><div class='add'>+Sun Mar 13 09:43:23 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (fill_lines): instead of above, get a dynamic symbol</div><div class='del'>-	  in the main executable and use it to know the base address.</div><div class='add'>+	* include/ruby/win32.h (O_SHARE_DELETE): change to fit Fixnum</div><div class='add'>+	  limit.  [ruby-core:74285] [Bug #12171]</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (follow_debuglink0): use obj_info_t instead of</div><div class='del'>-	  line_info_t to handle object related data.</div><div class='add'>+Sun Mar 13 09:15:45 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (main_exe_path): defined for Linux.</div><div class='add'>+	* numeric.c (rb_fix2str): fix edge case, accidentally generated</div><div class='add'>+	  wrong Fixnum from LONG_MIN.</div><div class='ctx'> </div><div class='del'>-Tue Apr  1 08:58:39 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+Sat Mar 12 09:50:27 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (rb_str_dynamic_intern): set mark bit if dynamic symbol</div><div class='del'>-	  is before sweeping.</div><div class='add'>+	* vm_eval.c (rb_f_catch): [DOC] fix malformed RDoc syntax, "+...+"</div><div class='add'>+	  cannot enclose non-identifier characters.</div><div class='add'>+	  a patch by Sebastian S in [ruby-core:74278].  [Bug#12170]</div><div class='ctx'> </div><div class='del'>-Tue Apr  1 07:37:00 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Sat Mar 12 02:44:48 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (fill_lines): use dynsym, which is used for dynamic</div><div class='del'>-	  linking and always exists, if there's no symtab.</div><div class='add'>+	* test/lib/test/unit.rb: describe !/REGEXP/ in the help message.</div><div class='ctx'> </div><div class='del'>-Tue Apr  1 07:27:15 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Fri Mar 11 17:03:09 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_dump.c (rb_print_backtrace): current implementation</div><div class='del'>-	  uses dladdr to get the path of objects.</div><div class='add'>+	* test/lib/test/unit.rb (Options#non_options): make regexp name</div><div class='add'>+	  options prefixed with "!" negative filters.</div><div class='ctx'> </div><div class='del'>-Mon Mar 31 23:57:45 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* common.mk (TEST_EXCLUDES): use negative filter to exclude memory</div><div class='add'>+	  leak tests.  -x option excludes test files, not test methods.</div><div class='ctx'> </div><div class='del'>-	* ext/readline/extconf.rb: fix typo, `$defs` not `$DEFS`.</div><div class='del'>-	  [ruby-core:61756] [Bug #9578]</div><div class='add'>+Fri Mar 11 16:11:27 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Mon Mar 31 17:23:50 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* enc/unicode/case-folding.rb, casefold.h: Streamlining approach to</div><div class='add'>+	  case mapping data not available from case folding by unifying all</div><div class='add'>+	  three cases (special title, special upper, special lower).</div><div class='add'>+	* enc/unicode.c: Adjust macro names for above (macros are currently inactive).</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* test/ruby/memory_status.rb: require envutil before accessing EnvUtil</div><div class='del'>-	  module.  reported by ko1 via twitter.</div><div class='add'>+Thu Mar 10 17:34:16 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Mar 31 10:28:01 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* iseq.c (prepare_iseq_build): enable coverage by coverage_enabled</div><div class='add'>+	  option, not by parse_in_eval flag in the thread context.</div><div class='ctx'> </div><div class='del'>-	* st.c (st_init_table_with_size): update comment</div><div class='del'>-	  [Feature #9425]</div><div class='add'>+	* iseq.h (rb_compile_option_struct): add coverage_enabled flag.</div><div class='ctx'> </div><div class='del'>-Sun Mar 30 23:39:26 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* parse.y (yycompile0): set coverage_enabled flag if coverage</div><div class='add'>+	  array is made.</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c (rb_w32_accept, open_ifs_socket, socketpair_internal):</div><div class='del'>-	  reset inherit flag of socket to avoid unintentional inheritance of</div><div class='del'>-	  socket.  note that the return value of SetHandleInformation() is not</div><div class='del'>-	  verified intentionally because old Windows may return an error.</div><div class='del'>-	  [Bug #9688] [ruby-core:61754]</div><div class='add'>+Thu Mar 10 15:19:54 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Mar 29 13:04:22 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* node.c (dump_option): nd_compile_option is a hidden hash object,</div><div class='add'>+	  cannot call inspect on it.</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_before_sweep): cap `malloc_limit' to</div><div class='del'>-	  gc_params.malloc_limit_max.  It can grow and grow with such case:</div><div class='del'>-	    `loop{"a" * (1024 ** 2)}'</div><div class='del'>-	  [Bug #9687]</div><div class='add'>+Thu Mar 10 09:49:54 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	  This issue is pointed by Tim Robertson.</div><div class='del'>-	  http://www.omniref.com/blog/blog/2014/03/27/ruby-garbage-collection-still-not-ready-for-production/</div><div class='add'>+	* test/socket/test_socket.rb (test_udp_recvmsg_truncation):</div><div class='add'>+	  AIX does not set the MSG_TRUNC flag for a message partially read</div><div class='add'>+	  by recvmsg(2) with the MSG_PEEK flag set.</div><div class='ctx'> </div><div class='del'>-Fri Mar 28 19:32:13 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Mar  9 16:48:45 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* struct.c (not_a_member): extract name error and use same error</div><div class='del'>-	  messages.  based on the patch by Marcus Stollsteimer &lt;sto.mar AT</div><div class='del'>-	  web.de&gt; at [ruby-core:61721].  [Bug #9684]</div><div class='add'>+	* benchmark/driver.rb: fix my last commit (syntax error).</div><div class='ctx'> </div><div class='del'>-Fri Mar 28 09:21:54 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Wed Mar  9 16:41:44 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/psych/psych.gemspec: update gemspec for psych-2.0.5</div><div class='add'>+	* benchmark/driver.rb: fix output messages.</div><div class='ctx'> </div><div class='del'>-Fri Mar 28 09:11:06 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* benchmark/memory_wrapper.rb: use respond_to? because</div><div class='add'>+	  member? does not work well.</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych.rb: Merge psych-2.0.5. bump version to</div><div class='del'>-	  libyaml-0.1.6 for CVE-2014-2525.</div><div class='del'>-	* ext/psych/yaml/config.h: ditto.</div><div class='del'>-	* ext/psych/yaml/scanner.c: ditto.</div><div class='del'>-	* ext/psych/yaml/yaml_private.h: ditto.</div><div class='add'>+Wed Mar  9 16:20:25 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Thu Mar 27 18:58:10 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* benchmark/driver.rb: support memory usage benchmark.</div><div class='add'>+	  use `--measure-target=[target]'.</div><div class='add'>+	  Now, we can use the following targets:</div><div class='add'>+	    * real (default): real time which returns process time in sec.</div><div class='add'>+	    * peak: peak memory usage (physical memory) in bytes.</div><div class='add'>+	    * size: last memory usage (physical memory) in bytes.</div><div class='ctx'> </div><div class='del'>-	* re.c (match_regexp): set regexp for MatchData from string.</div><div class='add'>+	* benchmark/memory_wrapper.rb: ditto.</div><div class='ctx'> </div><div class='del'>-	* re.c (rb_backref_set_string): create MatchData from string and</div><div class='del'>-	  set backref.</div><div class='add'>+Wed Mar  9 15:04:22 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_pat_search, rb_str_sub, rb_str_sub_bang, str_gsub),</div><div class='del'>-	  (scan_once, rb_str_scan, rb_str_partition): use rb_str_index</div><div class='del'>-	  instead of rb_reg_search() when pattern is a String.  based on</div><div class='del'>-	  the patch by Sam Rawlins &lt;sam.rawlins@gmail.com&gt; [Fixes GH-579]</div><div class='add'>+	* benchmark/bm_vm3_gc_old_full.rb: add GC.start benchmark.</div><div class='ctx'> </div><div class='del'>-Thu Mar 27 11:58:55 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* benchmark/bm_vm3_gc_old_immediate.rb: ditto.</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (fill_lines): check shdr[i].sh_type because even if</div><div class='del'>-	  .symtab section exists, the section's type can be SHT_NOBITS and</div><div class='del'>-	  actual data doesn't exist in the file.</div><div class='del'>-	  revert r45441.</div><div class='add'>+	* benchmark/bm_vm3_gc_old_lazy.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 14:57:35 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Wed Mar  9 14:59:11 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y: inline must be static (for mswin).</div><div class='del'>-	  fixed build error introduced at r45426.</div><div class='add'>+	* benchmark/driver.rb: exit benchmarking if a benchmark process</div><div class='add'>+	  receives signals.</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 14:33:00 2014  Narihiro Nakamura  &lt;authornari@gmail.com&gt;</div><div class='add'>+Wed Mar  9 13:22:49 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* internal.h (USE_SYMBOL_GC): enable Symbol GC by default (USE_SYMBOL_GC == 1).</div><div class='add'>+	* test/lib/memory_status.rb: make Memory::Status independent of</div><div class='add'>+	  MiniTest::Skip.</div><div class='ctx'> </div><div class='del'>-Tue Mar 25 22:57:11 2014  Narihiro Nakamura  &lt;authornari@gmail.com&gt;</div><div class='add'>+	* test/lib/test/unit/assertions.rb (assert_no_memory_leak): skip</div><div class='add'>+	  if Memory::Status is not available.</div><div class='ctx'> </div><div class='del'>-	* parse.y: support Symbol GC. [ruby-trunk Feature #9634]</div><div class='del'>-	  See this ticket about Symbol GC.</div><div class='add'>+Wed Mar  9 09:19:55 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h:</div><div class='del'>-	  Declare few functions.</div><div class='del'>-	  * rb_sym2id: almost same as old SYM2ID but support dynamic symbols.</div><div class='del'>-	  * rb_id2sym: almost same as old ID2SYM but support dynamic symbols.</div><div class='del'>-	  * rb_sym2str: almost same as `rb_id2str(SYM2ID(sym))` but not</div><div class='del'>-	    pin down a dynamic symbol.</div><div class='del'>-	  Declare a new struct.</div><div class='del'>-	  * struct RSymbol: represents a dynamic symbol as object in</div><div class='del'>-	    Ruby's heaps.</div><div class='del'>-	  Add few macros.</div><div class='del'>-	  * STATIC_SYM_P: check a static symbol.</div><div class='del'>-	  * DYNAMIC_SYM_P: check a dynamic symbol.</div><div class='del'>-	  * RSYMBOL: cast to RSymbol</div><div class='add'>+	* test/io/wait/test_io_wait.rb (test_wait_readwrite_timeout):</div><div class='add'>+	  select(2) in AIX returns "readable" for the write-side fd</div><div class='add'>+	  of a pipe, so it is not possible to use a pipe to test</div><div class='add'>+	  the read-write timeout of IO#wait on AIX.</div><div class='ctx'> </div><div class='del'>-	* gc.c: declare RSymbol. support T_SYMBOL.</div><div class='add'>+Wed Mar  9 03:35:22 2016  Charles Oliver Nutter  &lt;headius@headius.com&gt;</div><div class='ctx'> </div><div class='del'>-	* internal.h: Declare few functions.</div><div class='del'>-	  * rb_gc_free_dsymbol: free up a dynamic symbol. GC call this</div><div class='del'>-	    function at a sweep phase.</div><div class='del'>-	  * rb_str_dynamic_intern: convert a string to a dynamic symbol.</div><div class='del'>-	  * rb_check_id_without_pindown: not pinning function.</div><div class='del'>-	  * rb_sym2id_without_pindown: ditto.</div><div class='del'>-	  * rb_check_id_cstr_without_pindown: ditto.</div><div class='add'>+	* test/ruby/test_require.rb (test_require_with_loaded_features_pop):</div><div class='add'>+	  Only remove PATH so threads don't accidentally double-pop.</div><div class='ctx'> </div><div class='del'>-	* string.c (Init_String): String#intern and String#to_sym use</div><div class='del'>-	  rb_str_dynamic_intern.</div><div class='add'>+Wed Mar  9 00:29:46 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* template/id.h.tmpl: use LSB of ID as a flag for determining a</div><div class='del'>-	  static symbol, so we shift left other ruby_id_types.</div><div class='add'>+	* vm_method.c (rb_alias): the original name should be properly</div><div class='add'>+	  available method_added method, set the name before calling the</div><div class='add'>+	  hook.</div><div class='ctx'> </div><div class='del'>-	* string.c: use rb_sym2str instead `rb_id2str(SYM2ID(sym))` to</div><div class='del'>-	  avoid pinning.</div><div class='add'>+Wed Mar  9 00:07:03 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* load.c: use xx_without_pindown function at creating temporary ID</div><div class='del'>-	  to avoid pinning.</div><div class='add'>+	* lib/logger.rb (Logger::LogDevice#initialize): define using</div><div class='add'>+	  keyword arguments.</div><div class='ctx'> </div><div class='del'>-	* object.c: ditto.</div><div class='add'>+Tue Mar  8 23:37:07 2016  Charles Oliver Nutter  &lt;headius@headius.com&gt;</div><div class='ctx'> </div><div class='del'>-	* sprintf.c: ditto.</div><div class='add'>+	* test/ruby/test_array.rb: split out the test for no stack error</div><div class='add'>+	  on large input for test_permutation, test_repeated_permutation,</div><div class='add'>+	  and test_repeated_combination, and make them all timeout:30.</div><div class='ctx'> </div><div class='del'>-	* struct.c: ditto.</div><div class='add'>+Tue Mar  8 17:20:21 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* thread.c: ditto.</div><div class='add'>+	* intern.h (rb_divmod): assume compilers `/` and `%` comply C99</div><div class='add'>+	  and reduce branching. If a compiler doesn't comply, add #ifdefs.</div><div class='ctx'> </div><div class='del'>-	* variable.c: ditto.</div><div class='add'>+	* intern.h (rb_div): added for Ruby's behavior.</div><div class='ctx'> </div><div class='del'>-	* vm_method.c: ditto.</div><div class='add'>+	* intern.h (rb_mod): added for Ruby's behavior.</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 13:25:54 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* insns.def (opt_div): use rb_div.</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (fill_lines): loop reverse order not to overwrite</div><div class='del'>-	  the basis of base addresses comparison.</div><div class='add'>+	* insns.def (opt_mod): use rb_mod.</div><div class='ctx'> </div><div class='del'>-	* addr2line.c: use uintptr_t instead of intptr_t for pointers.</div><div class='add'>+	* numeric.c (fixdivmod): removed.</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (rb_dump_backtrace_with_lines): don't use syms.</div><div class='add'>+	* numeric.c (fix_divide): use rb_div.</div><div class='ctx'> </div><div class='del'>-	* vm_dump.c (rb_print_backtrace): ditto.</div><div class='add'>+	* numeric.c (fix_mod): use rb_mod.</div><div class='ctx'> </div><div class='del'>-	* addr2line.h: ditto.</div><div class='add'>+	* numeric.c (fix_divmod): use rb_divmod.</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 11:20:50 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Mar  8 17:53:09 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* marshal.c (w_object): internal objects are not dumpable.</div><div class='del'>-	  [ruby-core:61677] [Bug #9674]</div><div class='add'>+	* insns.def (opt_mod): show its method name on ZeroDivisionError.</div><div class='add'>+	  [Bug #12158]</div><div class='ctx'> </div><div class='del'>-	* ext/thread/thread.c (undumpable): ConditionVariable and Queue</div><div class='del'>-	  are not dumpable.  [ruby-core:61677] [Bug #9674]</div><div class='add'>+Tue Mar  8 17:33:38 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 10:36:39 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* win32/win32.c (rb_w32_write_console): now no need to check</div><div class='add'>+	  ERROR_CALL_NOT_IMPLEMENTED because it is for old Win9X.</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (follow_debuglink): show message if it closes opened</div><div class='del'>-	  (and maybe used) elf binary.</div><div class='add'>+Tue Mar  8 16:54:29 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 10:34:25 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* win32/win32.c (rb_w32_write_console): stop the VT100 emulation if the</div><div class='add'>+	  console supports it natively.</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (fill_line): pass and use offset instead of</div><div class='del'>-	  curobj_baseaddr.</div><div class='add'>+Tue Mar  8 08:13:01 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 09:07:48 2014  Yutaka Kanemoto  &lt;kanemoto@ruby-lang.org&gt;</div><div class='add'>+	* test/net/imap/test_imap.rb (test_idle_timeout): Because of the</div><div class='add'>+	  timeout specified in "imap.idle(0.2)", there is no guarantee that</div><div class='add'>+	  the server thread has done all the work before the client thread</div><div class='add'>+	  performs the assertions. It depends on the thread scheduling.</div><div class='add'>+	  Add checks to avoid false positives (on AIX, particularly).</div><div class='ctx'> </div><div class='del'>-	* configure.in: add --disable-pie. [Feature #9673]</div><div class='add'>+Tue Mar  8 00:42:22 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 08:47:04 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* ruby.c (warn_cr_in_shebang): meaningless check on DOSISH platforms.</div><div class='add'>+	  fixed a test failure introduced at r53998.</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (fill_lines): don't run fill_lines multiple times.</div><div class='add'>+Tue Mar  8 00:27:53 2016  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 08:45:00 2014  Sam Rawlins  &lt;sam.rawlins@gmail.com&gt;</div><div class='add'>+	* ext/tk/lib/tkextlib/tcllib/tablelist_tile.rb: fix method name typo.</div><div class='add'>+	  [ruby-core:72513] [Bug #11893] The patch provided by Akira Matsuda.</div><div class='ctx'> </div><div class='del'>-	* internal.h: add prototype for rb_reg_search0</div><div class='ctx'> </div><div class='del'>-	* re.c: rename rb_reg_search to rb_reg_search0, add set_backref_str</div><div class='del'>-	  argument to allow callers to indicate that they don't require the</div><div class='del'>-	  backref string to be allocated.</div><div class='add'>+Tue Mar  8 00:25:08 2016  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c: don't allocate backref str if replacement string is provided</div><div class='add'>+	* ext/tk/lib/tkextlib/tcllib/toolbar.rb: fix method name typo.</div><div class='add'>+	  [ruby-core:72511] [Bug #11891] The patch provided by Akira Matsuda.</div><div class='ctx'> </div><div class='del'>-	[GH-578] [Bug #9676] [ruby-core:61682]</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 08:29:43 2014  mo khan  &lt;mo@mokhan.ca&gt;</div><div class='add'>+Tue Mar  8 00:21:58 2016  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems.rb: fix spelling of Jim Weirich.  [Fixes GH-577]</div><div class='add'>+	* ext/tk/lib/tkextlib/blt/tree.rb: fix method name typo.</div><div class='add'>+	  [ruby-core:72510] [Bug #11890] The patch provided by Akira Matsuda.</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 01:55:45 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (rb_dump_backtrace_with_lines): a function to get must</div><div class='del'>-	  be a function in the main executable, whose absolute path is not</div><div class='del'>-	  available by dladdr, and ruby get it by /proc/self/exe on Linux.</div><div class='add'>+Tue Mar  8 00:11:47 2016  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Mar 26 01:34:50 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+	* ext/tk/lib/tk/menubar.rb: fix a typo in font name. [ruby-core:72505]</div><div class='add'>+	  [Bug #11886] The patch provided by Akira Matsuda.</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (fill_lines): skip if path is NULL.</div><div class='add'>+	* ext/tk/sample/*.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Tue Mar 25 23:57:17 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Mon Mar  7 13:32:58 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (parser_yylex): only a newline after label should be</div><div class='del'>-	  significant.  [ruby-core:61658] [Bug #9669]</div><div class='add'>+	* class.c (rb_define_class, rb_define_class_id_under): raise</div><div class='add'>+	  ArgumentError if super is 0, deprecated behavior which has been</div><div class='add'>+	  warned long time.</div><div class='ctx'> </div><div class='del'>-Tue Mar 25 23:32:25 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='add'>+Mon Mar  7 13:28:30 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/pathname/lib/pathname.rb (Pathname#join): remove unnecessary</div><div class='del'>-	  unshift.</div><div class='add'>+	* internal.h: move function declarations for class internals from</div><div class='add'>+	  include/ruby/intern.h.</div><div class='ctx'> </div><div class='del'>-	* test/pathname/test_pathname.rb (TestPathname#test_join): add tests.</div><div class='add'>+Mon Mar  7 10:58:07 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Mar 25 16:47:36 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/win32ole/win32ole_event.c (rescue_callback): use</div><div class='add'>+	  rb_write_error_str instead of rb_write_error, to respect</div><div class='add'>+	  the encoding and prevent the message from GC.</div><div class='ctx'> </div><div class='del'>-	* parse.y (lex_state_e, parser_params, f_arglist, parser_yylex):</div><div class='del'>-	  separate EXPR_LABELARG from EXPR_BEG and let newline significant,</div><div class='del'>-	  so that required keyword argument can place at the end of</div><div class='del'>-	  argument list without parentheses.  [ruby-core:61658] [Bug #9669]</div><div class='add'>+	* internal.h (rb_write_error_str): export.</div><div class='ctx'> </div><div class='del'>-Mon Mar 24 22:19:56 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Mon Mar  7 01:38:41 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (ripper_initialize): filename can not be modified.</div><div class='add'>+	* test/ruby/test_process.rb (test_execopts_gid): Skip a test</div><div class='add'>+	  that is known to fail on AIX. AIX allows setgid to</div><div class='add'>+	  a supplementary group, but Ruby does not allow the "-e"</div><div class='add'>+	  option when setgid'ed, so the test does not work as intended.</div><div class='ctx'> </div><div class='del'>-Mon Mar 24 15:19:47 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Sun Mar  6 22:43:41 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (rb_dump_backtrace_with_lines): fetch path of the</div><div class='del'>-	  executable from /proc/self/exe on Linux.</div><div class='add'>+	* io.c (rb_obj_display): [DOC] fix output of Array, as Array#to_s</div><div class='add'>+	  is same as Array#inspect since 1.9.</div><div class='ctx'> </div><div class='del'>-Mon Mar 24 14:14:37 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Sat Mar  5 09:50:58 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c: Fix up default GC params by @csfrancis [fix GH-556]</div><div class='add'>+	* test/socket/test_addrinfo.rb (test_ipv6_address_predicates):</div><div class='add'>+	  IN6_IS_ADDR_V4COMPAT and IN6_IS_ADDR_V4MAPPED are broken</div><div class='add'>+	  on AIX, so skip related tests.</div><div class='ctx'> </div><div class='del'>-Mon Mar 24 13:13:36 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Sat Mar  5 09:17:54 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* addr2line.c (parse_debug_line_cu): explicitly specify signed char</div><div class='del'>-	  because DWARF's line_Base is signed char and char maybe unsigned.</div><div class='del'>-	  patched by Rei Odaira. [ruby-dev:48068] [Bug #9654]</div><div class='del'>-</div><div class='del'>-Sun Mar 23 11:03:50 2014  Kohei Suzuki  &lt;eagletmt@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* vm_method.c (rb_method_entry_get_without_cache): me-&gt;klass is 0</div><div class='del'>-	  for a method aliased in a module.  [ruby-core:61636] [Bug #9663]</div><div class='del'>-</div><div class='del'>-Sun Mar 23 08:12:27 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* st.c (hash_pos): use bitwise AND to avoid slow modulo op</div><div class='del'>-	  (new_size): power-of-two sizes for hash_pos change</div><div class='del'>-	  (st_numhash): adjust for common keys due to lack of prime modulo</div><div class='del'>-	  [Feature #9425]</div><div class='del'>-	* hash.c (rb_any_hash): right shift for symbols</div><div class='del'>-	* benchmark/bm_hash_aref_miss.rb: added to show improvement</div><div class='del'>-	* benchmark/bm_hash_aref_sym_long.rb: ditto</div><div class='del'>-	* benchmark/bm_hash_aref_str.rb: ditto</div><div class='del'>-	* benchmark/bm_hash_aref_sym.rb: ditto</div><div class='del'>-	* benchmark/bm_hash_ident_num.rb: added to prevent regression</div><div class='del'>-	* benchmark/bm_hash_ident_obj.rb: ditto</div><div class='del'>-	* benchmark/bm_hash_ident_str.rb: ditto</div><div class='del'>-	* benchmark/bm_hash_ident_sym.rb: ditto</div><div class='del'>-</div><div class='del'>-Sat Mar 22 22:56:45 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* addr2line.c (fill_lines): compare the file names of object in which</div><div class='del'>-	  symbols exist. [Bug #9654] [ruby-dev:48058]</div><div class='del'>-</div><div class='del'>-Sat Mar 22 06:46:16 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/cgi/util.rb (escape_html, unescape_html): make synonyms</div><div class='del'>-	  aliases instead of wrapper methods.</div><div class='del'>-</div><div class='del'>-	* lib/cgi/util.rb (escape_element, unescape_element): ditto.</div><div class='del'>-	  [Fixes GH-573]</div><div class='del'>-</div><div class='del'>-Fri Mar 21 21:57:34 2014  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in: Fix a build problem with clang and --with-opt-dir.</div><div class='del'>-	  If ruby is configured with --with-opt-dir=dir when using clang</div><div class='del'>-	  as compiler, a warning `clang: warning: argument unused during</div><div class='del'>-	  compilation: '-I dir'` is emitted almost every time clang</div><div class='del'>-	  compiles a file.  Unfortunately, RUBY_CHECK_PRINTF_PREFIX takes</div><div class='del'>-	  any output from the compiler as fatal error, and the check thus</div><div class='del'>-	  fails due to the warning.  This is an attempt to fix the problem</div><div class='del'>-	  by adding a flag -Qunused-arguments to CFLAGS locally in the</div><div class='del'>-	  function to suppress the warning. [ruby-dev:48062] [Bug #9658]</div><div class='del'>-	  [Fixes GH-571] https://github.com/ruby/ruby/pull/571</div><div class='del'>-</div><div class='del'>-Fri Mar 21 16:31:56 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c: [DOC] Fix call-seq for GC.start by @jasonrclark [Fixes GH-572]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/572</div><div class='del'>-</div><div class='del'>-Thu Mar 20 11:37:28 2014  James Edward Gray II  &lt;james@graysoftinc.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/csv.rb: Fixed a broken regular expression that was causing</div><div class='del'>-	  CSV to miss escaping some special meaning characters when used</div><div class='del'>-	  in parsing.</div><div class='del'>-	  Reported by David Unric</div><div class='del'>-	  [ruby-core:54986] [Bug #8405]</div><div class='del'>-</div><div class='del'>-Thu Mar 20 16:53:07 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (objspace_malloc_increase): should not invoke</div><div class='del'>-	  garbage_collect_with_gvl() here on non-ruby threads.</div><div class='del'>-</div><div class='del'>-	  Should just ignore the malloc_increase.</div><div class='del'>-</div><div class='del'>-	  This issue is pointed by Eric Wong [ruby-core:61519].</div><div class='del'>-</div><div class='del'>-Thu Mar 20 13:05:16 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* struct.c (rb_struct_alloc): use RARRAY_CONST_PTR() instead of</div><div class='del'>-	  RARRAY_PTR().</div><div class='del'>-</div><div class='del'>-Thu Mar 20 12:59:39 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* include/ruby/intern.h (rb_obj_call_init, rb_class_new_instance):</div><div class='del'>-	  constify a parameter (VALUE *).</div><div class='del'>-	  I believe this incompatibility doesn't break any code.</div><div class='del'>-	  However, if you have trouble, please tell us.</div><div class='del'>-</div><div class='del'>-	* eval.c, object.c: ditto.</div><div class='del'>-</div><div class='del'>-Thu Mar 20 12:31:26 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_method.c (rb_method_entry_get_without_cache): get rid of</div><div class='del'>-	  infinite recursion at aliases in a subclass and a superclass.</div><div class='del'>-	  return actually defined class for other than singleton class.</div><div class='del'>-	  [ruby-core:60431] [Bug #9475]</div><div class='del'>-</div><div class='del'>-Wed Mar 19 17:13:06 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* time.c (time_mload): freeze and preserve marshal-loaded time zone</div><div class='del'>-	* test/ruby/test_time.rb: add test for GC on loaded object</div><div class='del'>-	  [Bug #9652]</div><div class='del'>-</div><div class='del'>-Tue Mar 18 23:20:12 2014  Shota Fukumori  &lt;her@sorah.jp&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (eval_string_with_cref): Unify to use NIL_P.</div><div class='del'>-</div><div class='del'>-Tue Mar 18 22:03:41 2014  Shota Fukumori  &lt;her@sorah.jp&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (eval_string_with_cref): Use file path even if scope is</div><div class='del'>-	  given. Related to [ruby-core:56099] [Bug #8662] and r42103.</div><div class='del'>-</div><div class='del'>-Mon Mar 17 13:17:47 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* enumerator.c (enumerator_block_call): use RARRAY_CONST_PTR()</div><div class='del'>-	  instead of RARRAY_PTR().</div><div class='del'>-</div><div class='del'>-	* io.c (rb_io_s_popen): ditto.</div><div class='del'>-</div><div class='del'>-	* numeric.c (num_step_size): ditto.</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (rb_apply): ditto.</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (rb_eval_cmd): ditto.</div><div class='del'>-</div><div class='del'>-Mon Mar 17 10:11:59 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* variable.c (rb_const_set): delete existing entry on redefinition</div><div class='del'>-	  [Bug #9645]</div><div class='del'>-	* test/ruby/test_const.rb (test_redefinition): test for leak</div><div class='del'>-</div><div class='del'>-Sun Mar 16 21:33:01 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* lib/time.rb: [DOC] Fix timezone in example of Time.parse [Bug #9521]</div><div class='del'>-	  Based on patch by @stomar</div><div class='del'>-</div><div class='del'>-Sun Mar 16 13:21:40 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (DLDFLAGS): insert a space between option and its</div><div class='del'>-	  argument for non-GCC compilers.  [ruby-core:61429] [Bug #9624]</div><div class='del'>-</div><div class='del'>-Sun Mar 16 08:05:06 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (objspace_xcalloc): fix GC accounting</div><div class='del'>-</div><div class='del'>-Sun Mar 16 06:33:35 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* addr2line.c (fill_lines): return address is just after calling</div><div class='del'>-	  address. Therefore noreturn function with tail call's return</div><div class='del'>-	  address may be in another function.</div><div class='del'>-</div><div class='del'>-Sun Mar 16 05:51:55 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* lib/gserver.rb: [DOC] Fixed typo in example by @stomar [Bug #9543]</div><div class='del'>-</div><div class='del'>-Sat Mar 15 18:54:03 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='del'>-</div><div class='del'>-	* ext/.document: remove refinement from documentable directories.</div><div class='del'>-</div><div class='del'>-Sat Mar 15 11:02:58 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in (DLDFLAGS): check for each options to control</div><div class='del'>-	  symbol resolution.  [ruby-core:61429] [Bug #9624]</div><div class='del'>-</div><div class='del'>-Sat Mar 15 07:02:35 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* st.c (st_update): remove unnecessary assignment</div><div class='del'>-</div><div class='del'>-Fri Mar 14 14:58:38 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* addr2line.c (fill_lines): fetch symbol names from ELF binary's</div><div class='del'>-	  symbol table if it is built with cc -g and not stripped.</div><div class='del'>-	  Now ruby can show static symbols on Linux though glibc's</div><div class='del'>-	  backtrace_symbols(3) don't show them.</div><div class='del'>-</div><div class='del'>-	* addr2line.c (rb_dump_backtrace_with_lines): use dladdr(3) to</div><div class='del'>-	  detect what object file declares the symbol because</div><div class='del'>-	  dl_iterate_phdr can't detect the main executable file</div><div class='del'>-	  and codes on the stack.</div><div class='del'>-	  NOTE: signal trampolines sometimes on the user stack. (FreeBSD)</div><div class='del'>-</div><div class='del'>-	* addr2line.c (rb_dump_backtrace_with_lines): stop showing</div><div class='del'>-	  backtrace if the function's name is main.</div><div class='del'>-	  NOTE: FreeBSD's backtrace (libexecinfo) shows _start and</div><div class='del'>-	  an additional address. Why it doesn't remove them on dladdr phase</div><div class='del'>-	  is, dladdr may fail to detect the main function but detect</div><div class='del'>-	  as _start function. Therefore it must be after scanning</div><div class='del'>-	  the symbol table and getting correct name.</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-Fri Mar 14 12:07:46 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* doc/syntax/literals.rdoc: [DOC] Single quote strings allows escape</div><div class='del'>-	  of backslash as well, patch by @idupree [Fixes GH-553]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/553</div><div class='del'>-</div><div class='del'>-Fri Mar 14 01:18:24 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (invoke_block_from_c): add splattable argument.</div><div class='del'>-</div><div class='del'>-	* vm.c (vm_invoke_proc): disallow to splat when directly invoked.</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c (vm_callee_setup_arg_complex, vm_callee_setup_arg):</div><div class='del'>-	  relax arity check of yielded lambda.  [ruby-core:61340] [Bug #9605]</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_yield.rb (TestRubyYieldGen#emu_bind_params): no</div><div class='del'>-	  longer raise ArgumentError when splatting to lambda.</div><div class='del'>-</div><div class='del'>-Thu Mar 13 23:51:02 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/-test-/win32/dln/libdlntest.c (dlntest_ordinal): no need to</div><div class='del'>-	  specify export in the source file because .def file do it.</div><div class='del'>-	  get rid of warning on linking.</div><div class='del'>-</div><div class='del'>-Wed Mar 12 11:19:03 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c (vm_callee_setup_arg): disable fastpath if splat</div><div class='del'>-	  argument, since argc may differ for each calls.</div><div class='del'>-	  [ruby-core:61422] [Bug #9622]</div><div class='del'>-</div><div class='del'>-	* vm_insnhelper.c (vm_callee_setup_arg): turn a macro into an</div><div class='del'>-	  inline function.</div><div class='del'>-</div><div class='del'>-Wed Mar 12 07:26:05 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* insns.def (opt_regexpmatch2): respect redefined match op</div><div class='del'>-	  Thanks to Sam Rawlins for the fix.</div><div class='del'>-	* test/ruby/test_string.rb: test based on Tsuyoshi Sawada's report</div><div class='del'>-	  [Bug #9581]</div><div class='del'>-</div><div class='del'>-Tue Mar 11 22:31:25 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='del'>-</div><div class='del'>-	* ext/.document: add objspace/objspace_dump.c to document file.</div><div class='del'>-</div><div class='del'>-Tue Mar 11 22:22:38 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='del'>-</div><div class='del'>-	* test/objspace/test_objspace.rb (TestObjSpace#test_dump_uninitialized_file):</div><div class='del'>-	  remove dependency on json library.</div><div class='del'>-</div><div class='del'>-Tue Mar 11 10:55:10 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* README.EXT{,.ja} (Appendix B): update contents of `ruby_options`</div><div class='del'>-	  and replace `ruby_run` with `ruby_run_node`.  based on the patch</div><div class='del'>-	  by Kaneko Yuichiro at [ruby-dev:48030] [Bug #9619].</div><div class='del'>-</div><div class='del'>-Tue Mar 11 06:54:00 2014  Scott Francis  &lt;scott.francis@shopify.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/objspace/objspace_dump.c: Check fptr before trying to dump RFILE</div><div class='del'>-	  object fd. [GH-562]</div><div class='del'>-</div><div class='del'>-	* test/objspace/test_objspace.rb: add test</div><div class='del'>-</div><div class='del'>-Tue Mar 11 02:04:36 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_dump.c (rb_vm_bugreport): show vm maps on FreeBSD.</div><div class='del'>-</div><div class='del'>-	* vm_dump.c (procstat_vm): copied from FreeBSD.</div><div class='del'>-	  http://svnweb.freebsd.org/base/head/usr.bin/procstat/procstat_vm.c?revision=261780</div><div class='del'>-</div><div class='del'>-Mon Mar 10 12:14:26 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in: always check dladdr(1).</div><div class='del'>-</div><div class='del'>-	* addr2line.c (fill_lines): show the line number in C backtrace if</div><div class='del'>-	  ruby is built without --enable-shared (PIE) on Linux.</div><div class='del'>-	  patch is originally by Shinichiro Hamaji</div><div class='del'>-	  https://twitter.com/shinh/status/441957774264504321</div><div class='del'>-	  NOTE: ld doesn't insert __executable_start for PIE.</div><div class='del'>-	  dladdr(3)'s argument must be a function pointer.</div><div class='del'>-</div><div class='del'>-Mon Mar 10 10:51:17 2014  ksss  &lt;co000ri@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_enumerator.rb (test_iterators): fix test for hash</div><div class='del'>-	  iterators.  [Fixes GH-558]</div><div class='del'>-</div><div class='del'>-Sun Mar  9 14:14:49 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* class.c (rb_class_subclass_add): use xmalloc</div><div class='del'>-	* class.c (rb_module_add_to_subclasses_list): ditto</div><div class='del'>-	* class.c (rb_class_remove_from_super_subclasses): use xfree</div><div class='del'>-	* class.c (rb_class_remove_from_module_subclasses): ditto</div><div class='del'>-	  [Bug #9616]</div><div class='del'>-</div><div class='del'>-Sun Mar  9 13:51:16 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/fiddle/function.c (function_call): fix memory leak when an</div><div class='del'>-	  exception occurs at argument conversion or the function call.</div><div class='del'>-</div><div class='del'>-Sun Mar  9 06:42:40 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* variable.c (struct global_variable): shrink by 8 bytes on 64-bit</div><div class='del'>-</div><div class='del'>-Sat Mar  8 17:42:51 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm.c (add_opt_method): cleanup to use rb_method_entry_at</div><div class='del'>-</div><div class='del'>-Sat Mar  8 13:46:40 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/dl/cptr.c (dlptr_free), ext/dl/handle.c (dlhandle_free),</div><div class='del'>-	  ext/fiddle/handle.c (fiddle_handle_free),</div><div class='del'>-	  ext/fiddle/pointer.c (fiddle_ptr_free): fix memory leak.</div><div class='del'>-	  based on the patch Heesob Park at [ruby-dev:48021] [Bug #9599].</div><div class='del'>-</div><div class='del'>-Sat Mar  8 13:30:39 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* process.c (obj2uid, obj2gid): now getpwnam_r() and getgrnam_r()</div><div class='del'>-	  may need larger buffers than sysconf values, so retry with</div><div class='del'>-	  expanding the buffer when ERANGE is returned.</div><div class='del'>-	  [ruby-core:61325] [Bug #9600]</div><div class='del'>-</div><div class='del'>-Fri Mar  7 19:29:13 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (vm_call0_body): use RARRAY_CONST_PTR</div><div class='del'>-	  (check_funcall_exec): ditto</div><div class='del'>-	  [ruby-core:61360]</div><div class='del'>-</div><div class='del'>-Fri Mar  7 19:14:11 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_eval.c (vm_call0_body): fix RB_GC_GUARD location</div><div class='del'>-	  (check_funcall_exec): ditto</div><div class='del'>-	  [Bug #9609]</div><div class='del'>-</div><div class='del'>-Fri Mar  7 14:48:17 2014  Narihiro Nakamura  &lt;authornari@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (ENC_SINGLE): Unused macro removed.</div><div class='del'>-</div><div class='del'>-Fri Mar  7 12:06:19 2014  Martin Bosslet  &lt;Martin.Bosslet@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/openssl/test_ssl.rb: Reuse TLS default options from</div><div class='del'>-	  OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.</div><div class='del'>-</div><div class='del'>-Thu Mar  6 15:15:24 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* doc/syntax/assignment.rdoc: [DOC] Fix assignment directions</div><div class='del'>-	  By @idupree [Fixes GH-555] https://github.com/ruby/ruby/pull/555</div><div class='del'>-</div><div class='del'>-Thu Mar  6 15:07:18 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* doc/syntax/methods.rdoc: [DOC] Fix example for block arguments</div><div class='del'>-	  By @idupree [Fixes GH-554] https://github.com/ruby/ruby/pull/554</div><div class='del'>-</div><div class='del'>-Thu Mar  6 10:33:31 2014  Martin Bosslet  &lt;Martin.Bosslet@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* lib/openssl/ssl.rb: Explicitly whitelist the default</div><div class='del'>-	  SSL/TLS ciphers. Forbid SSLv2 and SSLv3, disable</div><div class='del'>-	  compression by default.</div><div class='del'>-	  Reported by Jeff Hodges.</div><div class='del'>-	  [ruby-core:59829] [Bug #9424]</div><div class='del'>-</div><div class='del'>-Wed Mar  5 15:56:18 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* parse.y (f_arg_asgn): define optional arguments as argument</div><div class='del'>-	  variables in the rhs default expressions.</div><div class='del'>-	  [ruby-core:61299] [Bug #9593]</div><div class='del'>-</div><div class='del'>-Wed Mar  5 11:58:30 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/openssl/ossl.c (ossl_make_error): check NULL for unknown</div><div class='del'>-	  error reasons with old OpenSSL, and insert a colon iff formatted</div><div class='del'>-	  message is not empty.</div><div class='del'>-</div><div class='del'>-Wed Mar  5 00:42:00 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='del'>-</div><div class='del'>-	* ext/pathname/lib/pathname.rb (Pathname#find): add "ignore_error"</div><div class='del'>-	  keyword argument defaulted to true as well as Find#find.</div><div class='del'>-</div><div class='del'>-Tue Mar  4 23:00:18 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_eval.rb (TestEval#make_test_binding): renamed.</div><div class='del'>-	  it's not test method.</div><div class='del'>-</div><div class='del'>-Tue Mar  4 20:50:59 2014  Masaya Tarui  &lt;tarui@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* st.c (st_foreach): fix type of hash. not st_data_t but st_index_t.</div><div class='del'>-</div><div class='del'>-Tue Mar  4 19:41:40 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* Makefile.in: ".DEFAULT" target removed because it is not for</div><div class='del'>-	  specifying default target.</div><div class='del'>-</div><div class='del'>-Tue Mar  4 00:25:35 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='del'>-</div><div class='del'>-	* lib/find.rb (Find#find): should pass ignore_error option to enumerators.</div><div class='del'>-</div><div class='del'>-Mon Mar  3 13:27:35 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/test_find.rb (TestFind#test_unsearchable_dir): ruby cannot make</div><div class='del'>-	  directory unreachable by owner on Windows.</div><div class='del'>-</div><div class='del'>-Mon Mar  3 08:10:04 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* vm_method.c (rb_method_entry_get_without_cache): disable GMC</div><div class='del'>-	  writing if GMC is disabled.</div><div class='del'>-	  [ruby-core:61218]</div><div class='del'>-</div><div class='del'>-Mon Mar  3 07:47:17 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* README.EXT: wrap GetDBM with do/while(0)</div><div class='del'>-	* README.EXT.ja: ditto</div><div class='del'>-	* ext/dbm/dbm.c: ditto, likewise for GetDBM2</div><div class='del'>-	* ext/gdbm/gdbm.c: ditto</div><div class='del'>-	* ext/sdbm/init.c: ditto</div><div class='del'>-	  [ruby-core:61217]</div><div class='del'>-</div><div class='del'>-Mon Mar  3 07:17:31 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* NEWS: [DOC] Update doc regarding filesystem load when flushing IO</div><div class='del'>-</div><div class='del'>-Mon Mar  3 04:37:50 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* io.c (rb_io_fsync): need to fsync even if on Windows.  fixed mistake</div><div class='del'>-	  of r45254 and r45256.</div><div class='del'>-</div><div class='del'>-Mon Mar  3 04:21:34 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/win32ole: get rid of warnings (unused variable).</div><div class='del'>-</div><div class='del'>-Mon Mar  3 02:53:53 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* io.c (rb_io_flush_raw): [EXPERIMENTAL] remove force syncing for Win32</div><div class='del'>-	  to speed up IO.  this may break some tests, and they'll be fixed</div><div class='del'>-	  later.</div><div class='del'>-	  [ruby-core:58570] [Bug #9153]</div><div class='del'>-</div><div class='del'>-Mon Mar  3 00:17:43 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/ruby/test_backtrace.rb: get rid of warnings.  unused variable,</div><div class='del'>-	  shadowing.</div><div class='del'>-</div><div class='del'>-Sun Mar  2 11:15:10 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/find.rb (Find#find): add "ignore_error" keyword argument</div><div class='del'>-	  defaulted to true.  [ruby-core:51025] [Feature #7596]</div><div class='del'>-</div><div class='del'>-Sun Mar  2 11:13:30 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/readline/extconf.rb (rl_hook_func_t): define as Function for</div><div class='del'>-	  very old readline versions.  [ruby-core:61209] [Bug #9578]</div><div class='del'>-</div><div class='del'>-Sun Mar  2 10:47:58 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* load.c (ruby_init_ext): make idempotent to suppress warnings</div><div class='del'>-</div><div class='del'>-Sat Mar  1 19:51:42 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/open3.rb (Open3.capture3): Ignore Errno::EPIPE for writing</div><div class='del'>-	  stdin_data.</div><div class='del'>-	  (Open3.capture2): Ditto.</div><div class='del'>-	  (Open3.capture2e): Ditto.</div><div class='del'>-</div><div class='del'>-Sat Mar  1 19:06:47 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (ruby_gc_set_params): simplify condition</div><div class='del'>-</div><div class='del'>-Sat Mar  1 16:18:40 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/readline/readline.c (Init_readline): Use rl_hook_func_t instead</div><div class='del'>-	  of Function to support readline-6.3.  (rl_hook_func_t is available</div><div class='del'>-	  since readline-4.2.)</div><div class='del'>-	  Reported by Dmitry Medvinsky.  [ruby-core:61141] [Bug #9578]</div><div class='del'>-</div><div class='del'>-Sat Mar  1 16:05:58 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (ruby_gc_set_params): fix building without RGenGC</div><div class='del'>-</div><div class='del'>-Sat Mar  1 11:08:00 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/psych/lib/psych/visitors/yaml_tree.rb: support dumping Encoding</div><div class='del'>-	  objects.</div><div class='del'>-</div><div class='del'>-	* ext/psych/lib/psych/visitors/to_ruby.rb: support loading Encoding</div><div class='del'>-	  objects.</div><div class='del'>-</div><div class='del'>-	* test/psych/test_encoding.rb: add test</div><div class='del'>-</div><div class='del'>-	* ext/psych/lib/psych.rb: add version</div><div class='del'>-</div><div class='del'>-Sat Mar  1 10:52:34 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* README.EXT.ja: [DOC] Fix typo "macro macro" @utenmiki [Fixes GH-551]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/551</div><div class='del'>-</div><div class='del'>-Fri Feb 28 11:16:55 2014  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='del'>-</div><div class='del'>-	* numeric.c: Fix Numeric#step with 0 unit [Bug #9575]</div><div class='del'>-</div><div class='del'>-Thu Feb 27 17:59:01 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* lib/optparse.rb: [DOC] Add example of generating help with optparse.</div><div class='del'>-	  Patch by @joelmccracken documenting-ruby/ruby#19</div><div class='del'>-	  https://github.com/documenting-ruby/ruby/pull/19</div><div class='del'>-</div><div class='del'>-Thu Feb 27 12:10:09 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* numeric.c (ruby_num_interval_step_size): check signs and get rid</div><div class='del'>-	  of implementation dependent behavior of negative division.</div><div class='del'>-	  [ruby-core:61106] [Bug #9570]</div><div class='del'>-</div><div class='del'>-Thu Feb 27 03:55:45 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='del'>-</div><div class='del'>-	* thread.c: [DOC] Typo in comment for _FORTIFY_SOURCE [Fixes GH-548]</div><div class='del'>-	  Patch by @qnet-herwin https://github.com/ruby/ruby/pull/548</div><div class='del'>-</div><div class='del'>-Wed Feb 26 18:43:43 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='del'>-</div><div class='del'>-	* gc.c (heap_pages_free_unused_pages): check tomb page availability</div><div class='del'>-	  at first.</div><div class='del'>-	  And return immediately if we don't touch sorted list any more.</div><div class='del'>-</div><div class='del'>-Wed Feb 26 14:10:44 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* eval.c (setup_exception): preserve exception class name encoding</div><div class='del'>-	  in debug mode messages.</div><div class='del'>-</div><div class='del'>-	* eval.c (setup_exception): preserve errinfo across calling #to_s</div><div class='del'>-	  method on the exception.  [ruby-core:61091] [Bug #9568]</div><div class='del'>-</div><div class='del'>-Wed Feb 26 01:29:27 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* string.c (sym_find): Add Symbol.find(str), which returns whether given</div><div class='del'>-	  string is defined as symbol or not. [Feature #7854]</div><div class='del'>-</div><div class='del'>-Tue Feb 25 22:52:02 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/dl/dl.c (rb_dl_realloc): use NUM2SIZET instead of NUM2INT.</div><div class='del'>-</div><div class='del'>-	* ext/fiddle/fiddle.c (rb_fiddle_realloc): ditto.</div><div class='del'>-</div><div class='del'>-Tue Feb 25 22:49:30 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/dl/dl.c (rb_dl_malloc): use NUM2SIZET instead of NUM2INT.</div><div class='del'>-	  Coverity Scan found this bug.</div><div class='del'>-</div><div class='del'>-	* ext/fiddle/fiddle.c (rb_fiddle_malloc): ditto.</div><div class='del'>-</div><div class='del'>-Tue Feb 25 12:06:13 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* win32/Makefile.sub: define PACKED_STRUCT.</div><div class='del'>-</div><div class='del'>-Mon Feb 24 21:41:56 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* README.md, README.ja.md: removed (wrong) mode setting for emacs.</div><div class='del'>-</div><div class='del'>-Mon Feb 24 20:05:41 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in: define PACKED_STRUCT_UNALIGNED for x86*</div><div class='del'>-	* timev.h (struct vtm): use PACKED_STRUCT_UNALIGNED</div><div class='del'>-	* time.c (struct time_object): ditto</div><div class='del'>-	  [Bug #9558] non-x86 cannot safely access unaligned addresses</div><div class='del'>-</div><div class='del'>-Mon Feb 24 18:10:02 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/fiddle/test_function.rb: remove unused variables.</div><div class='del'>-	* test/fileutils/test_fileutils.rb: ditto.</div><div class='del'>-	* test/io/console/test_io_console.rb: ditto.</div><div class='del'>-</div><div class='del'>-Mon Feb 24 12:37:51 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* configure.in: use -Wno-packed-bitfield-compat for GCC 4.4+</div><div class='del'>-	  use __attribute__((packed)) if available</div><div class='del'>-	* timev.h: shrink and pack struct vtm</div><div class='del'>-	* time.c: pack struct time_object and adjust/introduce helpers</div><div class='del'>-	  [ruby-core:60794]</div><div class='del'>-</div><div class='del'>-Sun Feb 23 17:55:50 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rexml/xmltokens.rb: Add missing non ASCII valid characters</div><div class='del'>-	  to element name characters. Now, REXML name tokens exactly</div><div class='del'>-	  match "[5] Name" in the XML spec and "[4] NCName" in the</div><div class='del'>-	  Namespaces in XML spec. See comment about the details.</div><div class='del'>-	  [Bug #9539]  [ruby-core:60901]</div><div class='del'>-	  Reported by Mario Barcala. Thanks!!!</div><div class='del'>-</div><div class='del'>-	* test/rexml/xpath/test_node.rb: Add tests for the above case.</div><div class='del'>-</div><div class='del'>-Sun Feb 23 12:18:54 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/socket/raddrinfo.c (inet_pton): use rb_w32_inet_pton, instead of</div><div class='del'>-	  inet_pton directly, which is unavailable on older version Windows.</div><div class='del'>-</div><div class='del'>-	* include/ruby/win32.h, win32/win32.c (rb_w32_inet_pton): add a</div><div class='del'>-	  wrapper function for inet_pton minimum supported client is</div><div class='del'>-	  Vista, as well as inet_ntop.</div><div class='del'>-</div><div class='del'>-Sun Feb 23 11:33:25 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='del'>-</div><div class='del'>-	* test/net/imap/test_imap.rb: remove unused variables.</div><div class='del'>-	* test/net/imap/test_imap_response_parser.rb: ditto.</div><div class='del'>-	* test/net/pop/test_pop.rb: ditto.</div><div class='del'>-</div><div class='del'>-Sun Feb 23 02:19:51 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/resolv.rb (bind_random_port): Rescue EPERM for FreeBSD which</div><div class='del'>-	  security.mac.portacl.port_high is changed.</div><div class='del'>-	  See mac_portacl(4) for details.</div><div class='del'>-	  Reported by Jakub Szafranski.  [ruby-core:60917] [Bug #9544]</div><div class='del'>-</div><div class='del'>-Sat Feb 22 23:17:01 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/rexml/xpath_parser.rb: Fix indent.</div><div class='del'>-</div><div class='del'>-Sat Feb 22 23:15:35 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/xpath/test_attribute.rb: Simplify.</div><div class='del'>-</div><div class='del'>-Sat Feb 22 20:28:47 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* tool/redmine-backporter.rb: more friendly.</div><div class='del'>-</div><div class='del'>-Sat Feb 22 20:24:43 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/test_xpath*.rb: Move to ...</div><div class='del'>-	* test/rexml/xpath/*.rb: ... here.</div><div class='del'>-</div><div class='del'>-Sat Feb 22 20:04:41 2014  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='del'>-</div><div class='del'>-	* test/rexml/listener.rb: Untabify.</div><div class='del'>-</div><div class='del'>-Sat Feb 22 19:07:31 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/io/console/console.c (console_dev): need read access for conout$</div><div class='del'>-	  because some functions need it.  [Bug#9554]</div><div class='del'>-</div><div class='del'>-Sat Feb 22 18:40:58 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='del'>-</div><div class='del'>-	* .gitignore: ignore benchmark files</div><div class='del'>-</div><div class='del'>-Sat Feb 22 01:22:24 2014  Yusuke Endoh  &lt;mame@tsg.ne.jp&gt;</div><div class='del'>-</div><div class='del'>-	* bignum.c (bary_mul_precheck): fix a copy-paste error.</div><div class='del'>-	  Coverity Scan found this bug.</div><div class='del'>-</div><div class='del'>-Sat Feb 22 00:58:51 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='del'>-</div><div class='del'>-	* ext/socket/raddrinfo.c (rb_getaddrinfo): second argument of</div><div class='del'>-	  MEMZERO is type.  Coverity Scan found this bug.</div><div class='del'>-</div><div class='del'>-Fri Feb 21 23:47:24 2014  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* ext/socket/init.c (wait_connectable): break if the socket is</div><div class='del'>-	  writable to avoid infinite loops on FreeBSD and other platforms</div><div class='del'>-	  which conforms to SUSv3.  This problem cannot be reproduced with</div><div class='del'>-	  loopback interfaces, so it's hard to write test code.</div><div class='del'>-	  rsock_connect() and wait_connectable() are overly complicated, so</div><div class='del'>-	  they should be refactored, but I commit this fix as a workaround</div><div class='del'>-	  for the release of Ruby 1.9.3 scheduled on Feb 24.</div><div class='del'>-	  [ruby-core:60940] [Bug #9547]</div><div class='del'>-</div><div class='del'>-Fri Feb 21 23:03:39 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* tool/redmine-backporter.rb: added to handle redmine tickets.</div><div class='del'>-</div><div class='del'>-Fri Feb 21 20:42:01 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* class.c (rb_mod_init_copy): do nothing if copying self.</div><div class='del'>-	  [ruby-dev:47989] [Bug #9535]</div><div class='del'>-</div><div class='del'>-	* hash.c (rb_hash_initialize_copy): ditto.</div><div class='del'>-</div><div class='del'>-Fri Feb 21 16:45:54 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='del'>-</div><div class='del'>-	* lib/logger.rb (next_rotate_time, previous_period_end): consider</div><div class='del'>-	  DST change.</div><div class='del'>-</div><div class='del'>-	* lib/logger.rb (Logger::LogDevice#check_shift_log): compare the</div><div class='del'>-	  current time with the time for the next rotation to fix rotation</div><div class='del'>-	  miss when date changed between the comparison and log writing.</div><div class='del'>-	  based on the patch by megayu &lt;yuhg2310 AT gmail.com&gt;.</div><div class='del'>-	  [Fixes GH-539]</div><div class='add'>+	* test/rinda/test_rinda.rb (test_make_socket_ipv4_multicast):</div><div class='add'>+	  The fifth argument to getsockopt(2) should be modified to</div><div class='add'>+	  indicate the actual size of the value on return,</div><div class='add'>+	  but not in AIX. This is a know bug. Skip related tests.</div><div class='add'>+	* test/rinda/test_rinda.rb (test_ring_server_ipv4_multicast):</div><div class='add'>+	  ditto.</div><div class='add'>+	* test/rinda/test_rinda.rb (test_make_socket_unicast): ditto.</div><div class='add'>+	* test/socket/test_basicsocket.rb (test_getsockopt): ditto.</div><div class='add'>+	* test/socket/test_sockopt.rb (test_bool): ditto.</div><div class='ctx'> </div><div class='del'>-Fri Feb 21 10:39:33 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Sat Mar  5 07:36:27 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	*  test/monitor/test_monitor.rb: remove unused variables.</div><div class='del'>-	*  test/resolv/test_dns.rb: ditto.</div><div class='del'>-	*  test/rexml/test_functions.rb: ditto.</div><div class='del'>-	*  test/rss/test_setup_maker_itunes.rb: ditto.</div><div class='add'>+	* test/-ext-/float/test_nextafter.rb: In AIX,</div><div class='add'>+	  nextafter(+0.0,-0.0)=+0.0, and nextafter(-0.0,+0.0)=-0.0,</div><div class='add'>+	  but they should return -0.0 and +0.0, respectively. This is</div><div class='add'>+	  a known bug in nextafter(3) on AIX, so skip related tests.</div><div class='ctx'> </div><div class='del'>-Fri Feb 21 09:48:56 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sat Mar  5 07:14:10 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/ancdata.c (bsock_sendmsg_internal): only retry on error</div><div class='del'>-	  (bsock_recvmsg_internal): ditto</div><div class='del'>-	* test/socket/test_unix.rb: test above for infinite loop</div><div class='add'>+	* test/zlib/test_zlib.rb (test_adler32_combine, test_crc32_combine):</div><div class='add'>+	  Skip two tests on AIX because zconf.h in zlib does not correctly</div><div class='add'>+	  recognize _LARGE_FILES in AIX. The problem was already reported</div><div class='add'>+	  to zlib, and skip these tests until it is fixed.</div><div class='ctx'> </div><div class='del'>-Fri Feb 21 08:27:19 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sat Mar  5 03:07:40 2016  Rei Odaira  &lt;Rei.Odaira@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h (RB_GC_GUARD):</div><div class='del'>-	  use rb_gc_guarded_ptr_val on non-GCC/MSC</div><div class='del'>-	* gc.c (rb_gc_guarded_ptr_val): rename and adjust argument.</div><div class='del'>-	  RB_GC_GUARD should be robust enough for any compiler.</div><div class='del'>-	  [ruby-core:60816] [Bug #7805]</div><div class='add'>+	* thread_pthread.c (getstack): __pi_stacksize returned by</div><div class='add'>+	  pthread_getthrds_np() is wrong on AIX. Use</div><div class='add'>+	  __pi_stackend - __pi_stackaddr instead.</div><div class='ctx'> </div><div class='del'>-Thu Feb 20 22:21:26 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Fri Mar  4 19:19:42 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/raddrinfo.c (numeric_getaddrinfo): Use xcalloc.</div><div class='del'>-	  Suggested by Eric Wong.</div><div class='del'>-	  https://bugs.ruby-lang.org/issues/9525#note-14</div><div class='add'>+	* gc.c: use 2 bits with unsigned int for rb_objspace::flags::mode</div><div class='add'>+	  because it always returns 0 to 2 (non-negative value).</div><div class='ctx'> </div><div class='del'>-Thu Feb 20 11:21:13 2014  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+Fri Mar  4 18:42:08 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_hash_flatten): fix behavior of flatten(-1).</div><div class='del'>-	  [ruby-dev:47988] [Bug #9533]</div><div class='add'>+	* gc.c: rename "enum gc_stat" to "enum gc_mode"</div><div class='add'>+	  because there is a same name (no related) function gc_stat().</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_array.rb: test for above.</div><div class='add'>+	  Also gc_stat_* are renamed to gc_mode_*,</div><div class='add'>+	  gc_stat_transition() to gc_mode_transition(),</div><div class='add'>+	  rb_objspace::flags::stat is renamed to rb_objspace::flags::mode.</div><div class='ctx'> </div><div class='del'>-Wed Feb 19 18:57:02 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	  Change rb_objspace::flags::mode from 2 bits to 3 bits because VC++</div><div class='add'>+	  returns negative enum value with 2 bits.</div><div class='ctx'> </div><div class='del'>-	* ext/socket: Bypass getaddrinfo() if node and serv are numeric.</div><div class='del'>-	  Reporeted by Naotoshi Seo.  [ruby-core:60801] [Bug #9525]</div><div class='add'>+	* gc.c (gc_mode): add a macro to access rb_objspace::flags::mode</div><div class='add'>+	  with verification code (verification is enabled only on</div><div class='add'>+	  RGENGC_CHECK_MODE &gt; 0).</div><div class='ctx'> </div><div class='del'>-	* ext/socket/extconf.rb: Detect struct sockaddr_in6.sin6_len.</div><div class='add'>+	* gc.c (gc_mode_set): same macro for setter.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/sockport.h (SET_SIN6_LEN): New macro.</div><div class='del'>-	  (INIT_SOCKADDR_IN6): Ditto.</div><div class='add'>+Fri Mar  4 09:28:18 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/rubysocket.h (struct rb_addrinfo): Add</div><div class='del'>-	  allocated_by_malloc field.</div><div class='add'>+	* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.6.1.</div><div class='add'>+	  Please see entries of 2.6.0 and 2.6.1 on</div><div class='add'>+	  https://github.com/rubygems/rubygems/blob/master/History.txt</div><div class='add'>+	  [fix GH-1270] Patch by @segiddins</div><div class='ctx'> </div><div class='del'>-	* ext/socket/raddrinfo.c (numeric_getaddrinfo): New function.</div><div class='del'>-	  (rb_getaddrinfo): Call numeric_getaddrinfo at first.</div><div class='del'>-	  (rb_freeaddrinfo): Free struct addrinfo properly when it is</div><div class='del'>-	  allocated by numeric_getaddrinfo.</div><div class='add'>+Thu Mar  3 14:09:00 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Feb 19 18:31:48 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* lib/ostruct.rb (modifiable?, new_ostruct_member!, table!):</div><div class='add'>+	  rename methods for internal use with suffixes and make private,</div><div class='add'>+	  [ruby-core:71069] [Bug #11587]</div><div class='ctx'> </div><div class='del'>-	* ext/socket: Wrap struct addrinfo by struct rb_addrinfo.</div><div class='add'>+Wed Mar  2 16:28:48 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Feb 19 17:47:01 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* vm_eval.c (method_missing): call by found method entry and get</div><div class='add'>+	  rid of searching the same method entry twice.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/ipsocket.c (ip_s_getaddress): Don't access freed memory.</div><div class='add'>+	* vm_eval.c (vm_call0_body): calling method_missing method is</div><div class='add'>+	  method_missing().</div><div class='ctx'> </div><div class='del'>-Wed Feb 19 11:39:41 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Wed Mar  2 15:13:33 2016  herwinw  &lt;herwin@quarantainenet.nl&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: it must see rb_cv_broken_memmem not rb_cv_func_memmem.</div><div class='add'>+	* lib/xmlrpc.rb: Removed broken parser named XMLScanStreamParser.</div><div class='add'>+	  It's not works with current Ruby version.</div><div class='add'>+	  [fix GH-1271][ruby-core:59588][Bug #9369]</div><div class='add'>+	* lib/xmlrpc/config.rb: ditto.</div><div class='add'>+	* lib/xmlrpc/parser.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Tue Feb 18 23:18:41 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Wed Mar  2 15:08:33 2016  herwinw  &lt;herwin@quarantainenet.nl&gt;</div><div class='ctx'> </div><div class='del'>-	* test/socket/test_socket.rb: unix socket is required by test case.</div><div class='add'>+	* lib/xmlrpc.rb: Removed broken parser named XMLTreeParser.</div><div class='add'>+	  Required gem of its parser didn't compile on newer Ruby versions.</div><div class='add'>+	  [fix GH-1271][ruby-core:59590][Bug #9370]</div><div class='add'>+	* lib/xmlrpc/config.rb: ditto.</div><div class='add'>+	* lib/xmlrpc/parser.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Tue Feb 18 20:48:38 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Tue Mar  1 11:25:48 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/socket/test_addrinfo.rb: remove unused variables.</div><div class='del'>-	* test/socket/test_nonblock.rb: ditto.</div><div class='del'>-	* test/socket/test_socket.rb: ditto.</div><div class='del'>-	* test/socket/test_unix.rb: ditto.</div><div class='del'>-	* test/testunit/test_parallel.rb: ditto.</div><div class='del'>-	* test/webrick/test_filehandler.rb: ditto.</div><div class='del'>-	* test/xmlrpc/test_features.rb: ditto.</div><div class='del'>-	* test/zlib/test_zlib.rb: ditto.</div><div class='add'>+	* lib/fileutils.rb: use keyword arguments instead of option</div><div class='add'>+	  hashes.</div><div class='ctx'> </div><div class='del'>-Tue Feb 18 14:27:18 2014  Shota Fukumori  &lt;her@sorah.jp&gt;</div><div class='add'>+Mon Feb 29 16:50:20 2016  hanachin  &lt;hanachin@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/test/unit.rb: Requires minitest &lt; 5.0.0 if Gem is available.</div><div class='add'>+	* array.c (rb_ary_push_m): [DOC] Remove trailing comma from</div><div class='add'>+	  Array#push example, as other Array examples doesn't put trailing</div><div class='add'>+	  comma.  [Fix GH-1279]</div><div class='ctx'> </div><div class='del'>-Tue Feb 18 14:24:07 2014  Shota Fukumori  &lt;her@sorah.jp&gt;</div><div class='add'>+Mon Feb 29 16:31:01 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/test/unit/test-unit.gemspec: Add minitest &lt; 5.0.0 dependency</div><div class='add'>+	* common.mk, tool/mkconfig.rb: set cross_compiling option from</div><div class='add'>+	  Makefile, but not from rbconfig.rb, which is just going to be</div><div class='add'>+	  created by this command.</div><div class='ctx'> </div><div class='del'>-	* tool/rbinstall.rb: Add empty implementations for `add_dependency`,</div><div class='del'>-	  `add_runtime_dependency`, `add_development_dependency` for</div><div class='del'>-	  Gem::Specification.</div><div class='add'>+Sun Feb 28 23:13:49 2016  C.J. Collier  &lt;cjcollier@linuxfoundation.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb 18 12:06:39 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* configure.in: Add summary to end of configure output.</div><div class='add'>+	  [Fix GH-1275]</div><div class='ctx'> </div><div class='del'>-	* configure.in (FILE_COUNT): Removed.  (win32.c defines it in itself.)</div><div class='del'>-	  (FILE_READPTR): Ditto.</div><div class='add'>+Sun Feb 28 20:23:36 2016  Masatoshi SEKI  &lt;m_seki@mva.biglobe.ne.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb 18 09:35:44 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* lib/drb/drb.rb (error_print): Add verbose failure messages and</div><div class='add'>+	  avoid infamous DRb::DRbConnError. [Feature #12101]</div><div class='ctx'> </div><div class='del'>-	* test/test/psych/test_string.rb: remove unused variables.</div><div class='del'>-	* test/test/psych/test_yaml.rb: ditto.</div><div class='add'>+Sun Feb 28 13:40:46 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Feb 17 21:31:31 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* error.c (nometh_err_initialize): add private_call? parameter.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_gc.rb: ignore warning messages for running with -w</div><div class='del'>-	  option such as chkbuild.</div><div class='add'>+	* error.c (nometh_err_private_call_p): add private_call? method,</div><div class='add'>+	  to tell if the exception raised in private form FCALL or VCALL.</div><div class='add'>+	  [Feature #12043]</div><div class='ctx'> </div><div class='del'>-Mon Feb 17 20:00:27 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* vm_eval.c (make_no_method_exception): append private_call?</div><div class='add'>+	  argument.</div><div class='ctx'> </div><div class='del'>-	* internal.h: Move BDIGIT and related definitions from</div><div class='del'>-	  include/ruby/defines.h.</div><div class='add'>+	* vm_insnhelper.c (ci_missing_reason): copy FCALL flag.</div><div class='ctx'> </div><div class='del'>-Mon Feb 17 17:41:55 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Feb 28 10:19:47 2016  Ryan T. Hosford  &lt;tad.hosford@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* marshal.c (marshal_dump, marshal_load): do not recycle wrapper</div><div class='del'>-	  objects, to prevent from segfault with continuation.</div><div class='del'>-	  [ruby-dev:47970] [Bug #9523]</div><div class='add'>+	* array.c (rb_ary_and): clarify that set intersection returns the</div><div class='add'>+	  unique elements common to both arrays.</div><div class='ctx'> </div><div class='del'>-Mon Feb 17 15:43:59 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* array.c (rb_ary_or): clarify that union preserves the order from</div><div class='add'>+	  the given arrays.</div><div class='ctx'> </div><div class='del'>-	* doc/keywords.rdoc: [DOC] Add keywords doc by documenting-ruby/ruby#29</div><div class='del'>-	  https://github.com/documenting-ruby/ruby/pull/29</div><div class='add'>+Sat Feb 27 17:05:29 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Mon Feb 17 12:31:31 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* enc/unicode/case-folding.rb, casefold.h: Reducing size of TitleCase</div><div class='add'>+	  table by eliminating duplicates.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* gc.c (get_envparam_double): fix a warning message.</div><div class='add'>+Fri Feb 26 14:40:48 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Feb 17 12:09:52 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* numeric.c (num_step_scan_args): comparison String with Numeric</div><div class='add'>+	  should raise TypeError. it is an invalid type, but not a</div><div class='add'>+	  mismatch the number of arguments.  [ruby-core:62430] [Bug #9810]</div><div class='ctx'> </div><div class='del'>-	* gc.c: introduce new environment variable</div><div class='del'>-	  "RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR" to control major/minor GC</div><div class='del'>-	  frequency.</div><div class='add'>+Fri Feb 26 14:39:39 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	  Do full GC when the number of old objects is more than R * N</div><div class='del'>-	  where R is this factor and</div><div class='del'>-                N is the number of old objects just after last full GC.</div><div class='add'>+	* doc/extension.rdoc, doc/extension.ja.rdoc: add editor local</div><div class='add'>+	  variables, with commenting out by :enddoc: directives which are</div><div class='add'>+	  just ignored unless code object mode.  [Bug #12111]</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_gc.rb: add a test.</div><div class='add'>+Fri Feb 26 12:25:56 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Feb 17 11:28:40 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* doc/extension.ja.rdoc: removed rendering error caused by editor specific</div><div class='add'>+	  configuration on http://docs.ruby-lang.org/en/trunk/extension_rdoc.html .</div><div class='add'>+	  [Bug #12111][ruby-core:73990]</div><div class='ctx'> </div><div class='del'>-	* test/test_pty.rb: ignore warnings to unused variables.</div><div class='add'>+Fri Feb 26 11:21:41 2016  herwinw  &lt;herwin@quarantainenet.nl&gt;</div><div class='ctx'> </div><div class='del'>-Mon Feb 17 11:27:36 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+	* lib/xmlrpc.rb: Removed references to NQXML. It's obsoleted parser.</div><div class='add'>+	  [fix GH-1245][ruby-core:59593][Feature #9371]</div><div class='add'>+	* lib/xmlrpc/config.rb: ditto.</div><div class='add'>+	* lib/xmlrpc/parser.rb: ditto.</div><div class='ctx'> </div><div class='del'>-	* test/test_find.rb: remove unused variables.</div><div class='add'>+Fri Feb 26 11:10:19 2016  Rick Salevsky  &lt;rsalevsky@suse.com&gt;</div><div class='ctx'> </div><div class='del'>-Sun Feb 17 02:12:00 2014  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='add'>+	* lib/tmpdir.rb: Unify to coding-style for method definition.</div><div class='add'>+	  [fix GH-1252]</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c (BigDecimal_initialize): Insert GC guard.</div><div class='add'>+Fri Feb 26 11:02:04 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c (BigDecimal_global_new): ditto.</div><div class='add'>+	* README.md: update markdown syntax for anchor tag.</div><div class='add'>+	  [fix GH-1265] Patch by @lukBarros</div><div class='ctx'> </div><div class='del'>-Sun Feb 16 15:53:36 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Fri Feb 26 10:52:29 2016  Alex Boyd  &lt;alex@opengroove.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/test_securerandom.rb: File.exists? is deprecated. use File.exist?</div><div class='add'>+	* lib/irb.rb: avoid to needless truncation when using back_trace_limit option.</div><div class='add'>+	  [fix GH-1205][ruby-core:72773][Bug #11969]</div><div class='ctx'> </div><div class='del'>-Sun Feb 16 15:05:00 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Fri Feb 26 08:11:58 2016  Aaron Patterson &lt;tenderlove@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/pathname/test_pathname.rb: File.exists? is deprecated. use File.exist?</div><div class='add'>+	* gem_prelude.rb: Reduce system calls by activating the `did_you_mean`</div><div class='add'>+	  gem before requiring the gem.  Activating the gem puts the gem on</div><div class='add'>+	  the load path, where simply requiring the file will search every gem</div><div class='add'>+	  that's installed until it can find a gem that contains the</div><div class='add'>+	  `did_you_mean` file.</div><div class='ctx'> </div><div class='del'>-Sun Feb 16 15:00:28 2014  SHIBATA Hiroshi  &lt;shibata.hiroshi@gmail.com&gt;</div><div class='add'>+Thu Feb 25 19:04:13 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* test/net/ftp/test_ftp.rb: remove unused variables.</div><div class='del'>-	* test/logger/test_logger.rb: ditto.</div><div class='add'>+	* enc/unicode/case-folding.rb: Adding possibility for debugging output</div><div class='add'>+	  for TitleCase table in casefold.h.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Sun Feb 16 14:52:46 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Wed Feb 24 22:31:13 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* dir.c (dir_s_glob): RB_GC_GUARD instead of volatile</div><div class='add'>+	* include/ruby/oniguruma.h: Rearranging flag assignments and making</div><div class='add'>+	  space for titlecase indices; adding additional macros to add or</div><div class='add'>+	  extract titlecase index; adding comments for better documentation.</div><div class='add'>+	* enc/unicode.c: Moving some macros to include/ruby/oniguruma.h;</div><div class='add'>+	  activating use of titlecase indices.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Sun Feb 16 14:33:52 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Wed Feb 24 21:03:04 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h (RBIGNUM_SIGN): Defined for compatibility.</div><div class='del'>-	  (RBIGNUM_POSITIVE_P): Ditto.</div><div class='del'>-	  (RBIGNUM_NEGATIVE_P): Ditto.</div><div class='add'>+	* random.c (limited_rand): Add a specialized path for when the limit fits</div><div class='add'>+	  in 32 bit.</div><div class='ctx'> </div><div class='del'>-Sun Feb 16 12:46:47 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Tue Feb 23 21:52:24 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* io.c (rb_f_backquote): trade volatile for manual recycle</div><div class='del'>-	  rb_gc_force_recycle ensures object is visible until recycle</div><div class='add'>+	* enc/unicode/case-folding.rb, casefold.h: Outputting actual titlecase</div><div class='add'>+	  data (new table, with indices from other tables).</div><div class='add'>+	* enc/unicode.c: Ignoring titlecase data indices for the moment.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Sun Feb 16 11:55:14 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Tue Feb 23 15:21:14 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* marshal.c (marshal_dump): use rb_gc_force_recycle for GC-safety</div><div class='del'>-	  (marshal_load): ditto</div><div class='del'>-	  [ruby-core:60730] [Bug #7805]</div><div class='add'>+	* enc/unicode/case-folding.rb, casefold.h: Reading casing data from</div><div class='add'>+	  SpecialCasing.txt.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Sun Feb 16 08:11:23 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Mon Feb 22 18:33:55 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* README.EXT.ja: [DOC] Fix typo by @utenmiki [Fixes GH-534]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/534</div><div class='add'>+	* enc/unicode/case-folding.rb, casefold.h: Adding flag for title-case,</div><div class='add'>+	  not yet operational.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Sun Feb 16 07:48:20 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Feb 22 18:17:03 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c (BIGNUM_ZERO_P): Unused macro removed.</div><div class='add'>+	* enc/unicode/case-folding.rb, casefold.h: Fixed bug that avoided inclusion</div><div class='add'>+	  of compatibility characters in upper-/lower-case mappings.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Sun Feb 16 06:12:23 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sun Feb 21 13:57:18 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* internal.h: Rename macro names: RBIGNUM_FOO to BIGNUM_FOO.</div><div class='del'>-	  (BIGNUM_EMBED_LEN_NUMBITS): Renamed from RBIGNUM_EMBED_LEN_NUMBITS.</div><div class='del'>-	  (BIGNUM_EMBED_LEN_MAX): Renamed from RBIGNUM_EMBED_LEN_MAX.</div><div class='del'>-	  (BIGNUM_SIGN_BIT): Renamed from RBIGNUM_SIGN_BIT.</div><div class='del'>-	  (BIGNUM_SIGN): Renamed from RBIGNUM_SIGN.</div><div class='del'>-	  (BIGNUM_SET_SIGN): Renamed from RBIGNUM_SET_SIGN.</div><div class='del'>-	  (BIGNUM_POSITIVE_P): Renamed from RBIGNUM_POSITIVE_P.</div><div class='del'>-	  (BIGNUM_NEGATIVE_P): Renamed from RBIGNUM_NEGATIVE_P.</div><div class='del'>-	  (BIGNUM_EMBED_FLAG): Renamed from RBIGNUM_EMBED_FLAG.</div><div class='del'>-	  (BIGNUM_EMBED_LEN_MASK): Renamed from RBIGNUM_EMBED_LEN_MASK.</div><div class='del'>-	  (BIGNUM_EMBED_LEN_SHIFT): Renamed from RBIGNUM_EMBED_LEN_SHIFT.</div><div class='del'>-	  (BIGNUM_LEN): Renamed from RBIGNUM_LEN.</div><div class='del'>-	  (RBIGNUM_DIGITS): Renamed from RBIGNUM_DIGITS.</div><div class='del'>-	  (BIGNUM_LENINT): Renamed from RBIGNUM_LENINT.</div><div class='add'>+	* cgi/escape/escape.c: Optimize CGI.unescape performance by C ext</div><div class='add'>+	  for ASCII-compatible encodings.  [Fix GH-1250]</div><div class='ctx'> </div><div class='del'>-	* bignum.c: Follow the above change.</div><div class='add'>+Sun Feb 21 13:56:57 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c: Ditto.</div><div class='add'>+	* cgi/escape/escape.c: Optimize CGI.unescapeHTML performance by C</div><div class='add'>+	  ext for ASCII-compatible encodings.  [Fix GH-1242]</div><div class='ctx'> </div><div class='del'>-	* marshal.c: Ditto.</div><div class='add'>+Sat Feb 20 15:38:16 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* math.c: Ditto.</div><div class='add'>+	* doc/extension.rdoc: update paths for defs/ directory</div><div class='ctx'> </div><div class='del'>-	* numeric.c: Ditto.</div><div class='add'>+Sat Feb 20 14:44:15 2016  Lucas Buchala  &lt;lucasbuchala@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* random.c: Ditto.</div><div class='add'>+	* vm_eval.c (rb_mod_module_eval): [DOC] Fix documentation</div><div class='add'>+	  signature for Module#module_eval.  [Fix GH-1258]</div><div class='ctx'> </div><div class='del'>-	* rational.c: Ditto.</div><div class='add'>+Sat Feb 20 14:40:44 2016  Adam O'Connor  &lt;northband@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* sprintf.c: Ditto.</div><div class='add'>+	* README.md: a few grammatical changes to the main Ruby README.md.</div><div class='add'>+	  [Fix GH-1259]</div><div class='ctx'> </div><div class='del'>-	* ext/-test-/bignum/bigzero.c: Ditto.</div><div class='add'>+Sat Feb 20 13:04:22 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/-test-/bignum/intpack.c: Ditto.</div><div class='add'>+	* dir.c (push_pattern, push_glob): deal with read paths as UTF-8</div><div class='add'>+	  to stat later, on Windows as well as OS X.</div><div class='add'>+	  [ruby-core:73868] [Bug #12081]</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c: Ditto.</div><div class='add'>+Sat Feb 20 01:53:33 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Feb 15 20:48:49 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* object.c (rb_mod_const_get): make error message at uninterned</div><div class='add'>+	  string consistent with symbols.  [ruby-dev:49498] [Bug #12089]</div><div class='ctx'> </div><div class='del'>-	* configure.in (FILE_READEND): Don't detect it because it is not used.</div><div class='add'>+Fri Feb 19 23:37:52 2016  Masahiro Tomita  &lt;tommy@tmtm.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Feb 15 13:22:28 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* lib/find.rb (Find#find): raise with the given path name if it</div><div class='add'>+	  does not exist.  [ruby-dev:49497] [Bug #12087]</div><div class='ctx'> </div><div class='del'>-	* probes_helper.h (RUBY_DTRACE_HOOK): correct type for _id</div><div class='add'>+Fri Feb 19 12:44:57 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Feb 15 11:47:47 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* enc/unicode.c: Activated use of case mapping data in CaseUnfold_11 array.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* bignum.c (rb_big_cmp): Avoid bignum allocation for comparison</div><div class='del'>-	  between bignum and fixnum.</div><div class='add'>+Fri Feb 19 11:08:32 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Feb 15 10:55:12 2014  Hiroshi Shirosaki  &lt;h.shirosaki@gmail.com&gt;</div><div class='add'>+	* ext/extmk.rb: add cygwin case, nothing excluded.</div><div class='add'>+	  [ruby-core:73806] [Bug#12071]</div><div class='ctx'> </div><div class='del'>-	* ext/-test-/win32/fd_setsize/depend: fix wrong dependencies.</div><div class='del'>-	  [ruby-dev:47253]</div><div class='add'>+Thu Feb 18 21:32:15 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-Sat Feb 15 00:38:54 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* man/irb.1: fix output in EXAMPLES.</div><div class='ctx'> </div><div class='del'>-	* enum.c: Enumerable#{min,min_by,max,max_by} extended to take an</div><div class='del'>-	  optional argument.</div><div class='del'>-	  (nmin_cmp): New function.</div><div class='del'>-	  (nmin_block_cmp): Ditto</div><div class='del'>-	  (nmin_filter): Ditto.</div><div class='del'>-	  (nmin_i): Ditto.</div><div class='del'>-	  (nmin_run): Ditto.</div><div class='del'>-	  (enum_min): Call nmin_run if the optional argument is given.</div><div class='del'>-	  (nmin_max): Ditto.</div><div class='del'>-	  (nmin_min_by): Ditto.</div><div class='del'>-	  (nmin_max_by): Ditto.</div><div class='add'>+Thu Feb 18 21:05:47 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* range.c: Range#{min,max} extended to take an optional argument.</div><div class='del'>-	  (range_min): Call range_first if the optional argument is given.</div><div class='del'>-	  (range_max): Call rb_call_super if the optional argument is given.</div><div class='add'>+	* string.c (sym_match_m): delegate to String#match but not</div><div class='add'>+	  String#=~.  [ruby-core:72864] [Bug #11991]</div><div class='ctx'> </div><div class='del'>-	[ruby-core:57111] [Feature #8887]</div><div class='add'>+Thu Feb 18 14:15:38 2016  Shota Fukumori  &lt;her@sorah.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Feb 15 00:27:46 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* re.c: Add MatchData#named_captures</div><div class='add'>+	  [Feature #11999] [ruby-core:72897]</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h,</div><div class='del'>-	  internal.h,</div><div class='del'>-	  ext/-test-/bignum/bigzero.c: Hide a Bignum definition.</div><div class='del'>-	  [ruby-core:42891] [Feature #6083]</div><div class='add'>+	* test/ruby/test_regexp.rb(test_match_data_named_captures): Test for above.</div><div class='ctx'> </div><div class='del'>-Sat Feb 15 00:13:14 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* NEWS: News about MatchData#named_captures.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/intern.h,</div><div class='del'>-	  include/ruby/io.h,</div><div class='del'>-	  include/ruby/ruby.h,</div><div class='del'>-	  include/ruby/win32.h,</div><div class='del'>-	  include/ruby/backward/rubysig.h,</div><div class='del'>-	  bignum.c,</div><div class='del'>-	  gc.c,</div><div class='del'>-	  io.c,</div><div class='del'>-	  process.c,</div><div class='del'>-	  safe.c,</div><div class='del'>-	  struct.c,</div><div class='del'>-	  thread.c,</div><div class='del'>-	  ext/socket/rubysocket.h,</div><div class='del'>-	  ext/-test-/old_thread_select: Remove deprecated definitions</div><div class='del'>-	  [ruby-core:60581] [Feature #9502]</div><div class='add'>+Wed Feb 17 21:41:29 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Fri Feb 14 18:38:46 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+	* defs/id.def (predefined): add idLASTLINE and idBACKREF for $_</div><div class='add'>+	  and $~ respectively.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_format_m): trade volatile for RB_GC_GUARD</div><div class='del'>-	  RB_GC_GUARD meaning is clear and has better code generation.</div><div class='del'>-	  [ruby-core:60688]</div><div class='add'>+	* parse.y: use idLASTLINE and idBACKREF instead of rb_intern.</div><div class='ctx'> </div><div class='del'>-Thu Feb 13 23:30:30 2014  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='add'>+Wed Feb 17 20:23:38 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (vm_call_method): should check ci-&gt;me-&gt;flag of</div><div class='del'>-	  a refining method in case the method is private.</div><div class='del'>-	  [ruby-core:60111] [Bug #9452]</div><div class='add'>+	* string.c (rb_str_init): fix segfault and memory leak, consider</div><div class='add'>+	  wide char encoding terminator.</div><div class='ctx'> </div><div class='del'>-	* vm_method.c (make_method_entry_refined): set me-&gt;flag of a refined</div><div class='del'>-	  method entry to NOEX_PUBLIC in case the original method is private</div><div class='del'>-	  and it is refined as a public method.  The original flag is stored</div><div class='del'>-	  in me-&gt;def-&gt;body.orig_me, so it's OK to make a refined method</div><div class='del'>-	  entry public.  [ruby-core:60111] [Bug #9452]</div><div class='add'>+Wed Feb 17 12:14:59 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_refinement.rb: related tests.</div><div class='add'>+	* string.c (rb_str_init): introduce String.new(capacity: size)</div><div class='add'>+	  [Feature #12024]</div><div class='ctx'> </div><div class='del'>-Thu Feb 13 18:38:15 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Tue Feb 16 19:10:08 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* re.c (rb_reg_raise): remove volatile</div><div class='del'>-	  Unnecessary since r41597</div><div class='add'>+	* enc/unicode/case-folding.rb, casefold.h: Used only first element</div><div class='add'>+	  (rather than all) of target in CaseUnfold_11 array.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Thu Feb 13 18:28:51 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Tue Feb 16 18:24:38 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* re.c (rb_reg_regcomp): remove volatile</div><div class='del'>-	  Unnecessary since r13261</div><div class='add'>+	* numeric.c (compare_with_zero): fix variable name, rb_cmperr</div><div class='add'>+	  requires VALUEs but not an ID.</div><div class='ctx'> </div><div class='del'>-Thu Feb 13 16:54:32 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Tue Feb 16 17:34:18 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_array.rb: Ensure flatten! is used for test_flatten</div><div class='del'>-	  Patch by @ksss [Fixes GH-530] https://github.com/ruby/ruby/pull/530</div><div class='add'>+	* dir.c (rb_dir_s_empty_p): add Dir.empty? method, which tells the</div><div class='add'>+	  argument is the name of an empty directory.  [Feature #10121]</div><div class='ctx'> </div><div class='del'>-Thu Feb 13 15:43:16 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Feb 16 09:51:20 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (IDSET_ATTRSET_FOR_INTERN): fix off-by-one bug.</div><div class='add'>+	* tool/rbinstall.rb (without_destdir): just strip a drive letter</div><div class='add'>+	  which is prepended by with_destdir.</div><div class='add'>+	  pointed out by @DavidEGrayson.</div><div class='add'>+	  https://github.com/ruby/ruby/commit/0e5f9ae#commitcomment-16101763</div><div class='ctx'> </div><div class='del'>-	* parse.y (rb_enc_symname_type): junk ID succeeded by '=' is also</div><div class='del'>-	  attrset ID.  [ruby-core:60668] [Bug #8756]</div><div class='add'>+Tue Feb 16 04:42:13 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Feb 13 11:06:32 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* insns.def (opt_plus): simply use LONG2NUM() instead of wrongly</div><div class='add'>+	  complex overflow case.</div><div class='ctx'> </div><div class='del'>-	* configure.in: check if pthread_setname_np is available.</div><div class='add'>+	* insns.def (opt_sub): ditto.</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c: pthread_setname_np is not available on old</div><div class='del'>-	  Darwins.  [ruby-core:60524] [Bug #9492]</div><div class='add'>+Tue Feb 16 02:49:41 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Feb 13 00:56:59 2014  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+	* tool/rbinstall.rb (without_destdir): compare with the destdir</div><div class='add'>+	  after stripping a drive letter, on dosish platforms.</div><div class='add'>+	  pointed out by @DavidEGrayson.</div><div class='add'>+	  https://github.com/ruby/ruby/commit/d0cf23b#commitcomment-16100407</div><div class='ctx'> </div><div class='del'>-	* configure.in: revert r44922. I should have used AC_CHECK_FUNCS()</div><div class='del'>-	  to just define a symbol if the function is available.</div><div class='add'>+Mon Feb 15 15:44:09 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Feb 13 00:20:58 2014  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+	* parse.y (parse_ident): allow keyword arguments just after a</div><div class='add'>+	  method where the same name local variable is defined.</div><div class='add'>+	  [ruby-core:73816] [Bug#12073]</div><div class='ctx'> </div><div class='del'>-	* configure.in: use AC_CHECK_FUNC instead of AC_CHECK_FUNCS</div><div class='del'>-	  if available.</div><div class='add'>+Mon Feb 15 14:43:28 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Feb 13 00:15:10 2014  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+	* enc/unicode/case-folding.rb: Added debugging option</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* configure.in: fix to undefine HAVE_MEMMEM correctly if it is broken.</div><div class='add'>+Sun Feb 14 17:31:50 2016  Lars Kanis  &lt;lars@greiz-reinsdorf.de&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb 11 23:54:40 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* lib/mkmf.rb (with_{cpp,c,ld}flags): copy caller strings not to</div><div class='add'>+	  be modified, in append_{cpp,c,ld}flags respectively.</div><div class='add'>+	  [Fix GH-1246]</div><div class='ctx'> </div><div class='del'>-	* bignum.c (rb_big_cmp): Specialize a comparison to zero.</div><div class='add'>+Sun Feb 14 16:18:57 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c (is_negative): Use rb_big_cmp instead of</div><div class='del'>-	  RBIGNUM_NEGATIVE_P.</div><div class='del'>-	  (BigMath_s_log): Ditto.</div><div class='add'>+	* eval.c (setup_exception): set the cause only if it is explicitly</div><div class='add'>+	  given or not set yet.  [Bug #12068]</div><div class='ctx'> </div><div class='del'>-Tue Feb 11 22:59:10 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sat Feb 13 21:44:58 2016  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/ossl_bn.c (ossl_bn_initialize): Use rb_integer_pack.</div><div class='del'>-	  Fix SEGV by OpenSSL::BN.new(1 &lt;&lt; (2**34)).</div><div class='add'>+	* hash.c (rb_hash_invert): [DOC] more examples.</div><div class='ctx'> </div><div class='del'>-Tue Feb 11 17:00:38 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Sat Feb 13 17:30:49 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/tk/README.tcltklib: [DOC] Fix typo by @xta [Fixes GH-532]</div><div class='add'>+	* lib/uri/generic.rb (URI::Generic#find_proxy): support CIDR in</div><div class='add'>+	  no_proxy.  [ruby-core:73769] [Feature#12062]</div><div class='ctx'> </div><div class='del'>-Sun Feb  9 13:59:29 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Sat Feb 13 17:11:58 2016  Fabian Wiesel  &lt;fabian.wiesel@sap.com&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: Fix compilation error.</div><div class='del'>-	  https://bugs.ruby-lang.org/issues/8358#note-16</div><div class='add'>+	* lib/uri/generic.rb (find_proxy): exclude white-spaces and allow</div><div class='add'>+	  for a leading dot in the domain name in no_proxy.</div><div class='add'>+	  [ruby-core:54542] [Feature #8317]</div><div class='ctx'> </div><div class='del'>-Sun Feb  9 05:20:24 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Fri Feb 12 12:20:56 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in (rb_cv_gnu_qsort_r): use compile error "conflicting</div><div class='del'>-	  types for 'qsort_r'" instead of AC_RUN_IFELSE.</div><div class='add'>+	* error.c (name_err_initialize, nometh_err_initialize): [DOC] fix</div><div class='add'>+	  argument positions.  optional parameters except for the message</div><div class='add'>+	  are placed at the last.</div><div class='ctx'> </div><div class='del'>-Sun Feb  9 04:07:34 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Fri Feb 12 11:49:49 2016  Anthony Dmitriyev  &lt;antstorm@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/yaml.rb: [DOC] Add links to syck and psych on github [Bug #9501]</div><div class='del'>-	  Based on a patch by Giorgos Tsiftsis</div><div class='add'>+	* net/ftp.rb: add NullSocket#closed? to fix closing not opened</div><div class='add'>+	  connection.  [Fix GH-1232]</div><div class='ctx'> </div><div class='del'>-Sun Feb  9 02:13:53 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Feb 12 11:17:38 2016  Bogdan  &lt;bogdanvlviv@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h (OBJ_TAINTABLE, OBJ_TAINT, OBJ_INFECT),</div><div class='del'>-	  marshal.c (r_entry0): all Numerics never be tainted now.</div><div class='del'>-	  [ruby-core:57346] [Bug #8945]</div><div class='add'>+	* re.c (rb_reg_initialize_m): [DOC] fix missing right bracket.</div><div class='add'>+	  [Fix GH-1243]</div><div class='ctx'> </div><div class='del'>-Sat Feb  8 23:40:35 2014  Vit Ondruch  &lt;vondruch@redhat.com&gt;</div><div class='add'>+Thu Feb 11 14:57:58 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: add quoting brackets and append wildcard for the</div><div class='del'>-	  rest after target_cpu, to properly detect platform for SSE2</div><div class='del'>-	  instructions.  [ruby-core:60576] [Bug #8358]</div><div class='add'>+	* configure.in (RUBY_CHECK_SIZEOF, RUBY_DEFINT): fix for types</div><div class='add'>+	  which are conditionally available depending on architectures</div><div class='add'>+	  when universal binary, e.g., __int128.</div><div class='ctx'> </div><div class='del'>-Sat Feb  8 21:44:07 2014  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+Thu Feb 11 06:26:18 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: check qsort_r(3) and whether it is GNU version.</div><div class='del'>-	  BSD version has different prototype.</div><div class='add'>+	* configure.in (RUBY_DEFINT): use Parameter Expansion.</div><div class='ctx'> </div><div class='del'>-	* util.h: use qsort_r() as ruby_qsort() if it is GNU version.</div><div class='add'>+Thu Feb 11 05:33:24 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* util.c: define ruby_qsort() if needed.</div><div class='add'>+	* configure.in (int128_t): don't check HAVE_XXX (for example</div><div class='add'>+	  HAVE___INT128) because RUBY_CHECK_SIZEOF() don't define it for</div><div class='add'>+	  config.h and use of $ac_cv_sizeof___int128 alternates the check.</div><div class='add'>+	  (and don't need to define because users shouldn't know that)</div><div class='ctx'> </div><div class='del'>-Sat Feb  8 16:34:36 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Wed Feb 10 12:03:41 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb (Resolv::DNS::Message::MessageDecoder#get_labels):</div><div class='del'>-	  Make it iterative.</div><div class='add'>+	* configure.in (ARFLAGS): check if deterministic mode flag is</div><div class='add'>+	  effective, which is on by default on Ubuntu.</div><div class='ctx'> </div><div class='del'>-Sat Feb  8 15:54:12 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Tue Feb  9 16:36:23 2016  Naotoshi Seo  &lt;sonots@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c, gc.h (rb_objspace_marked_object_p): added.</div><div class='del'>-	  This function *ONLY* works just after marking phase,</div><div class='del'>-	  before any sweeping.</div><div class='del'>-	  This function is highly depending current GC implementation</div><div class='del'>-	  and can be removed future version.</div><div class='add'>+	* lib/logger.rb: Remove block from Logger.add as it's not needed</div><div class='add'>+	  patch provided by Daniel Lobato Garcia [fix GH-1240] [Bug #12054]</div><div class='ctx'> </div><div class='del'>-Sat Feb  8 15:41:37 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Tue Feb  9 14:32:23 2016  Zachary Scott  &lt;zzak@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb: Don't set CLOEXEC flag explicitly.  (Ruby set it by</div><div class='del'>-	  default.)</div><div class='add'>+	* ext/zlib/zlib.c: Document mtime header behavior with patch by @schneems</div><div class='add'>+	  Fixes [GH-1129]: https://github.com/ruby/ruby/pull/1129</div><div class='ctx'> </div><div class='del'>-Sat Feb  8 15:27:02 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Tue Feb  9 13:52:49 2016  Zachary Scott  &lt;zzak@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb (Resolv::DNS::Message::MessageDecoder): Raise</div><div class='del'>-	  DecodeError if no data before the limit.</div><div class='del'>-	  Reported by Will Bryant.  [ruby-core:60557] [Bug #9498]</div><div class='add'>+	* re.c: Remove deprecated kcode argument from Regexp.new and compile</div><div class='add'>+	  patch provided by Dylan Pulliam [Bug #11495]</div><div class='ctx'> </div><div class='del'>-Sat Feb  8 15:11:21 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Feb  8 21:26:19 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* io.c (SMALLBUF): Unused macro removed.</div><div class='add'>+	* enc/unicode/case-folding.rb, enc/unicode/casefold.h: Flags for</div><div class='add'>+	  upper/lower conversion added (titlecase and SpecialCasing still missing)</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Fri Feb  7 23:37:49 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Mon Feb  8 20:43:57 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb: Ignore name servers which cause EAFNOSUPPORT on</div><div class='del'>-	  socket creation.</div><div class='del'>-	  Reported by Bjoern Rennhak.  [ruby-core:60442] [Bug #9477]</div><div class='add'>+	* string.c, enc/unicode.c: Disassociating ONIGENC_CASE_FOLD flag from</div><div class='add'>+	  ONIGENC_CASE_DOWNCASE.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Fri Feb  7 21:58:48 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Mon Feb  8 13:00:17 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/open-uri.rb: [DOC] use lower case version of core classes, same</div><div class='del'>-	  as commit r44878, based on patch by Jonathan Jackson [Bug #9483]</div><div class='add'>+	* enc/unicode.c: Shortened macros for enc/unicode/casefold.h to</div><div class='add'>+	  single-letter; use flags in casefold.h for logic.</div><div class='ctx'> </div><div class='del'>-Fri Feb  7 21:54:53 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* enc/unicode/case-folding.rb: Added flag for case folding.</div><div class='add'>+	  Changed parameter passing.</div><div class='ctx'> </div><div class='del'>-	* ext/ripper/lib/ripper/lexer.rb: [DOC] use lower case version of core</div><div class='del'>-	  classes when referring to return value, since we aren't directly</div><div class='del'>-	  talking about the class. Patch by Jonathan Jackson [Bug #9483]</div><div class='add'>+	* enc/unicode/casefold.h: New flags added.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Fri Feb 7 05:28:38 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Mon Feb  8 10:30:10 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* constant.h: reduce rb_const_entry_t size on 64-bit</div><div class='del'>-	  Patch by Adam Avilla [ruby-core:60542] [Feature #9496]</div><div class='add'>+	* ruby.c (feature_option): raise a runtime error if ambiguous</div><div class='add'>+	  feature name is given, in the future.  [Bug #12050]</div><div class='ctx'> </div><div class='del'>-Thu Feb  6 15:27:46 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Mon Feb  8 09:43:57 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (get_envparam_int): correct warning messages.</div><div class='add'>+	* common.mk: Removed enc/unicode/casefold.h from automatic build because</div><div class='add'>+	  some CI systems don't have gperf. Creation of enc/unicode/casefold.h</div><div class='add'>+	  is now possible with make unicode-up. This is intended as a temporary measure.</div><div class='ctx'> </div><div class='del'>-	* gc.c (get_envparam_double): ditto.</div><div class='add'>+Sun Feb  7 22:10:08 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Feb  6 15:17:30 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* common.mk: Added two more precondition files for enc/unicode/casefold.h</div><div class='ctx'> </div><div class='del'>-	* gc.c (get_envparam_int): don't accept a value equals to lowerbound</div><div class='del'>-	  (changed by last commit) because "" or "foo" (not a number) strings</div><div class='del'>-	  are parsed as 0. They should be rejected.</div><div class='add'>+	* enc/unicode.c: Added shortening macros for enc/unicode/casefold.h</div><div class='ctx'> </div><div class='del'>-	* gc.c (get_envparam_double): ditto.</div><div class='add'>+	* enc/unicode/case-folding.rb: Fixed file encoding for CaseFolding.txt</div><div class='add'>+	  to ASCII-8BIT (should fix some ci errors). Clarified usage. Created</div><div class='add'>+	  class MapItem. Partially implemented class CaseMapping.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Thu Feb  6 09:00:35 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Sun Feb  7 14:12:32 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (ruby_gc_set_params): if RUBY_GC_OLDMALLOC_LIMIT is provided,</div><div class='del'>-	  then set objspace-&gt;rgengc.oldmalloc_increase_limit.</div><div class='del'>-	  Without this fix, the env variable RUBY_GC_OLDMALLOC_LIMIT</div><div class='del'>-	  does not work.</div><div class='add'>+	* enc/unicode/case-folding.rb: Fixing parameter passing.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* gc.c (get_envparam_int): accept a value equals to lowerbound.</div><div class='add'>+Sun Feb  7 11:44:03 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (get_envparam_double): ditto.</div><div class='add'>+	* enc/unicode/case-folding.rb: New classes CaseMapping/CaseMappingDummy</div><div class='add'>+	  to pass as parameters; not yet implemented or used.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Thu Feb 6 08:23:28 2014  Eric Wong  &lt;e@80x24.org&gt;</div><div class='add'>+Sun Feb  7 11:16:00 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/thread/thread.c (rb_szqueue_max_set): use correct queue and</div><div class='del'>-	  limit wakeups.  [Bug #9343][ruby-core:60517]</div><div class='del'>-	* test/thread/test_queue.rb (test_sized_queue_assign_max):</div><div class='del'>-	  test for bug</div><div class='add'>+	* common.mk: using new option in recipe for enc/unicode/casefold.h</div><div class='ctx'> </div><div class='del'>-Thu Feb  6 07:18:01 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* enc/unicode/case-folding.rb: Correctly specify argument to new option.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems:  Update to RubyGems 2.2.2.  Complete history at:</div><div class='add'>+Sun Feb  7 10:43:27 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	  http://rubygems.rubyforge.org/rubygems-update/History_txt.html#label-2.2.2+%2F+2014-02-05</div><div class='add'>+	(this commit message applies to the previous commit)</div><div class='add'>+	* common.mk: explicit recipe for enc/unicode/casefold.h</div><div class='ctx'> </div><div class='del'>-	* test/rubygems:  ditto.</div><div class='add'>+	* enc/unicode/case-folding.rb: Adding -m option to prepare for using</div><div class='add'>+	  multiple data files.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 20:56:32 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sat Feb  6 22:30:57 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* marshal.c (to_be_skipped_id): ignore anonymous attributes.</div><div class='add'>+	* lib/cgi/util.rb (escapeHTML, unescapeHTML): consider</div><div class='add'>+	  ASCII-incompatible encodings.  [Fix GH-1239]</div><div class='ctx'> </div><div class='del'>-	* pack.c (Init_pack): use anonymous ID so that associated objects</div><div class='del'>-	  do not appear in the packed result.</div><div class='add'>+Sat Feb  6 15:18:28 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (rb_make_internal_id): return an anonymous ID for</div><div class='del'>-	  internal use.</div><div class='add'>+	* test/ruby/enc/test_regex_casefold.rb: Added data-based testing for</div><div class='add'>+	  String#downcase :fold.</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 14:41:56 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* enc/unicode.c: Fixed a range error (lowest non-ASCII character affected</div><div class='add'>+	  by case operations is U+00B5, MICRO SIGN)</div><div class='ctx'> </div><div class='del'>-	* vsnprintf.c: remove duplicated def of `UNINITIALIZED_VAR()'.</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Explicit test for case folding of</div><div class='add'>+	  MICRO SIGN to Greek mu.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 14:40:16 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Sat Feb  6 14:51:23 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/objspace/objspace_dump.c (dump_object): use STR_SHARED_P()</div><div class='del'>-	  instead of removed STR_NOCAPA_P() macro.</div><div class='add'>+	* test/ruby/enc/test_regex_casefold.rb: Tests for three case folding</div><div class='add'>+	  primitives (mbc_case_fold, get_case_fold_codes_by_str,</div><div class='add'>+	  apply_all_case_fold) in the various encodings. Currently only known</div><div class='add'>+	  good encodings are tested to avoid test failures. For bug hunting,</div><div class='add'>+	  start by adding more encodings with</div><div class='add'>+	  generate_test_casefold encoding</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 13:51:33 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Sat Feb  6 14:37:16 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* internal.h, vm_core.h: move LIKELY/UNLIKELY/UNINITIALIZED_VAR()</div><div class='del'>-	  macros from vm_core.h to internal.h.</div><div class='add'>+	* enc/unicode.c, test/ruby/enc/test_case_mapping.rb: Implemented :fold</div><div class='add'>+	  option for String#downcase by using case folding data from</div><div class='add'>+	  regular expression engine, and added a few simple tests.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* string.c: remove dependency to "vm_core.h".</div><div class='add'>+Fri Feb  5 20:08:59 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* common.mk: ditto.</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: added tests for :ascii option.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 13:29:01 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Fri Feb  5 12:22:20 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_free): use FL_TEST(str, STR_SHARED) directly</div><div class='del'>-	  because str is not embed.</div><div class='add'>+	* insns.def (opt_mult): Use int128_t for overflow detection.</div><div class='ctx'> </div><div class='del'>-	* string.c (str_replace): remove `FL_SET(str, STR_SHARED)' line</div><div class='del'>-	  because STR_SET_SHARED() set STR_SHARED.</div><div class='add'>+	* bignum.c (rb_uint128t2big): added for opt_mult.</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 13:18:08 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* bignum.c (rb_uint128t2big): added for rb_uint128t2big..</div><div class='ctx'> </div><div class='del'>-	* internal.h: remove macros STR_NOCAPA and STR_NOCAPA_P().</div><div class='add'>+	* configure.in: define int128_t, uint128_t and related MACROs.</div><div class='add'>+	  Initially introduced by r41379 but reverted by r50749.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_resize): remove `STR_SET_NOEMBED(str)' because</div><div class='del'>-	  str_make_independent_expand() set NOEMBED flag.</div><div class='add'>+Thu Feb  4 21:05:17 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_resize): remove `STR_NOCAPA_P(str)' check because</div><div class='del'>-	  `str' is independent (not shared).</div><div class='add'>+	* enc/unicode.c: Activated :ascii flag for ASCII-only case conversion</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 12:54:25 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Thu Feb  4 17:38:01 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c: refactoring, especially about string flags.</div><div class='add'>+	* re.c (reg_set_source): make source string frozen without</div><div class='add'>+	  copying.</div><div class='ctx'> </div><div class='del'>-	* string.c (STR_UNSET_NOCAPA): removed.</div><div class='del'>-	  Use FL_UNSET() with STR_SHARED.</div><div class='add'>+	* re.c (rb_reg_initialize_m): refactor initialization with</div><div class='add'>+	  encoding.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_capacity): check STR_SHARED directly</div><div class='del'>-	  because it is not a embed string.</div><div class='add'>+Thu Feb  4 15:35:29 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_modify_expand): ditto.</div><div class='add'>+	* string.c (rb_fstring_enc_new, rb_fstring_enc_cstr): functions to</div><div class='add'>+	  make fstring with encoding.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_shared_replace): use STR_SET_SHARED().</div><div class='add'>+Thu Feb  4 14:42:29 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (str_make_independent_expand): remove STR_UNSET_NOCAPA()</div><div class='del'>-	  because `str' is not shared string.</div><div class='add'>+	* common.mk: Added Unicode data file SpecialCasing.txt to be additionally</div><div class='add'>+	  downloaded (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 12:11:04 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Thu Feb  4 12:39:08 2016  joker1007  &lt;kakyoin.hierophant@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (RESIZE_CAPA): should not resize shared string.</div><div class='add'>+	* cgi/escape/escape.c: Optimize CGI.escape performance by C ext</div><div class='add'>+	  for ASCII-compatible encodings.  [Fix GH-1238]</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 11:46:42 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Thu Feb  4 11:53:56 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* gc.c (gc_mark_children): STR_ASSOC is no longer available.</div><div class='del'>-	  Reported by @nagachika.</div><div class='del'>-	  http://d.hatena.ne.jp/nagachika/20140204</div><div class='add'>+	* common.mk: Introduce two variables (UNICODE_DATA_DIR and</div><div class='add'>+	  UNICODE_SRC_DATA_DIR) to eliminate repetitions.</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 11:27:22 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Wed Feb  3 12:13:20 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_new_frozen): refactoring code.</div><div class='del'>-	  * Move code from str_new_frozen_with_klass() (and remove it)</div><div class='del'>-	  * `aux.shared' should not be 0 for STR_SHARED strings.</div><div class='add'>+	* string.c (str_new_frozen): if the given string is embeddedable</div><div class='add'>+	  but not embedded, embed a new copied string. [Bug #11946]</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 04:23:41 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+Wed Feb  3 08:25:38 2016  boshan  &lt;boshan@subsplash.com&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych.rb: New release of psych.</div><div class='del'>-	* ext/psych/psych.gemspec: ditto</div><div class='add'>+	* ext/openssl/ossl_pkey.c (Init_ossl_pkey): [DOC] Fix typo</div><div class='add'>+	  "encrypted" to "decrypted".  [Fix GH-1235]</div><div class='ctx'> </div><div class='del'>-Wed Feb  5 04:16:41 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+Wed Feb  3 08:21:32 2016  Seiei Miyagi  &lt;hanachin@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/psych/yaml/emitter.c: merge libyaml 0.1.5</div><div class='del'>-	* ext/psych/yaml/loader.c: ditto</div><div class='del'>-	* ext/psych/yaml/parser.c: ditto</div><div class='del'>-	* ext/psych/yaml/reader.c: ditto</div><div class='del'>-	* ext/psych/yaml/scanner.c: ditto</div><div class='del'>-	* ext/psych/yaml/writer.c: ditto</div><div class='del'>-	* ext/psych/yaml/yaml_private.h: ditto</div><div class='add'>+	* ext/ripper/lib/ripper/lexer.rb (on_heredoc_dedent): Fix</div><div class='add'>+	  Ripper.lex error in dedenting squiggly heredoc.  heredoc tree is</div><div class='add'>+	  also an array of Elem in the outer tree.  [Fix GH-1234]</div><div class='ctx'> </div><div class='del'>-Tue Feb  4 19:10:29 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Wed Feb  3 02:33:39 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c: use long allocator names instead of numbered</div><div class='del'>-	  allocator names.</div><div class='del'>-	  * rb_str_new2 -&gt; rb_str_new_cstr</div><div class='del'>-	  * rb_str_new4 -&gt; rb_str_new_frozen</div><div class='del'>-	  * rb_str_new5 -&gt; rb_str_new_with_class</div><div class='del'>-	  * str_new3 -&gt; str_new_shared</div><div class='del'>-	  * str_new4 -&gt; str_new_frozen_with_klass</div><div class='add'>+	* re.c (rb_reg_prepare_enc): use already compiled US-ASCII regexp</div><div class='add'>+	  if given string is ASCII only.</div><div class='add'>+	  121.2s to 113.9s on my x86_64-freebsd10.2 Intel Core i5 661</div><div class='ctx'> </div><div class='del'>-Tue Feb  4 17:20:03 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Feb  2 13:02:03 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_helper): return the filename with actual cases on</div><div class='del'>-	  the filesystem if it is case-insensitive.  [ruby-core:42469]</div><div class='del'>-	  [Feature #5994]</div><div class='add'>+	* re.c: Introduce RREGEXP_PTR.</div><div class='add'>+	  patch by dbussink.</div><div class='add'>+	  partially merge https://github.com/ruby/ruby/pull/497</div><div class='ctx'> </div><div class='del'>-Tue Feb  4 16:16:58 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* include/ruby/ruby.h: ditto.</div><div class='ctx'> </div><div class='del'>-	* string.c: use STR_SHARED instead of ELTS_SHARED.</div><div class='del'>-	  (same value, but more clear meaning)</div><div class='add'>+	* gc.c: ditto.</div><div class='ctx'> </div><div class='del'>-Tue Feb  4 16:09:14 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* ext/strscan/strscan.c: ditto.</div><div class='ctx'> </div><div class='del'>-	* string.c: remove STR_ASSOC related code.</div><div class='del'>-	  By r44804, string objects can not have STR_ASSOC flag.</div><div class='add'>+	* parse.y: ditto.</div><div class='ctx'> </div><div class='del'>-	* internal.h: ditto.</div><div class='add'>+	* string.c: ditto.</div><div class='ctx'> </div><div class='del'>-	* ext/objspace/objspace_dump.c (dump_object): ditto.</div><div class='add'>+Tue Feb  2 09:08:27 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb  4 14:07:20 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/rubygems/specification.rb: `coding` is effective only first</div><div class='add'>+	  line except shebang.</div><div class='ctx'> </div><div class='del'>-	* pack.c (str_associate, str_associated): keep associated objects</div><div class='del'>-	  in an instance variables, instead of in the internal structure.</div><div class='add'>+	* lib/rubygems/package.rb, lib/rubygems/package/*: ditto.</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_associate, rb_str_associated): deprecate.</div><div class='add'>+Mon Feb  1 21:41:58 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb  4 12:55:31 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.5.2.</div><div class='add'>+	  It supports to enable frozen string literal and add `--norc` option for</div><div class='add'>+	  disable to `.gemrc` configuration.</div><div class='add'>+	  See 2.5.2 release notes for other fixes and enhancements.</div><div class='add'>+	  https://github.com/rubygems/rubygems/blob/a8aa3bac723f045c52471c7b9328310a048561e0/History.txt#L3</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_modify_expand): enable capacity and disable</div><div class='del'>-	  association with packed objects when setting capa, so that</div><div class='del'>-	  pack("p") string fails to unpack properly after modified.</div><div class='add'>+Sun Jan 31 12:33:13 2016  Dan Kreiger  &lt;dan@dankreiger.com&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb  4 12:45:15 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/drb/ut_large.rb (multiply, avg, median): add additional</div><div class='add'>+	  math operations to DRbLarge.  [Fix GH-1086]</div><div class='ctx'> </div><div class='del'>-	* dir.c (glob_make_pattern): all alphabets are magic characters on</div><div class='del'>-	  case-insensitive filesystems.  [ruby-core:42469] [Feature #5994]</div><div class='add'>+Sun Jan 31 12:19:15 2016  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Tue Feb  4 09:47:57 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* test/ruby/test_file_exhaustive.rb (test_lstat): Add lacking test</div><div class='add'>+	  for File#lstat.  [Fix GH-1231]</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems:  Update to RubyGems 2.2.2 prerelease to check fixes to</div><div class='del'>-	  CI.</div><div class='del'>-	* test/rubygems:  ditto.</div><div class='add'>+Sun Jan 31 12:15:33 2016  Prayag Verma  &lt;prayag.verma@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Mon Feb  3 12:04:47 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='add'>+	* doc/standard_library.rdoc: fix typo  [Fix GH-1230]</div><div class='add'>+	  Spelling mistakes -</div><div class='add'>+	  outputing &gt; outputting</div><div class='add'>+	  publich &gt; publish</div><div class='ctx'> </div><div class='del'>-	* error.c: [DOC] Exception#cause may return nil. [ci skip]</div><div class='add'>+Sat Jan 30 15:18:07 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Feb 2 05:48:42 2014  Eric Wong &lt;e@80x24.org&gt;</div><div class='add'>+	* vm_eval.c (rb_check_funcall_with_hook): also should call the</div><div class='add'>+	  given hook before returning Qundef when overridden respond_to?</div><div class='add'>+	  method returned false.  [ruby-core:73556] [Bug #12030]</div><div class='ctx'> </div><div class='del'>-	* io.c (rb_io_syswrite): add RB_GC_GUARD</div><div class='del'>-	  [Bug #9472][ruby-core:60407]</div><div class='add'>+Fri Jan 29 17:40:07 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Feb  1 15:09:16 2014  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='add'>+	* win32/file.c (rb_readlink): drop garbage after the substitute</div><div class='add'>+	  name, as rb_w32_read_reparse_point returns the expected buffer</div><div class='add'>+	  size but "\??\" prefix is dropped from the result.</div><div class='ctx'> </div><div class='del'>-	* ext/win32ole/win32ole.c (ole_typedesc2val): add VT_RECORD case.</div><div class='add'>+	* win32/win32.c (w32_readlink): ditto, including NUL-terminator.</div><div class='ctx'> </div><div class='del'>-Sat Feb  1 06:38:51 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Fri Jan 29 17:07:27 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/drb/drb.rb: [DOC] Add note about start_service for each process</div><div class='del'>-	  Based on a patch by @rosenfeld [Fixes GH-514] [ci skip]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/514</div><div class='add'>+	* win32/win32.c (fileattr_to_unixmode, rb_w32_reparse_symlink_p): volume</div><div class='add'>+	  mount point should be treated as directory, not symlink.</div><div class='add'>+	  [ruby-core:72483] [Bug #11874]</div><div class='ctx'> </div><div class='del'>-Sat Feb  1 06:30:20 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* win32/win32.c (rb_w32_read_reparse_point): check the reparse point is</div><div class='add'>+	  a volume mount point or not.</div><div class='ctx'> </div><div class='del'>-	* error.c: [DOC] Document Exception#cause by @jasonrclark [ci skip]</div><div class='del'>-	  [Fixes GH-519] https://github.com/ruby/ruby/pull/519</div><div class='add'>+	* win32/file.c (rb_readlink): follow above change (but this pass won't</div><div class='add'>+	  be used).</div><div class='ctx'> </div><div class='del'>-Sat Feb  1 06:10:49 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Fri Jan 29 16:17:07 2016  Lucas Buchala  &lt;lucasbuchala@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/securerandom.rb: [DOC] Add note on require for examples</div><div class='del'>-	  Based on a patch by @schneems [Fixes GH-518] [ci skip]</div><div class='del'>-	  https://github.com/ruby/ruby/pull/518</div><div class='add'>+	* enum.c (enum_take_while, enum_drop_while): rename block</div><div class='add'>+	  parameter to obj, since they are generic objects.  [Fix GH-1226]</div><div class='ctx'> </div><div class='del'>-Sat Feb  1 06:04:56 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Fri Jan 29 14:15:26 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* numeric.c: [DOC] Fix typo in example for #step [ci skip]</div><div class='del'>-	  Patch by @ksss [Fixes GH-522] https://github.com/ruby/ruby/pull/522</div><div class='add'>+	* lib/erb.rb (ERB::Compiler#detect_magic_comment): allow</div><div class='add'>+	  frozen-string-literal in comment as well as encoding.</div><div class='ctx'> </div><div class='del'>-Fri Jan 31 17:01:47 2014  Eric Wong &lt;e@80x24.org&gt;</div><div class='add'>+	* lib/erb.rb (ERB#def_method): insert def line just before the</div><div class='add'>+	  first non-comment and non-empty line, not to leave duplicated</div><div class='add'>+	  and stale magic comments.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/init.c (rsock_socket0): split out SOCK_CLOEXEC version</div><div class='del'>-	* ext/socket/socket.c (rsock_socketpair0): ditto</div><div class='del'>-	  [ruby-core:60377]</div><div class='add'>+Fri Jan 29 11:13:33 2016  Jeremy Evans  &lt;code@jeremyevans.net&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan 31 03:48:40 2014  Eric Wong &lt;e@80x24.org&gt;</div><div class='add'>+	* lib/erb.rb (ERB#set_eoutvar): explicitly make mutable string as</div><div class='add'>+	  a buffer to make ERB work with --enable-frozen-string-literal.</div><div class='add'>+	  [ruby-core:73561] [Bug #12031]</div><div class='ctx'> </div><div class='del'>-	* benchmark/driver: avoid large alloc in driver process</div><div class='del'>-	  [ruby-core:59869] [Bug #9430]</div><div class='add'>+Fri Jan 29 10:44:56 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan 30 14:45:49 2014  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='add'>+	* lib/net/http/header.rb: Warn nil variable on HTTP Header.</div><div class='add'>+	  It caused to NoMethodError. [fix GH-952][fix GH-641] Patch by @teosz</div><div class='add'>+	* test/net/http/test_httpheader.rb: Added test for nil HTTP Header.</div><div class='ctx'> </div><div class='del'>-	* configure.in: use $@ instead of $(.TARGET) because .TARGET is not</div><div class='del'>-	  supported by GNU make.</div><div class='add'>+Thu Jan 28 17:31:43 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan 30 08:26:21 2014  Yusuke Endoh  &lt;mame@tsg.ne.jp&gt;</div><div class='add'>+	* ext/socket/socket.c (sock_gethostname): support unlimited size</div><div class='add'>+	  hostname.</div><div class='ctx'> </div><div class='del'>-	* ext/fiddle/closure.c: use sizeof(*pcl) for correct sizeof value.</div><div class='del'>-	  [ruby-core:57599] [Bug #8978].</div><div class='add'>+Wed Jan 27 21:03:45 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Jan 29 20:08:15 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/-ext-/string/test_capacity.rb: Added missing library.</div><div class='ctx'> </div><div class='del'>-	* io.c (nogvl_copy_stream_sendfile): check socket on other than</div><div class='del'>-	  linux, as sendfile(2) on non-socket fd works only on linux.</div><div class='del'>-	  [Feature #9427]</div><div class='add'>+Wed Jan 27 18:53:40 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Jan 29 18:09:48 2014  Eric Wong &lt;e@80x24.org&gt;</div><div class='add'>+	* enc/unicode.c: Fixed bit mask in macro OnigCodePointCount</div><div class='ctx'> </div><div class='del'>-	* io.c (nogvl_copy_stream_sendfile): remove socket check</div><div class='del'>-	  [ruby-core:59856][Feature #9427]</div><div class='add'>+Wed Jan 27 17:54:42 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Jan 29 04:29:54 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+	* enc/unicode.c: Protect code point count by macro, in order to</div><div class='add'>+	  be able to use the remaining bits for flags.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/ossl_ssl.c: pass read_nonblock options to underlying IO</div><div class='del'>-	  when SSL session has not been started.</div><div class='add'>+Wed Jan 27 16:34:35 2016  boshan  &lt;boshan@subsplash.com&gt;</div><div class='ctx'> </div><div class='del'>-	* test/openssl/test_ssl.rb: test for change.</div><div class='add'>+	* lib/tempfile.rb (Tempfile#initialize): [DOC] the first parameter</div><div class='add'>+	  `basename` is optional and defaulted to an empty string since</div><div class='add'>+	  [GH-523].  [Fix GH-1225]</div><div class='ctx'> </div><div class='del'>-Wed Jan 29 03:49:36 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+Wed Jan 27 16:25:54 2016  Koichi ITO  &lt;koic.ito@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/fiddle/closure.c: use sizeof(*pcl) for correct sizeof value.</div><div class='del'>-	  [ruby-core:57599] [Bug #8978].  Thanks mame!</div><div class='add'>+	* array.c (rb_ary_dig): [DOC] fix the exception class to be raised</div><div class='add'>+	  when intermediate object does not have dig method.  TypeError</div><div class='add'>+	  will be raised now.  [Fix GH-1224]</div><div class='ctx'> </div><div class='del'>-Wed Jan 29 03:36:42 2014  Eric Wong &lt;e@80x24.org&gt;</div><div class='add'>+Tue Jan 26 19:36:15 2016  Aggelos Avgerinos  &lt;evaggelos.avgerinos@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* doc/contributing.rdoc: allow/encourage other git hosts</div><div class='del'>-	  [ruby-core:59807][misc #9421]</div><div class='add'>+	* array.c (permute0, rpermute0): [DOC] Substitute indexes -&gt;</div><div class='add'>+	  indices in documentation for consistency.  [Fix GH-1222]</div><div class='ctx'> </div><div class='del'>-Tue Jan 28 23:36:01 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Tue Jan 26 15:21:37 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket: Avoid redundant fcntl/fstat syscalls for cloexec</div><div class='del'>-	  sockets.</div><div class='del'>-	  Patch by Eric Wong.  [ruby-core:59429] [Feature #9330]</div><div class='add'>+	* compile.c (caller_location): use rb_fstring_cstr for "&lt;compiled&gt;"</div><div class='add'>+	  (it is converted to fstring anyways inside rb_iseq_new_with_opt)</div><div class='add'>+	* iseq.c (iseqw_s_compile): ditto</div><div class='add'>+	* iseq.c (rb_iseq_new_main): use rb_fstring_cstr for "&lt;main&gt;"</div><div class='add'>+	* vm.c (Init_VM): ditto, share with with above</div><div class='add'>+	* iseq.c (iseqw_s_compile_file): rb_fstring before rb_io_t-&gt;pathv</div><div class='add'>+	  share "&lt;main&gt;" with above</div><div class='add'>+	* vm.c (rb_binding_add_dynavars): fstring "&lt;temp&gt;" immediately</div><div class='ctx'> </div><div class='del'>-Tue Jan 28 20:51:07 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Tue Jan 26 15:14:01 2016  Kazuki Yamaguchi  &lt;k@rhe.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* process.c (READ_FROM_CHILD): Apply the last hunk of</div><div class='del'>-	  0001-process.c-avoid-EINTR-from-Process.spawn.patch written by</div><div class='del'>-	  Eric Wong in [Bug #8770].</div><div class='add'>+	* compile.c (iseq_peephole_optimize): don't apply tailcall</div><div class='add'>+	  optimization to send/invokesuper instructions with blockiseq.</div><div class='add'>+	  This is a follow-up to the changes in r51903; blockiseq is now</div><div class='add'>+	  the third operand of send/invokesuper instructions.</div><div class='add'>+	  [ruby-core:73413] [Bug #12018]</div><div class='ctx'> </div><div class='del'>-Tue Jan 28 16:31:13 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jan 26 14:26:46 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (ruby_init_stack, ruby_stack_overflowed_p):</div><div class='del'>-	  place get_stack above others to get stack boundary information.</div><div class='del'>-	  [ruby-core:60113] [Bug #9454]</div><div class='add'>+	* signal.c (sig_list): use fstring for hash key</div><div class='add'>+	* test/ruby/test_signal.rb (test_signal_list_dedupe_keys): added</div><div class='ctx'> </div><div class='del'>-Tue Jan 28 15:27:36 2014  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='add'>+Tue Jan 26 13:08:34 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c: rlimit is only available on Linux.</div><div class='del'>-	  At least r44712 breaks FreeBSD.</div><div class='del'>-	  [ruby-core:60113] [Bug #9454]</div><div class='add'>+	* signal.c (rb_f_kill): should immediately deliver reserved</div><div class='add'>+	  signals SIGILL and SIGFPE, not only SIGSEGV and SIGBUS.</div><div class='ctx'> </div><div class='del'>-Tue Jan 28 15:17:59 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Tue Jan 26 07:57:28 2016  Joseph Tibbertsma  &lt;josephtibbertsma@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/set.rb: [DOC] Add examples for Set#intersect? and Set#disjoint?</div><div class='del'>-	  Patch by xavier nayrac [Bug #9331] [ci skip]</div><div class='add'>+	* gc.c (RVALUE_PAGE_WB_UNPROTECTED): fix a typo of argument name.</div><div class='add'>+	  [Fix GH-1221]</div><div class='ctx'> </div><div class='del'>-Tue Jan 28 15:12:22 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Mon Jan 25 17:26:54 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/zlib/zlib.c (rb_zlib_adler32): [DOC] Add example for adler32</div><div class='del'>-	  Patch by Vajrasky Kok [Bug #9307] [ci skip]</div><div class='add'>+	* ruby_assert.h (RUBY_ASSERT_WHEN): fix reference to macro name</div><div class='add'>+	* vm_core.h: include ruby_assert.h before using</div><div class='add'>+	  [ruby-core:73371]</div><div class='ctx'> </div><div class='del'>-Tue Jan 28 08:56:00 2014  Charlie Somerville  &lt;charliesome@ruby-lang.org&gt;</div><div class='add'>+Mon Jan 25 15:55:30 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* compile.c (iseq_build_from_ary_body): Use :blockptr instead of :block</div><div class='del'>-	  as hash key when loading serialized instruction sequences from arrays.</div><div class='del'>-	  [Bug #9455] [ruby-core:60146]</div><div class='add'>+	* symbol.c (sym_check_asciionly): more informative error message</div><div class='add'>+	  with the encoding name and the inspected content.</div><div class='add'>+	  [ruby-core:73398] [Feature #12016]</div><div class='ctx'> </div><div class='del'>-Mon Jan 27 21:52:55 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Mon Jan 25 09:38:26 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c: get current main thread stack size, which may</div><div class='del'>-	  be expanded than allocated size at initialization, by rlimit().</div><div class='del'>-	  [ruby-core:60113] [Bug #9454]</div><div class='add'>+	* test/ruby/test_string.rb: added testcase for next!, succ and succ!</div><div class='add'>+	  [fix GH-1213] Patch by @K0mAtoru</div><div class='ctx'> </div><div class='del'>-Sat Jan 25 22:17:02 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='add'>+Mon Jan 25 09:32:25 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* README.ja.md, README.md: update the controller address of</div><div class='del'>-	  mailing lists.</div><div class='add'>+	* lib/webrick/httpservlet/filehandler.rb: fix documentation for namespace.</div><div class='add'>+	  [fix GH-1219][ci skip] Patch by @leafac</div><div class='ctx'> </div><div class='del'>-Sat Jan 25 14:50:42 2014  Eric Wong  &lt;normalperson@yhbt.net&gt;</div><div class='add'>+Sun Jan 24 19:34:23 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* process.c (send_child_error): retry write on EINTR to fix</div><div class='del'>-	  occasional Errno::EINTR from Process.spawn.</div><div class='add'>+	* vm_insnhelper.c (vm_check_if_namespace): tiny size reduction</div><div class='ctx'> </div><div class='del'>-	* process.c (recv_child_error): retry read on EINTR to fix</div><div class='del'>-	  occasional Errno::EINTR from Process.spawn.</div><div class='add'>+Sun Jan 24 18:12:36 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 25 14:21:06 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* common.mk: Simplifying Unicode data file download logic to make</div><div class='add'>+	  it more reliable (including additional fix not in r53633) [Bug #12007]</div><div class='ctx'> </div><div class='del'>-	* compile.c (iseq_compile_each): result of assignment should be</div><div class='del'>-	  its rhs instead of returned value from a method.</div><div class='del'>-	  [ruby-core:60071] [Bug #9448]</div><div class='add'>+Sun Jan 24 16:54:11 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 25 11:16:19 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* ext/io/wait/wait.c (io_wait_readwrite): [EXPERIMENTAL] allow to</div><div class='add'>+	  wait for multiple modes, readable and writable, at once.  the</div><div class='add'>+	  arguments may change in the future.  [Feature #12013]</div><div class='ctx'> </div><div class='del'>-	* class.c (rb_extract_keywords): treat nil keyword_hash same as 0,</div><div class='del'>-	  for the case rb_scan_args returns nil if no keyword hash.</div><div class='add'>+Sat Jan 23 22:30:59 2016  K0mA  &lt;mctj1218@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan 24 15:13:20 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* test/ruby/test_array.rb (test_keep_if): Add test for</div><div class='add'>+	  Array#keep_if separate from Array#select!  [Fix GH-1218]</div><div class='ctx'> </div><div class='del'>-	* lib/racc/rdoc/grammar.en.rdoc: [DOC] Correct grammar and typos</div><div class='del'>-	  Patch by Giorgos Tsiftsis [Bug #9429] [ci skip]</div><div class='add'>+Sat Jan 23 20:54:26 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan 23 20:20:17 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* common.mk: revert r53633. It broke rubyci and travis.</div><div class='add'>+	  https://travis-ci.org/ruby/ruby/builds/104259623</div><div class='ctx'> </div><div class='del'>-	* test/ruby/envutil.rb: try to wait a bit (0.1sec) when ruby process</div><div class='del'>-	  exits by signals because some SEGV tests fail because of not enough</div><div class='del'>-	  error output.</div><div class='add'>+Sat Jan 23 20:10:29 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan 23 20:06:27 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* range.c (range_eqq): revert r51585 because rb_call_super() is</div><div class='add'>+	  called in range_include() and thus r51585 doesn't work when the</div><div class='add'>+	  receiver Range object consists of non linear objects such as Date</div><div class='add'>+	  objects.</div><div class='add'>+	  [ruby-core:72908] [Bug #12003]</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_settracefunc.rb: check the target thread.</div><div class='add'>+Sat Jan 23 18:37:37 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan 23 19:59:16 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* ChangeLog: Fixing wrong time on previous commit, and adding</div><div class='add'>+	  previous commit message to svn [ci skip]</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_settracefunc.rb: check the target thread.</div><div class='add'>+Sat Jan 23 18:30:30 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan 23 14:26:44 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* common.mk: Simplifying Unicode data file download logic to make</div><div class='add'>+	  it more reliable [Bug #12007]</div><div class='ctx'> </div><div class='del'>-	* lib/fileutils.rb: [DOC] Fix typo in options_of() example [Bug #9392]</div><div class='del'>-	  Patch by Giorgos Tsiftsis</div><div class='add'>+Sat Jan 23 16:29:42 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan 23 13:56:16 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* tool/downloader.rb: Fixed a logical error, improved documentation</div><div class='ctx'> </div><div class='del'>-	* README -&gt; README.md: [DOC] Format README with Markdown [Bug #9255]</div><div class='del'>-	* README.ja -&gt; README.ja.md: ditto</div><div class='add'>+Sat Jan 23 11:42:43 2016  Peter Suschlik  &lt;ps@neopoly.de&gt;</div><div class='ctx'> </div><div class='del'>-Wed Jan 22 15:59:39 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* README.md: Use SVG Travis badge over PNG for better quality and</div><div class='add'>+	  device support.  [Fix GH-1214] [Fix GH-1216]</div><div class='ctx'> </div><div class='del'>-	* ext/thread/thread.c (Init_thread): ConditionVariable and Queue</div><div class='del'>-	  are not able to copy.  [ruby-core:59961] [Bug #9440]</div><div class='add'>+Sat Jan 23 11:29:16 2016  Pascal Betz  &lt;pascal.betz@simplificator.com&gt;</div><div class='ctx'> </div><div class='del'>-Tue Jan 21 20:14:55 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/csv.rb: Update documentation of CSV header converter for</div><div class='add'>+	  r45498, [GH-575].  [Fix GH-1215]</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (rb_thread_create_timer_thread): fix for platforms</div><div class='del'>-	  where PTHREAD_STACK_MIN is a dynamic value and not a compile-time</div><div class='del'>-	  constant.  [ruby-dev:47911] [Bug #9436]</div><div class='add'>+Fri Jan 22 17:36:46 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Jan 21 17:55:09 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* vm_core.h (VM_ASSERT): use RUBY_ASSERT instead of rb_bug.</div><div class='ctx'> </div><div class='del'>-	* lib/uri/common.rb: [DOC] Use static w3.org uri [ci skip]</div><div class='del'>-	  Patch by @ykzts [Fix GH-484] https://github.com/ruby/ruby/pull/484</div><div class='add'>+	* error.c (rb_assert_failure): assertion with stack dump.</div><div class='ctx'> </div><div class='del'>-Tue Jan 21 16:43:22 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* ruby_assert.h (RUBY_ASSERT): new header for the assertion.</div><div class='ctx'> </div><div class='del'>-	* enum.c: [DOC] Add simple example of Enumerable#zip [ci skip]</div><div class='del'>-	  Patch by @nruth on documenting-ruby/ruby#22</div><div class='del'>-	  https://github.com/documenting-ruby/ruby/pull/22</div><div class='add'>+Fri Jan 22 00:25:57 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Jan 21 16:26:44 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* regparse.c (fetch_name_with_level): allow non word characters</div><div class='add'>+	  at the first character.  [Feature #11949]</div><div class='ctx'> </div><div class='del'>-	* thread_pthread.c (rb_thread_create_timer_thread): expand timer</div><div class='del'>-	  thread stack size to get rid of segfault on FreeBSD/powerpc64.</div><div class='del'>-	  based on the patch by Steve Wills at [ruby-core:59923].</div><div class='del'>-	  [ruby-core:56590] [Bug #8783]</div><div class='add'>+	* regparse.c (fetch_name): ditto.</div><div class='ctx'> </div><div class='del'>-Tue Jan 21 04:31:23 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu Jan 21 17:34:01 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/option.c: Use "int" for IP_MULTICAST_LOOP and</div><div class='del'>-	  IP_MULTICAST_TTL on Mac OS X and Windows.</div><div class='add'>+	* marshal.c (r_object0): honor Marshal.load post proc</div><div class='add'>+	  value for TYPE_LINK.  by Hiroshi Nakamura &lt;nahi@ruby-lang.org&gt;</div><div class='add'>+	  https://github.com/ruby/ruby/pull/1204 fix GH-1204</div><div class='ctx'> </div><div class='del'>-Tue Jan 21 00:39:15 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Thu Jan 21 16:37:50 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/option.c: Use "byte" as default argument for</div><div class='del'>-	  IP_MULTICAST_LOOP and IP_MULTICAST_TTL socket option to follow</div><div class='del'>-	  the original multicast implementation.</div><div class='add'>+	* Makefile.in (update-rubyspec): fix r53208 like r53451.</div><div class='ctx'> </div><div class='del'>-Mon Jan 20 20:20:27 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+Wed Jan 20 20:58:25 2016  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/option.c: Use preprocessor macros to avoid repeated</div><div class='del'>-	  conditionals.</div><div class='add'>+	* common.mk, Makefile.in: update-config_files is only for Unix</div><div class='add'>+	  platforms.</div><div class='ctx'> </div><div class='del'>-Mon Jan 20 13:55:03 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Wed Jan 20 17:13:39 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems/version.rb: [DOC] Use gender-neutral pronouns [ci skip]</div><div class='del'>-	* lib/rubygems/security.rb: ditto</div><div class='add'>+	* tool/extlibs.rb: add --cache option to change cache directory.</div><div class='ctx'> </div><div class='del'>-Sun Jan 19 06:38:48 2014  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='add'>+Tue Jan 19 17:03:40 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* compar.c (cmp_equal): warn for this release and still rescue</div><div class='del'>-	  standard exceptions for a nicer transition. See #7688.</div><div class='del'>-	  Partly reverts r44502.</div><div class='add'>+	* common.mk: Added Unicode data file CaseFolding.txt to be additionally</div><div class='add'>+	  downloaded (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_comparable.rb: adapt assertion to match new behavior.</div><div class='add'>+Tue Jan 19 10:09:58 2016  Sho Hashimoto  &lt;sho-h@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jan 19 06:27:18 2014  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='add'>+	* lib/shell.rb (Shell.debug_output_exclusive_unlock): remove</div><div class='add'>+	  because Mutex#exclusive_unlock was already deleted. [fix GH-1185]</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_comparable.rb: specify behavior for the different</div><div class='del'>-	  kind of exceptions rescued (or not) by Comparable#==.</div><div class='add'>+Tue Jan 19 09:38:27 2016  Nick Cox  &lt;nick@nickcox.me&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 18 23:12:19 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* vm_method.c: fix grammar in respond_to? warning.</div><div class='add'>+	  [fix GH-1047]</div><div class='ctx'> </div><div class='del'>-	* ext/socket: Avoid unnecessary ppoll/select on Linux.</div><div class='del'>-	  Patch by Eric Wong.  [ruby-core:57950] [Bug #9039]</div><div class='add'>+Mon Jan 18 14:37:07 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 18 22:57:44 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* parse.y (parser_here_document): an escaped newline is not an</div><div class='add'>+	  actual newline, and the rest part should not be dedented.</div><div class='add'>+	  [ruby-core:72855] [Bug #11989]</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb (Resolv::DNS::Resource::TXT#data): Return concatenated</div><div class='del'>-	  string.</div><div class='del'>-	  Patch by Ryan Brunner.  [ruby-core:58220] [Bug #9093]</div><div class='add'>+Mon Jan 18 12:04:34 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 18 22:35:15 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* test/ruby/test_string.rb: Added extra testcase for test_rstrip_bang</div><div class='add'>+	  and test_lstrip_bang. [fix GH-1178] Patch by @Matrixbirds</div><div class='ctx'> </div><div class='del'>-	* io.c (rb_update_max_fd): Return immediately if the given fd is small</div><div class='del'>-	  enough.</div><div class='add'>+Mon Jan 18 11:47:27 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 18 22:25:53 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* string.c: fix a typo. [fix GH-1202][ci skip] Patch by @sunboshan</div><div class='ctx'> </div><div class='del'>-	* io.c: Test O_CLOEXEC only once.</div><div class='del'>-	  Patch by Eric Wong.  [ruby-core:59419] [Feature #9328]</div><div class='add'>+Sun Jan 17 21:15:30 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Jan 18 21:24:49 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* configure.in: improve ICC (Intel C Compiler) support.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/option.c: IP_MULTICAST_LOOP and IP_MULTICAST_TTL socket</div><div class='del'>-	  option takes a byte on OpenBSD.</div><div class='del'>-	  Fixed by Jeremy Evans.  [ruby-core:59496] [Bug #9350]</div><div class='add'>+	* configure.in (CXX): The name of icc's c++ compiler is `icpc`.</div><div class='ctx'> </div><div class='del'>-Sat Jan 18 21:19:04 2014  Tanaka Akira  &lt;akr@fsij.org&gt;</div><div class='add'>+	* configure.in (warnings): Add `-diag-disable=2259` to suppress</div><div class='add'>+	  noisy warnings: "non-pointer conversion from "..." to "..." may</div><div class='add'>+	  lose significant bits".</div><div class='ctx'> </div><div class='del'>-	* lib/open-uri.rb: Make proxy disabling working again.</div><div class='del'>-	  Fixed by Christophe Philemotte.   [ruby-core:59650] [Bug #9385]</div><div class='add'>+	* configure.in (optflags): Add `-fp-model precise` like -fno-fast-math.</div><div class='ctx'> </div><div class='del'>-Fri Jan 17 20:05:02 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/mkmf.rb: icc supports -Werror=division-by-zero</div><div class='add'>+	  and -Werror=deprecated-declarations, but doesn't support</div><div class='add'>+	  -Wdivision-by-zero and -Wdeprecated-declarations.</div><div class='ctx'> </div><div class='del'>-	* lib/delegate.rb (Delegator): keep source information methods</div><div class='del'>-	  which start and end with '__'.  [ruby-core:59718] [Bug #9403]</div><div class='add'>+Sun Jan 17 20:40:10 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan 17 17:58:04 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* string.c: Any kind of option is now taking the new code path for</div><div class='add'>+	  upcase/downcase/capitalize/swapcase. :lithuanian can be used for</div><div class='add'>+	  testing if no specific option is desired.</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Adjusted to above.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* eval.c (rb_mod_s_constants): return its own constants for other</div><div class='del'>-	  than Module itself.  [ruby-core:59763] [Bug #9413]</div><div class='add'>+Sun Jan 17 20:10:10 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Tue Jan 16 00:17:00 2014  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='add'>+	* enc/unicode.c: Fixed a logical error and some comments.</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Made tests more general.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.gemspec: bigdecimal version 1.2.5.</div><div class='add'>+Sun Jan 17 17:41:41 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Wed Jan 15 20:30:31 2014  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+	* enc/unicode.c: Removed artificial expansion for Turkic,</div><div class='add'>+	  added hand-coded support for Turkic, fixed logic for swapcase.</div><div class='add'>+	* string.c: Made use of new case mapping code possible from upcase,</div><div class='add'>+	  capitalize, and swapcase (with :lithuanian as a guard).</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Adjusted for above.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* io.c (io_binwrite): use writev(2) to avoid double write if available.</div><div class='add'>+Sun Jan 17 15:30:57 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: check writev(2)</div><div class='add'>+	* ext/socket/option.c (sockopt_bool): relax boolean size to be one</div><div class='add'>+	  too not only sizeof(int).  Winsock getsockopt() returns a single</div><div class='add'>+	  byte as a boolean socket option.  [ruby-core:72730] [Bug #11958]</div><div class='ctx'> </div><div class='del'>-Wed Jan 15 14:04:33 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jan 17 14:43:01 2016  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (get_encoding): respect BOM on pseudo encodings.</div><div class='del'>-	  [ruby-dev:47895] [Bug #9415]</div><div class='add'>+	* test/ruby/test_env.rb: [Fix GH-1201]</div><div class='add'>+	  * Extract test code for ENV#keep_if from ENV#select_bang</div><div class='add'>+	  * Add a test case for ENV#select_bang,keep_if</div><div class='ctx'> </div><div class='del'>-Wed Jan 15 14:03:47 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jan 17 14:42:25 2016  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* string.c (get_actual_encoding): get actual encoding according to</div><div class='del'>-	  the BOM if exists.</div><div class='add'>+	* test/ruby/test_env.rb: [Fix GH-1201]</div><div class='add'>+	  * Extract test code for ENV#delete_if from ENV#reject_bang</div><div class='add'>+	  * Add a test case for ENV#reject_bang,delete_if</div><div class='ctx'> </div><div class='del'>-	* string.c (rb_str_inspect): use according encoding, instead of</div><div class='del'>-	  pseudo encodings, UTF-{16,32}.  [ruby-core:59757] [Bug #8940]</div><div class='add'>+Sun Jan 17 14:40:22 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Jan 14 21:07:22 2014  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+	* ext/socket/option.c (check_size): extract a macro to check</div><div class='add'>+	  binary data size, with a consistent message.</div><div class='ctx'> </div><div class='del'>-	* ext/thread/thread.c (rb_szqueue_clear): notify SZQUEUE_WAITERS</div><div class='del'>-	  on SizedQueue#clear. [ruby-core:59462] [Bug #9342]</div><div class='add'>+	* ext/socket/option.c (sockopt_byte): fix error message,</div><div class='add'>+	  sizeof(int) differs from sizeof(unsigned char) in general.</div><div class='ctx'> </div><div class='del'>-	* test/thread/test_queue.rb: add test. the patch is from</div><div class='del'>-	  Justin Collins.</div><div class='add'>+Sat Jan 16 21:16:21 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Jan 14 15:58:43 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* parse.y (xstring): reset heredoc indent after dedenting,</div><div class='add'>+	  so that following string literal would not be dedented.</div><div class='add'>+	  [ruby-core:72857] [Bug #11990]</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c (CLASS_NAME): macro to wrap</div><div class='del'>-	  depending on PRIsVALUE for 1.9.  [Backport #9406]</div><div class='add'>+Sat Jan 16 17:24:24 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c (DECIMAL_SIZE_OF_BITS): fallback</div><div class='del'>-	  definition for 2.1 or older.  [ruby-core:59750] [Backport #9406]</div><div class='add'>+	* enc/unicode.c: Artificial mapping to test buffer expansion code.</div><div class='add'>+	* string.c: Fixed buffer expansion logic.</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Tests for above.</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Tue Jan 14 11:28:44 2014  Yuki Yugui Sonoda  &lt;yugui@google.com&gt;</div><div class='add'>+Sat Jan 16 16:47:14 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_exec.c (cfp): Fixes a SEGV issue in r44554.</div><div class='del'>-	  r11 can be broken by subroutine and sometimes causes SEGV at</div><div class='del'>-	  runtime.  Use r13 instead.</div><div class='add'>+	* ext/openssl/lib/openssl/pkey.rb: Added 2048 bit DH parameter.</div><div class='add'>+	* test/openssl/test_pkey_dh.rb: ditto.</div><div class='ctx'> </div><div class='del'>-Tue Jan 14 02:20:00 2014  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='add'>+Sat Jan 16 10:51:19 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c (BigDecimal_divide): Add an additional</div><div class='del'>-	  digit for the quotient to be compatible with bigdecimal 1.2.1 and</div><div class='del'>-	  the former.  [ruby-core:59365] [#9316] [#9305]</div><div class='add'>+	* enc/unicode.c: fix implicit conversion error with clang. fixup r53548.</div><div class='add'>+	* string.c: ditto.</div><div class='ctx'> </div><div class='del'>-	* test/bigdecimal/test_bigdecimal.rb: tests for the above change.</div><div class='add'>+Sat Jan 16 10:31:00 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.gemspec: bigdecimal version 1.2.4.</div><div class='add'>+	* common.mk: test-sample was changed to test-basic.</div><div class='add'>+	  [Feature #11982][ruby-core:72823]</div><div class='add'>+	* basictest/runner.rb: ditto. rename from tool/rubytest.rb.</div><div class='add'>+	* basictest/test.rb: ditto. rename from sample/test.rb.</div><div class='add'>+	* defs/gmake.mk: picked from r53540</div><div class='add'>+	* sample/test.rb: backward compatibility for chkbuild.</div><div class='ctx'> </div><div class='del'>-Mon Jan 13 14:55:31 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Sat Jan 16 10:23:23 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/xmlrpc/client.rb: [DOC] Remove note about SSL package on RAA</div><div class='del'>-	  Since RAA has been deprecated, and the SSL package has been replaced</div><div class='del'>-	  with net/https this statement is entirely false and should be</div><div class='del'>-	  deleted. [Bug #9152]</div><div class='add'>+	* string.c, enc/unicode.c: New code path as a preparation for Unicode-wide</div><div class='add'>+	  case mapping. The code path is currently guarded by the :lithuanian</div><div class='add'>+	  option to avoid accidental problems in daily use.</div><div class='add'>+	* test/ruby/enc/test_case_mapping.rb: Test for above.</div><div class='add'>+	* string.c: function 'check_case_options': fixed logical errors</div><div class='add'>+	  (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-Mon Jan 13 14:47:07 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Fri Jan 15 20:20:20 2016  Naohisa Goto  &lt;ngotogenome@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/net/smtp.rb: [DOC] Remove dead link to RAA by Giorgos Tsiftsis</div><div class='del'>-	  Fixes the following bugs: [Bug #9152] [Bug #9268] [Bug #9394]</div><div class='del'>-	* lib/open-uri.rb: ditto</div><div class='add'>+	* regint.h (PLATFORM_UNALIGNED_WORD_ACCESS): The value of</div><div class='add'>+	  UNALIGNED_WORD_ACCESS should be used to determine whether</div><div class='add'>+	  unaligned word access is allowed or not. After this commit,</div><div class='add'>+	  ./configure CPPFLAGS="-DUNALIGNED_WORD_ACCESS=0" disables</div><div class='add'>+	  unaligned word access even on platforms that support the feature.</div><div class='ctx'> </div><div class='del'>-Mon Jan 13 14:25:55 2014  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Fri Jan 15 16:12:10 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/ossl_pkey_dh.c: Fixed typo by Sandor Szuecs [Bug #9243]</div><div class='add'>+	* parse.y (string1): reset heredoc indent for each string literal</div><div class='add'>+	  so that concatenated string would not be dedented.</div><div class='add'>+	  [ruby-core:72857] [Bug #11990]</div><div class='ctx'> </div><div class='del'>-Mon Jan 13 12:03:00 2014  Charlie Somerville  &lt;charliesome@ruby-lang.org&gt;</div><div class='add'>+Thu Jan 14 20:01:00 2016  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/thread/thread.c (rb_szqueue_push): check GET_SZQUEUE_WAITERS</div><div class='del'>-	  instead of GET_QUEUE_WAITERS to prevent deadlock. Patch by Eric Wong.</div><div class='del'>-	  [Bug #9302] [ruby-core:59324]</div><div class='add'>+	* lib/uri/generic.rb (URI::Generic#to_s): change encoding to</div><div class='add'>+	  UTF-8 as Ruby 2.2/ by Koichi ITO &lt;koic.ito@gmail.com&gt;</div><div class='add'>+	  https://github.com/ruby/ruby/pull/1188 fix GH-1188</div><div class='ctx'> </div><div class='del'>-	* test/thread/test_queue.rb: add test</div><div class='add'>+Thu Jan 14 17:36:16 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jan 12 16:41:10 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* variable.c (rb_f_global_variables): add matched back references</div><div class='add'>+	  only, as well as defined? operator.</div><div class='ctx'> </div><div class='del'>-	* iseq.c (iseq_load): keep type_map to get rid of memory leak.</div><div class='del'>-	  based on a patch by Eric Wong at [ruby-core:59699].  [Bug #9399]</div><div class='add'>+Thu Jan 14 16:12:09 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Jan 12 09:21:35 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* sprintf.c (rb_str_format): format exact number more exactly.</div><div class='ctx'> </div><div class='del'>-	* include/ruby/util.h (DECIMAL_SIZE_OF_BITS): a preprocessor</div><div class='del'>-	  constant macro to approximate decimal representation size of n-bits</div><div class='del'>-	  integer.</div><div class='add'>+Thu Jan 14 15:08:43 2016  Tony Arcieri  &lt;bascule@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.c (register_label): use DECIMAL_SIZE_OF_BITS for better</div><div class='del'>-	  approximation.</div><div class='add'>+	* Remove 512-bit DH group. It's affected by LogJam Attack.</div><div class='add'>+	  https://weakdh.org/</div><div class='add'>+	  [fix GH-1196][Bug #11968][ruby-core:72766]</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/bigdecimal.c (BigMath_s_log): ditto.</div><div class='add'>+Thu Jan 14 11:44:29 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* common.mk (iseq.o), ext/bigdecimal/depend (bigdecimal.o): add</div><div class='del'>-	  dependency to ruby/util.h for DECIMAL_SIZE_OF_BITS.</div><div class='add'>+	* variable.c (rb_f_global_variables): add $1..$9 only if $~ is</div><div class='add'>+	  set.  fix the condition removed at r14014.</div><div class='ctx'> </div><div class='del'>-Fri Jan 10 16:27:20 2014  Yuki Yugui Sonoda  &lt;yugui@google.com&gt;</div><div class='add'>+Wed Jan 13 17:21:45 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_exec.c (cfp): Avoid generating invalid binary for</div><div class='del'>-	  NativeClient.</div><div class='del'>-	  r15 on x86_64 is reserved by NativeClient.  So r15 to cfp used to</div><div class='del'>-	  generate invalid binary under some combinations of compiler</div><div class='del'>-	  optimization flags.</div><div class='add'>+	* .travis.yml: removed commented-out code.</div><div class='ctx'> </div><div class='del'>-Fri Jan 10 18:01:41 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Jan 13 17:14:54 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (vm_search_super_method): allow bound method from a</div><div class='del'>-	  module, yet another method transplanting.</div><div class='add'>+	* .travis.yml: removed osx code. follow up with r53517</div><div class='ctx'> </div><div class='del'>-Fri Jan 10 13:34:04 2014  Aman Gupta &lt;ruby@tmm1.net&gt;</div><div class='add'>+Wed Jan 13 16:56:19 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* insns.def (opt_aref_with): new instruction to optimize Hash#[],</div><div class='del'>-	  removing any allocation overhead when used with a string literal</div><div class='del'>-	  key. Patch by normalperson (Eric Wong). [ruby-core:59640] [Bug #9382]</div><div class='del'>-	* insns.def (opt_aset_with): new instruction to optimize Hash#[]=</div><div class='del'>-	* compile.c (iseq_compile_each): compiler shortcuts for new</div><div class='del'>-	  instructions</div><div class='del'>-	* hash.c (static VALUE rb_hash_compare_by_id_p): fix documentation for</div><div class='del'>-	  Hash#compare_by_identity to reflect frozen string sharing</div><div class='del'>-	* test/ruby/test_hash.rb (class TestHash): test for new behavior</div><div class='add'>+	* iseq.c (rb_iseq_mark): mark parent iseq to prevent dynamically</div><div class='add'>+	  generated iseq by eval from GC.  [ruby-core:72620] [Bug #11928]</div><div class='ctx'> </div><div class='del'>-Fri Jan 10 06:23:21 2014  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='add'>+Wed Jan 13 03:42:58 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* range.c (Range#size): [DOC] improve description and add examples.</div><div class='del'>-	  Patch by @skade. [Fixes GH-501]</div><div class='add'>+	* class.c (Init_class_hierarchy): resolve name for rb_cObject ASAP</div><div class='add'>+	* object.c (rb_mod_const_set): move name resolution to rb_const_set</div><div class='add'>+	* variable.c (rb_const_set): do class resolution here</div><div class='add'>+	  [ruby-core:72807] [Bug #11977]</div><div class='ctx'> </div><div class='del'>-Fri Jan 10 00:47:52 2014  Josef Stribny  &lt;strzibny@gmail.com&gt;</div><div class='add'>+Wed Jan 13 00:37:12 2016  Satoshi Ohmori  &lt;sachin21dev@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/tk/extconf.rb: fix to pass arrays instead of strings to</div><div class='del'>-	  libpathflag.  patch at [ruby-core:59665].  [Bug #9386]</div><div class='add'>+	* man/ruby.1: fix double word typo.  [Fix GH-1194]</div><div class='ctx'> </div><div class='del'>-Thu Jan  9 20:49:22 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Jan 12 21:01:09 2016  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: -mstackrealign is necessary for -msse2 working.</div><div class='del'>-	  [ruby-core:54716] [Bug #8349]</div><div class='add'>+	* common.mk: update URL and name for the Ruby spec suite.</div><div class='ctx'> </div><div class='del'>-	* configure.in: use SSE2 instructions to drop unexpected precisions on</div><div class='del'>-	  other than mingw.  [ruby-core:59472] [Bug #8358]</div><div class='add'>+Tue Jan 12 19:52:19 2016  sorah (Shota Fukumori)  &lt;her@sorah.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan  9 20:31:10 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* lib/forwardable.rb: Convert given accessors to String.</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_objid_hash): should return `long'.  brushup r44534.</div><div class='add'>+	  r53381 changed to accept only Symbol or String for accessors, but</div><div class='add'>+	  there are several rubygems that pass classes (e.g. Array,</div><div class='add'>+	  Hash, ...) as accessors. Prior r53381, it was accepted because Class#to_s</div><div class='add'>+	  returns its class name. After r53381 given accessors are checked</div><div class='add'>+	  with define_method, but it accepts only Symbol or String, otherwise</div><div class='add'>+	  raises TypeError.</div><div class='ctx'> </div><div class='del'>-	* object.c (rb_obj_hash): follow above change.</div><div class='add'>+	      def_delegator Foo, :some_method</div><div class='ctx'> </div><div class='del'>-Thu Jan  9 19:12:37 2014  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	  This change is to revert unexpected incompatibility. But this behavior</div><div class='add'>+	  may change in the future.</div><div class='ctx'> </div><div class='del'>-	* vm.c (rb_vm_pop_cfunc_frame): added.  It cares c_return event.</div><div class='del'>-	  The patch base by drkaes (Stefan Kaes).</div><div class='del'>-	  [Bug #9321]</div><div class='add'>+Mon Jan 12 18:41:41 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* variable.c (rb_mod_const_missing): use rb_vm_pop_cfunc_frame()</div><div class='del'>-	  instead of rb_frame_pop().</div><div class='add'>+	* string.c: made a variable name more grammatically correct</div><div class='ctx'> </div><div class='del'>-	* vm_eval.c (raise_method_missing): ditto.</div><div class='add'>+Mon Jan 12 18:34:34 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_eval.c (rb_iterate): ditto.</div><div class='add'>+	* string.c: minor grammar fix [ci skip]</div><div class='ctx'> </div><div class='del'>-	* internal.h (rb_vm_pop_cfunc_frame): add decl.</div><div class='add'>+Mon Jan 12 16:09:09 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_settracefunc.rb: add tests.</div><div class='del'>-	  provided by drkaes (Stefan Kaes).</div><div class='add'>+	* test/ruby/enc/test_casing_options.rb: Tests for option</div><div class='add'>+	  parsing/checking for upcase/downcase/capitalize/swapcase</div><div class='add'>+	  (see r53503; with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* vm.c, eval.c, include/ruby/intern.h (rb_frame_pop):</div><div class='del'>-	  move definition of rb_frame_pop() and deprecate it.</div><div class='del'>-	  It doesn't care about `return' events.</div><div class='add'>+Mon Jan 12 16:03:03 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan  9 17:40:28 2014  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* string.c: Added option parsing/checking for upcase/downcase/</div><div class='add'>+	  capitalize/swapcase (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_any_hash): should treat the return value of rb_objid_hash()</div><div class='del'>-	  as `long', because ruby assumes the hash value of the object id of</div><div class='del'>-	  an object is `long'.</div><div class='del'>-	  this fixes test failures on mswin64 introduced at r44525.</div><div class='add'>+Mon Jan 11 21:28:28 2016  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan  9 09:55:20 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+	* include/ruby/oniguruma.h: Added flags needed for upcase/downcase</div><div class='add'>+	  Unicode addition (with Kimihito Matsui)</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych/visitors/yaml_tree.rb: dumping strings with</div><div class='del'>-	  quotes should not have changed.  [ruby-core:59316] [Bug #9300]</div><div class='add'>+Mon Jan 11 09:50:24 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych.rb: fixed missing require.</div><div class='add'>+	* configure.in: check if the API version number is consistent with</div><div class='add'>+	  the program version number.</div><div class='ctx'> </div><div class='del'>-	* test/psych/test_string.rb: test</div><div class='add'>+Sun Jan 10 20:57:25 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan  9 09:51:00 2014  Aaron Patterson &lt;aaron@tenderlovemaking.com&gt;</div><div class='add'>+	* compile.c (compile_massign_lhs): when index ends with splat,</div><div class='add'>+	  append rhs value to it like POSTARG, since VM_CALL_ARGS_SPLAT</div><div class='add'>+	  splats the last argument only.  [ruby-core:72777] [Bug #11970]</div><div class='ctx'> </div><div class='del'>-	* ext/psych/lib/psych/visitors/to_ruby.rb: anonymous structs</div><div class='del'>-	  should be able to roundtrip.  Thanks @splattael!</div><div class='add'>+Sun Jan 10 15:45:10 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/psych/test_object_references.rb: test for change</div><div class='add'>+	* include/ruby/missing.h (explicit_bzero_by_memset_s): remove</div><div class='add'>+	  inline implementation by memset_s, which needs a macro before</div><div class='add'>+	  including headers and can cause problems in extension libraries</div><div class='add'>+	  by the order of the macro and headers.</div><div class='ctx'> </div><div class='del'>-Wed Jan  8 22:53:16 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jan 10 13:41:36 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (vm_search_super_method): when super called in a</div><div class='del'>-	  bound UnboundMethod generated from a module, no superclass is</div><div class='del'>-	  found since the current defined class is the module, then call</div><div class='del'>-	  method_missing in that case.  [ruby-core:59619] [Bug #9377]</div><div class='add'>+	* io.c (rb_deferr): remove long obsolete global</div><div class='ctx'> </div><div class='del'>-Wed Jan  8 15:55:21 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jan 10 09:14:42 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_objid_hash): return hash value from object ID with a</div><div class='del'>-	  salt, extract from rb_any_hash().</div><div class='add'>+	* ext/psych/lib/psych/visitors/yaml_tree.rb (visit_String):</div><div class='add'>+	  eliminate chomp</div><div class='add'>+	* lib/net/http.rb (connect): eliminate delete</div><div class='add'>+	* lib/net/http/header.rb (basic_encode): ditto</div><div class='add'>+	* lib/net/imap.rb (authenticate): eliminate gsub</div><div class='add'>+	  (self.encode_utf7): shorten delete arg</div><div class='add'>+	* lib/net/smtp.rb (base64_encode): eliminate gsub</div><div class='add'>+	* lib/open-uri.rb (OpenURI.open_http): eliminate delete</div><div class='add'>+	* lib/rss/rss.rb: ditto</div><div class='add'>+	* lib/securerandom.rb (base64): ditto</div><div class='add'>+	  (urlsafe_base64): eliminate delete!</div><div class='add'>+	* lib/webrick/httpauth/digestauth.rb (split_param_value):</div><div class='add'>+	  eliminate chop</div><div class='add'>+	* lib/webrick/httpproxy.rb (do_CONNECT): eliminate delete</div><div class='add'>+	  (setup_upstream_proxy_authentication): ditto</div><div class='add'>+	  [ruby-core:72666] [Feature #11938]</div><div class='ctx'> </div><div class='del'>-	* object.c (rb_obj_hash): return same value as rb_any_hash().</div><div class='del'>-	  fix r44125.  [ruby-core:59638] [Bug #9381]</div><div class='add'>+Sat Jan  9 23:19:14 2016  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Wed Jan  8 13:12:41 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/ruby/test_hash.rb (test_try_convert): Add test for</div><div class='add'>+	  Hash.try_convert.  [Fix GH-1190]</div><div class='ctx'> </div><div class='del'>-	* lib/timeout.rb (Timeout::ExitException.catch): pass arguments</div><div class='del'>-	  for new instance.</div><div class='add'>+Sat Jan  9 23:15:25 2016  Jon Moss  &lt;maclover7@users.noreply.github.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/timeout.rb (Timeout::ExitException#exception): fallback to</div><div class='del'>-	  Timeout::Error if couldn't throw.  [ruby-dev:47872] [Bug #9380]</div><div class='add'>+	* ext/openssl/ossl.c: Add missing variables to documentation</div><div class='add'>+	  examples.  [Fix GH-1189]</div><div class='ctx'> </div><div class='del'>-	* lib/timeout.rb (Timeout#timeout): initialize ExitException with</div><div class='del'>-	  message for the fallback case.</div><div class='add'>+Sat Jan  9 18:25:57 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Tue Jan  7 12:43:06 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* symbol.h (is_attrset_id): ASET is an attrset ID.  fix</div><div class='add'>+	  unexpected safe call instead of an ordinary ASET.</div><div class='ctx'> </div><div class='del'>-	* lib/timeout.rb (Timeout#timeout): should not rescue ordinarily</div><div class='del'>-	  raised ExitException, which should not be thrown.</div><div class='add'>+Sat Jan  9 10:44:33 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/timeout.rb (Timeout::ExitException.catch): set @thread only if</div><div class='del'>-	  it ought to be caught.</div><div class='add'>+	* configure.in, win32/setup.mak: extract RUBY_PROGRAM_VERSION from</div><div class='add'>+	  RUBY_VERSION in version.h instead of RUBY_API_VERSION numbers in</div><div class='add'>+	  include/ruby/version.h, and cut it into version numbers.</div><div class='ctx'> </div><div class='del'>-	* lib/timeout.rb (Timeout#timeout): when a custom exception is given,</div><div class='del'>-	  no instance is needed to be caught, so defer creating new instance</div><div class='del'>-	  until it is raised.  [ruby-core:59511] [Bug #9354]</div><div class='add'>+Sat Jan  9 07:13:33 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-Tue Jan  7 10:16:02 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* gc.c: rename PAGE_* to HEAP_PAGE_* because PAGE_SIZE is used</div><div class='add'>+	  in Mac OS X.</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems:  Update to RubyGems master 21e409d / RubyGems 2.2.1.</div><div class='add'>+	* test/ruby/test_gc.rb: catch up this fix.</div><div class='ctx'> </div><div class='del'>-	  See http://rubygems.rubyforge.org/rubygems-update/History_txt.html</div><div class='del'>-	  for a list of bug fixes.</div><div class='add'>+Sat Jan  9 05:45:40 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* test/rubygems:  ditto.</div><div class='add'>+	* gc.c: PAGE_BITMAP_PLANES (the number of bitmap) is 4, not 3.</div><div class='ctx'> </div><div class='del'>-Tue Jan  7 10:10:46 2014  Eric Wong &lt;e@80x24.org&gt;</div><div class='add'>+Sat Jan  9 05:42:57 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/json/generator/depend: add build dependencies for json extension</div><div class='del'>-	  [Bug #9374] [ruby-core:59609]</div><div class='del'>-	* ext/json/parser/depend: ditto</div><div class='add'>+	* gc.c: rename constant names HEAP_* to PAGE_*.</div><div class='ctx'> </div><div class='del'>-Tue Jan  7 04:35:46 2014  Aman Gupta &lt;ruby@tmm1.net&gt;</div><div class='add'>+	  Keys of GC::INTERNAL_CONSTANTS are also renamed.</div><div class='ctx'> </div><div class='del'>-	* array.c (ary_add_hash): Fix consistency issue between Array#uniq and</div><div class='del'>-	  Array#uniq! [Bug #9340] [ruby-core:59457]</div><div class='del'>-	* test/ruby/test_array.rb (class TestArray): regression test for above.</div><div class='add'>+	* test/ruby/test_gc.rb: catch up this fix.</div><div class='ctx'> </div><div class='del'>-Mon Jan  6 21:28:48 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='add'>+Fri Jan  8 22:30:06 2016  Akinori MUSHA  &lt;knu@iDaemons.org&gt;</div><div class='ctx'> </div><div class='del'>-	* .gitignore: ignore *-fake.rb generated even when CROSS_COMPILING = no</div><div class='del'>-	  since r42862.</div><div class='add'>+	* doc/regexp.rdoc: [DOC] Elaborate on the \G anchor. [ci skip]</div><div class='ctx'> </div><div class='del'>-Sun Jan  5 20:14:14 2014  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='add'>+Fri Jan  8 19:49:27 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* compar.c (cmp_equal): remove error hiding in Comparable#==.</div><div class='del'>-	  Comparable#== no longer rescues exceptions silently.</div><div class='del'>-	  This was the cause of quite a couple bugs. See #7688. [EXPERIMENTAL]</div><div class='add'>+	* gc.c: remove heap_page::body. Instead of this field,</div><div class='add'>+	  heap_page::start field works well.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_comparable.rb: adapt assertion to match new behavior.</div><div class='add'>+Fri Jan  8 19:31:52 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rdoc/method_attr.rb: fix bugs discovered by this change.</div><div class='add'>+	* gc.c: rename rb_heap_t::page_length to rb_heap_t::total_pages.</div><div class='ctx'> </div><div class='del'>-	* test/rdoc/test_rdoc_normal_class.rb: fix bugs in tests.</div><div class='add'>+	  `page_length' is not clear (we may understand with length of</div><div class='add'>+	  a page).</div><div class='ctx'> </div><div class='del'>-Sat Jan  4 22:44:00 2014  Charlie Somerville  &lt;charliesome@ruby-lang.org&gt;</div><div class='add'>+Fri Jan  8 17:07:14 2016  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='ctx'> </div><div class='del'>-	* struct.c (rb_struct_set): return assigned value from setter method</div><div class='del'>-	  rather than struct object. [Bug #9353] [ruby-core:59509]</div><div class='add'>+	* gc.c: remove heap_page::heap. This field is only used to recognize</div><div class='add'>+	  whether a page is in a tomb or not. Instead of this field,</div><div class='add'>+	  heap_page::flags::in_tomb (1 bit field) is added.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_struct.rb (test_setter_method_returns_value): add test</div><div class='add'>+	  Also type of heap_page::(total|free|final)_slots are changed from</div><div class='add'>+	  int to short. 2B is enough for them.</div><div class='ctx'> </div><div class='del'>-Sat Jan  4 21:44:31 2014  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='add'>+Fri Jan  8 09:33:59 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_gc.rb (TestGc#test_latest_gc_info): use</div><div class='del'>-	  GC.stat(:key) instead of GC.stat.</div><div class='add'>+	* iseq.c (rb_iseq_compile_with_option): move variable initialization</div><div class='add'>+	  code to avoid maybe-uninitialized warnings by gcc 4.8.</div><div class='ctx'> </div><div class='del'>-Sat Jan  4 19:15:29 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Jan  8 00:03:22 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (rsock_syserr_fail_host_port): use format flags,</div><div class='del'>-	  '+' to inspect, ' ' to quote unprintables.</div><div class='add'>+	* enum.c (enum_min, enum_max): do the same optimization as r53454.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (rsock_syserr_fail_path): ditto.</div><div class='add'>+Thu Jan  7 22:32:21 2016  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (rsock_syserr_fail_raddrinfo): ditto.</div><div class='add'>+	* ruby.h: undef HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P</div><div class='add'>+	  and HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P on C++.</div><div class='add'>+	  [ruby-core:72736] [Bug #11962]</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (rsock_syserr_fail_host_port): add errno</div><div class='del'>-	  argument version and use rb_syserr_fail_str() instead of</div><div class='del'>-	  rb_sys_fail_str() with restoring errno.</div><div class='add'>+Thu Jan  7 22:02:21 2016  Shugo Maeda  &lt;shugo@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (rsock_syserr_fail_path): ditto, and</div><div class='del'>-	  rb_syserr_fail().</div><div class='add'>+	* enum.c (enum_minmax): optimize object comparison in</div><div class='add'>+	  Enumerable#minmax.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (rsock_sys_fail_sockaddr): ditto, use</div><div class='del'>-	  rsock_syserr_fail_raddrinfo().</div><div class='add'>+Thu Jan  7 14:49:12 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (rsock_sys_fail_raddrinfo): ditto.</div><div class='add'>+	* thread.c (rb_thread_pending_interrupt_p): no pending interrupt</div><div class='add'>+	  before initialization.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (setup_domain_and_type): ditto.</div><div class='add'>+	* thread.c (thread_raise_m, rb_thread_kill): uninitialized thread</div><div class='add'>+	  cannot interrupt.  [ruby-core:72732] [Bug #11959]</div><div class='ctx'> </div><div class='del'>-Sat Jan  4 17:18:58 2014  Kazuki Tsujimoto  &lt;kazuki@callcc.net&gt;</div><div class='add'>+Thu Jan  7 11:34:14 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm.c (RubyVM::OPTS): get rid of a garbage character.</div><div class='add'>+	* include/ruby/backward.h (ruby_show_copyright_to_die): for source</div><div class='add'>+	  code backward compatibility.</div><div class='ctx'> </div><div class='del'>-Sat Jan  4 10:17:54 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* ruby.c (process_options): return Qtrue to exit the process</div><div class='add'>+	  successfully.</div><div class='ctx'> </div><div class='del'>-	* lib/rinda/ring.rb (Rinda::RingFinger#make_socket):  Use</div><div class='del'>-	  ipv4_multicast_ttl option for portability.</div><div class='add'>+	* version.c (ruby_show_copyright): no longer exit.</div><div class='ctx'> </div><div class='del'>-Sat Jan  4 10:15:47 2014  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+Wed Jan  6 17:22:53 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/rinda/ring.rb (Rinda::RingFinger#make_socket):  Use</div><div class='del'>-	  ipv4_multicast_loop option for portability.  Patch by Jeremy Evans.</div><div class='del'>-	  [ruby-trunk - Bug #9351]</div><div class='add'>+	* lib/optparse.rb (OptionParser#order!): add `into` optional</div><div class='add'>+	  keyword argument to store the results.  [Feature #11191]</div><div class='ctx'> </div><div class='del'>-Fri Jan  3 19:09:00 2014  Eric Wong  &lt;normalperson@yhbt.net&gt;</div><div class='add'>+Tue Jan  5 21:44:37 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (rsock_sys_fail_host_port): save and restore errno</div><div class='del'>-	  before calling rb_sys_fail_str to prevent [BUG] errno == 0.</div><div class='del'>-	  Patch by Eric Wong. [ruby-core:59498] [Bug #9352]</div><div class='add'>+	* ChangeLog: fix wrong class name.</div><div class='ctx'> </div><div class='del'>-	* ext/socket/socket.c (rsock_sys_fail_path): ditto</div><div class='del'>-	* ext/socket/socket.c (rsock_sys_fail_sockaddr): ditto</div><div class='del'>-	* ext/socket/socket.c (rsock_sys_fail_raddrinfo): ditto</div><div class='del'>-	* ext/socket/socket.c (rsock_sys_fail_raddrinfo_or_sockaddr): ditto</div><div class='add'>+Tue Jan  5 21:43:50 2016  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan  3 10:43:57 2014  Aman Gupta &lt;ruby@tmm1.net&gt;</div><div class='add'>+	* test/ruby/test_string.rb(test_chr): added test for String#chr</div><div class='add'>+	  [fix GH-1179]</div><div class='ctx'> </div><div class='del'>-	* test/net/imap/cacert.pem: generate new CA cert, since the last one</div><div class='del'>-	  expired. [Bug #9341] [ruby-core:59459]</div><div class='del'>-	* test/net/imap/server.crt: new server cert signed with updated CA.</div><div class='del'>-	* test/net/imap/Makefile: add `make regen_certs` to automate this</div><div class='del'>-	  process.</div><div class='add'>+Tue Jan  5 21:32:26 2016  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Fri Jan  3 00:09:54 2014  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='add'>+	* test/ruby/test_numeric.rb (test_nonzero_p): added test for Numeric#nonzero?</div><div class='add'>+	  [fix GH-1187]</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal: update class method call style from :: to .</div><div class='del'>-	  in documentation and usage.</div><div class='add'>+Tue Jan  5 11:47:23 2016  Damir Gaynetdinov  &lt;damir.gaynetdinov@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/lib/bigdecimal/math.rb: [DOC] fix examples values.</div><div class='del'>-	  Computations were made using ruby 2.0.0p247 to ensure</div><div class='del'>-	  no effect of the recent BigDecimal bug.</div><div class='add'>+	* doc/marshal.rdoc: Clarify object references example, that the</div><div class='add'>+	  reference is same object.  [Fix GH-1156]</div><div class='ctx'> </div><div class='del'>-	* ext/bigdecimal/sample/nlsolve.rb: fix indent.</div><div class='add'>+Tue Jan  5 05:06:51 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan  2 16:07:21 2014  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+	* ext/stringio/stringio.c (strio_binmode): implement to set encoding</div><div class='add'>+	* test/stringio/test_stringio.rb (test_binmode): new test</div><div class='add'>+	  [ruby-core:72699] [Bug #11945]</div><div class='ctx'> </div><div class='del'>-	* io.c (io_fwrite): freeze converted str.</div><div class='add'>+Mon Jan  4 15:44:37 2016  Sho Hashimoto  &lt;sho-h@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan  2 04:15:13 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* variable.c (rb_mod_deprecate_constant): [DOC] added</div><div class='add'>+	  documentation for Module#deprecate_constant. [ci skip]</div><div class='ctx'> </div><div class='del'>-	* eval.c (rb_longjmp): remove an extra modifier from the forward</div><div class='del'>-	  declaration to match the actual definition.  [ruby-core:59451]</div><div class='del'>-	  [Bug #9338]</div><div class='add'>+Mon Jan  4 15:36:38 2016  Sho Hashimoto  &lt;sho-h@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan  2 01:23:30 2014  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+	* thread_sync.c: [DOC] remove SizedQueue#close argument.</div><div class='add'>+	  [ci skip]</div><div class='ctx'> </div><div class='del'>-	* vm_eval.c (method_missing): use ALLOCV_N() instead of</div><div class='del'>-	  ALLOCA_N() and rb_ary_tmp_new().</div><div class='add'>+Mon Jan  4 10:14:24 2016  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan  2 00:53:16 2014  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+	* test/coverage/test_coverage.rb: ignored test when enabled to coverage.</div><div class='add'>+	  It lead to crash with `make test-all`.</div><div class='ctx'> </div><div class='del'>-	* array.c (rb_ary_zip): use ALLOCV_N() instead of ALLOCA_N().</div><div class='add'>+Mon Jan  4 08:10:44 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Thu Jan  2 00:04:29 2014  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+	* insns.def (opt_case_dispatch): Move a comment to the</div><div class='add'>+	  appropriate position.</div><div class='add'>+	  [ci skip]</div><div class='ctx'> </div><div class='del'>-	* hash.c (rb_hash_keys): make rb_hash_keys() static.</div><div class='del'>-	  it is no longer used from array.c since r43969.</div><div class='del'>-	  the patch is from normalperson (Eric Wong).</div><div class='del'>-	  [ruby-core:59449] [Feature #9336]</div><div class='add'>+Sun Jan  3 23:55:13 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* internal.h: remove definition of rb_hash_keys().</div><div class='add'>+	* lib/rubygems/security.rb (DIGEST_ALGORITHM, KEY_ALGORITHM):</div><div class='add'>+	  should check same name as the used constants.</div><div class='add'>+	  [ruby-core:72674] [Bug #11940]</div><div class='ctx'> </div><div class='del'>-Wed Jan  1 18:19:35 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jan  3 19:22:01 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: reset LDFLAGS and DLDFLAGS for opt-dir again after</div><div class='del'>-	  LIBPATHFLAG and RPATHFLAG are set.  [ruby-dev:47868] [Bug #9317]</div><div class='add'>+	* aclocal.m4: add fallback file for non-aclocal environments.</div><div class='add'>+	  [ruby-core:72683] [Bug #11942]</div><div class='ctx'> </div><div class='del'>-Wed Jan  1 11:12:29 2014  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jan  3 13:56:49 2016  Yuichiro Kaneko  &lt;yui-knk@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* configure.in: use SSE2 instructions for drop unexpected</div><div class='del'>-	  precisions.  [ruby-core:54738] [Bug #8358]</div><div class='add'>+	* eval_error.c (rb_print_undef): Use `rb_method_visibility_t`</div><div class='add'>+	  instead of `int`.</div><div class='add'>+	* eval_intern.h (rb_print_undef): ditto</div><div class='add'>+	* proc.c (mnew_internal): ditto</div><div class='add'>+	* vm_method.c (rb_export_method): ditto</div><div class='add'>+	  [Misc #11649] [ruby-core:71311] [fix GH-1078]</div><div class='ctx'> </div><div class='del'>-Tue Dec 31 23:49:07 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Jan  3 12:12:09 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* eval.c (rb_f_raise): add cause: optional keyword argument.</div><div class='del'>-	  [ruby-core:58610] [Feature #8257] [EXPERIMENTAL]</div><div class='add'>+	* acinclude.m4: rename aclocal.m4, which should be generated by</div><div class='add'>+	  aclocal.  [ruby-core:72675] [Bug #11941]</div><div class='ctx'> </div><div class='del'>-Tue Dec 31 21:44:17 2013  Akio Tajima &lt;artonx@yahoo.co.jp&gt;</div><div class='add'>+Sat Jan  2 21:07:55 2016  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* win32/Makefile.sub: remove HAVE_FSEEKO because fseeko removed from win32/win32.c</div><div class='del'>-	  Fixed [Bug #9333].</div><div class='add'>+	* thread_sync.c (queue_do_pop): avoid cast with Qfalse</div><div class='add'>+	  (rb_szqueue_push): ditto, use queue_sleep wrapper</div><div class='ctx'> </div><div class='del'>-Tue Dec 31 21:02:27 2013  Masaki Matsushita  &lt;glass.saga@gmail.com&gt;</div><div class='add'>+Sat Jan  2 16:16:14 2016  Masatoshi SEKI  &lt;m_seki@mva.biglobe.ne.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* io.c (io_fwrite): allocate frozen str only when str is not converted.</div><div class='add'>+	* lib/erb.rb: Allow ERB subclass to add token easily.</div><div class='add'>+	  [Feature #11936]</div><div class='ctx'> </div><div class='del'>-Tue Dec 31 15:44:48 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/erb/test_erb.rb: ditto.</div><div class='ctx'> </div><div class='del'>-	* lib/mkmf.rb (RbConfig): expand RUBY_SO_NAME for extensions</div><div class='del'>-	  backward compatibility.  [ruby-core:59426] [Bug #9329]</div><div class='add'>+Sat Jan  2 14:44:31 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Dec 30 23:33:07 2013  Ayumu AIZAWA  &lt;ayumu.aizawa@gmail.com&gt;</div><div class='add'>+	* parse.y (regexp): set_yylval_num sets u1, should use nd_tag</div><div class='add'>+	  instead of nd_state.  [ruby-core:72638] [Bug #11932]</div><div class='ctx'> </div><div class='del'>-	* variable.c: [DOC] adding extra example in docs.</div><div class='del'>-	  patched by Steve Klabnik. [Bug #9210]</div><div class='add'>+Sat Jan  2 02:27:22 2016  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='ctx'> </div><div class='del'>-Mon Dec 30 18:34:18 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/ostruct.rb: Fix case of frozen object with initializer.</div><div class='add'>+	  Bug revealed by RubySpec [ruby-core:72639]</div><div class='ctx'> </div><div class='del'>-	* encoding.c (must_encindex, rb_enc_from_index, rb_obj_encoding): mask</div><div class='del'>-	  encoding index and ignore dummy flags.  [ruby-core:59354] [Bug #9314]</div><div class='add'>+Fri Jan  1 22:01:52 2016  Kazuhiro NISHIYAMA  &lt;zn@mbf.nifty.com&gt;</div><div class='ctx'> </div><div class='del'>-Mon Dec 30 16:11:52 2013  WATANABE Hirofumi  &lt;eban@ruby-lang.org&gt;</div><div class='add'>+	* NEWS: mention CSV's liberal_parsing option.</div><div class='ctx'> </div><div class='del'>-	* tool/make-snapshot: needs CXXFLAGS.  [ruby-core:59393][Bug #9320]</div><div class='add'>+Fri Jan  1 19:38:23 2016  okkez  &lt;okkez000@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Sun Dec 29 18:36:54 2013  Shota Fukumori  &lt;her@sorah.jp&gt;</div><div class='add'>+	* doc/NEWS-2.3.0: fix double words typo.</div><div class='add'>+	  [ci skip][fix GH-1183]</div><div class='ctx'> </div><div class='del'>-	* lib/mkmf.rb (configuration): Make CXXFLAGS customizable.</div><div class='del'>-	  Patch by Kohei Suzuki (eagletmt). [Fixes GH-492]</div><div class='add'>+Fri Jan  1 15:28:56 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Dec 29 12:11:11 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* compile.c (remove_unreachable_chunk): decrease count of</div><div class='add'>+	  call_info in removed instructions.  fix up r53402.</div><div class='ctx'> </div><div class='del'>-	* proc.c (mnew_from_me): keep iclass as-is, to make inheritance</div><div class='del'>-	  chain consistent.  [ruby-core:59358] [Bug #9315]</div><div class='add'>+Fri Jan  1 12:05:53 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* proc.c (method_owner): return the original defined_class from</div><div class='del'>-	  prepended iclass, instead.</div><div class='add'>+	* compile.c (remove_unreachable_chunk): remove unreferred label</div><div class='add'>+	  to optimize away unreachable chunk.</div><div class='ctx'> </div><div class='del'>-Sun Dec 29 08:47:24 2013  Lucas Allan Amorim  &lt;lucas.allan@gmail.com&gt;</div><div class='add'>+Fri Jan  1 11:42:57 2016  James Edward Gray II  &lt;james@graysoftinc.com&gt;</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_sprintf.rb (test_hash): Added tests for sprintf</div><div class='del'>-	  with a hash as parameter.  [Fixes GH-491]</div><div class='add'>+	* lib/csv.rb (CSV): Add a liberal_parsing option.</div><div class='add'>+	  Patch by Braden Anderson. [#11839]</div><div class='add'>+	* test/csv/test_features.rb:  test liberal_parsing</div><div class='ctx'> </div><div class='del'>-Sun Dec 29 07:27:51 2013  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='add'>+Fri Jan  1 10:27:28 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* compar.c (cmp_eq_recursive): Fix the return value, the value for</div><div class='del'>-	  failed #&lt;=&gt; should be nil. It was raising a NoMethodError for</div><div class='del'>-	  the test case TestComparable#test_no_cmp (undefined method `&gt;'</div><div class='del'>-	  for false:FalseClass). Yet one more reason for #7688.</div><div class='add'>+	* tool/mkconfig.rb (RbConfig): prefix SDKROOT to oldincludedir</div><div class='add'>+	  not includedir, the latter is outside the ruby installation.</div><div class='add'>+	  [ruby-core:72496] [Bug #11881]</div><div class='ctx'> </div><div class='del'>-Sat Dec 28 22:21:59 2013  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='add'>+Fri Jan  1 08:53:02 2016  Yuki Kurihara  &lt;co000ri@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* object.c (Kernel#&lt;=&gt;) surround Comparable operators with &lt;code&gt; tags.</div><div class='del'>-	  The #== method was hidden in ri/rdoc's output and was highlighting</div><div class='del'>-	  the line instead.</div><div class='add'>+	* test/ruby/test_lazy_enumerator.rb (test_take_bad_arg): Add test</div><div class='add'>+	  code in case of Enumerator::Lazy#take called with negative number.</div><div class='add'>+	  [ruby-dev:49467] [Bug #11933]</div><div class='ctx'> </div><div class='del'>-Sat Dec 28 17:24:00 2013  DV Suresh  &lt;e@dvsuresh.me&gt;</div><div class='add'>+Fri Jan  1 05:06:20 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* benchmark/bm_so_meteor_contest.rb: [DOC] Fix a few typos</div><div class='del'>-	* ext/fiddle/lib/fiddle/import.rb: ditto</div><div class='del'>-	* ext/psych/lib/psych.rb: ditto</div><div class='del'>-	* ext/psych/lib/psych/nodes/sequence.rb: ditto</div><div class='del'>-	* ext/tk/lib/multi-tk.rb: ditto</div><div class='del'>-	* ext/tk/lib/tcltk.rb: ditto</div><div class='add'>+	* parse.y (parser_here_document): update indent for each line in</div><div class='add'>+	  indented here document with single-quotes.</div><div class='add'>+	  [ruby-core:72479] [Bug #11871]</div><div class='ctx'> </div><div class='del'>-Sat Dec 28 00:42:37 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Jan  1 03:26:44 2016  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (local_push_gen, local_pop_gen): save cmdarg_stack to</div><div class='del'>-	  isolate command argument state from outer scope.</div><div class='del'>-	  [ruby-core:59342] [Bug #9308]</div><div class='add'>+	* lib/ostruct.rb (freeze): define deferred accessors before</div><div class='add'>+	  freezing to get rid of an error when just reading frozen</div><div class='add'>+	  OpenStruct.</div><div class='ctx'> </div><div class='del'>-Fri Dec 27 13:25:03 2013  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Thu Dec 31 14:36:45 2015  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='ctx'> </div><div class='del'>-	* win32/{setup.mak,Makefile.sub}: update fake.rb like</div><div class='del'>-	  template/fake.rb.in.</div><div class='add'>+	* lib/ostruct.rb: Fix new_ostruct_member to correctly avoid</div><div class='add'>+	  redefinition [#11901]</div><div class='ctx'> </div><div class='del'>-Thu Dec 26 16:10:41 2013  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Thu Dec 31 02:45:12 2015  NARUSE, Yui  &lt;naruse@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* win32/Makefile.sub (fake.rb): should depend on version.h because</div><div class='del'>-	  if RUBY_VERSION is updated, fake.rb need to say the new version</div><div class='del'>-	  to avoid install error in rbconfig.rb.</div><div class='add'>+	* test/ruby/test_module.rb (test_classpath): r53376 may change</div><div class='add'>+	  the order of m.constants.</div><div class='add'>+	  `make TESTS='-v ruby/test_class.rb ruby/test_module.rb' test-all`</div><div class='add'>+	  may fail after that.</div><div class='add'>+	  http://rubyci.s3.amazonaws.com/tk2-243-31075/ruby-trunk/log/20151230T164202Z.log.html.gz</div><div class='ctx'> </div><div class='del'>-Thu Dec 26 14:25:03 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Thu Dec 31 02:20:00 2015  Benoit Daloze  &lt;eregontp@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* hash.c (HASH_REJECT_COPY_EXTRA_STATES): turn off the old</div><div class='del'>-	  behavior, copying extra states by accident.</div><div class='add'>+	* common.mk (help): Fix typo.</div><div class='ctx'> </div><div class='del'>-Thu Dec 26 10:49:14 2013  Yukihiro Matsumoto  &lt;matz@ruby-lang.org&gt;</div><div class='add'>+Wed Dec 30 20:53:09 2015  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* version.h (RUBY_VERSION): 2.2.0 development has started.</div><div class='add'>+	* lib/net/http/responses.rb: Added new response class for 451 status code.</div><div class='add'>+	* lib/net/http.rb: documentation for HTTPUnavailableForLegalReasons</div><div class='ctx'> </div><div class='del'>-Thu Dec 26 10:27:53 2013  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Wed Dec 30 20:45:45 2015  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/merger.rb (tag): support 2.1.1 semi-automatic tagging and 2.2.0</div><div class='del'>-	  explicit tagging.</div><div class='add'>+	* lib/webrick/httpstatus.rb: Added HTTP 451 Status Code.</div><div class='add'>+	  [fix GH-1167] Patch by @MuhammetDilmac</div><div class='add'>+	  https://tools.ietf.org/html/draft-tbray-http-legally-restricted-status-00</div><div class='ctx'> </div><div class='del'>-Thu Dec 26 06:35:25 2013  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='add'>+Wed Dec 30 20:25:52 2015  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* proc.c: Having any mandatory keyword argument increases min arity</div><div class='del'>-	  [#9299]</div><div class='add'>+	* doc/syntax/calling_methods.rdoc: fix old operator for safe navigation</div><div class='add'>+	  operator. [ci skip][fix GH-1182] Patch by @dougo</div><div class='ctx'> </div><div class='del'>-Thu Dec 26 06:27:08 2013  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='add'>+Wed Dec 30 16:43:23 2015  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* proc.c: Having optional keyword arguments makes maximum arity +1,</div><div class='del'>-	  not unlimited [#8072]</div><div class='add'>+	* test/ruby/test_string.rb (test_ord): Add test for String#ord.</div><div class='add'>+	  [Fix GH-1181]</div><div class='ctx'> </div><div class='del'>-Thu Dec 26 01:09:57 2013  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Wed Dec 30 11:28:57 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* tool/release.sh: make symbolic links.</div><div class='add'>+	* lib/forwardable.rb (def_instance_delegator): adjust backtrace of</div><div class='add'>+	  method body by tail call optimization.  adjusting the delegated</div><div class='add'>+	  target is still done by deleting backtrace.</div><div class='ctx'> </div><div class='del'>-Thu Dec 26 00:45:33 2013  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* lib/forwardable.rb (def_single_delegator): ditto.</div><div class='ctx'> </div><div class='del'>-	* tool/make-snapshot: support new version scheme.</div><div class='add'>+Wed Dec 30 11:18:42 2015  Elliot Winkler  &lt;elliot.winkler@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 25 22:44:14 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* lib/forwardable.rb (def_instance_delegator) fix delegating to</div><div class='add'>+	  'args' and 'block', clashing with local variables in generated</div><div class='add'>+	  methods.  [ruby-core:72579] [Bug #11916]</div><div class='ctx'> </div><div class='del'>-	* compile.c (iseq_set_arguments): set arg_keyword_check from</div><div class='del'>-	  nd_cflag, which is set by parser.  internal ID is used for</div><div class='del'>-	  unnamed keyword rest argument, which should be separated from no</div><div class='del'>-	  keyword check.</div><div class='add'>+	* lib/forwardable.rb (def_single_delegator): ditto.</div><div class='ctx'> </div><div class='del'>-	* iseq.c (rb_iseq_parameters): if no keyword check, keyword rest is</div><div class='del'>-	  present.</div><div class='add'>+Wed Dec 30 09:58:56 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* parse.y (new_args_tail_gen): set keywords check to nd_cflag, which</div><div class='del'>-	  equals to that keyword rest is not present.</div><div class='add'>+	* object.c (rb_class_inherited_p): search the corresponding</div><div class='add'>+	  ancestor to prepended module from prepending class itself.</div><div class='add'>+	  [ruby-core:72493] [Bug #11878]</div><div class='ctx'> </div><div class='del'>-Wed Dec 25 22:32:19 2013  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+Wed Dec 30 09:20:00 2015  Yuki Kurihara  &lt;co000ri@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/abbrev.rb: [DOC] rdoc format patch by Giorgos Tsiftsis [Bug #9146]</div><div class='add'>+	* test/stringio/test_io.rb (test_flag): add assertion for error when</div><div class='add'>+	  text and binary mode are mixed.</div><div class='add'>+	  [ruby-dev:49465] [Feature #11921]</div><div class='ctx'> </div><div class='del'>-Wed Dec 25 20:30:10 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Dec 30 08:43:59 2015  Yuki Kurihara  &lt;co000ri@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* iseq.c (rb_iseq_parameters): push argument type symbol only for</div><div class='del'>-	  unnamed rest keywords argument.</div><div class='add'>+	* test/stringio/test_stringio.rb (test_initialize): add test for</div><div class='add'>+	  StringIO#initialize.  [ruby-core:72585] [Feature #11920]</div><div class='ctx'> </div><div class='del'>-Wed Dec 25 20:28:48 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Wed Dec 30 05:19:24 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* proc.c (rb_iseq_min_max_arity): maximum argument is unlimited if</div><div class='del'>-	  having rest keywords argument.  [ruby-core:53298] [Bug #8072]</div><div class='add'>+	* class.c (struct clone_const_arg): adjust for id_table</div><div class='add'>+	  (clone_const): ditto</div><div class='add'>+	  (clone_const_i): ditto</div><div class='add'>+	  (rb_mod_init_copy): ditto</div><div class='add'>+	  (rb_singleton_class_clone_and_attach): ditto</div><div class='add'>+	  (rb_include_class_new): ditto</div><div class='add'>+	  (include_modules_at): ditto</div><div class='add'>+	* constant.h (rb_free_const_table): ditto</div><div class='add'>+	* gc.c (free_const_entry_i): ditto</div><div class='add'>+	  (rb_free_const_table): ditto</div><div class='add'>+	  (obj_memsize_of): ditto</div><div class='add'>+	  (mark_const_entry_i): ditto</div><div class='add'>+	  (mark_const_tbl): ditto</div><div class='add'>+	* internal.h (struct rb_classext_struct): ditto</div><div class='add'>+	* object.c (rb_mod_const_set): resolve class name on assignment</div><div class='add'>+	* variable.c (const_update): replace with const_tbl_update</div><div class='add'>+	  (const_tbl_update): new function</div><div class='add'>+	  (fc_i): adjust for id_table</div><div class='add'>+	  (find_class_path): ditto</div><div class='add'>+	  (autoload_const_set): st_update =&gt; const_tbl_update</div><div class='add'>+	  (rb_const_remove): adjust for id_table</div><div class='add'>+	  (sv_i): ditto</div><div class='add'>+	  (rb_local_constants_i): ditto</div><div class='add'>+	  (rb_local_constants): ditto</div><div class='add'>+	  (rb_mod_const_at): ditto</div><div class='add'>+	  (rb_mod_const_set): ditto</div><div class='add'>+	  (rb_const_lookup): ditto</div><div class='add'>+	  [ruby-core:72112] [Feature #11614]</div><div class='ctx'> </div><div class='del'>-Wed Dec 25 18:29:22 2013  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Wed Dec 30 04:10:13 2015  CHIKANAGA Tomoyuki  &lt;nagachika@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* vm_insnhelper.c (argument_error): insert dummy frame to make</div><div class='del'>-	  a backtrace object intead of modify backtrace string array.</div><div class='del'>-	  [Bug #9295]</div><div class='add'>+	* thread_pthread.c (rb_thread_create_timer_thread): destroy attr even</div><div class='add'>+	  if pthread_create() failed.</div><div class='ctx'> </div><div class='del'>-	* test/ruby/test_backtrace.rb: add a test for this patch.</div><div class='del'>-	  fix test to compare a result of Exception#backtrace with</div><div class='del'>-	  a result of Exception#backtrace_locations.</div><div class='add'>+Wed Dec 30 02:55:09 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-Wed Dec 25 13:00:54 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* thread_pthread.c (setup_communication_pipe): delay setting owner</div><div class='add'>+	  (rb_thread_create_timer_thread): until thread creation succeeds</div><div class='add'>+	  [ruby-core:72590] [Bug #11922]</div><div class='ctx'> </div><div class='del'>-	* configure.in: let mingw do something black-magic, and check if</div><div class='del'>-	  _gmtime64_s() is available actually.</div><div class='add'>+Tue Dec 29 19:12:46 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* win32/win32.c (gmtime_s, localtime_s): use _gmtime64_s() and</div><div class='del'>-	  _localtime64_s() if available, not depending on very confusing</div><div class='del'>-	  mingw variants macros.  based on the patch by phasis68 (Heesob</div><div class='del'>-	  Park) at [ruby-core:58764].  [ruby-core:58391] [Bug #9119]</div><div class='add'>+	* ruby.c (proc_options): -W command line option should be able to</div><div class='add'>+	  override -w in RUBYOPT environment variable.</div><div class='ctx'> </div><div class='del'>-Wed Dec 25 12:33:41 2013  Yusuke Endoh  &lt;mame@tsg.ne.jp&gt;</div><div class='add'>+Tue Dec 29 17:54:16 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* sample/trick2013/: added the award-winning entries of TRICK 2013.</div><div class='del'>-	  See https://github.com/tric/trick2013 for the contest outline.</div><div class='del'>-	  (Matz has approved the attachment.)</div><div class='add'>+	* eval.c (ignored_block): warn if a block is given to `using`,</div><div class='add'>+	  which is probably for `Module.new`.</div><div class='ctx'> </div><div class='del'>-Wed Dec 25 10:42:02 2013  Yamashita Yuu  &lt;yamashita@geishatokyo.com&gt;</div><div class='add'>+Tue Dec 29 12:48:34 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* ext/openssl/ossl_ssl.c (Init_ossl_ssl): Declare a constant</div><div class='del'>-	  `OP_MSIE_SSLV2_RSA_PADDING` only if the macro is defined.  The</div><div class='del'>-	  `SSL_OP_MSIE_SSLV2_RSA_PADDING` has been removed from latest</div><div class='del'>-	  snapshot of OpenSSL 1.0.1.  [Fixes GH-488]</div><div class='add'>+	* lib/ostruct.rb (OpenStruct): make respond_to? working on</div><div class='add'>+	  just-allocated objects for workaround of Psych.</div><div class='add'>+	  [ruby-core:72501] [Bug #11884]</div><div class='ctx'> </div><div class='del'>-Wed Dec 25 01:03:00 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Dec 29 10:35:00 2015  Kenta Murata  &lt;mrkn@mrkn.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* proc.c (bind_local_variables): allowing binding to list its</div><div class='del'>-	  local variables.  patch by Jack Danger Canty &lt;jackdanger AT</div><div class='del'>-	  squareup.com&gt; at [ruby-core:56543].  [Feature #8773]</div><div class='add'>+	* test/mkmf/test_have_func.rb (test_have_func):</div><div class='add'>+	  Add assertion to examine the existence of HAVE_RUBY_INIT.</div><div class='ctx'> </div><div class='del'>-Tue Dec 24 23:20:38 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* test/mkmf/test_have_func.rb (test_not_have_func):</div><div class='add'>+	  Add assertion to examine the absence of HAVE_RUBY_INIT.</div><div class='ctx'> </div><div class='del'>-	* test/fileutils/fileasserts.rb (assert_ownership_user): new</div><div class='del'>-	  assertion for user ownership.</div><div class='add'>+Tue Dec 29 06:50:42 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/fileutils/test_fileutils.rb (test_chown_error),</div><div class='del'>-	  (test_chown_without_permission, test_chown_with_root):</div><div class='del'>-	  based on the patch by vajrasky (Vajrasky Kok) at</div><div class='del'>-	  [ruby-core:59298].  [Feature #9292]</div><div class='add'>+	* thread_sync.c: static classes</div><div class='ctx'> </div><div class='del'>-Tue Dec 24 16:28:05 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Tue Dec 29 05:30:30 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-	* proc.c (rb_mod_define_method): consider visibility only if self</div><div class='del'>-	  in the caller is same as the receiver, otherwise make public as</div><div class='del'>-	  well as old behavior.  [ruby-core:57747] [Bug #9005]</div><div class='del'>-	  [ruby-core:58497] [Bug #9141]</div><div class='add'>+	* lib/resolv.rb (Resolv::IPv6.create): avoid modifying frozen</div><div class='add'>+	* test/resolv/test_dns.rb (test_ipv6_create): test for above</div><div class='add'>+	  [Bug #11910] [ruby-core:72559]</div><div class='ctx'> </div><div class='del'>-	* vm.c (rb_vm_cref_in_context): return ruby level cref if self is</div><div class='del'>-	  same.</div><div class='add'>+Mon Dec 28 14:55:57 2015  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Tue Dec 24 14:13:14 2013  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* test/ruby/test_string.rb (TestString#test_rstrip_bang): Add test</div><div class='add'>+	  for String#rstrip!.  [Fix GH-1176]</div><div class='ctx'> </div><div class='del'>-	* README.EXT: add a refer to URL.</div><div class='add'>+Mon Dec 28 09:18:53 2015  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Tue Dec 24 13:48:45 2013  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* test/ruby/test_string.rb (TestString#test_lstrip_bang): Add test</div><div class='add'>+	  for String#lstrip!.  [Fix GH-1176]</div><div class='ctx'> </div><div class='del'>-	* README.EXT: add a document about RGenGC.</div><div class='del'>-	  Reviewed by havenwood.</div><div class='del'>-	  [misc #8962]</div><div class='add'>+Sun Dec 27 23:32:26 2015  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='ctx'> </div><div class='del'>-	* README.EXT.ja: ditto.</div><div class='add'>+	* ext/win32ole/win32ole.c (ole_variant2val): refactoring.</div><div class='ctx'> </div><div class='del'>-Tue Dec 24 12:11:43 2013  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+Sun Dec 27 21:14:42 2015  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* include/ruby/ruby.h (RARRAY_ASET): try to avoid compiler warning.</div><div class='del'>-	  [Bug #9287]</div><div class='add'>+	* process.c (rb_execarg_parent_start1): need to convert the encoding to</div><div class='add'>+	  ospath's one.</div><div class='ctx'> </div><div class='del'>-Tue Dec 24 05:04:56 2013  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+Sun Dec 27 20:54:22 2015  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/fileutils/test_fileutils.rb (setup): should not call</div><div class='del'>-	  Process.groups for Windows.  get rid of many errors introduced by</div><div class='del'>-	  r44364.</div><div class='add'>+	* process.c: use rb_w32_uchdir() instead of plain chdir() on Windows.</div><div class='add'>+	  reported by naruse via twitter.</div><div class='ctx'> </div><div class='del'>-Mon Dec 23 18:37:16 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* process.c (rb_execarg_addopt): need to convert the encoding to</div><div class='add'>+	  ospath's one.</div><div class='ctx'> </div><div class='del'>-	* test/fileutils/fileasserts.rb (assert_ownership_group): new</div><div class='del'>-	  assertion for group ownership.</div><div class='add'>+Sun Dec 27 20:00:31 2015  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* test/fileutils/test_fileutils.rb (test_chown{,_verbose,_noop}):</div><div class='del'>-	  based on the patch by vajrasky (Vajrasky Kok) at</div><div class='del'>-	  [ruby-core:59281].  [Feature #9286]</div><div class='add'>+	* enc/x_emoji.h: fix dead-link.</div><div class='ctx'> </div><div class='del'>-Mon Dec 23 15:53:45 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Sun Dec 27 19:55:55 2015  SHIBATA Hiroshi  &lt;hsbt@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* hash.c (HAS_EXTRA_STATES): warn extra states only when something</div><div class='del'>-	  differ.  [ruby-core:59254] [Bug #9275]</div><div class='add'>+	* doc/NEWS-2.3.0: fix a typo.</div><div class='ctx'> </div><div class='del'>-Mon Dec 23 12:42:13 2013  Marc-Andre Lafortune  &lt;ruby-core@marc-andre.ca&gt;</div><div class='add'>+Sun Dec 27 18:08:15 2015  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-	* array.c: Have to_h raise on elements that are not key-value pairs</div><div class='del'>-	  [#9239]</div><div class='add'>+	* string.c (rb_str_lstrip_bang, rb_str_rstrip_bang): [DOC] Fix</div><div class='add'>+	  ruby-doc comments for String#rstrip! and lstrip!.  It looks like</div><div class='add'>+	  dropped bang.  [Fix GH-1175]</div><div class='ctx'> </div><div class='del'>-	* enum.c: ditto</div><div class='add'>+Sun Dec 27 15:14:20 2015  Eric Wong  &lt;e@80x24.org&gt;</div><div class='ctx'> </div><div class='del'>-Mon Dec 23 05:01:55 2013  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* io.c (io_getpartial): remove unused kwarg from template</div><div class='add'>+	* test/ruby/test_io.rb (test_readpartial_bad_args): new</div><div class='add'>+	  [Bug #11885]</div><div class='ctx'> </div><div class='del'>-	* doc/syntax/methods.rdoc: [DOC] Added example for underscore</div><div class='del'>-	  conventions in method names. Also added doc to clarify encoding</div><div class='del'>-	  character set support for Ruby programs and elaborated on defining</div><div class='del'>-	  predicate and bang methods. Based on a patch by @gaurish</div><div class='del'>-	  [Fixes GH-477] https://github.com/ruby/ruby/pull/477</div><div class='add'>+Sun Dec 27 11:50:53 2015  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Mon Dec 23 03:18:09 2013  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* test/ruby/test_string.rb (test_rstrip, test_lstrip): Add tests</div><div class='add'>+	  for String#lstrip and rstrip.  The test cases are used from</div><div class='add'>+	  string.c ruby-doc comments.  [Fix GH-1174]</div><div class='ctx'> </div><div class='del'>-	* doc/ChangeLog-1.9.3: [DOC] Fix typos by @dvsuresh</div><div class='del'>-	  [Fixes GH-485] https://github.com/ruby/ruby/pull/485</div><div class='del'>-	* ext/openssl/ossl_config.c: ditto</div><div class='del'>-	* lib/rss/utils.rb, lib/time.rb: ditto</div><div class='del'>-	* test/ruby/envutil.rb: ditto</div><div class='add'>+Sun Dec 27 11:47:46 2015  Kuniaki IGARASHI  &lt;igaiga@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Sun Dec 22 23:56:56 2013  Zachary Scott  &lt;e@zzak.io&gt;</div><div class='add'>+	* test/ruby/test_string.rb (test_insert): Add test for</div><div class='add'>+	  String#insert.  The test cases are written in string.c</div><div class='add'>+	  comments as a reference.  [Fix GH-1173]</div><div class='ctx'> </div><div class='del'>-	* lib/{rake,rdoc,rss}/*, test/rexml/test_listener.rb: [DOC] Fix typos</div><div class='del'>-	  by @dvsuresh [Fixes GH-486] https://github.com/ruby/ruby/pull/486</div><div class='add'>+Sun Dec 27 11:03:33 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Dec 22 11:08:47 2013  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* parse.y (show_bitstack): trace stack_type value if yydebug.</div><div class='ctx'> </div><div class='del'>-	* test/rubygems/test_gem_ext_builder.rb:  Fix warning due to ambiguous</div><div class='del'>-	  expression.</div><div class='add'>+Sun Dec 27 10:03:14 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Dec 22 11:05:53 2013  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* enc/depend (enc, trans): fix version dependency, shared object</div><div class='add'>+	  files depend on the RUBY_SO_NAME value for runtime link.</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems/commands/install_command.rb:  Restore gem install</div><div class='del'>-	  --ignore-dependencies for remote gems</div><div class='del'>-	* test/rubygems/test_gem_commands_install_command.rb:  Test for the</div><div class='del'>-	  above.</div><div class='add'>+Sun Dec 27 09:47:20 2015  Masaki Suketa &lt;masaki.suketa@nifty.ne.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sun Dec 22 10:23:40 2013  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* ext/win32ole/win32ole.c (ole_vstr2wc, ole_variant2val): fix blank</div><div class='add'>+	  string conversion.</div><div class='add'>+	  [Bug #11880]</div><div class='add'>+	  Thanks Akio Tajima for the patch!</div><div class='ctx'> </div><div class='del'>-	* lib/rdoc.rb:  Set RDoc to release version.</div><div class='add'>+Sun Dec 27 09:34:53 2015  craft4coder  &lt;yooobuntu@163.com&gt;</div><div class='ctx'> </div><div class='del'>-Sun Dec 22 10:19:07 2013  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* doc/extension.rdoc: [DOC] `nul` should be uppercase.</div><div class='add'>+	  change 'nul' =&gt; 'NUL'.  [Fix GH-1172]</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems.rb:  Set RubyGems to release version.</div><div class='add'>+Sat Dec 26 18:29:01 2015  Kouhei Sutou  &lt;kou@cozmixng.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Dec 22 10:16:08 2013  Eric Hodel  &lt;drbrain@segment7.net&gt;</div><div class='add'>+	* lib/xmlrpc/client.rb: Support SSL options in async methods of</div><div class='add'>+	  XMLRPC::Client.</div><div class='add'>+	  [Bug #11489]</div><div class='add'>+	  Reported by Aleksandar Kostadinov. Thanks!!!</div><div class='ctx'> </div><div class='del'>-	* lib/rubygems.rb (module Gem):  Fix comment for</div><div class='del'>-	  Gem::load_path_insert_index.</div><div class='add'>+Sat Dec 26 11:26:38 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sun Dec 22 04:07:55 2013  Koichi Sasada  &lt;ko1@atdot.net&gt;</div><div class='add'>+	* miniinit.c (Init_enc): add some common aliases of built-in</div><div class='add'>+	  encodings.  [ruby-core:72481] [Bug #11872]</div><div class='ctx'> </div><div class='del'>-	* gc.c (ruby_gc_set_params): don't show obsolete warnings for</div><div class='del'>-	  RUBY_FREE_MIN/RUBY_HEAP_MIN_SLOTS if</div><div class='del'>-	  RUBY_GC_HEAP_FREE_SLOTS/RUBY_GC_HEAP_INIT_SLOTS are given.</div><div class='del'>-	  [Bug #9276]</div><div class='add'>+Fri Dec 25 22:43:26 2015  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-Sat Dec 21 13:00:20 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+	* configure.in: extract RUBY_RELEASE_DAY at generating Makefile.</div><div class='ctx'> </div><div class='del'>-	* file.c: remove unnecessary the source path from EEXIST error</div><div class='del'>-	  messages and show the destination path only.  [ruby-core:59202]</div><div class='del'>-	  [Feature #9263]</div><div class='add'>+	* version.h (RUBY_RELEASE_DATE): construct from RUBY_RELEASE_YEAR,</div><div class='add'>+	  RUBY_RELEASE_MONTH, and RUBY_RELEASE_DAY.</div><div class='ctx'> </div><div class='del'>-Sat Dec 21 12:37:19 2013  Nobuyoshi Nakada  &lt;nobu@ruby-lang.org&gt;</div><div class='add'>+Fri Dec 25 21:33:06 2015  Yukihiro Matsumoto  &lt;matz@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb (Resolv::Hosts#lazy_initialize): should not</div><div class='del'>-	  consider encodings in hosts file.  [ruby-core:59239] [Bug #9273]</div><div class='add'>+	* version.h (RUBY_VERSION): 2.4.0 development has started.</div><div class='ctx'> </div><div class='del'>-	* lib/resolv.rb (Resolv::Config.parse_resolv_conf): ditto.</div><div class='add'>+Fri Dec 25 14:12:12 2015  Martin Duerst  &lt;duerst@it.aoyama.ac.jp&gt;</div><div class='ctx'> </div><div class='del'>-Sat Dec 21 05:43:27 2013  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* doc/ChangeLog-2.3.0, ext/tk/lib/tkextlib/SUPPORT_STATUS,</div><div class='add'>+	  include/ruby/version.h: minor grammar fixes [ci skip]</div><div class='ctx'> </div><div class='del'>-	* tool/make-snapshot: replace RUBY_PATCHLEVEL_STR in version.h to</div><div class='del'>-	  show users that this ruby is a preview/rc version.</div><div class='add'>+Fri Dec 25 08:23:22 2015  Tadashi Saito  &lt;tad.a.digger@gmail.com&gt;</div><div class='ctx'> </div><div class='del'>-Sat Dec 21 05:03:49 2013  NAKAMURA Usaku  &lt;usa@ruby-lang.org&gt;</div><div class='add'>+	* compile.c, cont.c, doc, man: fix common misspelling.</div><div class='add'>+	  [ruby-core:72466] [Bug #11870]</div><div class='ctx'> </div><div class='del'>-	* win32/Makefile.sub (fake.rb): fixed wrong RUBY_PLATFORM, to correctly</div><div class='del'>-	  install win32.h.</div><div class='del'>-	  [ruby-core:58801][Bug #9199] reported by arton.</div><div class='ctx'> </div><div class='add'>+For the changes before 2.3.0, see doc/ChangeLog-2.3.0</div><div class='add'>+For the changes before 2.2.0, see doc/ChangeLog-2.2.0</div><div class='ctx'> For the changes before 2.1.0, see doc/ChangeLog-2.1.0</div><div class='ctx'> For the changes before 2.0.0, see doc/ChangeLog-2.0.0</div><div class='ctx'> For the changes before 1.9.3, see doc/ChangeLog-1.9.3</div><div class='head'>diff --git a/KNOWNBUGS.rb b/KNOWNBUGS.rb<br/>index b97a08d928..35a8e75876 100644<br/>--- a/<a href='/ruby.git/tree/KNOWNBUGS.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>KNOWNBUGS.rb</a><br/>+++ b/<a href='/ruby.git/tree/KNOWNBUGS.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>KNOWNBUGS.rb</a></div><div class='hunk'>@@ -1,5 +1,7 @@</div><div class='ctx'> #</div><div class='del'>-# This test file concludes tests which point out known bugs.</div><div class='add'>+# IMPORTANT: Always keep the first 7 lines (comments),</div><div class='add'>+# even if this file is otherwise empty.</div><div class='add'>+#</div><div class='add'>+# This test file includes tests which point out known bugs.</div><div class='ctx'> # So all tests will cause failure.</div><div class='ctx'> #</div><div class='del'>-</div><div class='head'>diff --git a/LEGAL b/LEGAL<br/>index 24e36e6231..cd1cce2de1 100644<br/>--- a/<a href='/ruby.git/tree/LEGAL?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>LEGAL</a><br/>+++ b/<a href='/ruby.git/tree/LEGAL?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>LEGAL</a></div><div class='hunk'>@@ -90,6 +90,74 @@ http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/oniguruma/</div><div class='ctx'>    When this software is partly used or it is distributed with Ruby,</div><div class='ctx'>    this of Ruby follows the license of Ruby.</div><div class='ctx'> </div><div class='add'>+enc/trans/GB/GB12345%UCS.src:</div><div class='add'>+enc/trans/GB/UCS%GB12345.src:</div><div class='add'>+</div><div class='add'>+    Copyright (c) 1991-1994 Unicode, Inc.  All Rights reserved.</div><div class='add'>+</div><div class='add'>+    This file is provided as-is by Unicode, Inc. (The Unicode Consortium).</div><div class='add'>+    No claims are made as to fitness for any particular purpose.  No</div><div class='add'>+    warranties of any kind are expressed or implied.  The recipient</div><div class='add'>+    agrees to determine applicability of information provided.  If this</div><div class='add'>+    file has been provided on magnetic media by Unicode, Inc., the sole</div><div class='add'>+    remedy for any claim will be exchange of defective media within 90</div><div class='add'>+    days of receipt.</div><div class='add'>+</div><div class='add'>+    Recipient is granted the right to make copies in any form for</div><div class='add'>+    internal distribution and to freely use the information supplied</div><div class='add'>+    in the creation of products supporting Unicode.  Unicode, Inc.</div><div class='add'>+    specifically excludes the right to re-distribute this file directly</div><div class='add'>+    to third parties or other organizations whether for profit or not.</div><div class='add'>+</div><div class='add'>+</div><div class='add'>+enc/trans/GB/GB2312%UCS.src:</div><div class='add'>+enc/trans/GB/UCS%GB2312.src:</div><div class='add'>+</div><div class='add'>+    Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.</div><div class='add'>+</div><div class='add'>+    This file is provided as-is by Unicode, Inc. (The Unicode Consortium).</div><div class='add'>+    No claims are made as to fitness for any particular purpose.  No</div><div class='add'>+    warranties of any kind are expressed or implied.  The recipient</div><div class='add'>+    agrees to determine applicability of information provided.  If this</div><div class='add'>+    file has been provided on optical media by Unicode, Inc., the sole</div><div class='add'>+    remedy for any claim will be exchange of defective media within 90</div><div class='add'>+    days of receipt.</div><div class='add'>+</div><div class='add'>+    Unicode, Inc. hereby grants the right to freely use the information</div><div class='add'>+    supplied in this file in the creation of products supporting the</div><div class='add'>+    Unicode Standard, and to make copies of this file in any form for</div><div class='add'>+    internal or external distribution as long as this notice remains</div><div class='add'>+    attached.</div><div class='add'>+</div><div class='add'>+enc/trans/JIS/JISX0201-KANA%UCS.src:</div><div class='add'>+enc/trans/JIS/JISX0208@1990%UCS.src:</div><div class='add'>+enc/trans/JIS/JISX0212%UCS.src:</div><div class='add'>+enc/trans/JIS/UCS%JISX0201-KANA.src:</div><div class='add'>+enc/trans/JIS/UCS%JISX0208@1990.src:</div><div class='add'>+enc/trans/JIS/UCS%JISX0212.src:</div><div class='add'>+</div><div class='add'>+    Â© 2015 UnicodeÂ®, Inc.</div><div class='add'>+    For terms of use, see http://www.unicode.org/terms_of_use.html</div><div class='add'>+</div><div class='add'>+enc/trans/JIS/JISX0213-1%UCS@BMP.src:</div><div class='add'>+enc/trans/JIS/JISX0213-1%UCS@SIP.src:</div><div class='add'>+enc/trans/JIS/JISX0213-2%UCS@BMP.src:</div><div class='add'>+enc/trans/JIS/JISX0213-2%UCS@SIP.src:</div><div class='add'>+</div><div class='add'>+ 	Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.</div><div class='add'>+ 	Copyright (C) 2001 I'O, All Rights Reserved.</div><div class='add'>+ 	Copyright (C) 2006 Project X0213, All Rights Reserved.</div><div class='add'>+ 	You can use, modify, distribute this table freely.</div><div class='add'>+</div><div class='add'>+enc/trans/JIS/UCS@BMP%JISX0213-1.src:</div><div class='add'>+enc/trans/JIS/UCS@BMP%JISX0213-2.src:</div><div class='add'>+enc/trans/JIS/UCS@SIP%JISX0213-1.src:</div><div class='add'>+enc/trans/JIS/UCS@SIP%JISX0213-2.src:</div><div class='add'>+</div><div class='add'>+ 	Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.</div><div class='add'>+ 	Copyright (C) 2001 I'O, All Rights Reserved.</div><div class='add'>+ 	You can use, modify, distribute this table freely.</div><div class='add'>+</div><div class='ctx'> configure:</div><div class='ctx'> </div><div class='ctx'>   This file is free software.</div><div class='hunk'>@@ -264,31 +332,33 @@ random.c</div><div class='ctx'> </div><div class='ctx'> vm_dump.c:procstat_vm</div><div class='ctx'> </div><div class='del'>- * Copyright (c) 2007 Robert N. M. Watson</div><div class='del'>- * All rights reserved.</div><div class='del'>- *</div><div class='del'>- * Redistribution and use in source and binary forms, with or without</div><div class='del'>- * modification, are permitted provided that the following conditions</div><div class='del'>- * are met:</div><div class='del'>- * 1. Redistributions of source code must retain the above copyright</div><div class='del'>- *    notice, this list of conditions and the following disclaimer.</div><div class='del'>- * 2. Redistributions in binary form must reproduce the above copyright</div><div class='del'>- *    notice, this list of conditions and the following disclaimer in the</div><div class='del'>- *    documentation and/or other materials provided with the distribution.</div><div class='del'>- *</div><div class='del'>- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</div><div class='del'>- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</div><div class='del'>- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</div><div class='del'>- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</div><div class='del'>- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</div><div class='del'>- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</div><div class='del'>- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</div><div class='del'>- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</div><div class='del'>- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</div><div class='del'>- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</div><div class='del'>- * SUCH DAMAGE.</div><div class='del'>- *</div><div class='del'>- * $FreeBSD: head/usr.bin/procstat/procstat_vm.c 261780 2014-02-11 21:57:37Z jhb $</div><div class='add'>+  This file is under the new-style BSD license.</div><div class='add'>+</div><div class='add'>+    Copyright (c) 2007 Robert N. M. Watson</div><div class='add'>+    All rights reserved.</div><div class='add'>+</div><div class='add'>+    Redistribution and use in source and binary forms, with or without</div><div class='add'>+    modification, are permitted provided that the following conditions</div><div class='add'>+    are met:</div><div class='add'>+    1. Redistributions of source code must retain the above copyright</div><div class='add'>+       notice, this list of conditions and the following disclaimer.</div><div class='add'>+    2. Redistributions in binary form must reproduce the above copyright</div><div class='add'>+       notice, this list of conditions and the following disclaimer in the</div><div class='add'>+       documentation and/or other materials provided with the distribution.</div><div class='add'>+</div><div class='add'>+    THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</div><div class='add'>+    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</div><div class='add'>+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</div><div class='add'>+    ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</div><div class='add'>+    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</div><div class='add'>+    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</div><div class='add'>+    OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</div><div class='add'>+    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</div><div class='add'>+    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</div><div class='add'>+    OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</div><div class='add'>+    SUCH DAMAGE.</div><div class='add'>+</div><div class='add'>+    $FreeBSD: head/usr.bin/procstat/procstat_vm.c 261780 2014-02-11 21:57:37Z jhb $</div><div class='ctx'> </div><div class='ctx'> vsnprintf.c:</div><div class='ctx'> </div><div class='hunk'>@@ -330,7 +400,10 @@ vsnprintf.c:</div><div class='ctx'>     From ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change</div><div class='ctx'>     paragraph 3 above is now null and void.</div><div class='ctx'> </div><div class='del'>-st.[ch]:</div><div class='add'>+st.c:</div><div class='add'>+strftime.c:</div><div class='add'>+include/ruby/st.h:</div><div class='add'>+missing/acosh.c:</div><div class='ctx'> missing/alloca.c:</div><div class='ctx'> missing/dup2.c:</div><div class='ctx'> missing/erf.c:</div><div class='hunk'>@@ -342,10 +415,14 @@ missing/lgamma_r.c:</div><div class='ctx'> missing/memcmp.c:</div><div class='ctx'> missing/memmove.c:</div><div class='ctx'> missing/strchr.c:</div><div class='add'>+missing/strerror.c:</div><div class='ctx'> missing/strstr.c:</div><div class='ctx'> missing/strtol.c:</div><div class='ctx'> missing/tgamma.c:</div><div class='add'>+ext/date/date_strftime.c:</div><div class='ctx'> ext/digest/sha1/sha1.[ch]:</div><div class='add'>+ext/sdbm/_sdbm.c:</div><div class='add'>+ext/sdbm/sdbm.h:</div><div class='ctx'> </div><div class='ctx'>   These files are all under public domain.</div><div class='ctx'> </div><div class='hunk'>@@ -421,32 +498,21 @@ missing/setproctitle.c</div><div class='ctx'> missing/strlcat.c</div><div class='ctx'> missing/strlcpy.c</div><div class='ctx'> </div><div class='del'>-  These files are under the new-style BSD license.</div><div class='add'>+  These files are under an ISC-style license.</div><div class='ctx'> </div><div class='del'>-   Copyright (c) 1998 Todd C. Miller &lt;Todd.Miller@courtesan.com&gt;</div><div class='del'>-   All rights reserved.</div><div class='add'>+    Copyright (c) 1998, 2015 Todd C. Miller &lt;Todd.Miller@courtesan.com&gt;</div><div class='ctx'> </div><div class='del'>-   Redistribution and use in source and binary forms, with or without</div><div class='del'>-   modification, are permitted provided that the following conditions</div><div class='del'>-   are met:</div><div class='del'>-   1. Redistributions of source code must retain the above copyright</div><div class='del'>-      notice, this list of conditions and the following disclaimer.</div><div class='del'>-   2. Redistributions in binary form must reproduce the above copyright</div><div class='del'>-      notice, this list of conditions and the following disclaimer in the</div><div class='del'>-      documentation and/or other materials provided with the distribution.</div><div class='del'>-   3. The name of the author may not be used to endorse or promote products</div><div class='del'>-      derived from this software without specific prior written permission.</div><div class='del'>-</div><div class='del'>-   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,</div><div class='del'>-   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY</div><div class='del'>-   AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL</div><div class='del'>-   THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,</div><div class='del'>-   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,</div><div class='del'>-   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;</div><div class='del'>-   OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,</div><div class='del'>-   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR</div><div class='del'>-   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</div><div class='del'>-   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</div><div class='add'>+    Permission to use, copy, modify, and distribute this software for any</div><div class='add'>+    purpose with or without fee is hereby granted, provided that the above</div><div class='add'>+    copyright notice and this permission notice appear in all copies.</div><div class='add'>+</div><div class='add'>+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES</div><div class='add'>+    WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF</div><div class='add'>+    MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR</div><div class='add'>+    ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES</div><div class='add'>+    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN</div><div class='add'>+    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF</div><div class='add'>+    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</div><div class='ctx'> </div><div class='ctx'> missing/langinfo.c</div><div class='ctx'> </div><div class='hunk'>@@ -527,6 +593,28 @@ ext/digest/sha2/sha2.[ch]:</div><div class='ctx'>     OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</div><div class='ctx'>     SUCH DAMAGE.</div><div class='ctx'> </div><div class='add'>+ext/json/generator/generator.c:</div><div class='add'>+</div><div class='add'>+    Copyright 2001-2004 Unicode, Inc.</div><div class='add'>+</div><div class='add'>+    Disclaimer</div><div class='add'>+</div><div class='add'>+    This source code is provided as is by Unicode, Inc. No claims are</div><div class='add'>+    made as to fitness for any particular purpose. No warranties of any</div><div class='add'>+    kind are expressed or implied. The recipient agrees to determine</div><div class='add'>+    applicability of information provided. If this file has been</div><div class='add'>+    purchased on magnetic or optical media from Unicode, Inc., the</div><div class='add'>+    sole remedy for any claim will be exchange of defective media</div><div class='add'>+    within 90 days of receipt.</div><div class='add'>+</div><div class='add'>+    Limitations on Rights to Redistribute This Code</div><div class='add'>+</div><div class='add'>+    Unicode, Inc. hereby grants the right to freely use the information</div><div class='add'>+    supplied in this file in the creation of products supporting the</div><div class='add'>+    Unicode Standard, and to make copies of this file in any form</div><div class='add'>+    for internal or external distribution as long as this notice</div><div class='add'>+    remains attached.</div><div class='add'>+</div><div class='ctx'> ext/nkf/nkf-utf8/config.h:</div><div class='ctx'> ext/nkf/nkf-utf8/nkf.c:</div><div class='ctx'> ext/nkf/nkf-utf8/utf8tbl.c:</div><div class='hunk'>@@ -590,3 +678,9 @@ ext/win32ole/win32ole.c:</div><div class='ctx'>     You may distribute under the terms of either the GNU General Public</div><div class='ctx'>     License or the Artistic License, as specified in the README file</div><div class='ctx'>     of the Perl distribution.</div><div class='add'>+</div><div class='add'>+lib/rdoc/generator/template/darkfish/css/fonts.css:</div><div class='add'>+</div><div class='add'>+  This file is licensed under the SIL Open Font License.</div><div class='add'>+</div><div class='add'>+    http://scripts.sil.org/OFL</div><div class='head'>diff --git a/Makefile.in b/Makefile.in<br/>index 7da2488b46..9c8748aa4d 100644<br/>--- a/<a href='/ruby.git/tree/Makefile.in?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>Makefile.in</a><br/>+++ b/<a href='/ruby.git/tree/Makefile.in?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>Makefile.in</a></div><div class='hunk'>@@ -22,6 +22,8 @@ LD = @LD@</div><div class='ctx'> YACC = bison</div><div class='ctx'> PURIFY =</div><div class='ctx'> AUTOCONF = autoconf</div><div class='add'>+ACLOCAL = aclocal</div><div class='add'>+CONFIGURE = @CONFIGURE@</div><div class='ctx'> @SET_MAKE@</div><div class='ctx'> MKFILES = @MAKEFILES@</div><div class='ctx'> BASERUBY = @BASERUBY@</div><div class='hunk'>@@ -51,7 +53,7 @@ DOCTARGETS = @RDOCTARGET@ @CAPITARGET@</div><div class='ctx'> </div><div class='ctx'> EXTOUT = @EXTOUT@</div><div class='ctx'> arch_hdrdir = $(EXTOUT)/include/$(arch)</div><div class='del'>-VPATH = $(arch_hdrdir)/ruby:$(hdrdir)/ruby:$(srcdir):$(srcdir)/enc:$(srcdir)/missing</div><div class='add'>+VPATH = $(arch_hdrdir)/ruby:$(hdrdir)/ruby:$(srcdir):$(srcdir)/missing</div><div class='ctx'> </div><div class='ctx'> empty =</div><div class='ctx'> CC_VERSION = @CC_VERSION@</div><div class='hunk'>@@ -65,7 +67,6 @@ optflags = @optflags@</div><div class='ctx'> debugflags = @debugflags@</div><div class='ctx'> warnflags = @warnflags@ @strict_warnflags@</div><div class='ctx'> cppflags = @cppflags@</div><div class='del'>-INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir)</div><div class='ctx'> XCFLAGS = @XCFLAGS@</div><div class='ctx'> CPPFLAGS = @CPPFLAGS@ $(INCFLAGS)</div><div class='ctx'> LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@</div><div class='hunk'>@@ -113,12 +114,14 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@</div><div class='ctx'> XRUBY_LIBDIR = @XRUBY_LIBDIR@</div><div class='ctx'> XRUBY_RUBYLIBDIR = @XRUBY_RUBYLIBDIR@</div><div class='ctx'> XRUBY_RUBYHDRDIR = @XRUBY_RUBYHDRDIR@</div><div class='add'>+BOOTSTRAPRUBY = @BOOTSTRAPRUBY@</div><div class='ctx'> </div><div class='ctx'> #### End of system configuration section. ####</div><div class='ctx'> </div><div class='ctx'> MAJOR=	@MAJOR@</div><div class='ctx'> MINOR=	@MINOR@</div><div class='ctx'> TEENY=	@TEENY@</div><div class='add'>+RUBY_PROGRAM_VERSION = @RUBY_PROGRAM_VERSION@</div><div class='ctx'> </div><div class='ctx'> LIBRUBY_A     = @LIBRUBY_A@</div><div class='ctx'> LIBRUBY_SO    = @LIBRUBY_SO@</div><div class='hunk'>@@ -161,7 +164,7 @@ RMDIRS        = @RMDIRS@</div><div class='ctx'> RMALL         = @RMALL@</div><div class='ctx'> NM            = @NM@</div><div class='ctx'> AR            = @AR@</div><div class='del'>-ARFLAGS       = rcu</div><div class='add'>+ARFLAGS       = @ARFLAGS@</div><div class='ctx'> RANLIB        = @RANLIB@</div><div class='ctx'> AS            = @AS@</div><div class='ctx'> ASFLAGS       = @ASFLAGS@ $(INCFLAGS)</div><div class='hunk'>@@ -185,7 +188,7 @@ SYMBOL_PREFIX = @SYMBOL_PREFIX@</div><div class='ctx'> </div><div class='ctx'> INSTALLED_LIST= .installed.list</div><div class='ctx'> </div><div class='del'>-NEWLINE_C     = newline.c</div><div class='add'>+NEWLINE_C     = enc/trans/newline.c</div><div class='ctx'> MINIPRELUDE_C = miniprelude.c</div><div class='ctx'> PRELUDE_C     = prelude.c</div><div class='ctx'> RBCONFIG      = .rbconfig.time</div><div class='hunk'>@@ -215,7 +218,7 @@ all:</div><div class='ctx'> miniruby$(EXEEXT):</div><div class='ctx'> 		@-if test -f $@; then $(MV) -f $@ $@.old; $(RM) $@.old; fi</div><div class='ctx'> 		$(ECHO) linking $@</div><div class='del'>-		$(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(INITOBJS) $(MAINLIBS) $(LIBS) $(OUTFLAG)$@</div><div class='add'>+		$(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(MAINLIBS) $(LIBS) $(OUTFLAG)$@</div><div class='ctx'> </div><div class='ctx'> $(PROGRAM):</div><div class='ctx'> 		@$(RM) $@</div><div class='hunk'>@@ -239,19 +242,27 @@ $(LIBRUBY_SO):</div><div class='ctx'> 		@-$(PRE_LIBRUBY_UPDATE)</div><div class='ctx'> 		$(ECHO) linking shared-library $@</div><div class='ctx'> 		$(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) $(EXTSOLIBS) $(OUTFLAG)$@</div><div class='del'>-		-$(Q) $(OBJCOPY) -w -L '$(SYMBOL_PREFIX)Init_*' -L '$(SYMBOL_PREFIX)*_threadptr_*' $@</div><div class='add'>+		-$(Q) $(OBJCOPY) -w -L '$(SYMBOL_PREFIX)Init_*' -L '$(SYMBOL_PREFIX)ruby_static_id_*' \</div><div class='add'>+			-L '$(SYMBOL_PREFIX)*_threadptr_*' $@</div><div class='ctx'> 		$(Q) $(POSTLINK)</div><div class='ctx'> 		@-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link rescue nil; \</div><div class='ctx'> 						  File.symlink "$(LIBRUBY_SO)", link}' \</div><div class='ctx'> 				$(LIBRUBY_ALIASES) || true</div><div class='del'>-$(arch)-fake.rb: config.status $(srcdir)/template/fake.rb.in</div><div class='del'>-		@./config.status --file=$@:$(srcdir)/template/fake.rb.in</div><div class='del'>-		@chmod +x $@</div><div class='ctx'> </div><div class='ctx'> ruby_pc = @ruby_pc@</div><div class='ctx'> $(ruby_pc):</div><div class='ctx'> 		@./config.status --file=$@:$(srcdir)/template/ruby.pc.in</div><div class='ctx'> </div><div class='add'>+ruby-runner.h: template/ruby-runner.h.in</div><div class='add'>+		@./config.status --file=$@:$(srcdir)/template/$(@F).in</div><div class='add'>+</div><div class='add'>+ruby-runner$(EXEEXT): ruby-runner.c ruby-runner.h</div><div class='add'>+	$(Q) $(PURIFY) $(CC) $(CFLAGS) $(CPPFLAGS) -DRUBY_INSTALL_NAME=$(RUBY_INSTALL_NAME) $(LDFLAGS) $(LIBS) $(OUTFLAG)$@ $&lt;</div><div class='add'>+</div><div class='add'>+$(RBCONFIG): $(PREP)</div><div class='add'>+</div><div class='add'>+rbconfig.rb: $(RBCONFIG)</div><div class='add'>+</div><div class='ctx'> install-cross: $(arch)-fake.rb $(RBCONFIG) rbconfig.rb $(arch_hdrdir)/ruby/config.h \</div><div class='ctx'> 	$(LIBRUBY_A) $(LIBRUBY_SO) $(ARCHFILE)</div><div class='ctx'> 	$(ECHO) installing cross-compiling stuff</div><div class='hunk'>@@ -287,18 +298,23 @@ uncommon.mk: $(srcdir)/common.mk</div><div class='ctx'> 		sed 's/{\$$([^(){}]*)[^{}]*}//g' $&lt; &gt; $@</div><div class='ctx'> </div><div class='ctx'> .PHONY: reconfig</div><div class='del'>-reconfig-args = $(srcdir)/configure $(configure_args)</div><div class='add'>+reconfig-args = $(srcdir)/$(CONFIGURE) $(configure_args)</div><div class='ctx'> config.status-args = ./config.status --recheck</div><div class='del'>-reconfig-exec-0 = exec 3&gt;&amp;1; exit `exec 4&gt;&amp;1; { "$$@" 3&gt;&amp;- 4&gt;&amp;-; echo $$? 1&gt;&amp;4; } | fgrep -v '(cached)' 1&gt;&amp;3`</div><div class='add'>+reconfig-exec-0 = test -t 1 &amp;&amp; { CONFIGURE_TTY=yes; export CONFIGURE_TTY; }; exec 3&gt;&amp;1; exit `exec 4&gt;&amp;1; { "$$@" 3&gt;&amp;- 4&gt;&amp;-; echo $$? 1&gt;&amp;4; } | fgrep -v '(cached)' 1&gt;&amp;3 3&gt;&amp;- 4&gt;&amp;-`</div><div class='ctx'> reconfig-exec-1 = set -x; "$$@"</div><div class='ctx'> </div><div class='del'>-reconfig config.status:	$(srcdir)/configure $(srcdir)/enc/Makefile.in \</div><div class='add'>+reconfig config.status:	$(srcdir)/$(CONFIGURE) $(srcdir)/enc/Makefile.in \</div><div class='ctx'> 			$(srcdir)/include/ruby/version.h</div><div class='ctx'> 	@PWD= MINIRUBY="$(MINIRUBY)"; export MINIRUBY; \</div><div class='ctx'> 	set $(SHELL) $($@-args); $(reconfig-exec-$(V))</div><div class='ctx'> </div><div class='del'>-$(srcdir)/configure: $(srcdir)/configure.in</div><div class='del'>-	$(CHDIR) $(srcdir) &amp;&amp; exec $(AUTOCONF)</div><div class='add'>+$(srcdir)/$(CONFIGURE): $(srcdir)/configure.in $(srcdir)/aclocal.m4</div><div class='add'>+	$(CHDIR) $(srcdir) &amp;&amp; exec $(AUTOCONF) -o $(@F)</div><div class='add'>+</div><div class='add'>+$(srcdir)/aclocal.m4:</div><div class='add'>+	$(CHDIR) $(srcdir) &amp;&amp; \</div><div class='add'>+	type $(ACLOCAL) &gt;/dev/null 2&gt;&amp;1 &amp;&amp; exec $(ACLOCAL); \</div><div class='add'>+	touch $(@F)</div><div class='ctx'> </div><div class='ctx'> incs: id.h</div><div class='ctx'> all-incs: probes.h</div><div class='hunk'>@@ -317,31 +333,14 @@ lex.c: defs/keywords</div><div class='ctx'> 	  $(CP) $(srcdir)/lex.c.blt $@; \</div><div class='ctx'> 	else \</div><div class='ctx'> 	  [ $(Q) ] &amp;&amp; echo generating $@ || set -x; \</div><div class='del'>-	  gperf -C -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$$ $? &gt; $@.tmp &amp;&amp; \</div><div class='add'>+	  gperf -C -P -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$$ $? \</div><div class='add'>+	  | sed 's/(long)&amp;((\(struct stringpool_t\) *\*)0)-&gt;\(stringpool_[a-z0-9]*\)/offsetof(\1, \2)/g' \</div><div class='add'>+	  &gt; $@.tmp &amp;&amp; \</div><div class='ctx'> 	  $(MV) $@.tmp $@ &amp;&amp; \</div><div class='ctx'> 	  $(CP) $? $(srcdir)/defs/lex.c.src &amp;&amp; \</div><div class='ctx'> 	  $(CP) $@ $(srcdir)/lex.c.blt; \</div><div class='ctx'> 	fi</div><div class='ctx'> </div><div class='del'>-NAME2CTYPE_OPTIONS = -7 -c -j1 -i1 -t -C -P -T -H uniname2ctype_hash -Q uniname2ctype_pool -N uniname2ctype_p</div><div class='del'>-</div><div class='del'>-enc/unicode/name2ctype.h: enc/unicode/name2ctype.kwd</div><div class='del'>-	$(MAKEDIRS) $(@D)</div><div class='del'>-	@set +e; \</div><div class='del'>-	if cmp -s $(?:.kwd=.src) $?; then \</div><div class='del'>-	  set -x; \</div><div class='del'>-	  $(CP) $(?:.kwd=.h.blt) $@; \</div><div class='del'>-	else \</div><div class='del'>-	  trap '$(RM) $@-1.h $@-2.h' 0 &amp;&amp; \</div><div class='del'>-	  set -x; \</div><div class='del'>-	  sed '/^#ifdef USE_UNICODE_PROPERTIES/,/^#endif/d' $? | gperf $(NAME2CTYPE_OPTIONS) &gt; $@-1.h &amp;&amp; \</div><div class='del'>-	  sed '/^#ifdef USE_UNICODE_PROPERTIES/d;/^#endif/d' $? | gperf $(NAME2CTYPE_OPTIONS) &gt; $@-2.h &amp;&amp; \</div><div class='del'>-	  diff -DUSE_UNICODE_PROPERTIES $@-1.h $@-2.h &gt; $@.tmp || :; \</div><div class='del'>-	  $(MV) $@.tmp $@ &amp;&amp; \</div><div class='del'>-	  $(CP) $? $(?:.kwd=.src) &amp;&amp; \</div><div class='del'>-	  $(CP) $@ $(?:.kwd=.h.blt); \</div><div class='del'>-	fi</div><div class='del'>-</div><div class='ctx'> JIS_PROPS_OPTIONS = -k1,3 -7 -c -j1 -i1 -t -C -P -t --ignore-case -H onig_jis_property_hash -Q onig_jis_property_pool -N onig_jis_property</div><div class='ctx'> </div><div class='ctx'> enc/jis/props.h: enc/jis/props.kwd</div><div class='hunk'>@@ -377,12 +376,12 @@ enc/jis/props.h: enc/jis/props.kwd</div><div class='ctx'> .d.h:</div><div class='ctx'> 	@$(ECHO) translating probes $&lt;</div><div class='ctx'> 	$(Q) $(DTRACE) -o $@.tmp -h -C $(INCFLAGS) -s $&lt;</div><div class='del'>-	$(Q) sed -e 's/RUBY_/RUBY_DTRACE_/g' -e 's/PROBES_H_TMP/PROBES_H/g' -e 's/(char \*/(const char */g' -e 's/, char \*/, const char */g' $@.tmp &gt; $@</div><div class='add'>+	$(Q) sed -e 's/RUBY_/RUBY_DTRACE_/g' -e 's/PROBES_H_TMP/RUBY_PROBES_H/' -e 's/(char \*/(const char */g' -e 's/, char \*/, const char */g' $@.tmp &gt; $@</div><div class='ctx'> 	$(Q) $(RM) $@.tmp</div><div class='ctx'> </div><div class='ctx'> .dmyh.h:</div><div class='del'>-	@$(ECHO) copying dummy $(DEST_FILE)</div><div class='del'>-	$(Q) $(CP) $(OS_SRC_FILE) $(OS_DEST_FILE)</div><div class='add'>+	@$(ECHO) making dummy $(DEST_FILE)</div><div class='add'>+	$(Q)echo '#include "$(*F).dmyh"' &gt; $@</div><div class='ctx'> </div><div class='ctx'> probes.stamp: $(DTRACE_REBUILD_OBJS)</div><div class='ctx'> 	$(Q) if test -f $@ -o -f probes.$(OBJEXT); then \</div><div class='hunk'>@@ -392,7 +391,7 @@ probes.stamp: $(DTRACE_REBUILD_OBJS)</div><div class='ctx'> 	fi</div><div class='ctx'> 	$(Q) touch $@</div><div class='ctx'> </div><div class='del'>-probes.@OBJEXT@: $(srcdir)/probes.d probes.stamp</div><div class='add'>+probes.@OBJEXT@: $(srcdir)/probes.d $(DTRACE_REBUILD:yes=probes.stamp)</div><div class='ctx'> 	@$(ECHO) processing probes in object files</div><div class='ctx'> 	$(Q) $(RM) $@</div><div class='ctx'> 	$(Q) $(DTRACE) -G -C $(INCFLAGS) -s $(srcdir)/probes.d -o $@ $(DTRACE_REBUILD_OBJS)</div><div class='hunk'>@@ -418,7 +417,7 @@ clean-ext distclean-ext realclean-ext::</div><div class='ctx'> 	@cd ext 2&gt;/dev/null || exit 0; set dummy `echo "${EXTS}" | tr , ' '`; shift; \</div><div class='ctx'> 	test "$$#" = 0 &amp;&amp; set .; \</div><div class='ctx'> 	set dummy `\</div><div class='del'>-	    find "$$@" -name Makefile -print | sed 's:^\./::;s:/Makefile$$:~:' | sort | sed 's:~$$::'; \</div><div class='add'>+	    find "$$@" -name Makefile -print | sed 's:^\./::;s:/Makefile$$::' | sort; \</div><div class='ctx'> 	`; shift; \</div><div class='ctx'> 	cd ..; \</div><div class='ctx'> 	for dir do \</div><div class='hunk'>@@ -440,7 +439,7 @@ clean-extout:</div><div class='ctx'> clean-enc distclean-enc realclean-enc:</div><div class='ctx'> 	@test -f "$(ENC_MK)" || exit 0; \</div><div class='ctx'> 	echo $(@:-enc=ing) encodings; \</div><div class='del'>-	exec $(MAKE) -f $(ENC_MK) $(MFLAGS) $(@:-enc=)</div><div class='add'>+	exec $(MAKE) $(MAKE_ENC) $(@:-enc=)</div><div class='ctx'> </div><div class='ctx'> ext/extinit.$(OBJEXT): ext/extinit.c $(SETUP)</div><div class='ctx'> 	$(ECHO) compiling $@</div><div class='hunk'>@@ -448,47 +447,87 @@ ext/extinit.$(OBJEXT): ext/extinit.c $(SETUP)</div><div class='ctx'> </div><div class='ctx'> enc/encinit.$(OBJEXT): enc/encinit.c $(SETUP)</div><div class='ctx'> </div><div class='del'>-up::</div><div class='add'>+update-src::</div><div class='ctx'> 	@$(CHDIR) "$(srcdir)" &amp;&amp; LC_TIME=C exec $(VCSUP)</div><div class='ctx'> </div><div class='del'>-after-update:: update-config_files common-srcs</div><div class='add'>+update-download:: update-config_files</div><div class='add'>+</div><div class='add'>+after-update:: common-srcs</div><div class='ctx'> </div><div class='ctx'> update-mspec:</div><div class='ctx'> 	@$(CHDIR) $(srcdir); \</div><div class='ctx'> 	if [ -d spec/mspec ]; then \</div><div class='del'>-	  cd spec/mspec; \</div><div class='ctx'> 	  echo updating mspec ...; \</div><div class='add'>+	  $(Q1:0=:) set -x; \</div><div class='add'>+	  cd spec/mspec &amp;&amp; \</div><div class='ctx'> 	  exec git pull; \</div><div class='ctx'> 	else \</div><div class='ctx'> 	  echo retrieving mspec ...; \</div><div class='add'>+	  $(Q1:0=:) set -x; \</div><div class='ctx'> 	  exec git clone $(MSPEC_GIT_URL) spec/mspec; \</div><div class='ctx'> 	fi</div><div class='add'>+	$(Q)cd $(srcdir)/spec/mspec &amp;&amp; exec git --no-pager log -1 --oneline</div><div class='ctx'> </div><div class='ctx'> update-rubyspec: update-mspec</div><div class='ctx'> 	@$(CHDIR) $(srcdir); \</div><div class='ctx'> 	if [ -d spec/rubyspec ]; then \</div><div class='del'>-	  cd spec/rubyspec; \</div><div class='ctx'> 	  echo updating rubyspec ...; \</div><div class='add'>+	  $(Q1:0=:) set -x; \</div><div class='add'>+	  cd spec/rubyspec &amp;&amp; \</div><div class='ctx'> 	  exec git pull; \</div><div class='ctx'> 	else \</div><div class='ctx'> 	  echo retrieving rubyspec ...; \</div><div class='add'>+	  $(Q1:0=:) set -x; \</div><div class='ctx'> 	  exec git clone $(RUBYSPEC_GIT_URL) spec/rubyspec; \</div><div class='ctx'> 	fi</div><div class='add'>+	$(Q)cd $(srcdir)/spec/rubyspec &amp;&amp; exec git --no-pager log -1 --oneline</div><div class='ctx'> </div><div class='ctx'> test-rubyspec-precheck:</div><div class='ctx'> 	@if [ ! -d $(srcdir)/spec/rubyspec ]; then echo No rubyspec here.  make update-rubyspec first.; exit 1; fi</div><div class='ctx'> </div><div class='del'>-update-coverage:</div><div class='add'>+update-doclie:</div><div class='add'>+	@$(CHDIR) $(srcdir); \</div><div class='add'>+	if [ -d coverage/doclie ]; then \</div><div class='add'>+	  echo updating doclie ...; \</div><div class='add'>+	  $(Q1:0=:) set -x; \</div><div class='add'>+	  cd coverage/doclie &amp;&amp; \</div><div class='add'>+	  git fetch &amp;&amp; \</div><div class='add'>+	  exec git checkout $(DOCLIE_GIT_REF); \</div><div class='add'>+	else \</div><div class='add'>+	  echo retrieving doclie ...; \</div><div class='add'>+	  $(Q1:0=:) set -x; \</div><div class='add'>+	  exec git clone --branch $(DOCLIE_GIT_REF) $(DOCLIE_GIT_URL) coverage/doclie; \</div><div class='add'>+	fi</div><div class='add'>+</div><div class='add'>+update-simplecov-html:</div><div class='add'>+	@$(CHDIR) $(srcdir); \</div><div class='add'>+	if [ -d coverage/simplecov-html ]; then \</div><div class='add'>+	  echo updating simplecov-html ...; \</div><div class='add'>+	  $(Q1:0=:) set -x; \</div><div class='add'>+	  cd coverage/simplecov-html &amp;&amp; \</div><div class='add'>+	  git fetch &amp;&amp; \</div><div class='add'>+	  exec git checkout $(SIMPLECOV_HTML_GIT_REF); \</div><div class='add'>+	else \</div><div class='add'>+	  echo retrieving simplecov-html ...; \</div><div class='add'>+	  exec git clone --branch $(SIMPLECOV_HTML_GIT_REF) $(SIMPLECOV_HTML_GIT_URL) coverage/simplecov-html; \</div><div class='add'>+	fi</div><div class='add'>+</div><div class='add'>+update-simplecov:</div><div class='ctx'> 	@$(CHDIR) $(srcdir); \</div><div class='ctx'> 	if [ -d coverage/simplecov ]; then \</div><div class='del'>-	  cd coverage/simplecov; \</div><div class='ctx'> 	  echo updating simplecov ...; \</div><div class='del'>-	  exec git pull; \</div><div class='add'>+	  $(Q1:0=:) set -x; \</div><div class='add'>+	  cd coverage/simplecov &amp;&amp; \</div><div class='add'>+	  git fetch &amp;&amp; \</div><div class='add'>+	  exec git checkout $(SIMPLECOV_GIT_REF); \</div><div class='ctx'> 	else \</div><div class='ctx'> 	  echo retrieving simplecov ...; \</div><div class='del'>-	  exec git clone $(SIMPLECOV_GIT_URL) coverage/simplecov; \</div><div class='add'>+	  $(Q1:0=:) set -x; \</div><div class='add'>+	  exec git clone --branch $(SIMPLECOV_GIT_REF) $(SIMPLECOV_GIT_URL) coverage/simplecov; \</div><div class='ctx'> 	fi</div><div class='ctx'> </div><div class='add'>+update-coverage: update-simplecov update-simplecov-html update-doclie</div><div class='add'>+</div><div class='ctx'> INSNS	= opt_sc.inc optinsn.inc optunifs.inc insns.inc insns_info.inc \</div><div class='ctx'> 	  vmtc.inc vm.inc</div><div class='ctx'> </div><div class='hunk'>@@ -504,3 +543,7 @@ loadpath: verconf.h</div><div class='ctx'> 	@$(CPP) $(XCFLAGS) $(CPPFLAGS) $(srcdir)/loadpath.c | \</div><div class='ctx'> 	sed -e '1,/^const char ruby_initial_load_paths/d;/;/,$$d' \</div><div class='ctx'> 	    -e '/^ /!d;s/ *"\\0"$$//;s/" *"//g'</div><div class='add'>+</div><div class='add'>+un-runnable:</div><div class='add'>+	$(ECHO) cannot make runnable, configure with --enable-load-relative.</div><div class='add'>+	$(Q) exit 1</div><div class='head'>diff --git a/NEWS b/NEWS<br/>index b4ef080249..986db329b3 100644<br/>--- a/<a href='/ruby.git/tree/NEWS?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>NEWS</a><br/>+++ b/<a href='/ruby.git/tree/NEWS?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>NEWS</a></div><div class='hunk'>@@ -1,356 +1,211 @@</div><div class='ctx'> # -*- rdoc -*-</div><div class='ctx'> </div><div class='del'>-= NEWS for Ruby 2.2.0</div><div class='add'>+= NEWS for Ruby 2.4.0</div><div class='ctx'> </div><div class='ctx'> This document is a list of user visible feature changes made between</div><div class='ctx'> releases except for bug fixes.</div><div class='ctx'> </div><div class='ctx'> Note that each entry is kept so brief that no reason behind or</div><div class='ctx'> reference information is supplied with.  For a full list of changes</div><div class='del'>-with all sufficient information, see the ChangeLog file.</div><div class='add'>+with all sufficient information, see the ChangeLog file or Redmine</div><div class='add'>+(e.g. &lt;tt&gt;https://bugs.ruby-lang.org/issues/$FEATURE_OR_BUG_NUMBER&lt;/tt&gt;)</div><div class='ctx'> </div><div class='del'>-== Changes since the 2.1.0 release</div><div class='add'>+== Changes since the 2.3.0 release</div><div class='ctx'> </div><div class='ctx'> === Language changes</div><div class='ctx'> </div><div class='del'>-* nil/true/false</div><div class='del'>-  * nil/true/false objects are frozen. [Feature #8923]</div><div class='add'>+* Multiple assignment in conditional expression is now allowed.</div><div class='add'>+  [Feature #10617]</div><div class='ctx'> </div><div class='del'>-* Hash literal</div><div class='del'>-  * Symbol key followed by a colon can be quoted. [Feature #4276]</div><div class='add'>+=== Core classes updates (outstanding ones only)</div><div class='ctx'> </div><div class='del'>-* default argument</div><div class='del'>-  fixed a very longstanding bug that an optional argument was not</div><div class='del'>-  accessible in its default value expression.  [Bug #9593]</div><div class='add'>+* Array</div><div class='ctx'> </div><div class='del'>-=== Core classes updates (outstanding ones only)</div><div class='add'>+  * Array#max and Array#min.  [Feature #12172]</div><div class='add'>+    This may cause a tiny incompatibility: if you redefine</div><div class='add'>+    Enumerable#max and call max to an Array, your redefinition will be</div><div class='add'>+    now ignored.  You should also redefine Array#max.</div><div class='add'>+</div><div class='add'>+  * Array#sum  [Feature #12217]</div><div class='add'>+    This is different from Enumerable#sum in that Array#sum doesn't depend on</div><div class='add'>+    the definition of each method.</div><div class='ctx'> </div><div class='del'>-* Binding</div><div class='del'>-  * New methods:</div><div class='del'>-    * Binding#local_variables</div><div class='del'>-    * Binding#receiver</div><div class='add'>+* Comparable</div><div class='add'>+</div><div class='add'>+  * Comparable#clamp.  [Feature #10594]</div><div class='ctx'> </div><div class='ctx'> * Dir</div><div class='del'>-  * New methods:</div><div class='del'>-    * Dir#fileno</div><div class='add'>+</div><div class='add'>+  * Dir.empty?.  [Feature #10121]</div><div class='ctx'> </div><div class='ctx'> * Enumerable</div><div class='del'>-  * New methods:</div><div class='del'>-    * Enumerable#slice_after</div><div class='del'>-    * Enumerable#slice_when</div><div class='del'>-  * Extended methods:</div><div class='del'>-    * min, min_by, max and max_by supports optional argument to return</div><div class='del'>-      multiple elements.</div><div class='ctx'> </div><div class='del'>-* Float</div><div class='del'>-  * New methods:</div><div class='del'>-    * Float#next_float</div><div class='del'>-    * Float#prev_float</div><div class='add'>+  * Enumerable#sum  [Feature #12217]</div><div class='add'>+  * Enumerable#uniq  [Feature #11090]</div><div class='add'>+</div><div class='add'>+* Enumerator::Lazy</div><div class='add'>+</div><div class='add'>+  * Enumerator::Lazy#uniq  [Feature #11090]</div><div class='ctx'> </div><div class='ctx'> * File</div><div class='del'>-  * New methods:</div><div class='del'>-    * File.birthtime</div><div class='del'>-    * File#birthtime</div><div class='ctx'> </div><div class='del'>-* File::Stat</div><div class='del'>-  * New methods:</div><div class='del'>-    * File::Stat#birthtime</div><div class='add'>+  * File.empty?.  [Feature #9969]</div><div class='ctx'> </div><div class='del'>-* GC</div><div class='del'>-  * GC.latest_gc_info returns :state to represent current GC status.</div><div class='del'>-  * Improvements</div><div class='del'>-    * Introduce incremental marking for major GC. [Feature #10137]</div><div class='add'>+* Float</div><div class='ctx'> </div><div class='del'>-* IO</div><div class='del'>-  * Improvements</div><div class='del'>-    * IO#nonblock_read and IO#nonblock_write for pipes on Windows are supported.</div><div class='add'>+  * Float#ceil, Float#floor, and Float#truncate now take an optional</div><div class='add'>+    digits, as well as Float#round.  [Feature #12245]</div><div class='add'>+</div><div class='add'>+* Hash</div><div class='add'>+</div><div class='add'>+  * Hash#transform_values and Hash#transform_values!  [Feature #12512]</div><div class='add'>+</div><div class='add'>+* Integer</div><div class='add'>+</div><div class='add'>+  * Integer#ceil, Integer#floor, and Integer#truncate now take an optional</div><div class='add'>+    digits, as well as Integer#round.  [Feature #12245]</div><div class='add'>+</div><div class='add'>+  * Fixnum and Bignum are unified into Integer  [Feature #12005]</div><div class='add'>+</div><div class='add'>+  * Integer#digits for extracting columns of place-value notation [Feature #12447]</div><div class='ctx'> </div><div class='ctx'> * Kernel</div><div class='del'>-  * New methods:</div><div class='del'>-    * Kernel#itself</div><div class='del'>-  * Improvements</div><div class='del'>-    * Kernel#throw raises UncaughtThrowError, subclass of ArgumentError when</div><div class='del'>-      there is no corresponding catch block, instead of ArgumentError.</div><div class='ctx'> </div><div class='del'>-* Process</div><div class='del'>-  * Extended method:</div><div class='del'>-    * Process execution methods such as Process.spawn opens the file in write</div><div class='del'>-      mode for redirect from [:out, :err].</div><div class='add'>+  * Kernel#clone now takes an optional keyword argument, freeze flag.</div><div class='add'>+    [Feature #12300]</div><div class='add'>+</div><div class='add'>+* MatchData</div><div class='add'>+</div><div class='add'>+  * MatchData#named_captures [Feature #11999]</div><div class='add'>+  * MatchData#values_at supports named captures [Feature #9179]</div><div class='add'>+</div><div class='add'>+* Regexp</div><div class='add'>+</div><div class='add'>+  * Regexp#match? [Feature #8110]</div><div class='add'>+    This returns bool and doesn't save backref.</div><div class='add'>+</div><div class='add'>+* Regexp/String: Updated Unicode version from 8.0.0 to 9.0.0 [Feature #12513]</div><div class='add'>+</div><div class='add'>+* RubyVM::Env</div><div class='add'>+</div><div class='add'>+  * RubyVM::Env was removed.</div><div class='ctx'> </div><div class='ctx'> * String</div><div class='del'>-  * New methods:</div><div class='del'>-    * String#unicode_normalize</div><div class='del'>-    * String#unicode_normalize!</div><div class='del'>-    * String#unicode_normalized?</div><div class='add'>+</div><div class='add'>+  * String#upcase, String#downcase, String#capitalize, String#swapcase and</div><div class='add'>+    their bang variants work for all of Unicode, and are no longer limited</div><div class='add'>+    to ASCII. Supported encodings are UTF-8, UTF-16BE/LE, UTF-32BE/LE, and</div><div class='add'>+    ISO-8859-1~16. Variations are available with options. See the documentation</div><div class='add'>+    of String#downcase for details. [Feature #10085]</div><div class='add'>+</div><div class='add'>+  * String.new(capacity: size) [Feature #12024]</div><div class='ctx'> </div><div class='ctx'> * Symbol</div><div class='del'>-  * Improvements</div><div class='del'>-    * Most symbols which are returned by String#to_sym and</div><div class='del'>-      String#intern are GC-able.</div><div class='ctx'> </div><div class='del'>-* Method</div><div class='del'>-  * New methods:</div><div class='del'>-    * Method#curry([arity]) returns a curried Proc.</div><div class='del'>-    * Method#super_method returns a Method of superclass, which would be called</div><div class='del'>-      when super is used.</div><div class='add'>+  * Symbol#match now returns MatchData.  [Bug #11991]</div><div class='ctx'> </div><div class='del'>-=== Core classes compatibility issues (excluding feature bug fixes)</div><div class='add'>+  * Symbol#upcase, Symbol#downcase, Symbol#capitalize, and Symbol#swapcase now</div><div class='add'>+    work for all of Unicode. See the documentation of String#downcase</div><div class='add'>+    for details. [Feature #10085]</div><div class='ctx'> </div><div class='del'>-* Enumerable</div><div class='del'>-  * Enumerable#slice_before's state management deprecated.</div><div class='del'>-  * Enumerable#chunk's state management deprecated.</div><div class='del'>-</div><div class='del'>-* GC</div><div class='del'>-  * incompatible changes:</div><div class='del'>-    * Rename GC.stat entries. [Feature #9924]</div><div class='del'>-      See https://docs.google.com/spreadsheets/d/11Ua4uBr6o0k-nORrZLEIIUkHJ9JRzRR0NyZfrhEEnc8/edit?usp=sharing</div><div class='del'>-</div><div class='del'>-* IO</div><div class='del'>-  * incompatible changes:</div><div class='del'>-    * When flushing file IO with IO#flush, you cannot assume that the metadata</div><div class='del'>-      of the file is updated immediately.  On some platforms (especially</div><div class='del'>-      Windows), it is delayed until the filesystem load is decreased.</div><div class='del'>-      Use IO#fsync if you want to guarantee updating metadata.</div><div class='del'>-</div><div class='del'>-* Math</div><div class='del'>-  * incompatible changes:</div><div class='del'>-    * Math.log now raises Math::DomainError instead of returning NaN if the</div><div class='del'>-      base is less than 0, and returns NaN instead of -infinity if both of</div><div class='del'>-      two arguments are 0.</div><div class='del'>-    * Math.atan2 now returns values like as expected by C99 if both two</div><div class='del'>-      arguments are infinity.</div><div class='del'>-</div><div class='del'>-* Proc</div><div class='del'>-  * incompatible changes:</div><div class='del'>-    * ArgumentError is no longer raised when lambda Proc is passed as a</div><div class='del'>-      block, and the number of yielded arguments does not match the formal</div><div class='del'>-      arguments of the lambda, if just an array is yielded and its length</div><div class='del'>-      matches.</div><div class='del'>-</div><div class='del'>-* Process</div><div class='del'>-  * Process execution methods such as Process.spawn opens the file in write</div><div class='del'>-    mode for redirect from [:out, :err].</div><div class='del'>-    Before Ruby 2.2, it was opened in read mode.</div><div class='add'>+* Thread</div><div class='ctx'> </div><div class='del'>-=== Stdlib updates (outstanding ones only)</div><div class='add'>+  * Thread#report_on_exception and Thread.report_on_exception</div><div class='add'>+    [Feature #6647]</div><div class='ctx'> </div><div class='del'>-* Continuation</div><div class='del'>-  * callcc is obsolete. use Fiber instead.</div><div class='del'>-</div><div class='del'>-* Digest</div><div class='del'>-</div><div class='del'>-  * Digest() should now be thread-safe.  If you have a problem with</div><div class='del'>-    regard to on-demand loading under a multi-threaded environment,</div><div class='del'>-    preload "digest/*" modules on boot or use this method instead of</div><div class='del'>-    directly referencing Digest::*.</div><div class='del'>-  * Digest::HMAC has been removed just as previously noticed.</div><div class='del'>-</div><div class='del'>-* DL</div><div class='del'>-  * DL has been removed from stdlib. Please use Fiddle instead!</div><div class='del'>-</div><div class='del'>-* Etc</div><div class='del'>-  * New methods:</div><div class='del'>-    * Etc.uname</div><div class='del'>-    * Etc.sysconf</div><div class='del'>-    * Etc.confstr</div><div class='del'>-    * IO#pathconf</div><div class='del'>-    * Etc.nprocessors</div><div class='del'>-</div><div class='del'>-* Find, Pathname</div><div class='del'>-  * Extended methods:</div><div class='del'>-    * find method accepts "ignore_error" keyword argument.</div><div class='del'>-</div><div class='del'>-* Matrix</div><div class='del'>-  * New methods:</div><div class='del'>-    * Matrix#first_minor(row, column) returns the submatrix obtained</div><div class='del'>-      by deleting the specified row and column.</div><div class='del'>-    * Matrix#cofactor(row, column) returns the (row, column) cofactor</div><div class='del'>-      which is obtained by multiplying the first minor by (-1)**(row + column).</div><div class='del'>-    * Matrix#adjugate returns the adjugate of the matrix.</div><div class='del'>-    * hstack and vstack are new instance and class methods to stack matrices</div><div class='del'>-      horizontally and vertically.</div><div class='del'>-    * Matrix#laplace_expansion(row_or_column: num) returns the laplace_expansion</div><div class='del'>-      along the +num+ -th row or column.</div><div class='del'>-    * Vector.basis(size:, index:) returns the specified basis vector.</div><div class='del'>-    * Unary - and + added for Vector and Matrix.</div><div class='del'>-    * Vector#cross_product generalized to arbitrary dimensions.</div><div class='del'>-    * Vector#dot and #cross are aliases for #inner_product and #cross_product.</div><div class='del'>-    * Vector#angle_with returns the angle with its argument</div><div class='del'>-    * New instance and class method independent? to test linear independence.</div><div class='del'>-</div><div class='del'>-* Pathname</div><div class='del'>-  * Pathname#/ is aliased to Pathname#+.</div><div class='del'>-  * New methods:</div><div class='del'>-    * Pathname#birthtime</div><div class='del'>-</div><div class='del'>-* Rake</div><div class='del'>-  * Updated to Rake 10.4.0.  For full release notes see:</div><div class='del'>-</div><div class='del'>-    http://docs.seattlerb.org/rake/History_rdoc.html#label-10.4.0</div><div class='del'>-</div><div class='del'>-* RubyGems</div><div class='del'>-  * Updated to RubyGems 2.4.2.  For full release notes see:</div><div class='del'>-</div><div class='del'>-    http://docs.seattlerb.org/rubygems/History_txt.html#label-2.4.2+%2F+2014-10-01</div><div class='del'>-</div><div class='del'>-* TSort</div><div class='del'>-  * TSort.tsort_each, TSort.each_strongly_connected_component and</div><div class='del'>-    TSort.each_strongly_connected_component_from returns an enumerator if</div><div class='del'>-    no block given.</div><div class='del'>-</div><div class='del'>-* XMLRPC</div><div class='del'>-  * Added new parser class named LibXMLStreamParser.</div><div class='add'>+=== Stdlib updates (outstanding ones only)</div><div class='ctx'> </div><div class='del'>-=== Stdlib compatibility issues (excluding feature bug fixes)</div><div class='add'>+* CSV</div><div class='ctx'> </div><div class='del'>-* lib/mathn.rb</div><div class='del'>-  * Show deprecated warning [Feature #10169]</div><div class='add'>+  * Add a liberal_parsing option. [Feature #11839]</div><div class='ctx'> </div><div class='del'>-* ext/date/lib/date/format.rb</div><div class='del'>-  * Removed because it's empty file.</div><div class='add'>+* Logger</div><div class='ctx'> </div><div class='del'>-* Digest</div><div class='del'>-  * Digest::HMAC has finally ceased to exist.  Use OpenSSL::HMAC or an external gem instead.</div><div class='add'>+	* Allow specifying logger parameters in constructor such</div><div class='add'>+	  as level, progname, datetime_format, formatter. [Feature #12224]</div><div class='add'>+	* Add shift_period_suffix option. [Feature #10772]</div><div class='add'>+</div><div class='add'>+* OpenSSL</div><div class='add'>+</div><div class='add'>+  * OpenSSL is extracted as a gem and the upstream has been migrated to</div><div class='add'>+    https://github.com/ruby/openssl. OpenSSL still remains as a default gem.</div><div class='add'>+    Refer to its History.md for the full release note. [Feature #9612]</div><div class='add'>+</div><div class='add'>+* optparse</div><div class='add'>+</div><div class='add'>+  * Add an into option. [Feature #11191]</div><div class='add'>+</div><div class='add'>+=== Compatibility issues (excluding feature bug fixes)</div><div class='add'>+</div><div class='add'>+* Array#sum and Enumerable#sum are implemented.  [Feature #12217]</div><div class='add'>+  Ruby itself has no compatibility problem because Ruby didn't have sum method</div><div class='add'>+  for arrays before Ruby 2.4.</div><div class='add'>+  However many third party gems, activesupport, facets, simple_stats, etc,</div><div class='add'>+  defines sum method.  These implementations are mostly compatible but</div><div class='add'>+  there are subtle differences.</div><div class='add'>+  Ruby's sum method should be mostly compatible but it is impossible to</div><div class='add'>+  be perfectly compatible with all of them.</div><div class='add'>+</div><div class='add'>+* Fixnum and Bignum are unified into Integer  [Feature #12005]</div><div class='add'>+  Fixnum class and Bignum class is removed.</div><div class='add'>+  Integer class is changed from abstract class to concrete class.</div><div class='add'>+  For example, 0 is an instance of Integer: 0.class returns Integer.</div><div class='add'>+  The constants Fixnum and Bignum is bound to Integer.</div><div class='add'>+  So obj.kind_of?(Fixnum) works as obj.kind_of?(Integer).</div><div class='add'>+  At C-level, Fixnum object and Bignum object should be distinguished by</div><div class='add'>+  FIXNUM_P(obj) and RB_TYPE_P(obj, T_BIGNUM).</div><div class='add'>+  RUBY_INTEGER_UNIFICATION can be used to detect this feature.</div><div class='add'>+  ruby-2.4.0-preview1 (temporally) removes rb_cFixnum and rb_cBignum</div><div class='add'>+  to check the effect of incompatibility.</div><div class='add'>+  (rb_cFixnum and rb_cBignum may be defined as rb_cInteger later if</div><div class='add'>+  compilation failure of extension library is too big problem.)</div><div class='add'>+</div><div class='add'>+* String/Symbol#upcase/downcase/swapcase/capitalize(!) now work for all of</div><div class='add'>+  Unicode, not only for ASCII. [Feature #10085]</div><div class='add'>+  No change is needed if the data is in ASCII anyway or if the limitation</div><div class='add'>+  to ASCII was only tolerated while waiting for a more extensive implementation.</div><div class='add'>+  A change (using the :ascii option) is needed in cases where Unicode data</div><div class='add'>+  is processed, but the operation has to be limited to ASCII only.</div><div class='add'>+  A good example of this are internationalized domain names.</div><div class='ctx'> </div><div class='del'>-* time.rb</div><div class='del'>-  * Time.parse, Time.strptime, Time.rfc2822, Time.xmlschema may produce</div><div class='del'>-    fixed-offset Time objects.</div><div class='del'>-    It is happen when usual localtime doesn't preserve the offset from UTC.</div><div class='del'>-  * Time.httpdate produces always UTC Time object.</div><div class='del'>-  * Time.strptime raises ArgumentError when no date information.</div><div class='add'>+=== Stdlib compatibility issues (excluding feature bug fixes)</div><div class='ctx'> </div><div class='del'>-* lib/rational.rb</div><div class='del'>-  * Removed because it is deprecated from 2009.</div><div class='add'>+* DateTime</div><div class='ctx'> </div><div class='del'>-* lib/complex.rb</div><div class='del'>-  * Removed because it is deprecated from 2009.</div><div class='add'>+  * DateTime#to_time now preserves timezone.  [Bug #12189]</div><div class='ctx'> </div><div class='del'>-* lib/prettyprint.rb</div><div class='del'>-  * Removed PrettyPrint#first?</div><div class='add'>+* Time</div><div class='ctx'> </div><div class='del'>-* lib/minitest/*.rb</div><div class='del'>-  * Removed because it conflicts to minitest 5. [Feature #9711]</div><div class='add'>+  * Time#to_time now preserves timezone.  [Bug #12271]</div><div class='ctx'> </div><div class='del'>-* lib/test/**/*.rb</div><div class='del'>-  * Removed because it conflicts to minitest 5, and it was just an wrapper</div><div class='del'>-    of minitest 4. [Feature #9711]</div><div class='add'>+* thread</div><div class='ctx'> </div><div class='del'>-* lib/uri</div><div class='del'>-  * support RFC 3986. [Feature #2542]</div><div class='add'>+  * the extension library is removed.  Till 2.0 it was a pure ruby script</div><div class='add'>+    "thread.rb", which has precedence over "thread.so", and has been provided</div><div class='add'>+    in $LOADED_FEATURES since 2.1.</div><div class='ctx'> </div><div class='del'>-* GServer</div><div class='del'>-  * GServer is extracted to gserver gem. It's unmaintain code.</div><div class='add'>+* Tk</div><div class='add'>+  * Tk is removed from stdlib.  [Feature #8539]</div><div class='add'>+    https://github.com/ruby/tk is the new upstream.</div><div class='ctx'> </div><div class='del'>-* Logger</div><div class='del'>-  * Logger::Application is extracted to logger-application gem. It's unmaintain code.</div><div class='add'>+=== C API updates</div><div class='ctx'> </div><div class='del'>-* ObjectSpace (after requiring "objspace")</div><div class='del'>-  * ObjectSpace.memsize_of(obj) returns a size includes sizeof(RVALUE).</div><div class='del'>-    [Bug #8984]</div><div class='add'>+* ruby_show_version() will no longer exits the process, if</div><div class='add'>+  RUBY_SHOW_COPYRIGHT_TO_DIE is set to 0.  This will be the default in</div><div class='add'>+  the future.</div><div class='ctx'> </div><div class='del'>-* Prime</div><div class='del'>-  * incompatible changes:</div><div class='del'>-    * Prime.prime? now returns false for negative numbers. This method</div><div class='del'>-      should not be used to know the number is composite or not. [Bug #7395]</div><div class='add'>+=== Supported platform changes</div><div class='ctx'> </div><div class='del'>-* Psych</div><div class='del'>-  * Removed Psych::EngineManager [Bug #8344]</div><div class='add'>+* FreeBSD &lt; 4 is no longer supported</div><div class='ctx'> </div><div class='del'>-=== Built-in global variables compatibility issues</div><div class='add'>+=== Implementation improvements</div><div class='ctx'> </div><div class='del'>-=== C API updates</div><div class='add'>+* In some condition, `[x, y].max` and `[x, y].min` are optimized</div><div class='add'>+  so that a temporal array is not created.  The concrete condition is</div><div class='add'>+  an implementation detail: currently, the array literal must have no</div><div class='add'>+  splat, must have at least one expression but literal, the length must</div><div class='add'>+  be &lt;= 0x100, and Array#max and min must not be redefined.  It will work</div><div class='add'>+  in most casual and real-life use case where it is written with intent</div><div class='add'>+  to `Math.max(x, y)`.</div><div class='ctx'> </div><div class='del'>-* Deprecated APIs removed.  [Feature #9502]</div><div class='del'>-</div><div class='del'>-  Check_SafeStr -&gt; SafeStringValue</div><div class='del'>-  rb_check_safe_str -&gt; SafeStringValue</div><div class='del'>-  rb_quad_pack -&gt; rb_integer_pack</div><div class='del'>-  rb_quad_unpack -&gt; rb_integer_unpack</div><div class='del'>-  rb_read_check : access struct FILE internal. no replacement.</div><div class='del'>-  rb_struct_iv_get : internal function. no replacement.</div><div class='del'>-  struct rb_blocking_region_buffer : internal type. no replacement.</div><div class='del'>-  rb_thread_blocking_region_begin -&gt; rb_thread_call_without_gvl family</div><div class='del'>-  rb_thread_blocking_region_end -&gt; rb_thread_call_without_gvl family</div><div class='del'>-  TRAP_BEG -&gt; rb_thread_call_without_gvl family</div><div class='del'>-  TRAP_END -&gt; rb_thread_call_without_gvl family</div><div class='del'>-  rb_thread_select -&gt; rb_thread_fd_select</div><div class='del'>-  struct rb_exec_arg : internal type. no replacement.</div><div class='del'>-  rb_exec : internal function. no replacement.</div><div class='del'>-  rb_exec_arg_addopt : internal function. no replacement.</div><div class='del'>-  rb_exec_arg_fixup : internal function. no replacement.</div><div class='del'>-  rb_exec_arg_init : internal function. no replacement.</div><div class='del'>-  rb_exec_err : internal function. no replacement.</div><div class='del'>-  rb_fork : internal function. no replacement.</div><div class='del'>-  rb_fork_err : internal function. no replacement.</div><div class='del'>-  rb_proc_exec_n : internal function. no replacement.</div><div class='del'>-  rb_run_exec_options : internal function. no replacement.</div><div class='del'>-  rb_run_exec_options_err : internal function. no replacement.</div><div class='del'>-  rb_thread_blocking_region -&gt; rb_thread_call_without_gvl family</div><div class='del'>-  rb_thread_polling -&gt; rb_thread_wait_for</div><div class='del'>-  rb_big2str0 : internal function. no replacement.</div><div class='del'>-  rb_big2ulong_pack -&gt; rb_integer_pack</div><div class='del'>-  rb_gc_set_params : internal function. no replacement.</div><div class='del'>-  rb_io_mode_flags -&gt; rb_io_modestr_fmode</div><div class='del'>-  rb_io_modenum_flags -&gt; rb_io_oflags_fmode</div><div class='del'>-</div><div class='del'>-* struct RBignum is hidden.  [Feature #6083]</div><div class='del'>-  Use rb_integer_pack and rb_integer_unpack instead.</div><div class='del'>-</div><div class='del'>-* struct RRational is hidden.  [Feature #9513]</div><div class='del'>-  Use rb_rational_num and rb_rational_den instead.</div><div class='del'>-</div><div class='del'>-* rb_big_new and rb_big_resize takes a size_t instead of long.</div><div class='del'>-</div><div class='del'>-* rb_num2long returns a long instead of SIGNED_VALUE.</div><div class='del'>-</div><div class='del'>-* rb_num2ulong returns an unsigned long instead of VALUE.</div><div class='del'>-</div><div class='del'>-* st hash table uses power-of-two sizes for speed [Feature #9425].</div><div class='del'>-  Lookups are 10-25% faster if using appropriate hash functions.</div><div class='del'>-  However, weaknesses in hash distribution can no longer be masked</div><div class='del'>-  by prime number-sized tables, so extensions may need to tweak</div><div class='del'>-  hash functions to ensure good distribution.</div><div class='del'>-</div><div class='del'>-* rb_sym2str() added. This is almost same as `rb_id2str(SYM2ID(sym))`</div><div class='del'>-  but not pinning a dynamic symbol.</div><div class='del'>-</div><div class='del'>-* rb_str_cat_cstr() added. This is same as `rb_str_cat2()`.</div><div class='del'>-</div><div class='del'>-* `rb_str_substr()` and `rb_str_subseq()` will share middle of a string,</div><div class='del'>-  but not only the end of a string, in the future.  Therefore, result</div><div class='del'>-  strings may not be NUL-terminated, `StringValueCStr()` is needed</div><div class='del'>-  calling to obtain a NUL-terminated C string.</div><div class='del'>-</div><div class='del'>-* rb_tracepoint_new() supports new internal events accessible only from C:</div><div class='del'>-  * RUBY_INTERNAL_EVENT_GC_ENTER</div><div class='del'>-  * RUBY_INTERNAL_EVENT_GC_EXIT</div><div class='del'>-    r47528</div><div class='del'>-</div><div class='del'>-* rb_hash_delete() now does not call the block given to the current method.</div><div class='del'>-</div><div class='del'>-* rb_extract_keywords() and rb_get_kwargs() exported.  See README.EXT</div><div class='del'>-  for details.</div><div class='del'>-</div><div class='del'>-=== Build system updates</div><div class='del'>-</div><div class='del'>-* jemalloc is optionally supported via `./configure --with-jemalloc`</div><div class='del'>-  jemalloc may be suitable when system malloc is slow or prone</div><div class='del'>-  to fragmentation.  [Feature #9113]</div><div class='del'>-</div><div class='del'>-=== Implementation changes</div><div class='del'>-</div><div class='del'>-* GC</div><div class='del'>-    * Most symbols which are returned by String#to_sym and</div><div class='del'>-      String#intern are GC-able [Feature #9634]</div><div class='del'>-    * Introduce incremental marking for major GC. [Feature #10137]</div><div class='del'>-    * Enable lazy sweep on GC caused by malloc().</div><div class='del'>-</div><div class='del'>-* VM</div><div class='del'>-    * Use frozen string literals for Hash#[] and Hash#[]=</div><div class='del'>-    * Fast keyword arguments passing [Feature #10440]</div><div class='del'>-    * Allow to receive huge splatted array by a rest argument</div><div class='del'>-      [Feature #10440]</div><div class='del'>-</div><div class='del'>-* Process</div><div class='del'>-    * Process creation methods, such as spawn(), uses vfork() system call.</div><div class='del'>-      vfork() is faster than fork() when the parent process uses huge memory.</div><div class='add'>+* Thread deadlock detection now shows their backtrace and dependency. [Feature #8214]</div><div class='head'>diff --git a/README.EXT b/README.EXT<br/>index f24029c826..48b8d964c4 100644<br/>--- a/<a href='/ruby.git/tree/README.EXT?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>README.EXT</a><br/>+++ b/<a href='/ruby.git/tree/README.EXT?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>README.EXT</a></div><div class='hunk'>@@ -1,1730 +1 @@</div><div class='del'>-# README.EXT -  -*- RDoc -*- created at: Mon Aug  7 16:45:54 JST 1995</div><div class='del'>-</div><div class='del'>-This document explains how to make extension libraries for Ruby.</div><div class='del'>-</div><div class='del'>-= Basic Knowledge</div><div class='del'>-</div><div class='del'>-In C, variables have types and data do not have types.  In contrast,</div><div class='del'>-Ruby variables do not have a static type, and data themselves have</div><div class='del'>-types, so data will need to be converted between the languages.</div><div class='del'>-</div><div class='del'>-Data in Ruby are represented by the C type `VALUE'.  Each VALUE data</div><div class='del'>-has its data-type.</div><div class='del'>-</div><div class='del'>-To retrieve C data from a VALUE, you need to:</div><div class='del'>-</div><div class='del'>-1. Identify the VALUE's data type</div><div class='del'>-2. Convert the VALUE into C data</div><div class='del'>-</div><div class='del'>-Converting to the wrong data type may cause serious problems.</div><div class='del'>-</div><div class='del'>-== Data-Types</div><div class='del'>-</div><div class='del'>-The Ruby interpreter has the following data types:</div><div class='del'>-</div><div class='del'>-T_NIL       :: nil</div><div class='del'>-T_OBJECT    :: ordinary object</div><div class='del'>-T_CLASS     :: class</div><div class='del'>-T_MODULE    :: module</div><div class='del'>-T_FLOAT     :: floating point number</div><div class='del'>-T_STRING    :: string</div><div class='del'>-T_REGEXP    :: regular expression</div><div class='del'>-T_ARRAY     :: array</div><div class='del'>-T_HASH      :: associative array</div><div class='del'>-T_STRUCT    :: (Ruby) structure</div><div class='del'>-T_BIGNUM    :: multi precision integer</div><div class='del'>-T_FIXNUM    :: Fixnum(31bit or 63bit integer)</div><div class='del'>-T_COMPLEX   :: complex number</div><div class='del'>-T_RATIONAL  :: rational number</div><div class='del'>-T_FILE      :: IO</div><div class='del'>-T_TRUE      :: true</div><div class='del'>-T_FALSE     :: false</div><div class='del'>-T_DATA      :: data</div><div class='del'>-T_SYMBOL    :: symbol</div><div class='del'>-</div><div class='del'>-In addition, there are several other types used internally:</div><div class='del'>-</div><div class='del'>-T_ICLASS    :: included module</div><div class='del'>-T_MATCH     :: MatchData object</div><div class='del'>-T_UNDEF     :: undefined</div><div class='del'>-T_NODE      :: syntax tree node</div><div class='del'>-T_ZOMBIE    :: object awaiting finalization</div><div class='del'>-</div><div class='del'>-Most of the types are represented by C structures.</div><div class='del'>-</div><div class='del'>-== Check Data Type of the VALUE</div><div class='del'>-</div><div class='del'>-The macro TYPE() defined in ruby.h shows the data type of the VALUE.</div><div class='del'>-TYPE() returns the constant number T_XXXX described above.  To handle</div><div class='del'>-data types, your code will look something like this:</div><div class='del'>-</div><div class='del'>-  switch (TYPE(obj)) {</div><div class='del'>-    case T_FIXNUM:</div><div class='del'>-      /* process Fixnum */</div><div class='del'>-      break;</div><div class='del'>-    case T_STRING:</div><div class='del'>-      /* process String */</div><div class='del'>-      break;</div><div class='del'>-    case T_ARRAY:</div><div class='del'>-      /* process Array */</div><div class='del'>-      break;</div><div class='del'>-    default:</div><div class='del'>-      /* raise exception */</div><div class='del'>-      rb_raise(rb_eTypeError, "not valid value");</div><div class='del'>-      break;</div><div class='del'>-  }</div><div class='del'>-</div><div class='del'>-There is the data-type check function</div><div class='del'>-</div><div class='del'>-  void Check_Type(VALUE value, int type)</div><div class='del'>-</div><div class='del'>-which raises an exception if the VALUE does not have the type</div><div class='del'>-specified.</div><div class='del'>-</div><div class='del'>-There are also faster check macros for fixnums and nil.</div><div class='del'>-</div><div class='del'>-  FIXNUM_P(obj)</div><div class='del'>-  NIL_P(obj)</div><div class='del'>-</div><div class='del'>-== Convert VALUE into C Data</div><div class='del'>-</div><div class='del'>-The data for type T_NIL, T_FALSE, T_TRUE are nil, false, true</div><div class='del'>-respectively.  They are singletons for the data type.</div><div class='del'>-The equivalent C constants are: Qnil, Qfalse, Qtrue.</div><div class='del'>-Note that Qfalse is false in C also (i.e. 0), but not Qnil.</div><div class='del'>-</div><div class='del'>-The T_FIXNUM data is a 31bit or 63bit length fixed integer.</div><div class='del'>-This size is depend on the size of long: if long is 32bit then</div><div class='del'>-T_FIXNUM is 31bit, if long is 64bit then T_FIXNUM is 63bit.</div><div class='del'>-T_FIXNUM can be converted to a C integer by using the</div><div class='del'>-FIX2INT() macro or FIX2LONG().  Though you have to check that the</div><div class='del'>-data is really FIXNUM before using them, they are faster.  FIX2LONG()</div><div class='del'>-never raises exceptions, but FIX2INT() raises RangeError if the</div><div class='del'>-result is bigger or smaller than the size of int.</div><div class='del'>-There are also NUM2INT() and NUM2LONG() which converts any Ruby</div><div class='del'>-numbers into C integers.  These macros includes a type check,</div><div class='del'>-so an exception will be raised if the conversion failed.  NUM2DBL()</div><div class='del'>-can be used to retrieve the double float value in the same way.</div><div class='del'>-</div><div class='del'>-You can use the macros</div><div class='del'>-StringValue() and StringValuePtr() to get a char* from a VALUE.</div><div class='del'>-StringValue(var) replaces var's value with the result of "var.to_str()".</div><div class='del'>-StringValuePtr(var) does same replacement and returns char*</div><div class='del'>-representation of var.  These macros will skip the replacement if var</div><div class='del'>-is a String.  Notice that the macros take only the lvalue as their</div><div class='del'>-argument, to change the value of var in place.</div><div class='del'>-</div><div class='del'>-You can also use the macro named StringValueCStr(). This is just</div><div class='del'>-like StringValuePtr(), but always add nul character at the end of</div><div class='del'>-the result. If the result contains nul character, this macro causes</div><div class='del'>-the ArgumentError exception.</div><div class='del'>-StringValuePtr() doesn't guarantee the existence of a nul at the end</div><div class='del'>-of the result, and the result may contain nul.</div><div class='del'>-</div><div class='del'>-Other data types have corresponding C structures, e.g. struct RArray</div><div class='del'>-for T_ARRAY etc. The VALUE of the type which has the corresponding</div><div class='del'>-structure can be cast to retrieve the pointer to the struct.  The</div><div class='del'>-casting macro will be of the form RXXXX for each data type; for</div><div class='del'>-instance, RARRAY(obj).  See "ruby.h".  However, we do not recommend</div><div class='del'>-to access RXXXX data directly because these data structure is complex.</div><div class='del'>-Use corresponding rb_xxx() functions to access internal struct.</div><div class='del'>-For example, to access an entry of array, use rb_ary_entry(ary, offset)</div><div class='del'>-and rb_ary_store(ary, offset, obj).</div><div class='del'>-</div><div class='del'>-There are some accessing macros for structure members, for example</div><div class='del'>-`RSTRING_LEN(str)' to get the size of the Ruby String object.  The</div><div class='del'>-allocated region can be accessed by `RSTRING_PTR(str)'.</div><div class='del'>-</div><div class='del'>-Notice: Do not change the value of the structure directly, unless you</div><div class='del'>-are responsible for the result.  This ends up being the cause of</div><div class='del'>-interesting bugs.</div><div class='del'>-</div><div class='del'>-== Convert C Data into VALUE</div><div class='del'>-</div><div class='del'>-To convert C data to Ruby values:</div><div class='del'>-</div><div class='del'>-FIXNUM ::</div><div class='del'>-</div><div class='del'>-  left shift 1 bit, and turn on LSB.</div><div class='del'>-</div><div class='del'>-Other pointer values::</div><div class='del'>-</div><div class='del'>-  cast to VALUE.</div><div class='del'>-</div><div class='del'>-You can determine whether a VALUE is pointer or not by checking its LSB.</div><div class='del'>-</div><div class='del'>-Notice Ruby does not allow arbitrary pointer values to be a VALUE.  They</div><div class='del'>-should be pointers to the structures which Ruby knows about.  The known</div><div class='del'>-structures are defined in &lt;ruby.h&gt;.</div><div class='del'>-</div><div class='del'>-To convert C numbers to Ruby values, use these macros.</div><div class='del'>-</div><div class='del'>-INT2FIX() :: for integers within 31bits.</div><div class='del'>-INT2NUM() :: for arbitrary sized integer.</div><div class='del'>-</div><div class='del'>-INT2NUM() converts an integer into a Bignum if it is out of the FIXNUM</div><div class='del'>-range, but is a bit slower.</div><div class='del'>-</div><div class='del'>-== Manipulating Ruby Data</div><div class='del'>-</div><div class='del'>-As I already mentioned, it is not recommended to modify an object's</div><div class='del'>-internal structure.  To manipulate objects, use the functions supplied</div><div class='del'>-by the Ruby interpreter. Some (not all) of the useful functions are</div><div class='del'>-listed below:</div><div class='del'>-</div><div class='del'>-=== String Functions</div><div class='del'>-</div><div class='del'>-rb_str_new(const char *ptr, long len) ::</div><div class='del'>-</div><div class='del'>-  Creates a new Ruby string.</div><div class='del'>-</div><div class='del'>-rb_str_new2(const char *ptr) ::</div><div class='del'>-rb_str_new_cstr(const char *ptr) ::</div><div class='del'>-</div><div class='del'>-  Creates a new Ruby string from a C string.  This is equivalent to</div><div class='del'>-  rb_str_new(ptr, strlen(ptr)).</div><div class='del'>-</div><div class='del'>-rb_str_new_literal(const char *ptr) ::</div><div class='del'>-</div><div class='del'>-  Creates a new Ruby string from a C string literal.</div><div class='del'>-</div><div class='del'>-rb_tainted_str_new(const char *ptr, long len) ::</div><div class='del'>-</div><div class='del'>-  Creates a new tainted Ruby string.  Strings from external data</div><div class='del'>-  sources should be tainted.</div><div class='del'>-</div><div class='del'>-rb_tainted_str_new2(const char *ptr) ::</div><div class='del'>-rb_tainted_str_new_cstr(const char *ptr) ::</div><div class='del'>-</div><div class='del'>-  Creates a new tainted Ruby string from a C string.</div><div class='del'>-</div><div class='del'>-rb_sprintf(const char *format, ...) ::</div><div class='del'>-rb_vsprintf(const char *format, va_list ap) ::</div><div class='del'>-</div><div class='del'>-  Creates a new Ruby string with printf(3) format.</div><div class='del'>-</div><div class='del'>-  Note: In the format string, "%"PRIsVALUE can be used for Object#to_s</div><div class='del'>-  (or Object#inspect if '+' flag is set) output (and related argument</div><div class='del'>-  must be a VALUE).  Since it conflicts with "%i", for integers in</div><div class='del'>-  format strings, use "%d".</div><div class='del'>-</div><div class='del'>-rb_str_cat(VALUE str, const char *ptr, long len) ::</div><div class='del'>-</div><div class='del'>-  Appends len bytes of data from ptr to the Ruby string.</div><div class='del'>-</div><div class='del'>-rb_str_cat2(VALUE str, const char* ptr) ::</div><div class='del'>-rb_str_cat_cstr(VALUE str, const char* ptr) ::</div><div class='del'>-</div><div class='del'>-  Appends C string ptr to Ruby string str.  This function is</div><div class='del'>-  equivalent to rb_str_cat(str, ptr, strlen(ptr)).</div><div class='del'>-</div><div class='del'>-rb_str_catf(VALUE str, const char* format, ...) ::</div><div class='del'>-rb_str_vcatf(VALUE str, const char* format, va_list ap) ::</div><div class='del'>-</div><div class='del'>-  Appends C string format and successive arguments to Ruby string</div><div class='del'>-  str according to a printf-like format.  These functions are</div><div class='del'>-  equivalent to rb_str_cat2(str, rb_sprintf(format, ...)) and</div><div class='del'>-  rb_str_cat2(str, rb_vsprintf(format, ap)), respectively.</div><div class='del'>-</div><div class='del'>-rb_enc_str_new(const char *ptr, long len, rb_encoding *enc) ::</div><div class='del'>-rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc) ::</div><div class='del'>-</div><div class='del'>-  Creates a new Ruby string with the specified encoding.</div><div class='del'>-</div><div class='del'>-rb_enc_str_new_literal(const char *ptr) ::</div><div class='del'>-</div><div class='del'>-  Creates a new Ruby string from a C string literal with the specified</div><div class='del'>-  encoding.</div><div class='del'>-</div><div class='del'>-rb_usascii_str_new(const char *ptr, long len) ::</div><div class='del'>-rb_usascii_str_new_cstr(const char *ptr) ::</div><div class='del'>-</div><div class='del'>-  Creates a new Ruby string with encoding US-ASCII.</div><div class='del'>-</div><div class='del'>-rb_usascii_str_new_literal(const char *ptr) ::</div><div class='del'>-</div><div class='del'>-  Creates a new Ruby string from a C string literal with encoding</div><div class='del'>-  US-ASCII.</div><div class='del'>-</div><div class='del'>-rb_utf8_str_new(const char *ptr, long len) ::</div><div class='del'>-rb_utf8_str_new_cstr(const char *ptr) ::</div><div class='del'>-</div><div class='del'>-  Creates a new Ruby string with encoding UTF-8.</div><div class='del'>-</div><div class='del'>-rb_utf8_str_new_literal(const char *ptr) ::</div><div class='del'>-</div><div class='del'>-  Creates a new Ruby string from a C string literal with encoding</div><div class='del'>-  UTF-8.</div><div class='del'>-</div><div class='del'>-rb_str_resize(VALUE str, long len) ::</div><div class='del'>-</div><div class='del'>-  Resizes Ruby string to len bytes.  If str is not modifiable, this</div><div class='del'>-  function raises an exception.  The length of str must be set in</div><div class='del'>-  advance.  If len is less than the old length the content beyond</div><div class='del'>-  len bytes is discarded, else if len is greater than the old length</div><div class='del'>-  the content beyond the old length bytes will not be preserved but</div><div class='del'>-  will be garbage.  Note that RSTRING_PTR(str) may change by calling</div><div class='del'>-  this function.</div><div class='del'>-</div><div class='del'>-rb_str_set_len(VALUE str, long len) ::</div><div class='del'>-</div><div class='del'>-  Sets the length of Ruby string.  If str is not modifiable, this</div><div class='del'>-  function raises an exception.  This function preserves the content</div><div class='del'>-  upto len bytes, regardless RSTRING_LEN(str).  len must not exceed</div><div class='del'>-  the capacity of str.</div><div class='del'>-</div><div class='del'>-=== Array Functions</div><div class='del'>-</div><div class='del'>-rb_ary_new() ::</div><div class='del'>-</div><div class='del'>-  Creates an array with no elements.</div><div class='del'>-</div><div class='del'>-rb_ary_new2(long len) ::</div><div class='del'>-rb_ary_new_capa(long len) ::</div><div class='del'>-</div><div class='del'>-  Creates an array with no elements, allocating internal buffer</div><div class='del'>-  for len elements.</div><div class='del'>-</div><div class='del'>-rb_ary_new3(long n, ...) ::</div><div class='del'>-rb_ary_new_from_args(long n, ...) ::</div><div class='del'>-</div><div class='del'>-  Creates an n-element array from the arguments.</div><div class='del'>-</div><div class='del'>-rb_ary_new4(long n, VALUE *elts) ::</div><div class='del'>-rb_ary_new_from_values(long n, VALUE *elts) ::</div><div class='del'>-</div><div class='del'>-  Creates an n-element array from a C array.</div><div class='del'>-</div><div class='del'>-rb_ary_to_ary(VALUE obj) ::</div><div class='del'>-</div><div class='del'>-  Converts the object into an array.</div><div class='del'>-  Equivalent to Object#to_ary.</div><div class='del'>-</div><div class='del'>-There are many functions to operate an array.  They may dump core if other</div><div class='del'>-types are given.</div><div class='del'>-</div><div class='del'>-rb_ary_aref(argc, VALUE *argv, VALUE ary) ::</div><div class='del'>-</div><div class='del'>-  Equivalent to Array#[].</div><div class='del'>-</div><div class='del'>-rb_ary_entry(VALUE ary, long offset) ::</div><div class='del'>-</div><div class='del'>-  ary[offset]</div><div class='del'>-</div><div class='del'>-rb_ary_store(VALUE ary, long offset, VALUE obj) ::</div><div class='del'>-</div><div class='del'>-  ary[offset] = obj</div><div class='del'>-</div><div class='del'>-rb_ary_subseq(VALUE ary, long beg, long len) ::</div><div class='del'>-</div><div class='del'>-  ary[beg, len]</div><div class='del'>-</div><div class='del'>-rb_ary_push(VALUE ary, VALUE val) ::</div><div class='del'>-rb_ary_pop(VALUE ary) ::</div><div class='del'>-rb_ary_shift(VALUE ary) ::</div><div class='del'>-rb_ary_unshift(VALUE ary, VALUE val) ::</div><div class='del'>-</div><div class='del'>-rb_ary_cat(VALUE ary, const VALUE *ptr, long len) ::</div><div class='del'>-</div><div class='del'>-  Appends len elements of objects from ptr to the array.</div><div class='del'>-</div><div class='del'>-= Extending Ruby with C</div><div class='del'>-</div><div class='del'>-== Adding New Features to Ruby</div><div class='del'>-</div><div class='del'>-You can add new features (classes, methods, etc.) to the Ruby</div><div class='del'>-interpreter.  Ruby provides APIs for defining the following things:</div><div class='del'>-</div><div class='del'>-* Classes, Modules</div><div class='del'>-* Methods, Singleton Methods</div><div class='del'>-* Constants</div><div class='del'>-</div><div class='del'>-=== Class and Module Definition</div><div class='del'>-</div><div class='del'>-To define a class or module, use the functions below:</div><div class='del'>-</div><div class='del'>-  VALUE rb_define_class(const char *name, VALUE super)</div><div class='del'>-  VALUE rb_define_module(const char *name)</div><div class='del'>-</div><div class='del'>-These functions return the newly created class or module.  You may</div><div class='del'>-want to save this reference into a variable to use later.</div><div class='del'>-</div><div class='del'>-To define nested classes or modules, use the functions below:</div><div class='del'>-</div><div class='del'>-  VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)</div><div class='del'>-  VALUE rb_define_module_under(VALUE outer, const char *name)</div><div class='del'>-</div><div class='del'>-=== Method and Singleton Method Definition</div><div class='del'>-</div><div class='del'>-To define methods or singleton methods, use these functions:</div><div class='del'>-</div><div class='del'>-  void rb_define_method(VALUE klass, const char *name,</div><div class='del'>-		        VALUE (*func)(), int argc)</div><div class='del'>-</div><div class='del'>-  void rb_define_singleton_method(VALUE object, const char *name,</div><div class='del'>-			          VALUE (*func)(), int argc)</div><div class='del'>-</div><div class='del'>-The `argc' represents the number of the arguments to the C function,</div><div class='del'>-which must be less than 17.  But I doubt you'll need that many.</div><div class='del'>-</div><div class='del'>-If `argc' is negative, it specifies the calling sequence, not number of</div><div class='del'>-the arguments.</div><div class='del'>-</div><div class='del'>-If argc is -1, the function will be called as:</div><div class='del'>-</div><div class='del'>-  VALUE func(int argc, VALUE *argv, VALUE obj)</div><div class='del'>-</div><div class='del'>-where argc is the actual number of arguments, argv is the C array of</div><div class='del'>-the arguments, and obj is the receiver.</div><div class='del'>-</div><div class='del'>-If argc is -2, the arguments are passed in a Ruby array. The function</div><div class='del'>-will be called like:</div><div class='del'>-</div><div class='del'>-  VALUE func(VALUE obj, VALUE args)</div><div class='del'>-</div><div class='del'>-where obj is the receiver, and args is the Ruby array containing</div><div class='del'>-actual arguments.</div><div class='del'>-</div><div class='del'>-There are some more functions to define methods. One takes an ID</div><div class='del'>-as the name of method to be defined. See also ID or Symbol below.</div><div class='del'>-</div><div class='del'>-  void rb_define_method_id(VALUE klass, ID name,</div><div class='del'>-                           VALUE (*func)(ANYARGS), int argc)</div><div class='del'>-</div><div class='del'>-There are two functions to define private/protected methods:</div><div class='del'>-</div><div class='del'>-  void rb_define_private_method(VALUE klass, const char *name,</div><div class='del'>-			        VALUE (*func)(), int argc)</div><div class='del'>-  void rb_define_protected_method(VALUE klass, const char *name,</div><div class='del'>-			          VALUE (*func)(), int argc)</div><div class='del'>-</div><div class='del'>-At last, rb_define_module_function defines a module functions,</div><div class='del'>-which are private AND singleton methods of the module.</div><div class='del'>-For example, sqrt is the module function defined in Math module.</div><div class='del'>-It can be called in the following way:</div><div class='del'>-</div><div class='del'>-  Math.sqrt(4)</div><div class='del'>-</div><div class='del'>-or</div><div class='del'>-</div><div class='del'>-  include Math</div><div class='del'>-  sqrt(4)</div><div class='del'>-</div><div class='del'>-To define module functions, use:</div><div class='del'>-</div><div class='del'>-  void rb_define_module_function(VALUE module, const char *name,</div><div class='del'>-				 VALUE (*func)(), int argc)</div><div class='del'>-</div><div class='del'>-In addition, function-like methods, which are private methods defined</div><div class='del'>-in the Kernel module, can be defined using:</div><div class='del'>-</div><div class='del'>-  void rb_define_global_function(const char *name, VALUE (*func)(), int argc)</div><div class='del'>-</div><div class='del'>-To define an alias for the method,</div><div class='del'>-</div><div class='del'>-  void rb_define_alias(VALUE module, const char* new, const char* old);</div><div class='del'>-</div><div class='del'>-To define a reader/writer for an attribute,</div><div class='del'>-</div><div class='del'>-  void rb_define_attr(VALUE klass, const char *name, int read, int write)</div><div class='del'>-</div><div class='del'>-To define and undefine the `allocate' class method,</div><div class='del'>-</div><div class='del'>-  void rb_define_alloc_func(VALUE klass, VALUE (*func)(VALUE klass));</div><div class='del'>-  void rb_undef_alloc_func(VALUE klass);</div><div class='del'>-</div><div class='del'>-func has to take the klass as the argument and return a newly</div><div class='del'>-allocated instance.  This instance should be as empty as possible,</div><div class='del'>-without any expensive (including external) resources.</div><div class='del'>-</div><div class='del'>-If you are overriding an existing method of any ancestor of your class,</div><div class='del'>-you may rely on:</div><div class='del'>-</div><div class='del'>-  VALUE rb_call_super(int argc, const VALUE *argv)</div><div class='del'>-</div><div class='del'>-To achieve the receiver of the current scope (if no other way is</div><div class='del'>-available), you can use:</div><div class='del'>-</div><div class='del'>-  VALUE rb_current_receiver(void)</div><div class='del'>-</div><div class='del'>-=== Constant Definition</div><div class='del'>-</div><div class='del'>-We have 2 functions to define constants:</div><div class='del'>-</div><div class='del'>-  void rb_define_const(VALUE klass, const char *name, VALUE val)</div><div class='del'>-  void rb_define_global_const(const char *name, VALUE val)</div><div class='del'>-</div><div class='del'>-The former is to define a constant under specified class/module.  The</div><div class='del'>-latter is to define a global constant.</div><div class='del'>-</div><div class='del'>-== Use Ruby Features from C</div><div class='del'>-</div><div class='del'>-There are several ways to invoke Ruby's features from C code.</div><div class='del'>-</div><div class='del'>-=== Evaluate Ruby Programs in a String</div><div class='del'>-</div><div class='del'>-The easiest way to use Ruby's functionality from a C program is to</div><div class='del'>-evaluate the string as Ruby program.  This function will do the job:</div><div class='del'>-</div><div class='del'>-  VALUE rb_eval_string(const char *str)</div><div class='del'>-</div><div class='del'>-Evaluation is done under the current context, thus current local variables</div><div class='del'>-of the innermost method (which is defined by Ruby) can be accessed.</div><div class='del'>-</div><div class='del'>-Note that the evaluation can raise an exception. There is a safer</div><div class='del'>-function:</div><div class='del'>-</div><div class='del'>-  VALUE rb_eval_string_protect(const char *str, int *state)</div><div class='del'>-</div><div class='del'>-It returns nil when an error occur. Moreover, *state is zero if str was</div><div class='del'>-successfully evaluated, or nonzero otherwise.</div><div class='del'>-</div><div class='del'>-=== ID or Symbol</div><div class='del'>-</div><div class='del'>-You can invoke methods directly, without parsing the string.  First I</div><div class='del'>-need to explain about ID.  ID is the integer number to represent</div><div class='del'>-Ruby's identifiers such as variable names.  The Ruby data type</div><div class='del'>-corresponding to ID is Symbol.  It can be accessed from Ruby in the</div><div class='del'>-form:</div><div class='del'>-</div><div class='del'>-  :Identifier</div><div class='del'>-</div><div class='del'>-or</div><div class='del'>-</div><div class='del'>-  :"any kind of string"</div><div class='del'>-</div><div class='del'>-You can get the ID value from a string within C code by using</div><div class='del'>-</div><div class='del'>-  rb_intern(const char *name)</div><div class='del'>-  rb_intern_str(VALUE name)</div><div class='del'>-</div><div class='del'>-You can retrieve ID from Ruby object (Symbol or String) given as an</div><div class='del'>-argument by using</div><div class='del'>-</div><div class='del'>-  rb_to_id(VALUE symbol)</div><div class='del'>-  rb_check_id(volatile VALUE *name)</div><div class='del'>-  rb_check_id_cstr(const char *name, long len, rb_encoding *enc)</div><div class='del'>-</div><div class='del'>-These functions try to convert the argument to a String if it was not</div><div class='del'>-a Symbol nor a String.  The second function stores the converted</div><div class='del'>-result into *name, and returns 0 if the string is not a known symbol.</div><div class='del'>-After this function returned a non-zero value, *name is always a</div><div class='del'>-Symbol or a String, otherwise it is a String if the result is 0.</div><div class='del'>-The third function takes NUL-terminated C string, not Ruby VALUE.</div><div class='del'>-</div><div class='del'>-You can retrieve Symbol from Ruby object (Symbol or String) given as</div><div class='del'>-an argument by using</div><div class='del'>-</div><div class='del'>-  rb_to_symbol(VALUE name)</div><div class='del'>-  rb_check_symbol(volatile VALUE *namep)</div><div class='del'>-  rb_check_symbol_cstr(const char *ptr, long len, rb_encoding *enc)</div><div class='del'>-</div><div class='del'>-These functions are similar to above functions except that these</div><div class='del'>-return a Symbol instead of an ID.</div><div class='del'>-</div><div class='del'>-You can convert C ID to Ruby Symbol by using</div><div class='del'>-</div><div class='del'>-  VALUE ID2SYM(ID id)</div><div class='del'>-</div><div class='del'>-and to convert Ruby Symbol object to ID, use</div><div class='del'>-</div><div class='del'>-  ID SYM2ID(VALUE symbol)</div><div class='del'>-</div><div class='del'>-=== Invoke Ruby Method from C</div><div class='del'>-</div><div class='del'>-To invoke methods directly, you can use the function below</div><div class='del'>-</div><div class='del'>-  VALUE rb_funcall(VALUE recv, ID mid, int argc, ...)</div><div class='del'>-</div><div class='del'>-This function invokes a method on the recv, with the method name</div><div class='del'>-specified by the symbol mid.</div><div class='del'>-</div><div class='del'>-=== Accessing the Variables and Constants</div><div class='del'>-</div><div class='del'>-You can access class variables and instance variables using access</div><div class='del'>-functions.  Also, global variables can be shared between both</div><div class='del'>-environments.  There's no way to access Ruby's local variables.</div><div class='del'>-</div><div class='del'>-The functions to access/modify instance variables are below:</div><div class='del'>-</div><div class='del'>-  VALUE rb_ivar_get(VALUE obj, ID id)</div><div class='del'>-  VALUE rb_ivar_set(VALUE obj, ID id, VALUE val)</div><div class='del'>-</div><div class='del'>-id must be the symbol, which can be retrieved by rb_intern().</div><div class='del'>-</div><div class='del'>-To access the constants of the class/module:</div><div class='del'>-</div><div class='del'>-  VALUE rb_const_get(VALUE obj, ID id)</div><div class='del'>-</div><div class='del'>-See also Constant Definition above.</div><div class='del'>-</div><div class='del'>-= Information Sharing Between Ruby and C</div><div class='del'>-</div><div class='del'>-=== Ruby Constants That C Can Be Accessed From C</div><div class='del'>-</div><div class='del'>-As stated in section 1.3,</div><div class='del'>-the following Ruby constants can be referred from C.</div><div class='del'>-</div><div class='del'>-  Qtrue</div><div class='del'>-  Qfalse</div><div class='del'>-</div><div class='del'>-Boolean values.  Qfalse is false in C also (i.e. 0).</div><div class='del'>-</div><div class='del'>-  Qnil</div><div class='del'>-</div><div class='del'>-Ruby nil in C scope.</div><div class='del'>-</div><div class='del'>-== Global Variables Shared Between C and Ruby</div><div class='del'>-</div><div class='del'>-Information can be shared between the two environments using shared global</div><div class='del'>-variables.  To define them, you can use functions listed below:</div><div class='del'>-</div><div class='del'>-  void rb_define_variable(const char *name, VALUE *var)</div><div class='del'>-</div><div class='del'>-This function defines the variable which is shared by both environments.</div><div class='del'>-The value of the global variable pointed to by `var' can be accessed</div><div class='del'>-through Ruby's global variable named `name'.</div><div class='del'>-</div><div class='del'>-You can define read-only (from Ruby, of course) variables using the</div><div class='del'>-function below.</div><div class='del'>-</div><div class='del'>-  void rb_define_readonly_variable(const char *name, VALUE *var)</div><div class='del'>-</div><div class='del'>-You can defined hooked variables.  The accessor functions (getter and</div><div class='del'>-setter) are called on access to the hooked variables.</div><div class='del'>-</div><div class='del'>-  void rb_define_hooked_variable(const char *name, VALUE *var,</div><div class='del'>-				 VALUE (*getter)(), void (*setter)())</div><div class='del'>-</div><div class='del'>-If you need to supply either setter or getter, just supply 0 for the</div><div class='del'>-hook you don't need.  If both hooks are 0, rb_define_hooked_variable()</div><div class='del'>-works just like rb_define_variable().</div><div class='del'>-</div><div class='del'>-The prototypes of the getter and setter functions are as follows:</div><div class='del'>-</div><div class='del'>-  VALUE (*getter)(ID id, VALUE *var);</div><div class='del'>-  void (*setter)(VALUE val, ID id, VALUE *var);</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-Also you can define a Ruby global variable without a corresponding C</div><div class='del'>-variable.  The value of the variable will be set/get only by hooks.</div><div class='del'>-</div><div class='del'>-  void rb_define_virtual_variable(const char *name,</div><div class='del'>-				  VALUE (*getter)(), void (*setter)())</div><div class='del'>-</div><div class='del'>-The prototypes of the getter and setter functions are as follows:</div><div class='del'>-</div><div class='del'>-  VALUE (*getter)(ID id);</div><div class='del'>-  void (*setter)(VALUE val, ID id);</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-== Encapsulate C Data into a Ruby Object</div><div class='del'>-</div><div class='del'>-To wrap and objectify a C pointer as a Ruby object (so called</div><div class='del'>-DATA), use Data_Wrap_Struct().</div><div class='del'>-</div><div class='del'>-  Data_Wrap_Struct(klass, mark, free, sval)</div><div class='del'>-</div><div class='del'>-Data_Wrap_Struct() returns a created DATA object.  The klass argument</div><div class='del'>-is the class for the DATA object.  The mark argument is the function</div><div class='del'>-to mark Ruby objects pointed by this data.  The free argument is the</div><div class='del'>-function to free the pointer allocation.  If this is -1, the pointer</div><div class='del'>-will be just freed.  The functions mark and free will be called from</div><div class='del'>-garbage collector.</div><div class='del'>-</div><div class='del'>-These mark / free functions are invoked during GC execution.  No</div><div class='del'>-object allocations are allowed during it, so do not allocate ruby</div><div class='del'>-objects inside them.</div><div class='del'>-</div><div class='del'>-You can allocate and wrap the structure in one step.</div><div class='del'>-</div><div class='del'>-  Data_Make_Struct(klass, type, mark, free, sval)</div><div class='del'>-</div><div class='del'>-This macro returns an allocated Data object, wrapping the pointer to</div><div class='del'>-the structure, which is also allocated.  This macro works like:</div><div class='del'>-</div><div class='del'>-  (sval = ALLOC(type), Data_Wrap_Struct(klass, mark, free, sval))</div><div class='del'>-</div><div class='del'>-Arguments klass, mark, and free work like their counterparts in</div><div class='del'>-Data_Wrap_Struct().  A pointer to the allocated structure will be</div><div class='del'>-assigned to sval, which should be a pointer of the type specified.</div><div class='del'>-</div><div class='del'>-To retrieve the C pointer from the Data object, use the macro</div><div class='del'>-Data_Get_Struct().</div><div class='del'>-</div><div class='del'>-  Data_Get_Struct(obj, type, sval)</div><div class='del'>-</div><div class='del'>-A pointer to the structure will be assigned to the variable sval.</div><div class='del'>-</div><div class='del'>-See the example below for details.</div><div class='del'>-</div><div class='del'>-= Example - Creating dbm Extension</div><div class='del'>-</div><div class='del'>-OK, here's the example of making an extension library.  This is the</div><div class='del'>-extension to access DBMs.  The full source is included in the ext/</div><div class='del'>-directory in the Ruby's source tree.</div><div class='del'>-</div><div class='del'>-== Make the Directory</div><div class='del'>-</div><div class='del'>-  % mkdir ext/dbm</div><div class='del'>-</div><div class='del'>-Make a directory for the extension library under ext directory.</div><div class='del'>-</div><div class='del'>-== Design the Library</div><div class='del'>-</div><div class='del'>-You need to design the library features, before making it.</div><div class='del'>-</div><div class='del'>-== Write the C Code</div><div class='del'>-</div><div class='del'>-You need to write C code for your extension library.  If your library</div><div class='del'>-has only one source file, choosing ``LIBRARY.c'' as a file name is</div><div class='del'>-preferred.  On the other hand, in case your library has multiple source</div><div class='del'>-files, avoid choosing ``LIBRARY.c'' for a file name.  It may conflict</div><div class='del'>-with an intermediate file ``LIBRARY.o'' on some platforms.</div><div class='del'>-Note that some functions in mkmf library described below generate</div><div class='del'>-a file ``conftest.c'' for checking with compilation.  You shouldn't</div><div class='del'>-choose ``conftest.c'' as a name of a source file.</div><div class='del'>-</div><div class='del'>-Ruby will execute the initializing function named ``Init_LIBRARY'' in</div><div class='del'>-the library.  For example, ``Init_dbm()'' will be executed when loading</div><div class='del'>-the library.</div><div class='del'>-</div><div class='del'>-Here's the example of an initializing function.</div><div class='del'>-</div><div class='del'>-  void</div><div class='del'>-  Init_dbm(void)</div><div class='del'>-  {</div><div class='del'>-      /* define DBM class */</div><div class='del'>-      VALUE cDBM = rb_define_class("DBM", rb_cObject);</div><div class='del'>-      /* DBM includes Enumerable module */</div><div class='del'>-      rb_include_module(cDBM, rb_mEnumerable);</div><div class='del'>-</div><div class='del'>-      /* DBM has class method open(): arguments are received as C array */</div><div class='del'>-      rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);</div><div class='del'>-</div><div class='del'>-      /* DBM instance method close(): no args */</div><div class='del'>-      rb_define_method(cDBM, "close", fdbm_close, 0);</div><div class='del'>-      /* DBM instance method []: 1 argument */</div><div class='del'>-      rb_define_method(cDBM, "[]", fdbm_fetch, 1);</div><div class='del'>-</div><div class='del'>-      /* ... */</div><div class='del'>-</div><div class='del'>-      /* ID for a instance variable to store DBM data */</div><div class='del'>-      id_dbm = rb_intern("dbm");</div><div class='del'>-  }</div><div class='del'>-</div><div class='del'>-The dbm extension wraps the dbm struct in the C environment using</div><div class='del'>-Data_Make_Struct.</div><div class='del'>-</div><div class='del'>-  struct dbmdata {</div><div class='del'>-      int  di_size;</div><div class='del'>-      DBM *di_dbm;</div><div class='del'>-  };</div><div class='del'>-</div><div class='del'>-  obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);</div><div class='del'>-</div><div class='del'>-This code wraps the dbmdata structure into a Ruby object.  We avoid</div><div class='del'>-wrapping DBM* directly, because we want to cache size information.</div><div class='del'>-</div><div class='del'>-To retrieve the dbmdata structure from a Ruby object, we define the</div><div class='del'>-following macro:</div><div class='del'>-</div><div class='del'>-  #define GetDBM(obj, dbmp) do {\</div><div class='del'>-      Data_Get_Struct(obj, struct dbmdata, dbmp);\</div><div class='del'>-      if (dbmp-&gt;di_dbm == 0) closed_dbm();\</div><div class='del'>-  } while (0)</div><div class='del'>-</div><div class='del'>-This sort of complicated macro does the retrieving and close checking for</div><div class='del'>-the DBM.</div><div class='del'>-</div><div class='del'>-There are three kinds of way to receive method arguments.  First,</div><div class='del'>-methods with a fixed number of arguments receive arguments like this:</div><div class='del'>-</div><div class='del'>-  static VALUE</div><div class='del'>-  fdbm_delete(VALUE obj, VALUE keystr)</div><div class='del'>-  {</div><div class='del'>-        /* ... */</div><div class='del'>-  }</div><div class='del'>-</div><div class='del'>-The first argument of the C function is the self, the rest are the</div><div class='del'>-arguments to the method.</div><div class='del'>-</div><div class='del'>-Second, methods with an arbitrary number of arguments receive</div><div class='del'>-arguments like this:</div><div class='del'>-</div><div class='del'>-  static VALUE</div><div class='del'>-  fdbm_s_open(int argc, VALUE *argv, VALUE klass)</div><div class='del'>-  {</div><div class='del'>-      /* ... */</div><div class='del'>-      if (rb_scan_args(argc, argv, "11", &amp;file, &amp;vmode) == 1) {</div><div class='del'>-          mode = 0666;		/* default value */</div><div class='del'>-      }</div><div class='del'>-      /* ... */</div><div class='del'>-  }</div><div class='del'>-</div><div class='del'>-The first argument is the number of method arguments, the second</div><div class='del'>-argument is the C array of the method arguments, and the third</div><div class='del'>-argument is the receiver of the method.</div><div class='del'>-</div><div class='del'>-You can use the function rb_scan_args() to check and retrieve the</div><div class='del'>-arguments.  The third argument is a string that specifies how to</div><div class='del'>-capture method arguments and assign them to the following VALUE</div><div class='del'>-references.</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-The following is an example of a method that takes arguments by Ruby's</div><div class='del'>-array:</div><div class='del'>-</div><div class='del'>-  static VALUE</div><div class='del'>-  thread_initialize(VALUE thread, VALUE args)</div><div class='del'>-  {</div><div class='del'>-      /* ... */</div><div class='del'>-  }</div><div class='del'>-</div><div class='del'>-The first argument is the receiver, the second one is the Ruby array</div><div class='del'>-which contains the arguments to the method.</div><div class='del'>-</div><div class='del'>-*Notice*: GC should know about global variables which refer to Ruby's objects,</div><div class='del'>-but are not exported to the Ruby world.  You need to protect them by</div><div class='del'>-</div><div class='del'>-  void rb_global_variable(VALUE *var)</div><div class='del'>-</div><div class='del'>-== Prepare extconf.rb</div><div class='del'>-</div><div class='del'>-If the file named extconf.rb exists, it will be executed to generate</div><div class='del'>-Makefile.</div><div class='del'>-</div><div class='del'>-extconf.rb is the file for checking compilation conditions etc.  You</div><div class='del'>-need to put</div><div class='del'>-</div><div class='del'>-  require 'mkmf'</div><div class='del'>-</div><div class='del'>-at the top of the file.  You can use the functions below to check</div><div class='del'>-various conditions.</div><div class='del'>-</div><div class='del'>-  have_macro(macro[, headers[, opt]]): check whether macro is defined</div><div class='del'>-  have_library(lib[, func[, headers[, opt]]]): check whether library containing function exists</div><div class='del'>-  find_library(lib[, func, *paths]): find library from paths</div><div class='del'>-  have_func(func[, headers[, opt]): check whether function exists</div><div class='del'>-  have_var(var[, headers[, opt]]): check whether variable exists</div><div class='del'>-  have_header(header[, preheaders[, opt]]): check whether header file exists</div><div class='del'>-  find_header(header, *paths): find header from paths</div><div class='del'>-  have_framework(fw): check whether framework exists (for MacOS X)</div><div class='del'>-  have_struct_member(type, member[, headers[, opt]]): check whether struct has member</div><div class='del'>-  have_type(type[, headers[, opt]]): check whether type exists</div><div class='del'>-  find_type(type, opt, *headers): check whether type exists in headers</div><div class='del'>-  have_const(const[, headers[, opt]]): check whether constant is defined</div><div class='del'>-  check_sizeof(type[, headers[, opts]]): check size of type</div><div class='del'>-  check_signedness(type[, headers[, opts]]): check signedness of type</div><div class='del'>-  convertible_int(type[, headers[, opts]]): find convertible integer type</div><div class='del'>-  find_executable(bin[, path]): find executable file path</div><div class='del'>-  create_header(header): generate configured header</div><div class='del'>-  create_makefile(target[, target_prefix]): generate Makefile</div><div class='del'>-</div><div class='del'>-See MakeMakefile for full documentation of these functions.</div><div class='del'>-</div><div class='del'>-The value of the variables below will affect the Makefile.</div><div class='del'>-</div><div class='del'>-  $CFLAGS: included in CFLAGS make variable (such as -O)</div><div class='del'>-  $CPPFLAGS: included in CPPFLAGS make variable (such as -I, -D)</div><div class='del'>-  $LDFLAGS: included in LDFLAGS make variable (such as -L)</div><div class='del'>-  $objs: list of object file names</div><div class='del'>-</div><div class='del'>-Normally, the object files list is automatically generated by searching</div><div class='del'>-source files, but you must define them explicitly if any sources will</div><div class='del'>-be generated while building.</div><div class='del'>-</div><div class='del'>-If a compilation condition is not fulfilled, you should not call</div><div class='del'>-``create_makefile''.  The Makefile will not be generated, compilation will</div><div class='del'>-not be done.</div><div class='del'>-</div><div class='del'>-== Prepare Depend (Optional)</div><div class='del'>-</div><div class='del'>-If the file named depend exists, Makefile will include that file to</div><div class='del'>-check dependencies.  You can make this file by invoking</div><div class='del'>-</div><div class='del'>-  % gcc -MM *.c &gt; depend</div><div class='del'>-</div><div class='del'>-It's harmless.  Prepare it.</div><div class='del'>-</div><div class='del'>-== Generate Makefile</div><div class='del'>-</div><div class='del'>-Try generating the Makefile by:</div><div class='del'>-</div><div class='del'>-  ruby extconf.rb</div><div class='del'>-</div><div class='del'>-If the library should be installed under vendor_ruby directory</div><div class='del'>-instead of site_ruby directory, use --vendor option as follows.</div><div class='del'>-</div><div class='del'>-  ruby extconf.rb --vendor</div><div class='del'>-</div><div class='del'>-You don't need this step if you put the extension library under the ext</div><div class='del'>-directory of the ruby source tree.  In that case, compilation of the</div><div class='del'>-interpreter will do this step for you.</div><div class='del'>-</div><div class='del'>-== Run make</div><div class='del'>-</div><div class='del'>-Type</div><div class='del'>-</div><div class='del'>-  make</div><div class='del'>-</div><div class='del'>-to compile your extension.  You don't need this step either if you have</div><div class='del'>-put the extension library under the ext directory of the ruby source tree.</div><div class='del'>-</div><div class='del'>-== Debug</div><div class='del'>-</div><div class='del'>-You may need to rb_debug the extension.  Extensions can be linked</div><div class='del'>-statically by adding the directory name in the ext/Setup file so that</div><div class='del'>-you can inspect the extension with the debugger.</div><div class='del'>-</div><div class='del'>-== Done! Now You Have the Extension Library</div><div class='del'>-</div><div class='del'>-You can do anything you want with your library.  The author of Ruby</div><div class='del'>-will not claim any restrictions on your code depending on the Ruby API.</div><div class='del'>-Feel free to use, modify, distribute or sell your program.</div><div class='del'>-</div><div class='del'>-= Appendix A. Ruby Source Files Overview</div><div class='del'>-</div><div class='del'>-== Ruby Language Core</div><div class='del'>-</div><div class='del'>-class.c    :: classes and modules</div><div class='del'>-error.c    :: exception classes and exception mechanism</div><div class='del'>-gc.c       :: memory management</div><div class='del'>-load.c     :: library loading</div><div class='del'>-object.c   :: objects</div><div class='del'>-variable.c :: variables and constants</div><div class='del'>-</div><div class='del'>-== Ruby Syntax Parser</div><div class='del'>-</div><div class='del'>-parse.y  :: grammar definition</div><div class='del'>-parse.c  :: automatically generated from parse.y</div><div class='del'>-keywords :: reserved keywords</div><div class='del'>-lex.c    :: automatically generated from keywords</div><div class='del'>-</div><div class='del'>-== Ruby Evaluator (a.k.a. YARV)</div><div class='del'>-</div><div class='del'>-  compile.c</div><div class='del'>-  eval.c</div><div class='del'>-  eval_error.c</div><div class='del'>-  eval_jump.c</div><div class='del'>-  eval_safe.c</div><div class='del'>-  insns.def           : definition of VM instructions</div><div class='del'>-  iseq.c              : implementation of VM::ISeq</div><div class='del'>-  thread.c            : thread management and context switching</div><div class='del'>-  thread_win32.c      : thread implementation</div><div class='del'>-  thread_pthread.c    : ditto</div><div class='del'>-  vm.c</div><div class='del'>-  vm_dump.c</div><div class='del'>-  vm_eval.c</div><div class='del'>-  vm_exec.c</div><div class='del'>-  vm_insnhelper.c</div><div class='del'>-  vm_method.c</div><div class='del'>-</div><div class='del'>-  opt_insns_unif.def  : instruction unification</div><div class='del'>-  opt_operand.def     : definitions for optimization</div><div class='del'>-</div><div class='del'>-    -&gt; insn*.inc      : automatically generated</div><div class='del'>-    -&gt; opt*.inc       : automatically generated</div><div class='del'>-    -&gt; vm.inc         : automatically generated</div><div class='del'>-</div><div class='del'>-== Regular Expression Engine (Oniguruma)</div><div class='del'>-</div><div class='del'>-  regex.c</div><div class='del'>-  regcomp.c</div><div class='del'>-  regenc.c</div><div class='del'>-  regerror.c</div><div class='del'>-  regexec.c</div><div class='del'>-  regparse.c</div><div class='del'>-  regsyntax.c</div><div class='del'>-</div><div class='del'>-== Utility Functions</div><div class='del'>-</div><div class='del'>-debug.c    :: debug symbols for C debugger</div><div class='del'>-dln.c      :: dynamic loading</div><div class='del'>-st.c       :: general purpose hash table</div><div class='del'>-strftime.c :: formatting times</div><div class='del'>-util.c     :: misc utilities</div><div class='del'>-</div><div class='del'>-== Ruby Interpreter Implementation</div><div class='del'>-</div><div class='del'>-  dmyext.c</div><div class='del'>-  dmydln.c</div><div class='del'>-  dmyencoding.c</div><div class='del'>-  id.c</div><div class='del'>-  inits.c</div><div class='del'>-  main.c</div><div class='del'>-  ruby.c</div><div class='del'>-  version.c</div><div class='del'>-</div><div class='del'>-  gem_prelude.rb</div><div class='del'>-  prelude.rb</div><div class='del'>-</div><div class='del'>-== Class Library</div><div class='del'>-</div><div class='del'>-array.c      :: Array</div><div class='del'>-bignum.c     :: Bignum</div><div class='del'>-compar.c     :: Comparable</div><div class='del'>-complex.c    :: Complex</div><div class='del'>-cont.c       :: Fiber, Continuation</div><div class='del'>-dir.c        :: Dir</div><div class='del'>-enum.c       :: Enumerable</div><div class='del'>-enumerator.c :: Enumerator</div><div class='del'>-file.c       :: File</div><div class='del'>-hash.c       :: Hash</div><div class='del'>-io.c         :: IO</div><div class='del'>-marshal.c    :: Marshal</div><div class='del'>-math.c       :: Math</div><div class='del'>-numeric.c    :: Numeric, Integer, Fixnum, Float</div><div class='del'>-pack.c       :: Array#pack, String#unpack</div><div class='del'>-proc.c       :: Binding, Proc</div><div class='del'>-process.c    :: Process</div><div class='del'>-random.c     :: random number</div><div class='del'>-range.c      :: Range</div><div class='del'>-rational.c   :: Rational</div><div class='del'>-re.c         :: Regexp, MatchData</div><div class='del'>-signal.c     :: Signal</div><div class='del'>-sprintf.c    :: String#sprintf</div><div class='del'>-string.c     :: String</div><div class='del'>-struct.c     :: Struct</div><div class='del'>-time.c       :: Time</div><div class='del'>-</div><div class='del'>-defs/known_errors.def :: Errno::* exception classes</div><div class='del'>--&gt; known_errors.inc   :: automatically generated</div><div class='del'>-</div><div class='del'>-== Multilingualization</div><div class='del'>-</div><div class='del'>-encoding.c  :: Encoding</div><div class='del'>-transcode.c :: Encoding::Converter</div><div class='del'>-enc/*.c     :: encoding classes</div><div class='del'>-enc/trans/* :: codepoint mapping tables</div><div class='del'>-</div><div class='del'>-== goruby Interpreter Implementation</div><div class='del'>-</div><div class='del'>-  goruby.c</div><div class='del'>-  golf_prelude.rb     : goruby specific libraries.</div><div class='del'>-    -&gt; golf_prelude.c : automatically generated</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-= Appendix B. Ruby Extension API Reference</div><div class='del'>-</div><div class='del'>-== Types</div><div class='del'>-</div><div class='del'>-VALUE ::</div><div class='del'>-</div><div class='del'>-  The type for the Ruby object.  Actual structures are defined in ruby.h,</div><div class='del'>-  such as struct RString, etc.  To refer the values in structures, use</div><div class='del'>-  casting macros like RSTRING(obj).</div><div class='del'>-</div><div class='del'>-== Variables and Constants</div><div class='del'>-</div><div class='del'>-Qnil::</div><div class='del'>-  nil object</div><div class='del'>-</div><div class='del'>-Qtrue::</div><div class='del'>-  true object (default true value)</div><div class='del'>-</div><div class='del'>-Qfalse::</div><div class='del'>-  false object</div><div class='del'>-</div><div class='del'>-== C Pointer Wrapping</div><div class='del'>-</div><div class='del'>-Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval) ::</div><div class='del'>-</div><div class='del'>-  Wrap a C pointer into a Ruby object.  If object has references to other</div><div class='del'>-  Ruby objects, they should be marked by using the mark function during</div><div class='del'>-  the GC process.  Otherwise, mark should be 0.  When this object is no</div><div class='del'>-  longer referred by anywhere, the pointer will be discarded by free</div><div class='del'>-  function.</div><div class='del'>-</div><div class='del'>-Data_Make_Struct(klass, type, mark, free, sval) ::</div><div class='del'>-</div><div class='del'>-  This macro allocates memory using malloc(), assigns it to the variable</div><div class='del'>-  sval, and returns the DATA encapsulating the pointer to memory region.</div><div class='del'>-</div><div class='del'>-Data_Get_Struct(data, type, sval) ::</div><div class='del'>-</div><div class='del'>-  This macro retrieves the pointer value from DATA, and assigns it to</div><div class='del'>-  the variable sval.</div><div class='del'>-</div><div class='del'>-== Checking Data Types</div><div class='del'>-</div><div class='del'>-TYPE(value) ::</div><div class='del'>-</div><div class='del'>-  Internal type (T_NIL, T_FIXNUM, etc.)</div><div class='del'>-</div><div class='del'>-FIXNUM_P(value) ::</div><div class='del'>-</div><div class='del'>-  Is +value+ a Fixnum?</div><div class='del'>-</div><div class='del'>-NIL_P(value) ::</div><div class='del'>-</div><div class='del'>-  Is +value+ nil?</div><div class='del'>-</div><div class='del'>-void Check_Type(VALUE value, int type) ::</div><div class='del'>-</div><div class='del'>-  Ensures +value+ is of the given internal +type+ or raises a TypeError</div><div class='del'>-</div><div class='del'>-SaveStringValue(value) ::</div><div class='del'>-</div><div class='del'>-  Checks that +value+ is a String and is not tainted</div><div class='del'>-</div><div class='del'>-== Data Type Conversion</div><div class='del'>-</div><div class='del'>-FIX2INT(value), INT2FIX(i) ::</div><div class='del'>-</div><div class='del'>-  Fixnum &lt;-&gt; integer</div><div class='del'>-</div><div class='del'>-FIX2LONG(value), LONG2FIX(l) ::</div><div class='del'>-</div><div class='del'>-  Fixnum &lt;-&gt; long</div><div class='del'>-</div><div class='del'>-NUM2INT(value), INT2NUM(i) ::</div><div class='del'>-</div><div class='del'>-  Numeric &lt;-&gt; integer</div><div class='del'>-</div><div class='del'>-NUM2UINT(value), UINT2NUM(ui) ::</div><div class='del'>-</div><div class='del'>-  Numeric &lt;-&gt; unsigned integer</div><div class='del'>-</div><div class='del'>-NUM2LONG(value), LONG2NUM(l) ::</div><div class='del'>-</div><div class='del'>-  Numeric &lt;-&gt; long</div><div class='del'>-</div><div class='del'>-NUM2ULONG(value), ULONG2NUM(ul) ::</div><div class='del'>-</div><div class='del'>-  Numeric &lt;-&gt; unsigned long</div><div class='del'>-</div><div class='del'>-NUM2LL(value), LL2NUM(ll) ::</div><div class='del'>-</div><div class='del'>-  Numeric &lt;-&gt; long long</div><div class='del'>-</div><div class='del'>-NUM2ULL(value), ULL2NUM(ull) ::</div><div class='del'>-</div><div class='del'>-  Numeric &lt;-&gt; unsigned long long</div><div class='del'>-</div><div class='del'>-NUM2OFFT(value), OFFT2NUM(off) ::</div><div class='del'>-</div><div class='del'>-  Numeric &lt;-&gt; off_t</div><div class='del'>-</div><div class='del'>-NUM2SIZET(value), SIZET2NUM(size) ::</div><div class='del'>-</div><div class='del'>-  Numeric &lt;-&gt; size_t</div><div class='del'>-</div><div class='del'>-NUM2SSIZET(value), SSIZET2NUM(ssize) ::</div><div class='del'>-</div><div class='del'>-  Numeric &lt;-&gt; ssize_t</div><div class='del'>-</div><div class='del'>-rb_integer_pack(value, words, numwords, wordsize, nails, flags), rb_integer_unpack(words, numwords, wordsize, nails, flags) ::</div><div class='del'>-</div><div class='del'>-  Numeric &lt;-&gt; Arbitrary size integer buffer</div><div class='del'>-</div><div class='del'>-NUM2DBL(value) ::</div><div class='del'>-</div><div class='del'>-  Numeric -&gt; double</div><div class='del'>-</div><div class='del'>-rb_float_new(f) ::</div><div class='del'>-</div><div class='del'>-  double -&gt; Float</div><div class='del'>-</div><div class='del'>-RSTRING_LEN(str) ::</div><div class='del'>-</div><div class='del'>-  String -&gt; length of String data in bytes</div><div class='del'>-</div><div class='del'>-RSTRING_PTR(str) ::</div><div class='del'>-</div><div class='del'>-  String -&gt; pointer to String data</div><div class='del'>-  Note that the result pointer may not be NUL-terminated</div><div class='del'>-</div><div class='del'>-StringValue(value) ::</div><div class='del'>-</div><div class='del'>-  Object with #to_str -&gt; String</div><div class='del'>-</div><div class='del'>-StringValuePtr(value) ::</div><div class='del'>-</div><div class='del'>-  Object with #to_str -&gt; pointer to String data</div><div class='del'>-</div><div class='del'>-StringValueCStr(value) ::</div><div class='del'>-</div><div class='del'>-  Object with #to_str -&gt; pointer to String data without NUL bytes</div><div class='del'>-  It is guaranteed that the result data is NUL-terminated</div><div class='del'>-</div><div class='del'>-rb_str_new2(s) ::</div><div class='del'>-</div><div class='del'>-  char * -&gt; String</div><div class='del'>-</div><div class='del'>-== Defining Class and Module</div><div class='del'>-</div><div class='del'>-VALUE rb_define_class(const char *name, VALUE super) ::</div><div class='del'>-</div><div class='del'>-  Defines a new Ruby class as a subclass of super.</div><div class='del'>-</div><div class='del'>-VALUE rb_define_class_under(VALUE module, const char *name, VALUE super) ::</div><div class='del'>-</div><div class='del'>-  Creates a new Ruby class as a subclass of super, under the module's</div><div class='del'>-  namespace.</div><div class='del'>-</div><div class='del'>-VALUE rb_define_module(const char *name) ::</div><div class='del'>-</div><div class='del'>-  Defines a new Ruby module.</div><div class='del'>-</div><div class='del'>-VALUE rb_define_module_under(VALUE module, const char *name) ::</div><div class='del'>-</div><div class='del'>-  Defines a new Ruby module under the module's namespace.</div><div class='del'>-</div><div class='del'>-void rb_include_module(VALUE klass, VALUE module) ::</div><div class='del'>-</div><div class='del'>-  Includes module into class.  If class already includes it, just ignored.</div><div class='del'>-</div><div class='del'>-void rb_extend_object(VALUE object, VALUE module) ::</div><div class='del'>-</div><div class='del'>-  Extend the object with the module's attributes.</div><div class='del'>-</div><div class='del'>-== Defining Global Variables</div><div class='del'>-</div><div class='del'>-void rb_define_variable(const char *name, VALUE *var) ::</div><div class='del'>-</div><div class='del'>-  Defines a global variable which is shared between C and Ruby.  If name</div><div class='del'>-  contains a character which is not allowed to be part of the symbol,</div><div class='del'>-  it can't be seen from Ruby programs.</div><div class='del'>-</div><div class='del'>-void rb_define_readonly_variable(const char *name, VALUE *var) ::</div><div class='del'>-</div><div class='del'>-  Defines a read-only global variable.  Works just like</div><div class='del'>-  rb_define_variable(), except the defined variable is read-only.</div><div class='del'>-</div><div class='del'>-void rb_define_virtual_variable(const char *name, VALUE (*getter)(), VALUE (*setter)()) ::</div><div class='del'>-</div><div class='del'>-  Defines a virtual variable, whose behavior is defined by a pair of C</div><div class='del'>-  functions.  The getter function is called when the variable is</div><div class='del'>-  referenced.  The setter function is called when the variable is set to a</div><div class='del'>-  value.  The prototype for getter/setter functions are:</div><div class='del'>-</div><div class='del'>-    VALUE getter(ID id)</div><div class='del'>-    void setter(VALUE val, ID id)</div><div class='del'>-</div><div class='del'>-  The getter function must return the value for the access.</div><div class='del'>-</div><div class='del'>-void rb_define_hooked_variable(const char *name, VALUE *var, VALUE (*getter)(), VALUE (*setter)()) ::</div><div class='del'>-</div><div class='del'>-  Defines hooked variable.  It's a virtual variable with a C variable.</div><div class='del'>-  The getter is called as</div><div class='del'>-</div><div class='del'>-    VALUE getter(ID id, VALUE *var)</div><div class='del'>-</div><div class='del'>-  returning a new value.  The setter is called as</div><div class='del'>-</div><div class='del'>-    void setter(VALUE val, ID id, VALUE *var)</div><div class='del'>-</div><div class='del'>-  GC requires C global variables which hold Ruby values to be marked.</div><div class='del'>-</div><div class='del'>-void rb_global_variable(VALUE *var)</div><div class='del'>-</div><div class='del'>-  Tells GC to protect these variables.</div><div class='del'>-</div><div class='del'>-== Constant Definition</div><div class='del'>-</div><div class='del'>-void rb_define_const(VALUE klass, const char *name, VALUE val) ::</div><div class='del'>-</div><div class='del'>-  Defines a new constant under the class/module.</div><div class='del'>-</div><div class='del'>-void rb_define_global_const(const char *name, VALUE val) ::</div><div class='del'>-</div><div class='del'>-  Defines a global constant.  This is just the same as</div><div class='del'>-</div><div class='del'>-    rb_define_const(cKernal, name, val)</div><div class='del'>-</div><div class='del'>-== Method Definition</div><div class='del'>-</div><div class='del'>-rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::</div><div class='del'>-</div><div class='del'>-  Defines a method for the class.  func is the function pointer.  argc</div><div class='del'>-  is the number of arguments.  if argc is -1, the function will receive</div><div class='del'>-  3 arguments: argc, argv, and self.  if argc is -2, the function will</div><div class='del'>-  receive 2 arguments, self and args, where args is a Ruby array of</div><div class='del'>-  the method arguments.</div><div class='del'>-</div><div class='del'>-rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::</div><div class='del'>-</div><div class='del'>-  Defines a private method for the class.  Arguments are same as</div><div class='del'>-  rb_define_method().</div><div class='del'>-</div><div class='del'>-rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::</div><div class='del'>-</div><div class='del'>-  Defines a singleton method.  Arguments are same as rb_define_method().</div><div class='del'>-</div><div class='del'>-rb_scan_args(int argc, VALUE *argv, const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  Retrieve argument from argc and argv to given VALUE references</div><div class='del'>-  according to the format string.  The format can be described in ABNF</div><div class='del'>-  as follows:</div><div class='del'>-</div><div class='del'>-    scan-arg-spec  := param-arg-spec [option-hash-arg-spec] [block-arg-spec]</div><div class='del'>-</div><div class='del'>-    param-arg-spec := pre-arg-spec [post-arg-spec] / post-arg-spec /</div><div class='del'>-                      pre-opt-post-arg-spec</div><div class='del'>-    pre-arg-spec   := num-of-leading-mandatory-args [num-of-optional-args]</div><div class='del'>-    post-arg-spec  := sym-for-variable-length-args</div><div class='del'>-                      [num-of-trailing-mandatory-args]</div><div class='del'>-    pre-opt-post-arg-spec := num-of-leading-mandatory-args num-of-optional-args</div><div class='del'>-                             num-of-trailing-mandatory-args</div><div class='del'>-    option-hash-arg-spec := sym-for-option-hash-arg</div><div class='del'>-    block-arg-spec := sym-for-block-arg</div><div class='del'>-</div><div class='del'>-    num-of-leading-mandatory-args  := DIGIT ; The number of leading</div><div class='del'>-                                            ; mandatory arguments</div><div class='del'>-    num-of-optional-args           := DIGIT ; The number of optional</div><div class='del'>-                                            ; arguments</div><div class='del'>-    sym-for-variable-length-args   := "*"   ; Indicates that variable</div><div class='del'>-                                            ; length arguments are</div><div class='del'>-                                            ; captured as a ruby array</div><div class='del'>-    num-of-trailing-mandatory-args := DIGIT ; The number of trailing</div><div class='del'>-                                            ; mandatory arguments</div><div class='del'>-    sym-for-option-hash-arg        := ":"   ; Indicates that an option</div><div class='del'>-                                            ; hash is captured if the last</div><div class='del'>-                                            ; argument is a hash or can be</div><div class='del'>-                                            ; converted to a hash with</div><div class='del'>-                                            ; #to_hash.  When the last</div><div class='del'>-                                            ; argument is nil, it is</div><div class='del'>-                                            ; captured if it is not</div><div class='del'>-                                            ; ambiguous to take it as</div><div class='del'>-                                            ; empty option hash; i.e. '*'</div><div class='del'>-                                            ; is not specified and</div><div class='del'>-                                            ; arguments are given more</div><div class='del'>-                                            ; than sufficient.</div><div class='del'>-    sym-for-block-arg              := "&amp;"   ; Indicates that an iterator</div><div class='del'>-                                            ; block should be captured if</div><div class='del'>-                                            ; given</div><div class='del'>-</div><div class='del'>-  For example, "12" means that the method requires at least one</div><div class='del'>-  argument, and at most receives three (1+2) arguments.  So, the format</div><div class='del'>-  string must be followed by three variable references, which are to be</div><div class='del'>-  assigned to captured arguments.  For omitted arguments, variables are</div><div class='del'>-  set to Qnil.  NULL can be put in place of a variable reference, which</div><div class='del'>-  means the corresponding captured argument(s) should be just dropped.</div><div class='del'>-</div><div class='del'>-  The number of given arguments, excluding an option hash or iterator</div><div class='del'>-  block, is returned.</div><div class='del'>-</div><div class='del'>-int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *values)</div><div class='del'>-</div><div class='del'>-  Retrieves argument VALUEs bound to keywords, which directed by +table+</div><div class='del'>-  into +values+.  First +required+ number of IDs referred by +table+ are</div><div class='del'>-  mandatory, and succeeding +optional+ (- +optional+ - 1 if</div><div class='del'>-  +optional+ is negative) number of IDs are optional.  If a</div><div class='del'>-  mandatory key is not contained in +keyword_hash+, raises "missing</div><div class='del'>-  keyword" +ArgumentError+.  If an optional key is not present in</div><div class='del'>-  +keyword_hash+, the corresponding element in +values+ is not changed.</div><div class='del'>-  If +optional+ is negative, rest of +keyword_hash+ are stored in the</div><div class='del'>-  next to optional +values+ as a new Hash, otherwise raises "unknown</div><div class='del'>-  keyword" +ArgumentError+.</div><div class='del'>-</div><div class='del'>-VALUE rb_extract_keywords(VALUE *original_hash)</div><div class='del'>-</div><div class='del'>-  Extracts pairs whose key is a symbol into a new hash from a hash</div><div class='del'>-  object referred by +original_hash+.  If the original hash contains</div><div class='del'>-  non-symbol keys, then they are copied to another hash and the new hash</div><div class='del'>-  is stored through +original_hash+, else 0 is stored.</div><div class='del'>-</div><div class='del'>-== Invoking Ruby method</div><div class='del'>-</div><div class='del'>-VALUE rb_funcall(VALUE recv, ID mid, int narg, ...) ::</div><div class='del'>-</div><div class='del'>-  Invokes a method.  To retrieve mid from a method name, use rb_intern().</div><div class='del'>-  Able to call even private/protected methods.</div><div class='del'>-</div><div class='del'>-VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv) ::</div><div class='del'>-VALUE rb_funcallv(VALUE recv, ID mid, int argc, VALUE *argv) ::</div><div class='del'>-</div><div class='del'>-  Invokes a method, passing arguments as an array of values.</div><div class='del'>-  Able to call even private/protected methods.</div><div class='del'>-</div><div class='del'>-VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, VALUE *argv) ::</div><div class='del'>-</div><div class='del'>-  Invokes a method, passing arguments as an array of values.</div><div class='del'>-  Able to call only public methods.</div><div class='del'>-</div><div class='del'>-VALUE rb_eval_string(const char *str) ::</div><div class='del'>-</div><div class='del'>-  Compiles and executes the string as a Ruby program.</div><div class='del'>-</div><div class='del'>-ID rb_intern(const char *name) ::</div><div class='del'>-</div><div class='del'>-  Returns ID corresponding to the name.</div><div class='del'>-</div><div class='del'>-char *rb_id2name(ID id) ::</div><div class='del'>-</div><div class='del'>-  Returns the name corresponding ID.</div><div class='del'>-</div><div class='del'>-char *rb_class2name(VALUE klass) ::</div><div class='del'>-</div><div class='del'>-  Returns the name of the class.</div><div class='del'>-</div><div class='del'>-int rb_respond_to(VALUE object, ID id) ::</div><div class='del'>-</div><div class='del'>-  Returns true if the object responds to the message specified by id.</div><div class='del'>-</div><div class='del'>-== Instance Variables</div><div class='del'>-</div><div class='del'>-VALUE rb_iv_get(VALUE obj, const char *name) ::</div><div class='del'>-</div><div class='del'>-  Retrieve the value of the instance variable.  If the name is not</div><div class='del'>-  prefixed by `@', that variable shall be inaccessible from Ruby.</div><div class='del'>-</div><div class='del'>-VALUE rb_iv_set(VALUE obj, const char *name, VALUE val) ::</div><div class='del'>-</div><div class='del'>-  Sets the value of the instance variable.</div><div class='del'>-</div><div class='del'>-== Control Structure</div><div class='del'>-</div><div class='del'>-VALUE rb_block_call(VALUE recv, ID mid, int argc, VALUE * argv, VALUE (*func) (ANYARGS), VALUE data2) ::</div><div class='del'>-</div><div class='del'>-  Calls a method on the recv, with the method name specified by the</div><div class='del'>-  symbol mid, with argc arguments in argv, supplying func as the</div><div class='del'>-  block. When func is called as the block, it will receive the value</div><div class='del'>-  from yield as the first argument, and data2 as the second argument.</div><div class='del'>-  When yielded with multiple values (in C, rb_yield_values(),</div><div class='del'>-  rb_yield_values2() and rb_yield_splat()), data2 is packed as an Array,</div><div class='del'>-  whereas yielded values can be gotten via argc/argv of the third/fourth</div><div class='del'>-  arguments.</div><div class='del'>-</div><div class='del'>-[OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2) ::</div><div class='del'>-</div><div class='del'>-  Calls the function func1, supplying func2 as the block.  func1 will be</div><div class='del'>-  called with the argument arg1.  func2 receives the value from yield as</div><div class='del'>-  the first argument, arg2 as the second argument.</div><div class='del'>-</div><div class='del'>-  When rb_iterate is used in 1.9, func1 has to call some Ruby-level method.</div><div class='del'>-  This function is obsolete since 1.9; use rb_block_call instead.</div><div class='del'>-</div><div class='del'>-VALUE rb_yield(VALUE val) ::</div><div class='del'>-</div><div class='del'>-  Evaluates the block with value val.</div><div class='del'>-</div><div class='del'>-VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::</div><div class='del'>-</div><div class='del'>-  Calls the function func1, with arg1 as the argument.  If an exception</div><div class='del'>-  occurs during func1, it calls func2 with arg2 as the argument.  The</div><div class='del'>-  return value of rb_rescue() is the return value from func1 if no</div><div class='del'>-  exception occurs, from func2 otherwise.</div><div class='del'>-</div><div class='del'>-VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::</div><div class='del'>-</div><div class='del'>-  Calls the function func1 with arg1 as the argument, then calls func2</div><div class='del'>-  with arg2 if execution terminated.  The return value from</div><div class='del'>-  rb_ensure() is that of func1 when no exception occurred.</div><div class='del'>-</div><div class='del'>-VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state) ::</div><div class='del'>-</div><div class='del'>-  Calls the function func with arg as the argument.  If no exception</div><div class='del'>-  occurred during func, it returns the result of func and *state is zero.</div><div class='del'>-  Otherwise, it returns Qnil and sets *state to nonzero.  If state is</div><div class='del'>-  NULL, it is not set in both cases.</div><div class='del'>-  You have to clear the error info with rb_set_errinfo(Qnil) when</div><div class='del'>-  ignoring the caught exception.</div><div class='del'>-</div><div class='del'>-void rb_jump_tag(int state) ::</div><div class='del'>-</div><div class='del'>-  Continues the exception caught by rb_protect() and rb_eval_string_protect().</div><div class='del'>-  state must be the returned value from those functions.  This function</div><div class='del'>-  never return to the caller.</div><div class='del'>-</div><div class='del'>-void rb_iter_break() ::</div><div class='del'>-</div><div class='del'>-  Exits from the current innermost block.  This function never return to</div><div class='del'>-  the caller.</div><div class='del'>-</div><div class='del'>-void rb_iter_break_value(VALUE value) ::</div><div class='del'>-</div><div class='del'>-  Exits from the current innermost block with the value.  The block will</div><div class='del'>-  return the given argument value.  This function never return to the</div><div class='del'>-  caller.</div><div class='del'>-</div><div class='del'>-== Exceptions and Errors</div><div class='del'>-</div><div class='del'>-void rb_warn(const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  Prints a warning message according to a printf-like format.</div><div class='del'>-</div><div class='del'>-void rb_warning(const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  Prints a warning message according to a printf-like format, if</div><div class='del'>-  $VERBOSE is true.</div><div class='del'>-</div><div class='del'>-void rb_raise(rb_eRuntimeError, const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  Raises RuntimeError.  The fmt is a format string just like printf().</div><div class='del'>-</div><div class='del'>-void rb_raise(VALUE exception, const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  Raises a class exception.  The fmt is a format string just like printf().</div><div class='del'>-</div><div class='del'>-void rb_fatal(const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  Raises a fatal error, terminates the interpreter.  No exception handling</div><div class='del'>-  will be done for fatal errors, but ensure blocks will be executed.</div><div class='del'>-</div><div class='del'>-void rb_bug(const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  Terminates the interpreter immediately.  This function should be</div><div class='del'>-  called under the situation caused by the bug in the interpreter.  No</div><div class='del'>-  exception handling nor ensure execution will be done.</div><div class='del'>-</div><div class='del'>-Note: In the format string, "%"PRIsVALUE can be used for Object#to_s</div><div class='del'>-(or Object#inspect if '+' flag is set) output (and related argument</div><div class='del'>-must be a VALUE).  Since it conflicts with "%i", for integers in</div><div class='del'>-format strings, use "%d".</div><div class='del'>-</div><div class='del'>-== Initialize and Start the Interpreter</div><div class='del'>-</div><div class='del'>-The embedding API functions are below (not needed for extension libraries):</div><div class='del'>-</div><div class='del'>-void ruby_init() ::</div><div class='del'>-</div><div class='del'>-  Initializes the interpreter.</div><div class='del'>-</div><div class='del'>-void *ruby_options(int argc, char **argv) ::</div><div class='del'>-</div><div class='del'>-  Process command line arguments for the interpreter.</div><div class='del'>-  And compiles the Ruby source to execute.</div><div class='del'>-  It returns an opaque pointer to the compiled source</div><div class='del'>-  or an internal special value.</div><div class='del'>-</div><div class='del'>-int ruby_run_node(void *n) ::</div><div class='del'>-</div><div class='del'>-  Runs the given compiled source and exits this process.</div><div class='del'>-  It returns EXIT_SUCCESS if successfully runs the source.</div><div class='del'>-  Otherwise, it returns other value.</div><div class='del'>-</div><div class='del'>-void ruby_script(char *name) ::</div><div class='del'>-</div><div class='del'>-  Specifies the name of the script ($0).</div><div class='del'>-</div><div class='del'>-== Hooks for the Interpreter Events</div><div class='del'>-</div><div class='del'>-  void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,</div><div class='del'>-                         VALUE data)</div><div class='del'>-</div><div class='del'>-Adds a hook function for the specified interpreter events.</div><div class='del'>-events should be OR'ed value of:</div><div class='del'>-</div><div class='del'>-  RUBY_EVENT_LINE</div><div class='del'>-  RUBY_EVENT_CLASS</div><div class='del'>-  RUBY_EVENT_END</div><div class='del'>-  RUBY_EVENT_CALL</div><div class='del'>-  RUBY_EVENT_RETURN</div><div class='del'>-  RUBY_EVENT_C_CALL</div><div class='del'>-  RUBY_EVENT_C_RETURN</div><div class='del'>-  RUBY_EVENT_RAISE</div><div class='del'>-  RUBY_EVENT_ALL</div><div class='del'>-</div><div class='del'>-The definition of rb_event_hook_func_t is below:</div><div class='del'>-</div><div class='del'>-  typedef void (*rb_event_hook_func_t)(rb_event_t event, VALUE data,</div><div class='del'>-                                       VALUE self, ID id, VALUE klass)</div><div class='del'>-</div><div class='del'>-The third argument `data' to rb_add_event_hook() is passed to the hook</div><div class='del'>-function as the second argument, which was the pointer to the current</div><div class='del'>-NODE in 1.8.  See RB_EVENT_HOOKS_HAVE_CALLBACK_DATA below.</div><div class='del'>-</div><div class='del'>-  int rb_remove_event_hook(rb_event_hook_func_t func)</div><div class='del'>-</div><div class='del'>-Removes the specified hook function.</div><div class='del'>-</div><div class='del'>-== Macros for Compatibility</div><div class='del'>-</div><div class='del'>-Some macros to check API compatibilities are available by default.</div><div class='del'>-</div><div class='del'>-NORETURN_STYLE_NEW ::</div><div class='del'>-</div><div class='del'>-  Means that NORETURN macro is functional style instead of prefix.</div><div class='del'>-</div><div class='del'>-HAVE_RB_DEFINE_ALLOC_FUNC ::</div><div class='del'>-</div><div class='del'>-  Means that function rb_define_alloc_func() is provided, that means the</div><div class='del'>-  allocation framework is used.  This is same as the result of</div><div class='del'>-  have_func("rb_define_alloc_func", "ruby.h").</div><div class='del'>-</div><div class='del'>-HAVE_RB_REG_NEW_STR ::</div><div class='del'>-</div><div class='del'>-  Means that function rb_reg_new_str() is provided, that creates Regexp</div><div class='del'>-  object from String object.  This is same as the result of</div><div class='del'>-  have_func("rb_reg_new_str", "ruby.h").</div><div class='del'>-</div><div class='del'>-HAVE_RB_IO_T ::</div><div class='del'>-</div><div class='del'>-  Means that type rb_io_t is provided.</div><div class='del'>-</div><div class='del'>-USE_SYMBOL_AS_METHOD_NAME ::</div><div class='del'>-</div><div class='del'>-  Means that Symbols will be returned as method names, e.g.,</div><div class='del'>-  Module#methods, #singleton_methods and so on.</div><div class='del'>-</div><div class='del'>-HAVE_RUBY_*_H ::</div><div class='del'>-</div><div class='del'>-  Defined in ruby.h and means corresponding header is available.  For</div><div class='del'>-  instance, when HAVE_RUBY_ST_H is defined you should use ruby/st.h not</div><div class='del'>-  mere st.h.</div><div class='del'>-</div><div class='del'>-RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ::</div><div class='del'>-</div><div class='del'>-  Means that rb_add_event_hook() takes the third argument `data', to be</div><div class='del'>-  passed to the given event hook function.</div><div class='del'>-</div><div class='del'>-= Appendix C. Functions available for use in extconf.rb</div><div class='del'>-</div><div class='del'>-See documentation for {mkmf}[rdoc-ref:MakeMakefile].</div><div class='del'>-</div><div class='del'>-= Appendix D. Generational GC</div><div class='del'>-</div><div class='del'>-Ruby 2.1 introduced a generational garbage collector (called RGenGC).</div><div class='del'>-RGenGC (mostly) keeps compatibility.</div><div class='del'>-</div><div class='del'>-Generally, the use of the technique called write barriers is required in</div><div class='del'>-extension libraries for generational GC</div><div class='del'>-(http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29).</div><div class='del'>-RGenGC works fine without write barriers in extension libraries.</div><div class='del'>-</div><div class='del'>-If your library adheres to the following tips, performance can</div><div class='del'>-be further improved. Especially, the "Don't touch pointers directly" section is</div><div class='del'>-important.</div><div class='del'>-</div><div class='del'>-== Incompatibility</div><div class='del'>-</div><div class='del'>-You can't write RBASIC(obj)-&gt;klass field directly because it is const</div><div class='del'>-value now.</div><div class='del'>-</div><div class='del'>-Basically you should not write this field because MRI expects it to be</div><div class='del'>-an immutable field, but if you want to do it in your extension you can</div><div class='del'>-use the following functions:</div><div class='del'>-</div><div class='del'>-VALUE rb_obj_hide(VALUE obj) ::</div><div class='del'>-</div><div class='del'>-  Clear RBasic::klass field. The object will be an internal object.</div><div class='del'>-  ObjectSpace::each_object can't find this object.</div><div class='del'>-</div><div class='del'>-VALUE rb_obj_reveal(VALUE obj, VALUE klass) ::</div><div class='del'>-</div><div class='del'>-  Reset RBasic::klass to be klass.</div><div class='del'>-  We expect the `klass' is hidden class by rb_obj_hide().</div><div class='del'>-</div><div class='del'>-== Write barriers</div><div class='del'>-</div><div class='del'>-RGenGC doesn't require write barriers to support generational GC.</div><div class='del'>-However, caring about write barrier can improve the performance of</div><div class='del'>-RGenGC. Please check the following tips.</div><div class='del'>-</div><div class='del'>-=== Don't touch pointers directly</div><div class='del'>-</div><div class='del'>-In MRI (include/ruby/ruby.h), some macros to acquire pointers to the</div><div class='del'>-internal data structures are supported such as RARRAY_PTR(),</div><div class='del'>-RSTRUCT_PTR() and so on.</div><div class='del'>-</div><div class='del'>-DO NOT USE THESE MACROS and instead use the corresponding C-APIs such as</div><div class='del'>-rb_ary_aref(), rb_ary_store() and so on.</div><div class='del'>-</div><div class='del'>-=== Consider whether to insert write barriers</div><div class='del'>-</div><div class='del'>-You don't need to care about write barriers if you only use built-in</div><div class='del'>-types.</div><div class='del'>-</div><div class='del'>-If you support T_DATA objects, you may consider using write barriers.</div><div class='del'>-</div><div class='del'>-Inserting write barriers into T_DATA objects only works with the</div><div class='del'>-following type objects: (a) long-lived objects, (b) when a huge number</div><div class='del'>-of objects are generated and (c) container-type objects that have</div><div class='del'>-references to other objects. If your extension provides such a type of</div><div class='del'>-T_DATA objects, consider inserting write barriers.</div><div class='del'>-</div><div class='del'>-(a): short-lived objects don't become old generation objects.</div><div class='del'>-(b): only a few oldgen objects don't have performance impact.</div><div class='del'>-(c): only a few references don't have performance impact.</div><div class='del'>-</div><div class='del'>-Inserting write barriers is a very difficult hack, it is easy to</div><div class='del'>-introduce critical bugs. And inserting write barriers has several areas</div><div class='del'>-of overhead. Basically we don't recommend you insert write barriers.</div><div class='del'>-Please carefully consider the risks.</div><div class='del'>-</div><div class='del'>-=== Combine with built-in types</div><div class='del'>-</div><div class='del'>-Please consider utilizing built-in types. Most built-in types support</div><div class='del'>-write barrier, so you can use them to avoid manually inserting write</div><div class='del'>-barriers.</div><div class='del'>-</div><div class='del'>-For example, if your T_DATA has references to other objects, then you</div><div class='del'>-can move these references to Array. A T_DATA object only has a reference</div><div class='del'>-to an array object. Or you can also use a Struct object to gather a</div><div class='del'>-T_DATA object (without any references) and an that Array contains</div><div class='del'>-references.</div><div class='del'>-</div><div class='del'>-With use of such techniques, you don't need to insert write barriers</div><div class='del'>-anymore.</div><div class='del'>-</div><div class='del'>-=== Insert write barriers</div><div class='del'>-</div><div class='del'>-[AGAIN] Inserting write barriers is a very difficult hack, and it is</div><div class='del'>-easy to introduce critical bugs. And inserting write barriers has</div><div class='del'>-several areas of overhead. Basically we don't recommend you insert write</div><div class='del'>-barriers. Please carefully consider the risks.</div><div class='del'>-</div><div class='del'>-Before inserting write barriers, you need to know about RGenGC algorithm</div><div class='del'>-(gc.c will help you). Macros and functions to insert write barriers are</div><div class='del'>-available in in include/ruby/ruby.h. An example is available in iseq.c.</div><div class='del'>-</div><div class='del'>-For a complete guide for RGenGC and write barriers, please refer to</div><div class='del'>-&lt;https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/RGenGC&gt;.</div><div class='del'>-</div><div class='del'>-= Appendix E. RB_GC_GUARD to protect from premature GC</div><div class='del'>-</div><div class='del'>-C Ruby currently uses conservative garbage collection, thus VALUE</div><div class='del'>-variables must remain visible on the stack or registers to ensure any</div><div class='del'>-associated data remains usable.  Optimizing C compilers are not designed</div><div class='del'>-with conservative garbage collection in mind, so they may optimize away</div><div class='del'>-the original VALUE even if the code depends on data associated with that</div><div class='del'>-VALUE.</div><div class='del'>-</div><div class='del'>-The following example illustrates the use of RB_GC_GUARD to ensure</div><div class='del'>-the contents of sptr remain valid while the second invocation of</div><div class='del'>-rb_str_new_cstr is running.</div><div class='del'>-</div><div class='del'>-  VALUE s, w;</div><div class='del'>-  const char *sptr;</div><div class='del'>-</div><div class='del'>-  s = rb_str_new_cstr("hello world!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");</div><div class='del'>-  sptr = RSTRING_PTR(s);</div><div class='del'>-  w = rb_str_new_cstr(sptr + 6); /* Possible GC invocation */</div><div class='del'>-</div><div class='del'>-  RB_GC_GUARD(s); /* ensure s (and thus sptr) do not get GC-ed */</div><div class='del'>-</div><div class='del'>-In the above example, RB_GC_GUARD must be placed _after_ the last use of</div><div class='del'>-sptr.  Placing RB_GC_GUARD before dereferencing sptr would be of no use.</div><div class='del'>-RB_GC_GUARD is only effective on the VALUE data type, not converted C</div><div class='del'>-data types.</div><div class='del'>-</div><div class='del'>-RB_GC_GUARD would not be necessary at all in the above example if</div><div class='del'>-non-inlined function calls are made on the `s' VALUE after sptr is</div><div class='del'>-dereferenced.  Thus, in the above example, calling any un-inlined</div><div class='del'>-function on `s' such as:</div><div class='del'>-</div><div class='del'>-  rb_str_modify(s);</div><div class='del'>-</div><div class='del'>-Will ensure `s' stays on the stack or register to prevent a</div><div class='del'>-GC invocation from prematurely freeing it.</div><div class='del'>-</div><div class='del'>-Using the RB_GC_GUARD macro is preferable to using the "volatile"</div><div class='del'>-keyword in C.  RB_GC_GUARD has the following advantages:</div><div class='del'>-</div><div class='del'>-1) the intent of the macro use is clear</div><div class='del'>-</div><div class='del'>-2) RB_GC_GUARD only affects its call site, "volatile" generates some</div><div class='del'>-   extra code every time the variable is used, hurting optimization.</div><div class='del'>-</div><div class='del'>-3) "volatile" implementations may be buggy/inconsistent in some</div><div class='del'>-   compilers and architectures. RB_GC_GUARD is customizable for broken</div><div class='del'>-   systems/compilers without those without negatively affecting other</div><div class='del'>-   systems.</div><div class='del'>-</div><div class='del'>-/*</div><div class='del'>- * Local variables:</div><div class='del'>- * fill-column: 70</div><div class='del'>- * end:</div><div class='del'>- */</div><div class='add'>+Moved to doc/extension.rdoc</div><div class='head'>diff --git a/README.EXT.ja b/README.EXT.ja<br/>index f4255ebb69..f884ecbb0e 100644<br/>--- a/<a href='/ruby.git/tree/README.EXT.ja?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>README.EXT.ja</a><br/>+++ b/<a href='/ruby.git/tree/README.EXT.ja?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>README.EXT.ja</a></div><div class='hunk'>@@ -1,1719 +1 @@</div><div class='del'>-# README.EXT.ja -  -*- RDoc -*- created at: Mon Aug  7 16:45:54 JST 1995</div><div class='del'>-</div><div class='del'>-Rubyã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã®ä½œã‚Šæ–¹ã‚’èª¬æ˜Žã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-= åŸºç¤ŽçŸ¥è­˜</div><div class='del'>-</div><div class='del'>-Cã®å¤‰æ•°ã«ã¯åž‹ãŒã‚ã‚Šï¼Œãƒ‡ãƒ¼ã‚¿ã«ã¯åž‹ãŒã‚ã‚Šã¾ã›ã‚“ï¼Žã§ã™ã‹ã‚‰ï¼ŒãŸ</div><div class='del'>-ã¨ãˆã°ãƒã‚¤ãƒ³ã‚¿ã‚’intã®å¤‰æ•°ã«ä»£å…¥ã™ã‚‹ã¨ï¼Œãã®å€¤ã¯æ•´æ•°ã¨ã—ã¦å–</div><div class='del'>-ã‚Šæ‰±ã‚ã‚Œã¾ã™ï¼Žé€†ã«Rubyã®å¤‰æ•°ã«ã¯åž‹ãŒãªãï¼Œãƒ‡ãƒ¼ã‚¿ã«åž‹ãŒã‚ã‚Šã¾</div><div class='del'>-ã™ï¼Žã“ã®é•ã„ã®ãŸã‚ï¼ŒCã¨Rubyã¯ç›¸äº’ã«å¤‰æ›ã—ãªã‘ã‚Œã°ï¼ŒãŠäº’ã„ã®</div><div class='del'>-ãƒ‡ãƒ¼ã‚¿ã‚’ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ï¼Ž</div><div class='del'>-</div><div class='del'>-Rubyã®ãƒ‡ãƒ¼ã‚¿ã¯VALUEã¨ã„ã†Cã®åž‹ã§è¡¨ç¾ã•ã‚Œã¾ã™ï¼ŽVALUEåž‹ã®ãƒ‡ãƒ¼</div><div class='del'>-ã‚¿ã¯ãã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã‚’è‡ªåˆ†ã§çŸ¥ã£ã¦ã„ã¾ã™ï¼Žã“ã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã¨</div><div class='del'>-ã„ã†ã®ã¯ãƒ‡ãƒ¼ã‚¿(ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆ)ã®å®Ÿéš›ã®æ§‹é€ ã‚’æ„å‘³ã—ã¦ã„ã¦ï¼ŒRuby</div><div class='del'>-ã®ã‚¯ãƒ©ã‚¹ã¨ã¯ã¾ãŸé•ã£ãŸã‚‚ã®ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUEã‹ã‚‰Cã«ã¨ã£ã¦æ„å‘³ã®ã‚ã‚‹ãƒ‡ãƒ¼ã‚¿ã‚’å–ã‚Šå‡ºã™ãŸã‚ã«ã¯</div><div class='del'>-</div><div class='del'>-1. VALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã‚’çŸ¥ã‚‹</div><div class='del'>-2. VALUEã‚’Cã®ãƒ‡ãƒ¼ã‚¿ã«å¤‰æ›ã™ã‚‹</div><div class='del'>-</div><div class='del'>-ã®ä¸¡æ–¹ãŒå¿…è¦ã§ã™ï¼Ž(1)ã‚’å¿˜ã‚Œã‚‹ã¨é–“é•ã£ãŸãƒ‡ãƒ¼ã‚¿ã®å¤‰æ›ãŒè¡Œã‚ã‚Œ</div><div class='del'>-ã¦ï¼Œæœ€æ‚ªãƒ—ãƒ­ã‚°ãƒ©ãƒ ãŒcore dumpã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—</div><div class='del'>-</div><div class='del'>-Rubyã«ã¯ãƒ¦ãƒ¼ã‚¶ãŒä½¿ã†å¯èƒ½æ€§ã®ã‚ã‚‹ä»¥ä¸‹ã®ã‚¿ã‚¤ãƒ—ãŒã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-T_NIL      :: nil</div><div class='del'>-T_OBJECT   :: é€šå¸¸ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆ</div><div class='del'>-T_CLASS    :: ã‚¯ãƒ©ã‚¹</div><div class='del'>-T_MODULE   :: ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«</div><div class='del'>-T_FLOAT    :: æµ®å‹•å°æ•°ç‚¹æ•°</div><div class='del'>-T_STRING   :: æ–‡å­—åˆ—</div><div class='del'>-T_REGEXP   :: æ­£è¦è¡¨ç¾</div><div class='del'>-T_ARRAY    :: é…åˆ—</div><div class='del'>-T_HASH     :: é€£æƒ³é…åˆ—</div><div class='del'>-T_STRUCT   :: (Rubyã®)æ§‹é€ ä½“</div><div class='del'>-T_BIGNUM   :: å¤šå€é•·æ•´æ•°</div><div class='del'>-T_FIXNUM   :: Fixnum(31bitã¾ãŸã¯63bité•·æ•´æ•°)</div><div class='del'>-T_COMPLEX  :: è¤‡ç´ æ•°</div><div class='del'>-T_RATIONAL :: æœ‰ç†æ•°</div><div class='del'>-T_FILE     :: å…¥å‡ºåŠ›</div><div class='del'>-T_TRUE     :: çœŸ</div><div class='del'>-T_FALSE    :: å½</div><div class='del'>-T_DATA     :: ãƒ‡ãƒ¼ã‚¿</div><div class='del'>-T_SYMBOL   :: ã‚·ãƒ³ãƒœãƒ«</div><div class='del'>-</div><div class='del'>-ãã®ä»–ã«å†…éƒ¨ã§åˆ©ç”¨ã•ã‚Œã¦ã„ã‚‹ä»¥ä¸‹ã®ã‚¿ã‚¤ãƒ—ãŒã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  T_ICLASS</div><div class='del'>-  T_MATCH</div><div class='del'>-  T_UNDEF</div><div class='del'>-  T_NODE</div><div class='del'>-  T_ZOMBIE</div><div class='del'>-</div><div class='del'>-ã»ã¨ã‚“ã©ã®ã‚¿ã‚¤ãƒ—ã¯Cã®æ§‹é€ ä½“ã§å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== VALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹</div><div class='del'>-</div><div class='del'>-ruby.hã§ã¯TYPE()ã¨ã„ã†ãƒžã‚¯ãƒ­ãŒå®šç¾©ã•ã‚Œã¦ã„ã¦ï¼ŒVALUEã®ãƒ‡ãƒ¼ã‚¿</div><div class='del'>-ã‚¿ã‚¤ãƒ—ã‚’çŸ¥ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼ŽTYPE()ãƒžã‚¯ãƒ­ã¯ä¸Šã§ç´¹ä»‹ã—ãŸT_XXXX</div><div class='del'>-ã®å½¢å¼ã®å®šæ•°ã‚’è¿”ã—ã¾ã™ï¼ŽVALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã«å¿œã˜ã¦å‡¦ç†ã™ã‚‹</div><div class='del'>-å ´åˆã«ã¯ï¼ŒTYPE()ã®å€¤ã§åˆ†å²ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  switch (TYPE(obj)) {</div><div class='del'>-    case T_FIXNUM:</div><div class='del'>-      /* FIXNUMã®å‡¦ç† */</div><div class='del'>-      break;</div><div class='del'>-    case T_STRING:</div><div class='del'>-      /* æ–‡å­—åˆ—ã®å‡¦ç† */</div><div class='del'>-      break;</div><div class='del'>-    case T_ARRAY:</div><div class='del'>-      /* é…åˆ—ã®å‡¦ç† */</div><div class='del'>-      break;</div><div class='del'>-    default:</div><div class='del'>-      /* ä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ã‚‹ */</div><div class='del'>-      rb_raise(rb_eTypeError, "not valid value");</div><div class='del'>-      break;</div><div class='del'>-  }</div><div class='del'>-</div><div class='del'>-ãã‚Œã¨ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ï¼Œæ­£ã—ããªã‘ã‚Œã°ä¾‹å¤–ã‚’ç™ºç”Ÿã™</div><div class='del'>-ã‚‹é–¢æ•°ãŒç”¨æ„ã•ã‚Œã¦ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void Check_Type(VALUE value, int type)</div><div class='del'>-</div><div class='del'>-ã“ã®é–¢æ•°ã¯valueãŒtypeã§ç„¡ã‘ã‚Œã°ï¼Œä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ã¾ã™ï¼Žå¼•æ•°ã¨</div><div class='del'>-ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸVALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ãŒæ­£ã—ã„ã‹ã©ã†ã‹ãƒã‚§ãƒƒã‚¯ã™</div><div class='del'>-ã‚‹ãŸã‚ã«ã¯ï¼Œã“ã®é–¢æ•°ã‚’ä½¿ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-FIXNUMã¨NILã«é–¢ã—ã¦ã¯ã‚ˆã‚Šé«˜é€Ÿãªåˆ¤åˆ¥ãƒžã‚¯ãƒ­ãŒç”¨æ„ã•ã‚Œã¦ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  FIXNUM_P(obj)</div><div class='del'>-  NIL_P(obj)</div><div class='del'>-</div><div class='del'>-== VALUEã‚’Cã®ãƒ‡ãƒ¼ã‚¿ã«å¤‰æ›ã™ã‚‹</div><div class='del'>-</div><div class='del'>-ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ãŒT_NILï¼ŒT_FALSEï¼ŒT_TRUEã§ã‚ã‚‹æ™‚ï¼Œãƒ‡ãƒ¼ã‚¿ã¯ãã‚Œãž</div><div class='del'>-ã‚Œnilï¼Œfalseï¼Œtrueã§ã™ï¼Žã“ã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã¯ã²ã¨</div><div class='del'>-ã¤ãšã¤ã—ã‹å­˜åœ¨ã—ã¾ã›ã‚“ï¼Ž</div><div class='del'>-</div><div class='del'>-ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ãŒT_FIXNUMã®æ™‚ï¼Œã“ã‚Œã¯31bitã¾ãŸã¯63bitã®ã‚µã‚¤ã‚ºã‚’</div><div class='del'>-æŒã¤æ•´æ•°ã§ã™ï¼Žlongã®ã‚µã‚¤ã‚ºãŒ32bitã®ãƒ—ãƒ©ãƒƒãƒˆãƒ•ã‚©ãƒ¼ãƒ ã§ã‚ã‚Œã°</div><div class='del'>-31bitã«ï¼Œlongã®ã‚µã‚¤ã‚ºãŒ64bitã®ãƒ—ãƒ©ãƒƒãƒˆãƒ•ã‚©ãƒ¼ãƒ ã§ã‚ã‚Œã°63bit</div><div class='del'>-ã«ãªã‚Šã¾ã™. FIXNUM ã‚’ C ã®æ•´æ•°ã«å¤‰æ›ã™ã‚‹ãŸã‚ã«ã¯ãƒžã‚¯ãƒ­</div><div class='del'>-ã€ŒFIX2INT()ã€ã¾ãŸã¯ã€ŒFIX2LONG()ã€ã‚’ä½¿ã„ã¾ã™ï¼Žã“ã‚Œã‚‰ã®ãƒžã‚¯ãƒ­</div><div class='del'>-ã‚’ä½¿ç”¨ã™ã‚‹éš›ã«ã¯äº‹å‰ã«ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ãŒFIXNUMã§ã‚ã‚‹ã“ã¨ã‚’ç¢ºèªã™</div><div class='del'>-ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ãŒï¼Œæ¯”è¼ƒçš„é«˜é€Ÿã«å¤‰æ›ã‚’è¡Œã†ã“ã¨ãŒã§ãã¾ã™ï¼Žã¾</div><div class='del'>-ãŸï¼Œã€ŒFIX2LONG()ã€ã¯ä¾‹å¤–ã‚’ç™ºç”Ÿã—ã¾ã›ã‚“ãŒï¼Œã€ŒFIX2INT()ã€ã¯å¤‰</div><div class='del'>-æ›çµæžœãŒintã®ã‚µã‚¤ã‚ºã«åŽã¾ã‚‰ãªã„å ´åˆã«ã¯ä¾‹å¤–ã‚’ç™ºç”Ÿã—ã¾ã™ï¼Ž</div><div class='del'>-ãã‚Œã‹ã‚‰ï¼ŒFIXNUMã«é™ã‚‰ãšRubyã®ãƒ‡ãƒ¼ã‚¿ã‚’æ•´æ•°ã«å¤‰æ›ã™ã‚‹</div><div class='del'>-ã€ŒNUM2INT()ã€ãŠã‚ˆã³ã€ŒNUM2LONG()ã€ã¨ã„ã†ãƒžã‚¯ãƒ­ãŒã‚ã‚Šã¾ã™ï¼Žã“</div><div class='del'>-ã‚Œã‚‰ã®ãƒžã‚¯ãƒ­ã¯ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã®ãƒã‚§ãƒƒã‚¯ç„¡ã—ã§ä½¿ãˆã¾ã™</div><div class='del'>-(æ•´æ•°ã«å¤‰æ›ã§ããªã„å ´åˆã«ã¯ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹)ï¼ŽåŒæ§˜ã«ãƒã‚§ãƒƒã‚¯ç„¡ã—</div><div class='del'>-ã§ä½¿ãˆã‚‹å¤‰æ›ãƒžã‚¯ãƒ­ã¯doubleã‚’å–ã‚Šå‡ºã™ã€ŒNUM2DBL()ã€ãŒã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-char* ã‚’å–ã‚Šå‡ºã™å ´åˆï¼Œ StringValue() ã¨ StringValuePtr()</div><div class='del'>-ã‚’ä½¿ã„ã¾ã™ï¼Ž</div><div class='del'>-StringValue(var) ã¯ var ãŒ String</div><div class='del'>-ã§ã‚ã‚Œã°ä½•ã‚‚ã›ãšï¼Œãã†ã§ãªã‘ã‚Œã° var ã‚’ var.to_str() ã®çµæžœ</div><div class='del'>-ã«ç½®ãæ›ãˆã‚‹ãƒžã‚¯ãƒ­ï¼ŒStringValuePtr(var) ã¯åŒæ§˜ã« var ã‚’</div><div class='del'>-String ã«ç½®ãæ›ãˆã¦ã‹ã‚‰ var ã®ãƒã‚¤ãƒˆåˆ—è¡¨ç¾ã«å¯¾ã™ã‚‹ char* ã‚’</div><div class='del'>-è¿”ã™ãƒžã‚¯ãƒ­ã§ã™ï¼Žvar ã®å†…å®¹ã‚’ç›´æŽ¥ç½®ãæ›ãˆã‚‹å‡¦ç†ãŒå…¥ã‚‹ã®ã§ï¼Œ</div><div class='del'>-var ã¯ lvalue ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-ã¾ãŸï¼ŒStringValuePtr() ã«é¡žä¼¼ã—ãŸ StringValueCStr() ã¨ã„ã†ãƒž</div><div class='del'>-ã‚¯ãƒ­ã‚‚ã‚ã‚Šã¾ã™ï¼ŽStringValueCStr(var) ã¯ var ã‚’ String ã«ç½®ã</div><div class='del'>-æ›ãˆã¦ã‹ã‚‰ var ã®æ–‡å­—åˆ—è¡¨ç¾ã«å¯¾ã™ã‚‹ char* ã‚’è¿”ã—ã¾ã™ï¼Žè¿”ã•ã‚Œ</div><div class='del'>-ã‚‹æ–‡å­—åˆ—ã®æœ«å°¾ã«ã¯ nul æ–‡å­—ãŒä»˜åŠ ã•ã‚Œã¾ã™ï¼ŽãªãŠï¼Œé€”ä¸­ã« nul</div><div class='del'>-æ–‡å­—ãŒå«ã¾ã‚Œã‚‹å ´åˆã¯ ArgumentError ãŒç™ºç”Ÿã—ã¾ã™ï¼Ž</div><div class='del'>-ä¸€æ–¹ï¼ŒStringValuePtr() ã§ã¯ï¼Œæœ«å°¾ã« nul æ–‡å­—ãŒã‚ã‚‹ä¿è¨¼ã¯ãªãï¼Œ</div><div class='del'>-é€”ä¸­ã« nul æ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ã‚‚ã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-ãã‚Œä»¥å¤–ã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã¯å¯¾å¿œã™ã‚‹Cã®æ§‹é€ ä½“ãŒã‚ã‚Šã¾ã™ï¼Žå¯¾å¿œã™</div><div class='del'>-ã‚‹æ§‹é€ ä½“ã®ã‚ã‚‹VALUEã¯ãã®ã¾ã¾ã‚­ãƒ£ã‚¹ãƒˆ(åž‹å¤‰æ›)ã™ã‚Œã°æ§‹é€ ä½“ã®</div><div class='del'>-ãƒã‚¤ãƒ³ã‚¿ã«å¤‰æ›ã§ãã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-æ§‹é€ ä½“ã¯ã€Œstruct RXxxxxã€ã¨ã„ã†åå‰ã§ruby.hã§å®šç¾©ã•ã‚Œã¦ã„ã¾</div><div class='del'>-ã™ï¼Žä¾‹ãˆã°æ–‡å­—åˆ—ã¯ã€Œstruct RStringã€ã§ã™ï¼Žå®Ÿéš›ã«ä½¿ã†å¯èƒ½æ€§ãŒ</div><div class='del'>-ã‚ã‚‹ã®ã¯æ–‡å­—åˆ—ã¨é…åˆ—ãã‚‰ã„ã ã¨æ€ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-ruby.hã§ã¯æ§‹é€ ä½“ã¸ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ãƒžã‚¯ãƒ­ã‚‚ã€ŒRXXXXX()ã€(å…¨éƒ¨å¤§æ–‡</div><div class='del'>-å­—ã«ã—ãŸã‚‚ã®)ã¨ã„ã†åå‰ã§æä¾›ã•ã‚Œã¦ã„ã¾ã™(ä¾‹: RSTRING())ï¼ŽãŸ</div><div class='del'>-ã ã—ã€æ§‹é€ ä½“ã¸ã®ç›´æŽ¥ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯ã§ãã‚‹ã ã‘é¿ã‘ï¼Œå¯¾å¿œã™ã‚‹</div><div class='del'>-rb_xxxx() ã¨ã„ã£ãŸé–¢æ•°ã‚’ä½¿ã†ã‚ˆã†ã«ã—ã¦ä¸‹ã•ã„ï¼Žä¾‹ãˆã°ï¼Œé…åˆ—ã®</div><div class='del'>-è¦ç´ ã¸ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ï¼Œrb_ary_entry(ary, offset)ï¼Œ</div><div class='del'>-rb_ary_store(ary, offset, obj) ã‚’åˆ©ç”¨ã™ã‚‹ã‚ˆã†ã«ã—ã¦ä¸‹ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-æ§‹é€ ä½“ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’å–ã‚Šå‡ºã™ãƒžã‚¯ãƒ­ãŒæä¾›ã•ã‚Œã¦ã„ã¾ã™ï¼Žæ–‡å­—åˆ—</div><div class='del'>-strã®é•·ã•ã‚’å¾—ã‚‹ãŸã‚ã«ã¯ã€ŒRSTRING_LEN(str)ã€ã¨ã—ï¼Œæ–‡å­—åˆ—strã‚’</div><div class='del'>-char*ã¨ã—ã¦å¾—ã‚‹ãŸã‚ã«ã¯ã€ŒRSTRING_PTR(str)ã€ã¨ã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-Rubyã®æ§‹é€ ä½“ã‚’ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹æ™‚ã«æ°—ã‚’ã¤ã‘ãªã‘ã‚Œã°ãªã‚‰ãªã„ã“</div><div class='del'>-ã¨ã¯ï¼Œé…åˆ—ã‚„æ–‡å­—åˆ—ã®æ§‹é€ ä½“ã®ä¸­èº«ã¯å‚ç…§ã™ã‚‹ã ã‘ã§ï¼Œç›´æŽ¥å¤‰æ›´ã—</div><div class='del'>-ãªã„ã“ã¨ã§ã™ï¼Žç›´æŽ¥å¤‰æ›´ã—ãŸå ´åˆï¼Œã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®å†…å®¹ã®æ•´åˆæ€§ãŒ</div><div class='del'>-ã¨ã‚Œãªããªã£ã¦ï¼Œæ€ã‚ã¬ãƒã‚°ã®åŽŸå› ã«ãªã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== Cã®ãƒ‡ãƒ¼ã‚¿ã‚’VALUEã«å¤‰æ›ã™ã‚‹</div><div class='del'>-</div><div class='del'>-VALUEã®å®Ÿéš›ã®æ§‹é€ ã¯</div><div class='del'>-</div><div class='del'>-FIXNUMã®å ´åˆ ::</div><div class='del'>-</div><div class='del'>-  1bitå·¦ã‚·ãƒ•ãƒˆã—ã¦ï¼ŒLSBã‚’ç«‹ã¦ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-ãã®ä»–ã®ãƒã‚¤ãƒ³ã‚¿ã®å ´åˆ ::</div><div class='del'>-</div><div class='del'>-  ãã®ã¾ã¾VALUEã«ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-ã¨ãªã£ã¦ã„ã¾ã™ï¼Žã‚ˆã£ã¦ï¼ŒLSBã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚Œã°VALUEãŒFIXNUMã‹ã©</div><div class='del'>-ã†ã‹ã‚ã‹ã‚‹ã‚ã‘ã§ã™(ãƒã‚¤ãƒ³ã‚¿ã®LSBãŒç«‹ã£ã¦ã„ãªã„ã“ã¨ã‚’ä»®å®šã—ã¦</div><div class='del'>-ã„ã‚‹)ï¼Ž</div><div class='del'>-</div><div class='del'>-ã§ã™ã‹ã‚‰ï¼ŒFIXNUMä»¥å¤–ã®Rubyã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ§‹é€ ä½“ã¯å˜ã«VALUE</div><div class='del'>-ã«ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ã ã‘ã§VALUEã«å¤‰æ›å‡ºæ¥ã¾ã™ï¼ŽãŸã ã—ï¼Œä»»æ„ã®æ§‹é€ </div><div class='del'>-ä½“ãŒVALUEã«ã‚­ãƒ£ã‚¹ãƒˆå‡ºæ¥ã‚‹ã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“ï¼Žã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ã®</div><div class='del'>-ã¯Rubyã®çŸ¥ã£ã¦ã„ã‚‹æ§‹é€ ä½“(ruby.hã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹struct RXxxx</div><div class='del'>-ã®ã‚‚ã®)ã ã‘ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-FIXNUMã«é–¢ã—ã¦ã¯å¤‰æ›ãƒžã‚¯ãƒ­ã‚’çµŒç”±ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼ŽCã®æ•´æ•°</div><div class='del'>-ã‹ã‚‰VALUEã«å¤‰æ›ã™ã‚‹ãƒžã‚¯ãƒ­ã¯ä»¥ä¸‹ã®ã‚‚ã®ãŒã‚ã‚Šã¾ã™ï¼Žå¿…è¦ã«å¿œã˜</div><div class='del'>-ã¦ä½¿ã„åˆ†ã‘ã¦ãã ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-INT2FIX() :: ã‚‚ã¨ã®æ•´æ•°ãŒ31bitã¾ãŸã¯63bitä»¥å†…ã«åŽã¾ã‚‹è‡ªä¿¡</div><div class='del'>-      	     ãŒã‚ã‚‹æ™‚</div><div class='del'>-INT2NUM() :: ä»»æ„ã®æ•´æ•°ã‹ã‚‰VALUEã¸</div><div class='del'>-</div><div class='del'>-INT2NUM()ã¯æ•´æ•°ãŒFIXNUMã®ç¯„å›²ã«åŽã¾ã‚‰ãªã„å ´åˆï¼ŒBignumã«å¤‰æ›</div><div class='del'>-ã—ã¦ãã‚Œã¾ã™(ãŒï¼Œå°‘ã—é…ã„)ï¼Ž</div><div class='del'>-</div><div class='del'>-== Rubyã®ãƒ‡ãƒ¼ã‚¿ã‚’æ“ä½œã™ã‚‹</div><div class='del'>-</div><div class='del'>-å…ˆç¨‹ã‚‚è¿°ã¹ãŸé€šã‚Šï¼ŒRubyã®æ§‹é€ ä½“ã‚’ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹æ™‚ã«å†…å®¹ã®æ›´æ–°ã‚’</div><div class='del'>-è¡Œã†ã“ã¨ã¯å‹§ã‚ã‚‰ã‚Œã¾ã›ã‚“ï¼Žã§ï¼ŒRubyã®ãƒ‡ãƒ¼ã‚¿ã‚’æ“ä½œã™ã‚‹æ™‚ã«ã¯</div><div class='del'>-RubyãŒç”¨æ„ã—ã¦ã„ã‚‹é–¢æ•°ã‚’ç”¨ã„ã¦ãã ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-ã“ã“ã§ã¯ã‚‚ã£ã¨ã‚‚ä½¿ã‚ã‚Œã‚‹ã§ã‚ã‚ã†æ–‡å­—åˆ—ã¨é…åˆ—ã®ç”Ÿæˆ/æ“ä½œã‚’è¡Œ</div><div class='del'>-ã†é–¢æ•°ã‚’ã‚ã’ã¾ã™(å…¨éƒ¨ã§ã¯ãªã„ã§ã™)ï¼Ž</div><div class='del'>-</div><div class='del'>-=== æ–‡å­—åˆ—ã«å¯¾ã™ã‚‹é–¢æ•°</div><div class='del'>-</div><div class='del'>-rb_str_new(const char *ptr, long len) ::</div><div class='del'>-</div><div class='del'>-  æ–°ã—ã„Rubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_str_new2(const char *ptr)</div><div class='del'>-rb_str_new_cstr(const char *ptr)</div><div class='del'>-</div><div class='del'>-  Cã®æ–‡å­—åˆ—ã‹ã‚‰Rubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Žã“ã®é–¢æ•°ã®æ©Ÿèƒ½ã¯</div><div class='del'>-  rb_str_new(ptr, strlen(ptr))ã¨åŒç­‰ã§ã‚ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_str_new_literal(const char *ptr)</div><div class='del'>-</div><div class='del'>-  Cã®ãƒªãƒ†ãƒ©ãƒ«æ–‡å­—åˆ—ã‹ã‚‰Rubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_tainted_str_new(const char *ptr, long len)</div><div class='del'>-</div><div class='del'>-  æ±šæŸ“ãƒžãƒ¼ã‚¯ãŒä»˜åŠ ã•ã‚ŒãŸæ–°ã—ã„Rubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Žå¤–éƒ¨</div><div class='del'>-  ã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ã«åŸºã¥ãæ–‡å­—åˆ—ã«ã¯æ±šæŸ“ãƒžãƒ¼ã‚¯ãŒä»˜åŠ ã•ã‚Œã‚‹ã¹ã</div><div class='del'>-  ã§ã‚ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_tainted_str_new2(const char *ptr)</div><div class='del'>-rb_tainted_str_new_cstr(const char *ptr)</div><div class='del'>-</div><div class='del'>-  Cã®æ–‡å­—åˆ—ã‹ã‚‰æ±šæŸ“ãƒžãƒ¼ã‚¯ãŒä»˜åŠ ã•ã‚ŒãŸRubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_sprintf(const char *format, ...)</div><div class='del'>-rb_vsprintf(const char *format, va_list ap)</div><div class='del'>-</div><div class='del'>-  Cã®æ–‡å­—åˆ—formatã¨ç¶šãå¼•æ•°ã‚’printf(3)ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã«ã—ãŸãŒã£ã¦</div><div class='del'>-  æ•´å½¢ã—ï¼ŒRubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-  æ³¨æ„: "%"PRIsVALUEãŒObject#to_s('+'ãƒ•ãƒ©ã‚°ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹</div><div class='del'>-  ã¨ãã¯Object#inspect)ã‚’ä½¿ã£ãŸVALUEã®å‡ºåŠ›ã«åˆ©ç”¨ã§ãã‚‹ï¼Žã“ã‚Œ</div><div class='del'>-  ã¯"%i"ã¨è¡çªã™ã‚‹ãŸã‚ï¼Œæ•´æ•°ã«ã¯"%d"ã‚’ä½¿ç”¨ã™ã‚‹ã“ã¨ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_str_cat(VALUE str, const char *ptr, long len)</div><div class='del'>-</div><div class='del'>-  Rubyã®æ–‡å­—åˆ—strã«lenãƒã‚¤ãƒˆã®æ–‡å­—åˆ—ptrã‚’è¿½åŠ ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_str_cat2(VALUE str, const char* ptr)</div><div class='del'>-rb_str_cat_cstr(VALUE str, const char* ptr)</div><div class='del'>-</div><div class='del'>-  Rubyã®æ–‡å­—åˆ—strã«Cã®æ–‡å­—åˆ—ptrã‚’è¿½åŠ ã™ã‚‹ï¼Žã“ã®é–¢æ•°ã®æ©Ÿèƒ½ã¯</div><div class='del'>-  rb_str_cat(str, ptr, strlen(ptr))ã¨åŒç­‰ã§ã‚ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_str_catf(VALUE str, const char* format, ...)</div><div class='del'>-rb_str_vcatf(VALUE str, const char* format, va_list ap)</div><div class='del'>-</div><div class='del'>-  Cã®æ–‡å­—åˆ—formatã¨ç¶šãå¼•æ•°ã‚’printf(3)ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã«ã—ãŸãŒã£ã¦</div><div class='del'>-  æ•´å½¢ã—ï¼ŒRubyã®æ–‡å­—åˆ—strã«è¿½åŠ ã™ã‚‹ï¼Žã“ã®é–¢æ•°ã®æ©Ÿèƒ½ã¯ï¼Œãã‚Œãžã‚Œ</div><div class='del'>-  rb_str_cat2(str, rb_sprintf(format, ...)) ã‚„</div><div class='del'>-  rb_str_cat2(str, rb_vsprintf(format, ap)) ã¨åŒç­‰ã§ã‚ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_enc_str_new(const char *ptr, long len, rb_encoding *enc)</div><div class='del'>-rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc)</div><div class='del'>-</div><div class='del'>-  æŒ‡å®šã•ã‚ŒãŸã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã§Rubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹.</div><div class='del'>-</div><div class='del'>-rb_enc_str_new_literal(const char *ptr)</div><div class='del'>-</div><div class='del'>-  Cã®ãƒªãƒ†ãƒ©ãƒ«æ–‡å­—åˆ—ã‹ã‚‰æŒ‡å®šã•ã‚ŒãŸã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã§Rubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_usascii_str_new(const char *ptr, long len)</div><div class='del'>-rb_usascii_str_new_cstr(const char *ptr)</div><div class='del'>-</div><div class='del'>-  ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ãŒUS-ASCIIã®Rubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹.</div><div class='del'>-</div><div class='del'>-rb_usascii_str_new_literal(const char *ptr)</div><div class='del'>-</div><div class='del'>-  Cã®ãƒªãƒ†ãƒ©ãƒ«æ–‡å­—åˆ—ã‹ã‚‰ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ãŒUS-ASCIIã®Rubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_utf8_str_new(const char *ptr, long len)</div><div class='del'>-rb_utf8_str_new_cstr(const char *ptr)</div><div class='del'>-</div><div class='del'>-  ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ãŒUTF-8ã®Rubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹.</div><div class='del'>-</div><div class='del'>-rb_usascii_str_new_literal(const char *ptr)</div><div class='del'>-</div><div class='del'>-  Cã®ãƒªãƒ†ãƒ©ãƒ«æ–‡å­—åˆ—ã‹ã‚‰ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ãŒUTF-8ã®Rubyã®æ–‡å­—åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_str_resize(VALUE str, long len)</div><div class='del'>-</div><div class='del'>-  Rubyã®æ–‡å­—åˆ—ã®ã‚µã‚¤ã‚ºã‚’lenãƒã‚¤ãƒˆã«å¤‰æ›´ã™ã‚‹ï¼Žstrã®é•·ã•ã¯å‰</div><div class='del'>-  ä»¥ã¦ã‚»ãƒƒãƒˆã•ã‚Œã¦ã„ãªã‘ã‚Œã°ãªã‚‰ãªã„ï¼ŽlenãŒå…ƒã®é•·ã•ã‚ˆã‚Šã‚‚çŸ­</div><div class='del'>-  ã„æ™‚ã¯ï¼Œlenãƒã‚¤ãƒˆã‚’è¶ŠãˆãŸéƒ¨åˆ†ã®å†…å®¹ã¯æ¨ã¦ã‚‰ã‚Œã‚‹ï¼ŽlenãŒå…ƒ</div><div class='del'>-  ã®é•·ã•ã‚ˆã‚Šã‚‚é•·ã„æ™‚ã¯ï¼Œå…ƒã®é•·ã•ã‚’è¶ŠãˆãŸéƒ¨åˆ†ã®å†…å®¹ã¯ä¿å­˜ã•</div><div class='del'>-  ã‚Œãªã„ã§ã‚´ãƒŸã«ãªã‚‹ã ã‚ã†ï¼Žã“ã®é–¢æ•°ã®å‘¼ã³å‡ºã—ã«ã‚ˆã£ã¦</div><div class='del'>-  RSTRING_PTR(str)ãŒå¤‰æ›´ã•ã‚Œã‚‹ã‹ã‚‚ã—ã‚Œãªã„ã“ã¨ã«æ³¨æ„ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_str_set_len(VALUE str, long len)</div><div class='del'>-</div><div class='del'>-  Rubyã®æ–‡å­—åˆ—ã®ã‚µã‚¤ã‚ºã‚’lenãƒã‚¤ãƒˆã«ã‚»ãƒƒãƒˆã™ã‚‹ï¼ŽstrãŒå¤‰æ›´å¯</div><div class='del'>-  èƒ½ã§ãªã‘ã‚Œã°ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹ï¼ŽRSTRING_LEN(str)ã¨ã¯ç„¡é–¢ä¿‚ã«ï¼Œ</div><div class='del'>-  lenãƒã‚¤ãƒˆã¾ã§ã®å†…å®¹ã¯ä¿å­˜ã•ã‚Œã‚‹ï¼Žlenã¯strã®å®¹é‡ã‚’è¶Šãˆã¦ã„</div><div class='del'>-  ã¦ã¯ãªã‚‰ãªã„ï¼Ž</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-== é…åˆ—ã«å¯¾ã™ã‚‹é–¢æ•°</div><div class='del'>-</div><div class='del'>-rb_ary_new()</div><div class='del'>-</div><div class='del'>-  è¦ç´ ãŒ0ã®é…åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_ary_new2(long len)</div><div class='del'>-rb_ary_new_capa(long len)</div><div class='del'>-</div><div class='del'>-  è¦ç´ ãŒ0ã®é…åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Žlenè¦ç´ åˆ†ã®é ˜åŸŸã‚’ã‚ã‚‰ã‹ã˜ã‚å‰²ã‚Š</div><div class='del'>-  å½“ã¦ã¦ãŠãï¼Ž</div><div class='del'>-</div><div class='del'>-rb_ary_new3(long n, ...)</div><div class='del'>-rb_ary_new_from_args(long n, ...)</div><div class='del'>-</div><div class='del'>-  å¼•æ•°ã§æŒ‡å®šã—ãŸnè¦ç´ ã‚’å«ã‚€é…åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_ary_new4(long n, VALUE *elts)</div><div class='del'>-rb_ary_new_from_values(long n, VALUE *elts)</div><div class='del'>-</div><div class='del'>-  é…åˆ—ã§ä¸ŽãˆãŸnè¦ç´ ã®é…åˆ—ã‚’ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_ary_to_ary(VALUE obj)</div><div class='del'>-</div><div class='del'>-  ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é…åˆ—ã«å¤‰æ›ã™ã‚‹.</div><div class='del'>-  Object#to_aryã¨åŒç­‰ã§ã‚ã‚‹.</div><div class='del'>-</div><div class='del'>-ä»–ã«ã‚‚é…åˆ—ã‚’æ“ä½œã™ã‚‹é–¢æ•°ãŒå¤šæ•°ã‚ã‚‹. ã“ã‚Œã‚‰ã¯</div><div class='del'>-å¼•æ•°aryã«é…åˆ—ã‚’æ¸¡ã•ãªã‘ã‚Œã°ãªã‚‰ãªã„. ã•ã‚‚ãªã„ã¨</div><div class='del'>-ã‚³ã‚¢ã‚’åã.</div><div class='del'>-</div><div class='del'>-rb_ary_aref(argc, VALUE *argv, VALUE ary)</div><div class='del'>-</div><div class='del'>-  Array#[]ã¨åŒç­‰.</div><div class='del'>-</div><div class='del'>-rb_ary_entry(VALUE ary, long offset)</div><div class='del'>-</div><div class='del'>-  ary[offset]</div><div class='del'>-</div><div class='del'>-rb_ary_store(VALUE ary, long offset, VALUE obj) ::</div><div class='del'>-</div><div class='del'>-  ary[offset] = obj</div><div class='del'>-</div><div class='del'>-rb_ary_subseq(VALUE ary, long beg, long len)</div><div class='del'>-</div><div class='del'>-  ary[beg, len]</div><div class='del'>-</div><div class='del'>-rb_ary_push(VALUE ary, VALUE val)</div><div class='del'>-rb_ary_pop(VALUE ary)</div><div class='del'>-rb_ary_shift(VALUE ary)</div><div class='del'>-rb_ary_unshift(VALUE ary, VALUE val)</div><div class='del'>-</div><div class='del'>-rb_ary_cat(VALUE ary, const VALUE *ptr, long len)</div><div class='del'>-</div><div class='del'>-  é…åˆ—aryã«ptrã‹ã‚‰lenå€‹ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è¿½åŠ ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-= Rubyã®æ©Ÿèƒ½ã‚’ä½¿ã†</div><div class='del'>-</div><div class='del'>-åŽŸç†çš„ã«Rubyã§æ›¸ã‘ã‚‹ã“ã¨ã¯Cã§ã‚‚æ›¸ã‘ã¾ã™ï¼ŽRubyãã®ã‚‚ã®ãŒCã§è¨˜</div><div class='del'>-è¿°ã•ã‚Œã¦ã„ã‚‹ã‚“ã§ã™ã‹ã‚‰ï¼Œå½“ç„¶ã¨ã„ãˆã°å½“ç„¶ãªã‚“ã§ã™ã‘ã©ï¼Žã“ã“ã§</div><div class='del'>-ã¯Rubyã®æ‹¡å¼µã«ä½¿ã†ã“ã¨ãŒå¤šã„ã ã‚ã†ã¨äºˆæ¸¬ã•ã‚Œã‚‹æ©Ÿèƒ½ã‚’ä¸­å¿ƒã«ç´¹</div><div class='del'>-ä»‹ã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== Rubyã«æ©Ÿèƒ½ã‚’è¿½åŠ ã™ã‚‹</div><div class='del'>-</div><div class='del'>-Rubyã§æä¾›ã•ã‚Œã¦ã„ã‚‹é–¢æ•°ã‚’ä½¿ãˆã°Rubyã‚¤ãƒ³ã‚¿ãƒ—ãƒªã‚¿ã«æ–°ã—ã„æ©Ÿèƒ½</div><div class='del'>-ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼ŽRubyã§ã¯ä»¥ä¸‹ã®æ©Ÿèƒ½ã‚’è¿½åŠ ã™ã‚‹é–¢æ•°ãŒ</div><div class='del'>-æä¾›ã•ã‚Œã¦ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-* ã‚¯ãƒ©ã‚¹ï¼Œãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«</div><div class='del'>-* ãƒ¡ã‚½ãƒƒãƒ‰ï¼Œç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ãªã©</div><div class='del'>-* å®šæ•°</div><div class='del'>-</div><div class='del'>-ã§ã¯é †ã«ç´¹ä»‹ã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-=== ã‚¯ãƒ©ã‚¹/ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«å®šç¾©</div><div class='del'>-</div><div class='del'>-ã‚¯ãƒ©ã‚¹ã‚„ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’å®šç¾©ã™ã‚‹ãŸã‚ã«ã¯ï¼Œä»¥ä¸‹ã®é–¢æ•°ã‚’ä½¿ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  VALUE rb_define_class(const char *name, VALUE super)</div><div class='del'>-  VALUE rb_define_module(const char *name)</div><div class='del'>-</div><div class='del'>-ã“ã‚Œã‚‰ã®é–¢æ•°ã¯æ–°ã—ãå®šç¾©ã•ã‚ŒãŸã‚¯ãƒ©ã‚¹ã‚„ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’è¿”ã—ã¾ã™ï¼Ž</div><div class='del'>-ãƒ¡ã‚½ãƒƒãƒ‰ã‚„å®šæ•°ã®å®šç¾©ã«ã“ã‚Œã‚‰ã®å€¤ãŒå¿…è¦ãªã®ã§ï¼Œã»ã¨ã‚“ã©ã®å ´åˆ</div><div class='del'>-ã¯æˆ»ã‚Šå€¤ã‚’å¤‰æ•°ã«æ ¼ç´ã—ã¦ãŠãå¿…è¦ãŒã‚ã‚‹ã§ã—ã‚‡ã†ï¼Ž</div><div class='del'>-</div><div class='del'>-ã‚¯ãƒ©ã‚¹ã‚„ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’ä»–ã®ã‚¯ãƒ©ã‚¹ã®å†…éƒ¨ã«ãƒã‚¹ãƒˆã—ã¦å®šç¾©ã™ã‚‹æ™‚ã«</div><div class='del'>-ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’ä½¿ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)</div><div class='del'>-  VALUE rb_define_module_under(VALUE outer, const char *name)</div><div class='del'>-</div><div class='del'>-=== ãƒ¡ã‚½ãƒƒãƒ‰/ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰å®šç¾©</div><div class='del'>-</div><div class='del'>-ãƒ¡ã‚½ãƒƒãƒ‰ã‚„ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®šç¾©ã™ã‚‹ã«ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’ä½¿ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void rb_define_method(VALUE klass, const char *name,</div><div class='del'>-                        VALUE (*func)(), int argc)</div><div class='del'>-</div><div class='del'>-  void rb_define_singleton_method(VALUE object, const char *name,</div><div class='del'>-                                  VALUE (*func)(), int argc)</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-å¿µã®ãŸã‚èª¬æ˜Žã™ã‚‹ã¨ã€Œç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã€ã¨ã¯ï¼Œãã®ç‰¹å®šã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯</div><div class='del'>-ãƒˆã«å¯¾ã—ã¦ã ã‘æœ‰åŠ¹ãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã™ï¼ŽRubyã§ã¯ã‚ˆãSmalltalkã«ãŠ</div><div class='del'>-ã‘ã‚‹ã‚¯ãƒ©ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã¨ã—ã¦ï¼Œã‚¯ãƒ©ã‚¹ã«å¯¾ã™ã‚‹ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ãŒä½¿ã‚ã‚Œ</div><div class='del'>-ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-ã“ã‚Œã‚‰ã®é–¢æ•°ã® argcã¨ã„ã†å¼•æ•°ã¯Cã®é–¢æ•°ã¸æ¸¡ã•ã‚Œã‚‹å¼•æ•°ã®æ•°(ã¨</div><div class='del'>-å½¢å¼)ã‚’æ±ºã‚ã¾ã™ï¼ŽargcãŒ0ä»¥ä¸Šã®æ™‚ã¯é–¢æ•°ã«å¼•ãæ¸¡ã™å¼•æ•°ã®æ•°ã‚’æ„</div><div class='del'>-å‘³ã—ã¾ã™ï¼Ž16å€‹ä»¥ä¸Šã®å¼•æ•°ã¯ä½¿ãˆã¾ã›ã‚“(ãŒï¼Œè¦ã‚Šã¾ã›ã‚“ã‚ˆã­ï¼Œã</div><div class='del'>-ã‚“ãªã«)ï¼Žå®Ÿéš›ã®é–¢æ•°ã«ã¯å…ˆé ­ã®å¼•æ•°ã¨ã—ã¦selfãŒä¸Žãˆã‚‰ã‚Œã¾ã™ã®</div><div class='del'>-ã§ï¼ŒæŒ‡å®šã—ãŸæ•°ã‚ˆã‚Š1å¤šã„å¼•æ•°ã‚’æŒã¤ã“ã¨ã«ãªã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-argcãŒè² ã®æ™‚ã¯å¼•æ•°ã®æ•°ã§ã¯ãªãï¼Œå½¢å¼ã‚’æŒ‡å®šã—ãŸã“ã¨ã«ãªã‚Šã¾ã™ï¼Ž</div><div class='del'>-argcãŒ-1ã®æ™‚ã¯å¼•æ•°ã‚’é…åˆ—ã«å…¥ã‚Œã¦æ¸¡ã•ã‚Œã¾ã™ï¼ŽargcãŒ-2ã®æ™‚ã¯å¼•</div><div class='del'>-æ•°ã¯Rubyã®é…åˆ—ã¨ã—ã¦æ¸¡ã•ã‚Œã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®šç¾©ã™ã‚‹é–¢æ•°ã¯ã¾ã ã„ãã¤ã‹ã‚ã‚Šã¾ã™. ã²ã¨ã¤ã¯ãƒ¡ã‚½ãƒƒãƒ‰</div><div class='del'>-åã¨ã—ã¦IDã‚’å–ã‚Šã¾ã™. IDã«ã¤ã„ã¦ã¯2.2.2ã‚’å‚ç…§.</div><div class='del'>-</div><div class='del'>-  void rb_define_method_id(VALUE klass, ID name,</div><div class='del'>-                           VALUE (*func)(ANYARGS), int argc)</div><div class='del'>-</div><div class='del'>-private/protectedãªãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®šç¾©ã™ã‚‹ãµãŸã¤ã®é–¢æ•°ãŒã‚ã‚Šã¾ã™.</div><div class='del'>-</div><div class='del'>-  void rb_define_private_method(VALUE klass, const char *name,</div><div class='del'>-				VALUE (*func)(), int argc)</div><div class='del'>-  void rb_define_protected_method(VALUE klass, const char *name,</div><div class='del'>-			          VALUE (*func)(), int argc)</div><div class='del'>-</div><div class='del'>-privateãƒ¡ã‚½ãƒƒãƒ‰ã¨ã¯é–¢æ•°å½¢å¼ã§ã—ã‹å‘¼ã³å‡ºã™ã“ã¨ã®å‡ºæ¥ãªã„ãƒ¡ã‚½ãƒƒ</div><div class='del'>-ãƒ‰ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-æœ€å¾Œã«ï¼Œ rb_define_moduleé–¢æ•°ã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«é–¢æ•°ã‚’å®šç¾©ã—ã¾ã™ï¼Ž</div><div class='del'>-ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«é–¢æ•°ã¨ã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚ã‚Šï¼ŒåŒæ™‚ã«</div><div class='del'>-privateãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚‚ã‚ã‚‹ã‚‚ã®ã§ã™ï¼Žä¾‹ã‚’ã‚ã’ã‚‹ã¨Mathãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«</div><div class='del'>-ã®sqrt()ãªã©ãŒã‚ã’ã‚‰ã‚Œã¾ã™ï¼Žã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯</div><div class='del'>-</div><div class='del'>-  Math.sqrt(4)</div><div class='del'>-</div><div class='del'>-ã¨ã„ã†å½¢å¼ã§ã‚‚</div><div class='del'>-</div><div class='del'>-  include Math</div><div class='del'>-  sqrt(4)</div><div class='del'>-</div><div class='del'>-ã¨ã„ã†å½¢å¼ã§ã‚‚ä½¿ãˆã¾ã™ï¼Žãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«é–¢æ•°ã‚’å®šç¾©ã™ã‚‹é–¢æ•°ã¯ä»¥ä¸‹ã®</div><div class='del'>-é€šã‚Šã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void rb_define_module_function(VALUE module, const char *name,</div><div class='del'>-		                 VALUE (*func)(), int argc)</div><div class='del'>-</div><div class='del'>-é–¢æ•°çš„ãƒ¡ã‚½ãƒƒãƒ‰(Kernelãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®private method)ã‚’å®šç¾©ã™ã‚‹ãŸ</div><div class='del'>-ã‚ã®é–¢æ•°ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void rb_define_global_function(const char *name, VALUE (*func)(), int argc)</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-ãƒ¡ã‚½ãƒƒãƒ‰ã®åˆ¥åã‚’å®šç¾©ã™ã‚‹ãŸã‚ã®é–¢æ•°ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void rb_define_alias(VALUE module, const char* new, const char* old);</div><div class='del'>-</div><div class='del'>-å±žæ€§ã®å–å¾—ãƒ»è¨­å®šãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®šç¾©ã™ã‚‹ã«ã¯</div><div class='del'>-</div><div class='del'>-  void rb_define_attr(VALUE klass, const char *name, int read, int write)</div><div class='del'>-</div><div class='del'>-ã‚¯ãƒ©ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰allocateã‚’å®šç¾©ã—ãŸã‚Šå‰Šé™¤ã—ãŸã‚Šã™ã‚‹ãŸã‚ã®é–¢æ•°ã¯</div><div class='del'>-ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void rb_define_alloc_func(VALUE klass, VALUE (*func)(VALUE klass));</div><div class='del'>-  void rb_undef_alloc_func(VALUE klass);</div><div class='del'>-</div><div class='del'>-funcã¯ã‚¯ãƒ©ã‚¹ã‚’å¼•æ•°ã¨ã—ã¦å—ã‘å–ã£ã¦ï¼Œæ–°ã—ãå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸã‚¤ãƒ³</div><div class='del'>-ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”ã•ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“ï¼Žã“ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ï¼Œå¤–éƒ¨ãƒª</div><div class='del'>-ã‚½ãƒ¼ã‚¹ãªã©ã‚’å«ã¾ãªã„ï¼Œã§ãã‚‹ã ã‘ã€Œç©ºã€ã®ã¾ã¾ã«ã—ã¦ãŠã„ãŸã»ã†</div><div class='del'>-ãŒã‚ˆã„ã§ã—ã‚‡ã†ï¼Ž</div><div class='del'>-</div><div class='del'>-ç¶™æ‰¿ã—ãŸã‚¯ãƒ©ã‚¹ã«ã‚ã‚‹æ—¢å­˜ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã„ã‚‹ãª</div><div class='del'>-ã‚‰ï¼Œã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•ã‚ŒãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’å‘¼ã³å‡ºã™ã«ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’ä½¿</div><div class='del'>-ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  VALUE rb_call_super(int argc, const VALUE *argv)</div><div class='del'>-</div><div class='del'>-ç¾åœ¨ã®ã‚¹ã‚³ãƒ¼ãƒ—ã®ãƒ¬ã‚·ãƒ¼ãƒã¯(ä»–ã«æ–¹æ³•ãŒãªã‘ã‚Œã°)ï¼Œä»¥ä¸‹ã®é–¢æ•°ã§</div><div class='del'>-å¾—ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  VALUE rb_current_receiver(void)</div><div class='del'>-</div><div class='del'>-=== å®šæ•°å®šç¾©</div><div class='del'>-</div><div class='del'>-æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªãŒå¿…è¦ãªå®šæ•°ã¯ã‚ã‚‰ã‹ã˜ã‚å®šç¾©ã—ã¦ãŠã„ãŸæ–¹ãŒè‰¯ã„</div><div class='del'>-ã§ã—ã‚‡ã†ï¼Žå®šæ•°ã‚’å®šç¾©ã™ã‚‹é–¢æ•°ã¯äºŒã¤ã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void rb_define_const(VALUE klass, const char *name, VALUE val)</div><div class='del'>-  void rb_define_global_const(const char *name, VALUE val)</div><div class='del'>-</div><div class='del'>-å‰è€…ã¯ç‰¹å®šã®ã‚¯ãƒ©ã‚¹/ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã«å±žã™ã‚‹å®šæ•°ã‚’å®šç¾©ã™ã‚‹ã‚‚ã®ï¼Œå¾Œ</div><div class='del'>-è€…ã¯ã‚°ãƒ­ãƒ¼ãƒãƒ«ãªå®šæ•°ã‚’å®šç¾©ã™ã‚‹ã‚‚ã®ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== Rubyã®æ©Ÿèƒ½ã‚’Cã‹ã‚‰å‘¼ã³å‡ºã™</div><div class='del'>-</div><div class='del'>-æ—¢ã«ã€Ž1.5 Rubyã®ãƒ‡ãƒ¼ã‚¿ã‚’æ“ä½œã™ã‚‹ã€ã§ä¸€éƒ¨ç´¹ä»‹ã—ãŸã‚ˆã†ãªé–¢æ•°ã‚’</div><div class='del'>-ä½¿ãˆã°ï¼ŒRubyã®æ©Ÿèƒ½ã‚’å®Ÿç¾ã—ã¦ã„ã‚‹é–¢æ•°ã‚’ç›´æŽ¥å‘¼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥</div><div class='del'>-ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-# ã“ã®ã‚ˆã†ãªé–¢æ•°ã®ä¸€è¦§è¡¨ã¯ã„ã¾ã®ã¨ã“ã‚ã‚ã‚Šã¾ã›ã‚“ï¼Žã‚½ãƒ¼ã‚¹ã‚’è¦‹</div><div class='del'>-# ã‚‹ã—ã‹ãªã„ã§ã™ã­ï¼Ž</div><div class='del'>-</div><div class='del'>-ãã‚Œä»¥å¤–ã«ã‚‚Rubyã®æ©Ÿèƒ½ã‚’å‘¼ã³å‡ºã™æ–¹æ³•ã¯ã„ãã¤ã‹ã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-=== Rubyã®ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã‚’evalã™ã‚‹</div><div class='del'>-</div><div class='del'>-Cã‹ã‚‰Rubyã®æ©Ÿèƒ½ã‚’å‘¼ã³å‡ºã™ã‚‚ã£ã¨ã‚‚ç°¡å˜ãªæ–¹æ³•ã¨ã—ã¦ï¼Œæ–‡å­—åˆ—ã§</div><div class='del'>-ä¸Žãˆã‚‰ã‚ŒãŸRubyã®ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã‚’è©•ä¾¡ã™ã‚‹ä»¥ä¸‹ã®é–¢æ•°ãŒã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  VALUE rb_eval_string(const char *str)</div><div class='del'>-</div><div class='del'>-ã“ã®è©•ä¾¡ã¯ç¾åœ¨ã®ç’°å¢ƒã§è¡Œã‚ã‚Œã¾ã™ï¼Žã¤ã¾ã‚Šï¼Œç¾åœ¨ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°</div><div class='del'>-ãªã©ã‚’å—ã‘ç¶™ãŽã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-è©•ä¾¡ã¯ä¾‹å¤–ã‚’ç™ºç”Ÿã™ã‚‹ã‹ã‚‚ã—ã‚Œãªã„ã“ã¨ã«æ³¨æ„ã—ã¾ã—ã‚‡ã†. ã‚ˆã‚Šå®‰å…¨</div><div class='del'>-ãªé–¢æ•°ã‚‚ã‚ã‚Šã¾ã™.</div><div class='del'>-</div><div class='del'>-  VALUE rb_eval_string_protect(const char *str, int *state)</div><div class='del'>-</div><div class='del'>-ã“ã®é–¢æ•°ã¯ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹ã¨nilã‚’è¿”ã—ã¾ã™ï¼Žãã—ã¦ï¼ŒæˆåŠŸæ™‚ã«ã¯</div><div class='del'>-*stateã¯ã‚¼ãƒ­ã«ï¼Œã•ã‚‚ãªãã°éžã‚¼ãƒ­ã«ãªã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-=== IDã¾ãŸã¯ã‚·ãƒ³ãƒœãƒ«</div><div class='del'>-</div><div class='del'>-Cã‹ã‚‰æ–‡å­—åˆ—ã‚’çµŒç”±ã›ãšã«Rubyã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å‘¼ã³å‡ºã™ã“ã¨ã‚‚ã§ãã¾</div><div class='del'>-ã™ï¼Žãã®å‰ã«ï¼ŒRubyã‚¤ãƒ³ã‚¿ãƒ—ãƒªã‚¿å†…ã§ãƒ¡ã‚½ãƒƒãƒ‰ã‚„å¤‰æ•°åã‚’æŒ‡å®šã™ã‚‹</div><div class='del'>-æ™‚ã«ä½¿ã‚ã‚Œã¦ã„ã‚‹IDã«ã¤ã„ã¦èª¬æ˜Žã—ã¦ãŠãã¾ã—ã‚‡ã†ï¼Ž</div><div class='del'>-</div><div class='del'>-IDã¨ã¯å¤‰æ•°åï¼Œãƒ¡ã‚½ãƒƒãƒ‰åã‚’è¡¨ã™æ•´æ•°ã§ã™ï¼ŽRubyã®ä¸­ã§ã¯</div><div class='del'>-</div><div class='del'>- :è­˜åˆ¥å­</div><div class='del'>-</div><div class='del'>-ã¾ãŸã¯</div><div class='del'>-</div><div class='del'>- :"ä»»æ„ã®æ–‡å­—åˆ—"</div><div class='del'>-</div><div class='del'>-ã§ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ï¼ŽCã‹ã‚‰ã“ã®æ•´æ•°ã‚’å¾—ã‚‹ãŸã‚ã«ã¯é–¢æ•°</div><div class='del'>-</div><div class='del'>-  rb_intern(const char *name)</div><div class='del'>-  rb_intern_str(VALUE name)</div><div class='del'>-</div><div class='del'>-ã‚’ä½¿ã„ã¾ã™ï¼ŽRubyã‹ã‚‰å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«(ã¾ãŸã¯æ–‡å­—</div><div class='del'>-åˆ—)ã‚’IDã«å¤‰æ›ã™ã‚‹ã«ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’ä½¿ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  rb_to_id(VALUE symbol)</div><div class='del'>-  rb_check_id(volatile VALUE *name)</div><div class='del'>-  rb_check_id_cstr(const char *name, long len, rb_encoding *enc)</div><div class='del'>-</div><div class='del'>-ã‚‚ã—å¼•æ•°ãŒã‚·ãƒ³ãƒœãƒ«ã§ã‚‚æ–‡å­—åˆ—ã§ã‚‚ãªã‘ã‚Œã°ï¼Œto_strãƒ¡ã‚½ãƒƒãƒ‰ã§æ–‡</div><div class='del'>-å­—åˆ—ã«å¤‰æ›ã—ã‚ˆã†ã¨ã—ã¾ã™ï¼Žç¬¬äºŒã®é–¢æ•°ã¯ãã®å¤‰æ›çµæžœã‚’*nameã«ä¿</div><div class='del'>-å­˜ã—,ãã®åå‰ãŒæ—¢çŸ¥ã®ã‚·ãƒ³ãƒœãƒ«ã§ãªã„å ´åˆã¯0ã‚’è¿”ã—ã¾ã™ï¼Žã“ã®é–¢</div><div class='del'>-æ•°ãŒ0ä»¥å¤–ã‚’è¿”ã—ãŸå ´åˆã¯*nameã¯å¸¸ã«ã‚·ãƒ³ãƒœãƒ«ã‹æ–‡å­—åˆ—ã§ã‚ã‚Šï¼Œ0ã‚’</div><div class='del'>-è¿”ã—ãŸå ´åˆã¯å¸¸ã«æ–‡å­—åˆ—ã§ã™ï¼Žç¬¬ä¸‰ã®é–¢æ•°ã¯Rubyã®æ–‡å­—åˆ—ã§ã¯ãªã</div><div class='del'>-NULçµ‚ç«¯ã•ã‚ŒãŸCã®æ–‡å­—åˆ—ã‚’ä½¿ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-Rubyã‹ã‚‰å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«(ã¾ãŸã¯æ–‡å­—åˆ—)ã‚’ã‚·ãƒ³ãƒœãƒ«</div><div class='del'>-ã«å¤‰æ›ã™ã‚‹ã«ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’ä½¿ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  rb_to_symbol(VALUE name)</div><div class='del'>-  rb_check_symbol(volatile VALUE *namep)</div><div class='del'>-  rb_check_symbol_cstr(const char *ptr, long len, rb_encoding *enc)</div><div class='del'>-</div><div class='del'>-ã“ã‚Œã‚‰ã®é–¢æ•°ã¯ï¼ŒIDã®ä»£ã‚ã‚Šã«ã‚·ãƒ³ãƒœãƒ«ã‚’è¿”ã™ã“ã¨ã‚’é™¤ã‘ã°ä¸Šè¨˜ã®</div><div class='del'>-é–¢æ•°ã¨åŒã˜ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-=== Cã‹ã‚‰Rubyã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å‘¼ã³å‡ºã™</div><div class='del'>-</div><div class='del'>-Cã‹ã‚‰æ–‡å­—åˆ—ã‚’çµŒç”±ã›ãšã«Rubyã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å‘¼ã³å‡ºã™ãŸã‚ã«ã¯ä»¥ä¸‹</div><div class='del'>-ã®é–¢æ•°ã‚’ä½¿ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  VALUE rb_funcall(VALUE recv, ID mid, int argc, ...)</div><div class='del'>-</div><div class='del'>-ã“ã®é–¢æ•°ã¯ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆrecvã®midã§æŒ‡å®šã•ã‚Œã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å‘¼ã³å‡º</div><div class='del'>-ã—ã¾ã™ï¼Žãã®ä»–ã«å¼•æ•°ã®æŒ‡å®šã®ä»•æ–¹ãŒé•ã†ä»¥ä¸‹ã®é–¢æ•°ã‚‚ã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)</div><div class='del'>-  VALUE rb_funcallv(VALUE recv, ID mid, int argc, VALUE *argv)</div><div class='del'>-  VALUE rb_apply(VALUE recv, ID mid, VALUE args)</div><div class='del'>-</div><div class='del'>-applyã«ã¯å¼•æ•°ã¨ã—ã¦Rubyã®é…åˆ—ã‚’ä¸Žãˆã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-=== å¤‰æ•°/å®šæ•°ã‚’å‚ç…§/æ›´æ–°ã™ã‚‹</div><div class='del'>-</div><div class='del'>-Cã‹ã‚‰é–¢æ•°ã‚’ä½¿ã£ã¦å‚ç…§ãƒ»æ›´æ–°ã§ãã‚‹ã®ã¯ï¼Œå®šæ•°ï¼Œã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰</div><div class='del'>-æ•°ã§ã™ï¼Žå¤§åŸŸå¤‰æ•°ã¯ä¸€éƒ¨ã®ã‚‚ã®ã¯Cã®å¤§åŸŸå¤‰æ•°ã¨ã—ã¦ã‚¢ã‚¯ã‚»ã‚¹ã§ã</div><div class='del'>-ã¾ã™ï¼Žãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã‚’å‚ç…§ã™ã‚‹æ–¹æ³•ã¯å…¬é–‹ã—ã¦ã„ã¾ã›ã‚“ï¼Ž</div><div class='del'>-</div><div class='del'>-ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚’å‚ç…§ãƒ»æ›´æ–°ã™ã‚‹é–¢æ•°ã¯ä»¥ä¸‹ã®é€š</div><div class='del'>-ã‚Šã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  VALUE rb_ivar_get(VALUE obj, ID id)</div><div class='del'>-  VALUE rb_ivar_set(VALUE obj, ID id, VALUE val)</div><div class='del'>-</div><div class='del'>-idã¯rb_intern()ã§å¾—ã‚‰ã‚Œã‚‹ã‚‚ã®ã‚’ä½¿ã£ã¦ãã ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-å®šæ•°ã‚’å‚ç…§ã™ã‚‹ã«ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’ä½¿ã£ã¦ãã ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-  VALUE rb_const_get(VALUE obj, ID id)</div><div class='del'>-</div><div class='del'>-å®šæ•°ã‚’æ–°ã—ãå®šç¾©ã™ã‚‹ãŸã‚ã«ã¯ã€Ž2.1.3 å®šæ•°å®šç¾©ã€ã§ç´¹ä»‹ã•</div><div class='del'>-ã‚Œã¦ã„ã‚‹é–¢æ•°ã‚’ä½¿ã£ã¦ãã ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-= Rubyã¨Cã¨ã®æƒ…å ±å…±æœ‰</div><div class='del'>-</div><div class='del'>-Cè¨€èªžã¨Rubyã®é–“ã§æƒ…å ±ã‚’å…±æœ‰ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦è§£èª¬ã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== Cã‹ã‚‰å‚ç…§ã§ãã‚‹Rubyã®å®šæ•°</div><div class='del'>-</div><div class='del'>-ä»¥ä¸‹ã®Rubyã®å®šæ•°ã¯Cã®ãƒ¬ãƒ™ãƒ«ã‹ã‚‰å‚ç…§ã§ãã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  Qtrue</div><div class='del'>-  Qfalse</div><div class='del'>-</div><div class='del'>-çœŸå½å€¤ï¼ŽQfalseã¯Cè¨€èªžã§ã‚‚å½ã¨ã¿ãªã•ã‚Œã¾ã™(ã¤ã¾ã‚Š0)ï¼Ž</div><div class='del'>-</div><div class='del'>-  Qnil</div><div class='del'>-</div><div class='del'>-Cè¨€èªžã‹ã‚‰è¦‹ãŸã€Œnilã€ï¼Ž</div><div class='del'>-</div><div class='del'>-== Cã¨Rubyã§å…±æœ‰ã•ã‚Œã‚‹å¤§åŸŸå¤‰æ•°</div><div class='del'>-</div><div class='del'>-Cã¨Rubyã§å¤§åŸŸå¤‰æ•°ã‚’ä½¿ã£ã¦æƒ…å ±ã‚’å…±æœ‰ã§ãã¾ã™ï¼Žå…±æœ‰ã§ãã‚‹å¤§åŸŸ</div><div class='del'>-å¤‰æ•°ã«ã¯ã„ãã¤ã‹ã®ç¨®é¡žãŒã‚ã‚Šã¾ã™ï¼Žãã®ãªã‹ã§ã‚‚ã£ã¨ã‚‚è‰¯ãä½¿ã‚</div><div class='del'>-ã‚Œã‚‹ã¨æ€ã‚ã‚Œã‚‹ã®ã¯rb_define_variable()ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void rb_define_variable(const char *name, VALUE *var)</div><div class='del'>-</div><div class='del'>-ã“ã®é–¢æ•°ã¯Rubyã¨Cã¨ã§å…±æœ‰ã™ã‚‹å¤§åŸŸå¤‰æ•°ã‚’å®šç¾©ã—ã¾ã™ï¼Žå¤‰æ•°åãŒ</div><div class='del'>-`$'ã§å§‹ã¾ã‚‰ãªã„æ™‚ã«ã¯è‡ªå‹•çš„ã«è¿½åŠ ã•ã‚Œã¾ã™ï¼Žã“ã®å¤‰æ•°ã®å€¤ã‚’å¤‰</div><div class='del'>-æ›´ã™ã‚‹ã¨è‡ªå‹•çš„ã«Rubyã®å¯¾å¿œã™ã‚‹å¤‰æ•°ã®å€¤ã‚‚å¤‰ã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-ã¾ãŸRubyå´ã‹ã‚‰ã¯æ›´æ–°ã§ããªã„å¤‰æ•°ã‚‚ã‚ã‚Šã¾ã™ï¼Žã“ã®read onlyã®</div><div class='del'>-å¤‰æ•°ã¯ä»¥ä¸‹ã®é–¢æ•°ã§å®šç¾©ã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void rb_define_readonly_variable(const char *name, VALUE *var)</div><div class='del'>-</div><div class='del'>-ã“ã‚Œã‚‰å¤‰æ•°ã®ä»–ã«hookã‚’ã¤ã‘ãŸå¤§åŸŸå¤‰æ•°ã‚’å®šç¾©ã§ãã¾ã™ï¼Žhookä»˜ã</div><div class='del'>-ã®å¤§åŸŸå¤‰æ•°ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’ç”¨ã„ã¦å®šç¾©ã—ã¾ã™ï¼Žhookä»˜ãå¤§åŸŸå¤‰æ•°ã®</div><div class='del'>-å€¤ã®å‚ç…§ã‚„è¨­å®šã¯hookã§è¡Œã†å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void rb_define_hooked_variable(const char *name, VALUE *var,</div><div class='del'>-				 VALUE (*getter)(), void (*setter)())</div><div class='del'>-</div><div class='del'>-ã“ã®é–¢æ•°ã¯Cã®é–¢æ•°ã«ã‚ˆã£ã¦hookã®ã¤ã‘ã‚‰ã‚ŒãŸå¤§åŸŸå¤‰æ•°ã‚’å®šç¾©ã—ã¾</div><div class='del'>-ã™ï¼Žå¤‰æ•°ãŒå‚ç…§ã•ã‚ŒãŸæ™‚ã«ã¯é–¢æ•°getterãŒï¼Œå¤‰æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•ã‚Œ</div><div class='del'>-ãŸæ™‚ã«ã¯é–¢æ•°setterãŒå‘¼ã°ã‚Œã‚‹ï¼Žhookã‚’æŒ‡å®šã—ãªã„å ´åˆã¯getterã‚„</div><div class='del'>-setterã«0ã‚’æŒ‡å®šã—ã¾ã™ï¼Ž</div><div class='del'>-# getterã‚‚setterã‚‚0ãªã‚‰ã°rb_define_variable()ã¨åŒã˜ã«ãªã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-getterã¨setterã®ä»•æ§˜ã¯æ¬¡ã®é€šã‚Šã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  VALUE (*getter)(ID id, VALUE *var);</div><div class='del'>-  void (*setter)(VALUE val, ID id, VALUE *var);</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-ãã‚Œã‹ã‚‰ï¼Œå¯¾å¿œã™ã‚‹Cã®å¤‰æ•°ã‚’æŒãŸãªã„Rubyã®å¤§åŸŸå¤‰æ•°ã‚’å®šç¾©ã™ã‚‹</div><div class='del'>-ã“ã¨ã‚‚ã§ãã¾ã™. ãã®å¤‰æ•°ã®å€¤ã¯ãƒ•ãƒƒã‚¯é–¢æ•°ã®ã¿ã«ã‚ˆã£ã¦å–å¾—ãƒ»è¨­å®š</div><div class='del'>-ã•ã‚Œã¾ã™.</div><div class='del'>-</div><div class='del'>-  void rb_define_virtual_variable(const char *name,</div><div class='del'>-				  VALUE (*getter)(), void (*setter)())</div><div class='del'>-</div><div class='del'>-ã“ã®é–¢æ•°ã«ã‚ˆã£ã¦å®šç¾©ã•ã‚ŒãŸRubyã®å¤§åŸŸå¤‰æ•°ãŒå‚ç…§ã•ã‚ŒãŸæ™‚ã«ã¯</div><div class='del'>-getterãŒï¼Œå¤‰æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•ã‚ŒãŸæ™‚ã«ã¯setterãŒå‘¼ã°ã‚Œã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-getterã¨setterã®ä»•æ§˜ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  (*getter)(ID id);</div><div class='del'>-  (*setter)(VALUE val, ID id);</div><div class='del'>-</div><div class='del'>-== Cã®ãƒ‡ãƒ¼ã‚¿ã‚’Rubyã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«ã™ã‚‹</div><div class='del'>-</div><div class='del'>-Cã®ä¸–ç•Œã§å®šç¾©ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿(æ§‹é€ ä½“)ã‚’Rubyã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã¨ã—ã¦</div><div class='del'>-å–ã‚Šæ‰±ã„ãŸã„å ´åˆãŒã‚ã‚Šãˆã¾ã™ï¼Žã“ã®ã‚ˆã†ãªå ´åˆã«ã¯ï¼ŒDataã¨ã„ã†</div><div class='del'>-Rubyã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«Cã®æ§‹é€ ä½“(ã¸ã®ãƒã‚¤ãƒ³ã‚¿)ã‚’ãã‚‹ã‚€ã“ã¨ã§Ruby</div><div class='del'>-ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã¨ã—ã¦å–ã‚Šæ‰±ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-Dataã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’ç”Ÿæˆã—ã¦æ§‹é€ ä½“ã‚’Rubyã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«ã‚«ãƒ—ã‚»ãƒ«</div><div class='del'>-åŒ–ã™ã‚‹ãŸã‚ã«ã¯ï¼Œä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã‚’ä½¿ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  Data_Wrap_Struct(klass, mark, free, sval)</div><div class='del'>-</div><div class='del'>-ã“ã®ãƒžã‚¯ãƒ­ã®æˆ»ã‚Šå€¤ã¯ç”Ÿæˆã•ã‚ŒãŸDataã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-klassã¯ã“ã®Dataã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®ã‚¯ãƒ©ã‚¹ã§ã™ï¼Žmarkã¯ã“ã®æ§‹é€ ä½“ãŒ</div><div class='del'>-Rubyã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã¸ã®å‚ç…§ãŒã‚ã‚‹æ™‚ã«ä½¿ã†é–¢æ•°ã§ã™ï¼Žãã®ã‚ˆã†ãª</div><div class='del'>-å‚ç…§ã‚’å«ã¾ãªã„æ™‚ã«ã¯0ã‚’æŒ‡å®šã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-# ãã®ã‚ˆã†ãªå‚ç…§ã¯å‹§ã‚ã‚‰ã‚Œã¾ã›ã‚“ï¼Ž</div><div class='del'>-</div><div class='del'>-freeã¯ã“ã®æ§‹é€ ä½“ãŒã‚‚ã†ä¸è¦ã«ãªã£ãŸæ™‚ã«å‘¼ã°ã‚Œã‚‹é–¢æ•°ã§ã™ï¼Žã“ã®</div><div class='del'>-é–¢æ•°ãŒã‚¬ãƒ¼ãƒ™ãƒ¼ã‚¸ã‚³ãƒ¬ã‚¯ã‚¿ã‹ã‚‰å‘¼ã°ã‚Œã¾ã™ï¼Žã“ã‚ŒãŒ-1ã®å ´åˆã¯ï¼Œå˜</div><div class='del'>-ç´”ã«é–‹æ”¾ã•ã‚Œã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-markãŠã‚ˆã³freeé–¢æ•°ã¯GCå®Ÿè¡Œä¸­ã«å‘¼ã³å‡ºã•ã‚Œã¾ã™.</div><div class='del'>-ãªãŠ, GCå®Ÿè¡Œä¸­ã¯Rubyã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®ã‚¢ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¯ç¦æ­¢ã•ã‚Œã¾</div><div class='del'>-ã™. ã‚ˆã£ã¦, markãŠã‚ˆã³freeé–¢æ•°ã§Rubyã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®ã‚¢ãƒ­ã‚±ãƒ¼ã‚·</div><div class='del'>-ãƒ§ãƒ³ã¯è¡Œã‚ãªã„ã§ãã ã•ã„.</div><div class='del'>-</div><div class='del'>-Cã®æ§‹é€ ä½“ã®å‰²å½“ã¨Dataã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®ç”Ÿæˆã‚’åŒæ™‚ã«è¡Œã†ãƒžã‚¯ãƒ­ã¨</div><div class='del'>-ã—ã¦ä»¥ä¸‹ã®ã‚‚ã®ãŒæä¾›ã•ã‚Œã¦ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  Data_Make_Struct(klass, type, mark, free, sval)</div><div class='del'>-</div><div class='del'>-ã“ã®ãƒžã‚¯ãƒ­ã®æˆ»ã‚Šå€¤ã¯ç”Ÿæˆã•ã‚ŒãŸDataã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã§ã™ï¼Žã“ã®ãƒžã‚¯</div><div class='del'>-ãƒ­ã¯ä»¥ä¸‹ã®å¼ã®ã‚ˆã†ã«åƒãã¾ã™:</div><div class='del'>-</div><div class='del'>-  (sval = ALLOC(type), Data_Wrap_Struct(klass, mark, free, sval))</div><div class='del'>-</div><div class='del'>-klass, mark, freeã¯Data_Wrap_Structã¨åŒã˜åƒãã‚’ã—ã¾ã™ï¼Žtype</div><div class='del'>-ã¯å‰²ã‚Šå½“ã¦ã‚‹Cæ§‹é€ ä½“ã®åž‹ã§ã™ï¼Žå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸæ§‹é€ ä½“ã¯å¤‰æ•°sval</div><div class='del'>-ã«ä»£å…¥ã•ã‚Œã¾ã™ï¼Žã“ã®å¤‰æ•°ã®åž‹ã¯ (type*) ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-Dataã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‹ã‚‰ãƒã‚¤ãƒ³ã‚¿ã‚’å–ã‚Šå‡ºã™ã®ã¯ä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã‚’ç”¨ã„</div><div class='del'>-ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  Data_Get_Struct(obj, type, sval)</div><div class='del'>-</div><div class='del'>-Cã®æ§‹é€ ä½“ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã¯å¤‰æ•°svalã«ä»£å…¥ã•ã‚Œã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-ã“ã‚Œã‚‰ã®Dataã®ä½¿ã„æ–¹ã¯ã¡ã‚‡ã£ã¨åˆ†ã‹ã‚Šã«ãã„ã®ã§ï¼Œå¾Œã§èª¬æ˜Žã™ã‚‹</div><div class='del'>-ä¾‹é¡Œã‚’å‚ç…§ã—ã¦ãã ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-= ä¾‹é¡Œ - dbmãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã‚’ä½œã‚‹</div><div class='del'>-</div><div class='del'>-ã“ã“ã¾ã§ã®èª¬æ˜Žã§ã¨ã‚Šã‚ãˆãšæ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã¯ä½œã‚Œã‚‹ã¯ãšã§ã™ï¼Ž</div><div class='del'>-Rubyã®extãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã™ã§ã«å«ã¾ã‚Œã¦ã„ã‚‹dbmãƒ©ã‚¤ãƒ–ãƒ©ãƒªã‚’ä¾‹ã«</div><div class='del'>-ã—ã¦æ®µéšŽçš„ã«èª¬æ˜Žã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ä½œã‚‹</div><div class='del'>-</div><div class='del'>-  % mkdir ext/dbm</div><div class='del'>-</div><div class='del'>-Ruby 1.1ã‹ã‚‰ã¯ä»»æ„ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ãƒ€ã‚¤ãƒŠãƒŸãƒƒã‚¯ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã‚’ä½œ</div><div class='del'>-ã‚‹ã“ã¨ãŒã§ãã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸï¼ŽRubyã«é™çš„ã«ãƒªãƒ³ã‚¯ã™ã‚‹å ´åˆã«</div><div class='del'>-ã¯Rubyã‚’å±•é–‹ã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸‹ï¼Œextãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸­ã«æ‹¡å¼µ</div><div class='del'>-ãƒ©ã‚¤ãƒ–ãƒ©ãƒªç”¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ä½œã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼Žåå‰ã¯é©å½“ã«</div><div class='del'>-é¸ã‚“ã§æ§‹ã„ã¾ã›ã‚“ï¼Ž</div><div class='del'>-</div><div class='del'>-== è¨­è¨ˆã™ã‚‹</div><div class='del'>-</div><div class='del'>-ã¾ã‚ï¼Œå½“ç„¶ãªã‚“ã§ã™ã‘ã©ï¼Œã©ã†ã„ã†æ©Ÿèƒ½ã‚’å®Ÿç¾ã™ã‚‹ã‹ã©ã†ã‹ã¾ãšè¨­</div><div class='del'>-è¨ˆã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼Žã©ã‚“ãªã‚¯ãƒ©ã‚¹ã‚’ã¤ãã‚‹ã‹ï¼Œãã®ã‚¯ãƒ©ã‚¹ã«ã¯</div><div class='del'>-ã©ã‚“ãªãƒ¡ã‚½ãƒƒãƒ‰ãŒã‚ã‚‹ã‹ï¼Œã‚¯ãƒ©ã‚¹ãŒæä¾›ã™ã‚‹å®šæ•°ãªã©ã«ã¤ã„ã¦è¨­è¨ˆ</div><div class='del'>-ã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== Cã‚³ãƒ¼ãƒ‰ã‚’æ›¸ã</div><div class='del'>-</div><div class='del'>-æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªæœ¬ä½“ã¨ãªã‚‹Cè¨€èªžã®ã‚½ãƒ¼ã‚¹ã‚’æ›¸ãã¾ã™ï¼ŽCè¨€èªžã®ã‚½ãƒ¼</div><div class='del'>-ã‚¹ãŒã²ã¨ã¤ã®æ™‚ã«ã¯ã€Œãƒ©ã‚¤ãƒ–ãƒ©ãƒªå.cã€ã‚’é¸ã¶ã¨è‰¯ã„ã§ã—ã‚‡ã†ï¼ŽC</div><div class='del'>-è¨€èªžã®ã‚½ãƒ¼ã‚¹ãŒè¤‡æ•°ã®å ´åˆã«ã¯é€†ã«ã€Œãƒ©ã‚¤ãƒ–ãƒ©ãƒªå.cã€ã¨ã„ã†ãƒ•ã‚¡</div><div class='del'>-ã‚¤ãƒ«åã¯é¿ã‘ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼Žã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã¨ãƒ¢ã‚¸ãƒ¥ãƒ¼</div><div class='del'>-ãƒ«ç”Ÿæˆæ™‚ã«ä¸­é–“çš„ã«ç”Ÿæˆã•ã‚Œã‚‹ã€Œãƒ©ã‚¤ãƒ–ãƒ©ãƒªå.oã€ã¨ã„ã†ãƒ•ã‚¡ã‚¤ãƒ«</div><div class='del'>-ã¨ãŒè¡çªã™ã‚‹ã‹ã‚‰ã§ã™ï¼Žã¾ãŸï¼Œå¾Œè¿°ã™ã‚‹ mkmf ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã®ã„ãã¤</div><div class='del'>-ã‹ã®é–¢æ•°ãŒã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã‚’è¦ã™ã‚‹ãƒ†ã‚¹ãƒˆã®ãŸã‚ã«ã€Œconftest.cã€ã¨ã„</div><div class='del'>-ã†ãƒ•ã‚¡ã‚¤ãƒ«åã‚’ä½¿ç”¨ã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„ï¼Žã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«</div><div class='del'>-åã¨ã—ã¦ã€Œconftest.cã€ã‚’ä½¿ç”¨ã—ã¦ã¯ãªã‚Šã¾ã›ã‚“ï¼Ž</div><div class='del'>-</div><div class='del'>-Rubyã¯æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã‚’ãƒ­ãƒ¼ãƒ‰ã™ã‚‹æ™‚ã«ã€ŒInit_ãƒ©ã‚¤ãƒ–ãƒ©ãƒªåã€ã¨</div><div class='del'>-ã„ã†é–¢æ•°ã‚’è‡ªå‹•çš„ã«å®Ÿè¡Œã—ã¾ã™ï¼Ždbmãƒ©ã‚¤ãƒ–ãƒ©ãƒªã®å ´åˆã€ŒInit_dbmã€</div><div class='del'>-ã§ã™ï¼Žã“ã®é–¢æ•°ã®ä¸­ã§ã‚¯ãƒ©ã‚¹ï¼Œãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ï¼Œãƒ¡ã‚½ãƒƒãƒ‰ï¼Œå®šæ•°ãªã©ã®</div><div class='del'>-å®šç¾©ã‚’è¡Œã„ã¾ã™ï¼Ždbm.cã‹ã‚‰ä¸€éƒ¨å¼•ç”¨ã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void</div><div class='del'>-  Init_dbm(void)</div><div class='del'>-  {</div><div class='del'>-      /* DBMã‚¯ãƒ©ã‚¹ã‚’å®šç¾©ã™ã‚‹ */</div><div class='del'>-      VALUE cDBM = rb_define_class("DBM", rb_cObject);</div><div class='del'>-      /* DBMã¯Enumerableãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã™ã‚‹ */</div><div class='del'>-      rb_include_module(cDBM, rb_mEnumerable);</div><div class='del'>-</div><div class='del'>-      /* DBMã‚¯ãƒ©ã‚¹ã®ã‚¯ãƒ©ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰open(): å¼•æ•°ã¯Cã®é…åˆ—ã§å—ã‘ã‚‹ */</div><div class='del'>-      rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);</div><div class='del'>-</div><div class='del'>-      /* DBMã‚¯ãƒ©ã‚¹ã®ãƒ¡ã‚½ãƒƒãƒ‰close(): å¼•æ•°ã¯ãªã— */</div><div class='del'>-      rb_define_method(cDBM, "close", fdbm_close, 0);</div><div class='del'>-      /* DBMã‚¯ãƒ©ã‚¹ã®ãƒ¡ã‚½ãƒƒãƒ‰[]: å¼•æ•°ã¯1å€‹ */</div><div class='del'>-      rb_define_method(cDBM, "[]", fdbm_fetch, 1);</div><div class='del'>-</div><div class='del'>-      /* ... */</div><div class='del'>-</div><div class='del'>-      /* DBMãƒ‡ãƒ¼ã‚¿ã‚’æ ¼ç´ã™ã‚‹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°åã®ãŸã‚ã®ID */</div><div class='del'>-      id_dbm = rb_intern("dbm");</div><div class='del'>-  }</div><div class='del'>-</div><div class='del'>-DBMãƒ©ã‚¤ãƒ–ãƒ©ãƒªã¯dbmã®ãƒ‡ãƒ¼ã‚¿ã¨å¯¾å¿œã™ã‚‹ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«ãªã‚‹ã¯ãšã§</div><div class='del'>-ã™ã‹ã‚‰ï¼ŒCã®ä¸–ç•Œã®dbmã‚’Rubyã®ä¸–ç•Œã«å–ã‚Šè¾¼ã‚€å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-dbm.cã§ã¯Data_Make_Structã‚’ä»¥ä¸‹ã®ã‚ˆã†ã«ä½¿ã£ã¦ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  struct dbmdata {</div><div class='del'>-      int  di_size;</div><div class='del'>-      DBM *di_dbm;</div><div class='del'>-  };</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-  obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);</div><div class='del'>-</div><div class='del'>-ã“ã“ã§ã¯dbmstructæ§‹é€ ä½“ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’Dataã«ã‚«ãƒ—ã‚»ãƒ«åŒ–ã—ã¦ã„</div><div class='del'>-ã¾ã™ï¼ŽDBM*ã‚’ç›´æŽ¥ã‚«ãƒ—ã‚»ãƒ«åŒ–ã—ãªã„ã®ã¯close()ã—ãŸæ™‚ã®å‡¦ç†ã‚’è€ƒ</div><div class='del'>-ãˆã¦ã®ã“ã¨ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-Dataã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‹ã‚‰dbmstructæ§‹é€ ä½“ã®ãƒã‚¤ãƒ³ã‚¿ã‚’å–ã‚Šå‡ºã™ãŸã‚</div><div class='del'>-ã«ä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã‚’ä½¿ã£ã¦ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  #define GetDBM(obj, dbmp) do {\</div><div class='del'>-      Data_Get_Struct(obj, struct dbmdata, dbmp);\</div><div class='del'>-      if (dbmp-&gt;di_dbm == 0) closed_dbm();\</div><div class='del'>-  } while (0)</div><div class='del'>-</div><div class='del'>-ã¡ã‚‡ã£ã¨è¤‡é›‘ãªãƒžã‚¯ãƒ­ã§ã™ãŒï¼Œè¦ã™ã‚‹ã«dbmdataæ§‹é€ ä½“ã®ãƒã‚¤ãƒ³ã‚¿</div><div class='del'>-ã®å–ã‚Šå‡ºã—ã¨ï¼Œcloseã•ã‚Œã¦ã„ã‚‹ã‹ã©ã†ã‹ã®ãƒã‚§ãƒƒã‚¯ã‚’ã¾ã¨ã‚ã¦ã„</div><div class='del'>-ã‚‹ã ã‘ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-DBMã‚¯ãƒ©ã‚¹ã«ã¯ãŸãã•ã‚“ãƒ¡ã‚½ãƒƒãƒ‰ãŒã‚ã‚Šã¾ã™ãŒï¼Œåˆ†é¡žã™ã‚‹ã¨3ç¨®é¡žã®</div><div class='del'>-å¼•æ•°ã®å—ã‘æ–¹ãŒã‚ã‚Šã¾ã™ï¼Žã²ã¨ã¤ã¯å¼•æ•°ã®æ•°ãŒå›ºå®šã®ã‚‚ã®ã§ï¼Œä¾‹ã¨</div><div class='del'>-ã—ã¦ã¯deleteãƒ¡ã‚½ãƒƒãƒ‰ãŒã‚ã‚Šã¾ã™ï¼Ždeleteãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®Ÿè£…ã—ã¦ã„ã‚‹</div><div class='del'>-fdbm_delete()ã¯ã“ã®ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  static VALUE</div><div class='del'>-  fdbm_delete(VALUE obj, VALUE keystr)</div><div class='del'>-  {</div><div class='del'>-      /* ... */</div><div class='del'>-  }</div><div class='del'>-</div><div class='del'>-å¼•æ•°ã®æ•°ãŒå›ºå®šã®ã‚¿ã‚¤ãƒ—ã¯ç¬¬1å¼•æ•°ãŒselfï¼Œç¬¬2å¼•æ•°ä»¥é™ãŒãƒ¡ã‚½ãƒƒãƒ‰</div><div class='del'>-ã®å¼•æ•°ã¨ãªã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-å¼•æ•°ã®æ•°ãŒä¸å®šã®ã‚‚ã®ã¯Cã®é…åˆ—ã§å—ã‘ã‚‹ã‚‚ã®ã¨Rubyã®é…åˆ—ã§å—ã‘</div><div class='del'>-ã‚‹ã‚‚ã®ã¨ãŒã‚ã‚Šã¾ã™ï¼Ždbmãƒ©ã‚¤ãƒ–ãƒ©ãƒªã®ä¸­ã§ï¼ŒCã®é…åˆ—ã§å—ã‘ã‚‹ã‚‚ã®</div><div class='del'>-ã¯DBMã®ã‚¯ãƒ©ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚ã‚‹open()ã§ã™ï¼Žã“ã‚Œã‚’å®Ÿè£…ã—ã¦ã„ã‚‹é–¢</div><div class='del'>-æ•°fdbm_s_open()ã¯ã“ã†ãªã£ã¦ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  static VALUE</div><div class='del'>-  fdbm_s_open(int argc, VALUE *argv, VALUE klass)</div><div class='del'>-  {</div><div class='del'>-      /* ... */</div><div class='del'>-</div><div class='del'>-      if (rb_scan_args(argc, argv, "11", &amp;file, &amp;vmode) == 1) {</div><div class='del'>-  	mode = 0666;		/* default value */</div><div class='del'>-      }</div><div class='del'>-</div><div class='del'>-      /* ... */</div><div class='del'>-  }</div><div class='del'>-</div><div class='del'>-ã“ã®ã‚¿ã‚¤ãƒ—ã®é–¢æ•°ã¯ç¬¬1å¼•æ•°ãŒä¸Žãˆã‚‰ã‚ŒãŸå¼•æ•°ã®æ•°ï¼Œç¬¬2å¼•æ•°ãŒä¸Žãˆ</div><div class='del'>-ã‚‰ã‚ŒãŸå¼•æ•°ã®å…¥ã£ã¦ã„ã‚‹é…åˆ—ã«ãªã‚Šã¾ã™ï¼Žselfã¯ç¬¬3å¼•æ•°ã¨ã—ã¦ä¸Ž</div><div class='del'>-ãˆã‚‰ã‚Œã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-ã“ã®é…åˆ—ã§ä¸Žãˆã‚‰ã‚ŒãŸå¼•æ•°ã‚’è§£æžã™ã‚‹ãŸã‚ã®é–¢æ•°ãŒopen()ã§ã‚‚ä½¿ã‚</div><div class='del'>-ã‚Œã¦ã„ã‚‹rb_scan_args()ã§ã™ï¼Žç¬¬3å¼•æ•°ã«æŒ‡å®šã—ãŸãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã«å¾“</div><div class='del'>-ã„ï¼Œç¬¬4å¤‰æ•°ä»¥é™ã«æŒ‡å®šã—ãŸVALUEã¸ã®å‚ç…§ã«å€¤ã‚’ä»£å…¥ã—ã¦ãã‚Œã¾</div><div class='del'>-ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-</div><div class='del'>-å¼•æ•°ã‚’Rubyã®é…åˆ—ã¨ã—ã¦å—ã‘å–ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®ä¾‹ã«ã¯</div><div class='del'>-Thread#initializeãŒã‚ã‚Šã¾ã™ï¼Žå®Ÿè£…ã¯ã“ã†ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  static VALUE</div><div class='del'>-  thread_initialize(VALUE thread, VALUE args)</div><div class='del'>-  {</div><div class='del'>-      /* ... */</div><div class='del'>-  }</div><div class='del'>-</div><div class='del'>-ç¬¬1å¼•æ•°ã¯selfï¼Œç¬¬2å¼•æ•°ã¯Rubyã®é…åˆ—ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-*æ³¨æ„äº‹é …*</div><div class='del'>-</div><div class='del'>-Rubyã¨å…±æœ‰ã¯ã—ãªã„ãŒRubyã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ ¼ç´ã™ã‚‹å¯èƒ½æ€§ã®ã‚ã‚‹</div><div class='del'>-Cã®å¤§åŸŸå¤‰æ•°ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’ä½¿ã£ã¦Rubyã‚¤ãƒ³ã‚¿ãƒ—ãƒªã‚¿ã«å¤‰æ•°ã®å­˜åœ¨</div><div class='del'>-ã‚’æ•™ãˆã¦ã‚ã’ã¦ãã ã•ã„ï¼Žã§ãªã„ã¨GCã§ãƒˆãƒ©ãƒ–ãƒ«ã‚’èµ·ã“ã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  void rb_global_variable(VALUE *var)</div><div class='del'>-</div><div class='del'>-== extconf.rbã‚’ç”¨æ„ã™ã‚‹</div><div class='del'>-</div><div class='del'>-Makefileã‚’ä½œã‚‹å ´åˆã®é››åž‹ã«ãªã‚‹extconf.rbã¨ã„ã†ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä½œã‚Š</div><div class='del'>-ã¾ã™ï¼Žextconf.rbã¯ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã®ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã«å¿…è¦ãªæ¡ä»¶ã®ãƒã‚§ãƒƒ</div><div class='del'>-ã‚¯ãªã©ã‚’è¡Œã†ã“ã¨ãŒç›®çš„ã§ã™ï¼Žã¾ãšï¼Œ</div><div class='del'>-</div><div class='del'>-  require 'mkmf'</div><div class='del'>-</div><div class='del'>-ã‚’extconf.rbã®å…ˆé ­ã«ç½®ãã¾ã™ï¼Žextconf.rbã®ä¸­ã§ã¯ä»¥ä¸‹ã®Rubyé–¢</div><div class='del'>-æ•°ã‚’ä½¿ã†ã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  have_library(lib, func): ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã®å­˜åœ¨ãƒã‚§ãƒƒã‚¯</div><div class='del'>-  have_func(func, header): é–¢æ•°ã®å­˜åœ¨ãƒã‚§ãƒƒã‚¯</div><div class='del'>-  have_header(header): ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«ã®å­˜åœ¨ãƒã‚§ãƒƒã‚¯</div><div class='del'>-  create_makefile(target[, target_prefix]): Makefileã®ç”Ÿæˆ</div><div class='del'>-</div><div class='del'>-ä»¥ä¸‹ã®å¤‰æ•°ã‚’ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  $CFLAGS: ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«æ™‚ã«è¿½åŠ çš„ã«æŒ‡å®šã™ã‚‹ãƒ•ãƒ©ã‚°(-Oãªã©)</div><div class='del'>-  $CPPFLAGS: ãƒ—ãƒªãƒ—ãƒ­ã‚»ãƒƒã‚µã«è¿½åŠ çš„ã«æŒ‡å®šã™ã‚‹ãƒ•ãƒ©ã‚°(-Iã‚„-Dãªã©)</div><div class='del'>-  $LDFLAGS: ãƒªãƒ³ã‚¯æ™‚ã«è¿½åŠ çš„ã«æŒ‡å®šã™ã‚‹ãƒ•ãƒ©ã‚°(-Lãªã©)</div><div class='del'>-  $objs: ãƒªãƒ³ã‚¯ã•ã‚Œã‚‹ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãƒ•ã‚¡ã‚¤ãƒ«åã®ãƒªã‚¹ãƒˆ</div><div class='del'>-</div><div class='del'>-ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒªã‚¹ãƒˆã¯ï¼Œé€šå¸¸ã¯ã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’æ¤œç´¢ã—</div><div class='del'>-ã¦è‡ªå‹•çš„ã«ç”Ÿæˆã•ã‚Œã¾ã™ãŒï¼Œmakeã®é€”ä¸­ã§ã‚½ãƒ¼ã‚¹ã‚’ç”Ÿæˆã™ã‚‹ã‚ˆã†ãª</div><div class='del'>-å ´åˆã¯æ˜Žç¤ºçš„ã«æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã‚’ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã™ã‚‹æ¡ä»¶ãŒæƒã‚ãšï¼Œãã®ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã‚’ã‚³ãƒ³</div><div class='del'>-ãƒ‘ã‚¤ãƒ«ã—ãªã„æ™‚ã«ã¯create_makefileã‚’å‘¼ã°ãªã‘ã‚Œã°Makefileã¯ç”Ÿ</div><div class='del'>-æˆã•ã‚Œãšï¼Œã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã‚‚è¡Œã‚ã‚Œã¾ã›ã‚“ï¼Ž</div><div class='del'>-</div><div class='del'>-== dependã‚’ç”¨æ„ã™ã‚‹</div><div class='del'>-</div><div class='del'>-ã‚‚ã—ï¼Œãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«dependã¨ã„ã†ãƒ•ã‚¡ã‚¤ãƒ«ãŒå­˜åœ¨ã™ã‚Œã°ï¼Œ</div><div class='del'>-MakefileãŒä¾å­˜é–¢ä¿‚ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãã‚Œã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  % gcc -MM *.c &gt; depend</div><div class='del'>-</div><div class='del'>-ãªã©ã§ä½œã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼Žã‚ã£ã¦æã¯ç„¡ã„ã§ã—ã‚‡ã†ï¼Ž</div><div class='del'>-</div><div class='del'>-== Makefileã‚’ç”Ÿæˆã™ã‚‹</div><div class='del'>-</div><div class='del'>-Makefileã‚’å®Ÿéš›ã«ç”Ÿæˆã™ã‚‹ãŸã‚ã«ã¯</div><div class='del'>-</div><div class='del'>-  ruby extconf.rb</div><div class='del'>-</div><div class='del'>-ã¨ã—ã¾ã™ï¼Žextconf.rbã« require 'mkmf' ã®è¡ŒãŒãªã„å ´åˆã«ã¯ã‚¨ãƒ©ãƒ¼</div><div class='del'>-ã«ãªã‚Šã¾ã™ã®ã§ï¼Œå¼•æ•°ã‚’è¿½åŠ ã—ã¦</div><div class='del'>-</div><div class='del'>-  ruby -r mkmf extconf.rb</div><div class='del'>-</div><div class='del'>-ã¨ã—ã¦ãã ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-site_ruby ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ãªãï¼Œ</div><div class='del'>-vendor_ruby ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å ´åˆã«ã¯</div><div class='del'>-ä»¥ä¸‹ã®ã‚ˆã†ã« --vendor ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’åŠ ãˆã¦ãã ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-  ruby extconf.rb --vendor</div><div class='del'>-</div><div class='del'>-ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’extä»¥ä¸‹ã«ç”¨æ„ã—ãŸå ´åˆã«ã¯Rubyå…¨ä½“ã®makeã®æ™‚ã«</div><div class='del'>-è‡ªå‹•çš„ã«MakefileãŒç”Ÿæˆã•ã‚Œã¾ã™ã®ã§ï¼Œã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã¯ä¸è¦ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== makeã™ã‚‹</div><div class='del'>-</div><div class='del'>-å‹•çš„ãƒªãƒ³ã‚¯ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã‚’ç”Ÿæˆã™ã‚‹å ´åˆã«ã¯ãã®å ´ã§makeã—ã¦ãã ã•</div><div class='del'>-ã„ï¼Žå¿…è¦ã§ã‚ã‚Œã° make install ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-extä»¥ä¸‹ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ç”¨æ„ã—ãŸå ´åˆã¯ï¼ŒRubyã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§</div><div class='del'>-makeã‚’å®Ÿè¡Œã™ã‚‹ã¨Makefileã‚’ç”Ÿæˆã‹ã‚‰makeï¼Œå¿…è¦ã«ã‚ˆã£ã¦ã¯ãã®ãƒ¢</div><div class='del'>-ã‚¸ãƒ¥ãƒ¼ãƒ«ã®Rubyã¸ã®ãƒªãƒ³ã‚¯ã¾ã§è‡ªå‹•çš„ã«å®Ÿè¡Œã—ã¦ãã‚Œã¾ã™ï¼Ž</div><div class='del'>-extconf.rbã‚’æ›¸ãæ›ãˆã‚‹ãªã©ã—ã¦Makefileã®å†ç”ŸæˆãŒå¿…è¦ãªæ™‚ã¯ã¾</div><div class='del'>-ãŸRubyãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§makeã—ã¦ãã ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã¯make installã§Rubyãƒ©ã‚¤ãƒ–ãƒ©ãƒªã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®</div><div class='del'>-ä¸‹ã«ã‚³ãƒ”ãƒ¼ã•ã‚Œã¾ã™ï¼Žã‚‚ã—æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã¨å”èª¿ã—ã¦ä½¿ã†Rubyã§è¨˜</div><div class='del'>-è¿°ã•ã‚ŒãŸãƒ—ãƒ­ã‚°ãƒ©ãƒ ãŒã‚ã‚Šï¼ŒRubyãƒ©ã‚¤ãƒ–ãƒ©ãƒªã«ç½®ããŸã„å ´åˆã«ã¯ï¼Œ</div><div class='del'>-æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªç”¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸‹ã« lib ã¨ã„ã†ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª</div><div class='del'>-ã‚’ä½œã‚Šï¼Œãã“ã« æ‹¡å¼µå­ .rb ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ç½®ã„ã¦ãŠã‘ã°åŒæ™‚ã«ã‚¤ãƒ³</div><div class='del'>-ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== ãƒ‡ãƒãƒƒã‚°</div><div class='del'>-</div><div class='del'>-ã¾ã‚ï¼Œãƒ‡ãƒãƒƒã‚°ã—ãªã„ã¨å‹•ã‹ãªã„ã§ã—ã‚‡ã†ã­ï¼Žext/Setupã«ãƒ‡ã‚£ãƒ¬</div><div class='del'>-ã‚¯ãƒˆãƒªåã‚’æ›¸ãã¨é™çš„ã«ãƒªãƒ³ã‚¯ã™ã‚‹ã®ã§ãƒ‡ãƒãƒƒã‚¬ãŒä½¿ãˆã‚‹ã‚ˆã†ã«ãª</div><div class='del'>-ã‚Šã¾ã™ï¼Žãã®åˆ†ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ãŒé…ããªã‚Šã¾ã™ã‘ã©ï¼Ž</div><div class='del'>-</div><div class='del'>-== ã§ãã‚ãŒã‚Š</div><div class='del'>-</div><div class='del'>-å¾Œã¯ã“ã£ãã‚Šä½¿ã†ãªã‚Šï¼Œåºƒãå…¬é–‹ã™ã‚‹ãªã‚Šï¼Œå£²ã‚‹ãªã‚Šï¼Œã”è‡ªç”±ã«ãŠ</div><div class='del'>-ä½¿ã„ãã ã•ã„ï¼ŽRubyã®ä½œè€…ã¯æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã«é–¢ã—ã¦ä¸€åˆ‡ã®æ¨©åˆ©ã‚’</div><div class='del'>-ä¸»å¼µã—ã¾ã›ã‚“ï¼Ž</div><div class='del'>-</div><div class='del'>-= Appendix A. Rubyã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®åˆ†é¡ž</div><div class='del'>-</div><div class='del'>-Rubyã®ã‚½ãƒ¼ã‚¹ã¯ã„ãã¤ã‹ã«åˆ†é¡žã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼Žã“ã®ã†ã¡ã‚¯ãƒ©</div><div class='del'>-ã‚¹ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã®éƒ¨åˆ†ã¯åŸºæœ¬çš„ã«æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã¨åŒã˜ä½œã‚Šæ–¹ã«ãªã£</div><div class='del'>-ã¦ã„ã¾ã™ï¼Žã“ã‚Œã‚‰ã®ã‚½ãƒ¼ã‚¹ã¯ä»Šã¾ã§ã®èª¬æ˜Žã§ã»ã¨ã‚“ã©ç†è§£ã§ãã‚‹ã¨</div><div class='del'>-æ€ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== Rubyè¨€èªžã®ã‚³ã‚¢</div><div class='del'>-</div><div class='del'>-class.c    :: ã‚¯ãƒ©ã‚¹ã¨ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«</div><div class='del'>-error.c    :: ä¾‹å¤–ã‚¯ãƒ©ã‚¹ã¨ä¾‹å¤–æ©Ÿæ§‹</div><div class='del'>-gc.c       :: è¨˜æ†¶é ˜åŸŸç®¡ç†</div><div class='del'>-load.c     :: ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã®ãƒ­ãƒ¼ãƒ‰</div><div class='del'>-object.c   :: ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆ</div><div class='del'>-variable.c :: å¤‰æ•°ã¨å®šæ•°</div><div class='del'>-</div><div class='del'>-== Rubyã®æ§‹æ–‡è§£æžå™¨</div><div class='del'>-</div><div class='del'>-  parse.y      : å­—å¥è§£æžå™¨ã¨æ§‹æ–‡å®šç¾©</div><div class='del'>-    -&gt; parse.c : è‡ªå‹•ç”Ÿæˆ</div><div class='del'>-  keywords     : äºˆç´„èªž</div><div class='del'>-    -&gt; lex.c   : è‡ªå‹•ç”Ÿæˆ</div><div class='del'>-</div><div class='del'>-== Rubyã®è©•ä¾¡å™¨ (é€šç§°YARV)</div><div class='del'>-  compile.c</div><div class='del'>-  eval.c</div><div class='del'>-  eval_error.c</div><div class='del'>-  eval_jump.c</div><div class='del'>-  eval_safe.c</div><div class='del'>-  insns.def           : ä»®æƒ³æ©Ÿæ¢°èªžã®å®šç¾©</div><div class='del'>-  iseq.c              : VM::ISeqã®å®Ÿè£…</div><div class='del'>-  thread.c            : ã‚¹ãƒ¬ãƒƒãƒ‰ç®¡ç†ã¨ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆåˆ‡ã‚Šæ›¿ãˆ</div><div class='del'>-  thread_win32.c      : ã‚¹ãƒ¬ãƒƒãƒ‰å®Ÿè£…</div><div class='del'>-  thread_pthread.c    : åŒä¸Š</div><div class='del'>-  vm.c</div><div class='del'>-  vm_dump.c</div><div class='del'>-  vm_eval.c</div><div class='del'>-  vm_exec.c</div><div class='del'>-  vm_insnhelper.c</div><div class='del'>-  vm_method.c</div><div class='del'>-</div><div class='del'>-  opt_insns_unif.def  : å‘½ä»¤èžåˆ</div><div class='del'>-  opt_operand.def     : æœ€é©åŒ–ã®ãŸã‚ã®å®šç¾©</div><div class='del'>-</div><div class='del'>-    -&gt; insn*.inc      : è‡ªå‹•ç”Ÿæˆ</div><div class='del'>-    -&gt; opt*.inc       : è‡ªå‹•ç”Ÿæˆ</div><div class='del'>-    -&gt; vm.inc         : è‡ªå‹•ç”Ÿæˆ</div><div class='del'>-</div><div class='del'>-== æ­£è¦è¡¨ç¾ã‚¨ãƒ³ã‚¸ãƒ³ (é¬¼è»Š)</div><div class='del'>-</div><div class='del'>-  regex.c</div><div class='del'>-  regcomp.c</div><div class='del'>-  regenc.c</div><div class='del'>-  regerror.c</div><div class='del'>-  regexec.c</div><div class='del'>-  regparse.c</div><div class='del'>-  regsyntax.c</div><div class='del'>-</div><div class='del'>-== ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£é–¢æ•°</div><div class='del'>-</div><div class='del'>-debug.c    :: Cãƒ‡ãƒãƒƒã‚¬ç”¨ã®ãƒ‡ãƒãƒƒã‚°ã‚·ãƒ³ãƒœãƒ«</div><div class='del'>-dln.c      :: å‹•çš„ãƒ­ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°</div><div class='del'>-st.c       :: æ±Žç”¨ãƒãƒƒã‚·ãƒ¥è¡¨</div><div class='del'>-strftime.c :: æ™‚åˆ»æ•´å½¢</div><div class='del'>-util.c     :: ãã®ä»–ã®ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£</div><div class='del'>-</div><div class='del'>-== Rubyã‚³ãƒžãƒ³ãƒ‰ã®å®Ÿè£…</div><div class='del'>-</div><div class='del'>-  dmyext.c</div><div class='del'>-  dmydln.c</div><div class='del'>-  dmyencoding.c</div><div class='del'>-  id.c</div><div class='del'>-  inits.c</div><div class='del'>-  main.c</div><div class='del'>-  ruby.c</div><div class='del'>-  version.c</div><div class='del'>-</div><div class='del'>-  gem_prelude.rb</div><div class='del'>-  prelude.rb</div><div class='del'>-</div><div class='del'>-== ã‚¯ãƒ©ã‚¹ãƒ©ã‚¤ãƒ–ãƒ©ãƒª</div><div class='del'>-</div><div class='del'>-array.c      :: Array</div><div class='del'>-bignum.c     :: Bignum</div><div class='del'>-compar.c     :: Comparable</div><div class='del'>-complex.c    :: Complex</div><div class='del'>-cont.c       :: Fiber, Continuation</div><div class='del'>-dir.c        :: Dir</div><div class='del'>-enum.c       :: Enumerable</div><div class='del'>-enumerator.c :: Enumerator</div><div class='del'>-file.c       :: File</div><div class='del'>-hash.c       :: Hash</div><div class='del'>-io.c         :: IO</div><div class='del'>-marshal.c    :: Marshal</div><div class='del'>-math.c       :: Math</div><div class='del'>-numeric.c    :: Numeric, Integer, Fixnum, Float</div><div class='del'>-pack.c       :: Array#pack, String#unpack</div><div class='del'>-proc.c       :: Binding, Proc</div><div class='del'>-process.c    :: Process</div><div class='del'>-random.c     :: ä¹±æ•°</div><div class='del'>-range.c      :: Range</div><div class='del'>-rational.c   :: Rational</div><div class='del'>-re.c         :: Regexp, MatchData</div><div class='del'>-signal.c     :: Signal</div><div class='del'>-sprintf.c    :: String#sprintf</div><div class='del'>-string.c     :: String</div><div class='del'>-struct.c     :: Struct</div><div class='del'>-time.c       :: Time</div><div class='del'>-defs/known_errors.def :: ä¾‹å¤–ã‚¯ãƒ©ã‚¹ Errno::*</div><div class='del'>--&gt; known_errors.inc   :: è‡ªå‹•ç”Ÿæˆ</div><div class='del'>-</div><div class='del'>-== å¤šè¨€èªžåŒ–</div><div class='del'>-</div><div class='del'>-encoding.c  :: Encoding</div><div class='del'>-transcode.c :: Encoding::Converter</div><div class='del'>-enc/*.c     :: ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚¯ãƒ©ã‚¹ç¾¤</div><div class='del'>-enc/trans/* :: ã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ³ãƒˆå¯¾å¿œè¡¨</div><div class='del'>-</div><div class='del'>-== gorubyã‚³ãƒžãƒ³ãƒ‰ã®å®Ÿè£…</div><div class='del'>-</div><div class='del'>-  goruby.c</div><div class='del'>-  golf_prelude.rb      : gorubyå›ºæœ‰ã®ãƒ©ã‚¤ãƒ–ãƒ©ãƒª</div><div class='del'>-    -&gt; golf_prelude.c  : è‡ªå‹•ç”Ÿæˆ</div><div class='del'>-</div><div class='del'>-= Appendix B. æ‹¡å¼µç”¨é–¢æ•°ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹</div><div class='del'>-</div><div class='del'>-Cè¨€èªžã‹ã‚‰Rubyã®æ©Ÿèƒ½ã‚’åˆ©ç”¨ã™ã‚‹APIã¯ä»¥ä¸‹ã®é€šã‚Šã§ã‚ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-== åž‹</div><div class='del'>-</div><div class='del'>-VALUE ::</div><div class='del'>-</div><div class='del'>-  Rubyã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è¡¨ç¾ã™ã‚‹åž‹ï¼Žå¿…è¦ã«å¿œã˜ã¦ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ç”¨ã„ã‚‹ï¼Ž</div><div class='del'>-  çµ„ã¿è¾¼ã¿åž‹ã‚’è¡¨ç¾ã™ã‚‹Cã®åž‹ã¯ruby.hã«è¨˜è¿°ã—ã¦ã‚ã‚‹Rã§å§‹ã¾ã‚‹æ§‹é€ </div><div class='del'>-  ä½“ã§ã‚ã‚‹ï¼ŽVALUEåž‹ã‚’ã“ã‚Œã‚‰ã«ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ãŸã‚ã«Rã§å§‹ã¾ã‚‹æ§‹é€ ä½“</div><div class='del'>-  åã‚’å…¨ã¦å¤§æ–‡å­—ã«ã—ãŸåå‰ã®ãƒžã‚¯ãƒ­ãŒç”¨æ„ã•ã‚Œã¦ã„ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-== å¤‰æ•°ãƒ»å®šæ•°</div><div class='del'>-</div><div class='del'>-Qnil ::</div><div class='del'>-</div><div class='del'>-  å®šæ•°: nilã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆ</div><div class='del'>-</div><div class='del'>-Qtrue ::</div><div class='del'>-</div><div class='del'>-  å®šæ•°: trueã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆ(çœŸã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤)</div><div class='del'>-</div><div class='del'>-Qfalse ::</div><div class='del'>-</div><div class='del'>-  å®šæ•°: falseã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆ</div><div class='del'>-</div><div class='del'>-== Cãƒ‡ãƒ¼ã‚¿ã®ã‚«ãƒ—ã‚»ãƒ«åŒ–</div><div class='del'>-</div><div class='del'>-Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval) ::</div><div class='del'>-</div><div class='del'>-  Cã®ä»»æ„ã®ãƒã‚¤ãƒ³ã‚¿ã‚’ã‚«ãƒ—ã‚»ãƒ«åŒ–ã—ãŸRubyã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è¿”ã™ï¼Žã“</div><div class='del'>-  ã®ãƒã‚¤ãƒ³ã‚¿ãŒRubyã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã•ã‚Œãªããªã£ãŸæ™‚ï¼Œfreeã§æŒ‡å®šã—ãŸ</div><div class='del'>-  é–¢æ•°ãŒå‘¼ã°ã‚Œã‚‹ï¼Žã¾ãŸï¼Œã“ã®ãƒã‚¤ãƒ³ã‚¿ã®æŒ‡ã™ãƒ‡ãƒ¼ã‚¿ãŒä»–ã®Rubyã‚ªãƒ–</div><div class='del'>-  ã‚¸ã‚§ã‚¯ãƒˆã‚’æŒ‡ã—ã¦ã„ã‚‹å ´åˆï¼Œmarkã«æŒ‡å®šã™ã‚‹é–¢æ•°ã§ãƒžãƒ¼ã‚¯ã™ã‚‹å¿…è¦</div><div class='del'>-  ãŒã‚ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-Data_Make_Struct(klass, type, mark, free, sval) ::</div><div class='del'>-</div><div class='del'>-  typeåž‹ã®ãƒ¡ãƒ¢ãƒªã‚’mallocã—ï¼Œå¤‰æ•°svalã«ä»£å…¥ã—ãŸå¾Œï¼Œãã‚Œã‚’ã‚«ãƒ—ã‚»</div><div class='del'>-  ãƒ«åŒ–ã—ãŸãƒ‡ãƒ¼ã‚¿ã‚’è¿”ã™ãƒžã‚¯ãƒ­ï¼Ž</div><div class='del'>-</div><div class='del'>-Data_Get_Struct(data, type, sval) ::</div><div class='del'>-</div><div class='del'>-  dataã‹ã‚‰typeåž‹ã®ãƒã‚¤ãƒ³ã‚¿ã‚’å–ã‚Šå‡ºã—å¤‰æ•°svalã«ä»£å…¥ã™ã‚‹ãƒžã‚¯ãƒ­ï¼Ž</div><div class='del'>-</div><div class='del'>-== åž‹ãƒã‚§ãƒƒã‚¯</div><div class='del'>-</div><div class='del'>-  TYPE(value)</div><div class='del'>-  FIXNUM_P(value)</div><div class='del'>-  NIL_P(value)</div><div class='del'>-  void Check_Type(VALUE value, int type)</div><div class='del'>-  SafeStringValue(value)</div><div class='del'>-</div><div class='del'>-== åž‹å¤‰æ›</div><div class='del'>-</div><div class='del'>-  FIX2INT(value), INT2FIX(i)</div><div class='del'>-  FIX2LONG(value), LONG2FIX(l)</div><div class='del'>-  NUM2INT(value), INT2NUM(i)</div><div class='del'>-  NUM2UINT(value), UINT2NUM(ui)</div><div class='del'>-  NUM2LONG(value), LONG2NUM(l)</div><div class='del'>-  NUM2ULONG(value), ULONG2NUM(ul)</div><div class='del'>-  NUM2LL(value), LL2NUM(ll)</div><div class='del'>-  NUM2ULL(value), ULL2NUM(ull)</div><div class='del'>-  NUM2OFFT(value), OFFT2NUM(off)</div><div class='del'>-  NUM2SIZET(value), SIZET2NUM(size)</div><div class='del'>-  NUM2SSIZET(value), SSIZET2NUM(ssize)</div><div class='del'>-  rb_integer_pack(value, words, numwords, wordsize, nails, flags), rb_integer_unpack(words, numwords, wordsize, nails, flags)</div><div class='del'>-  NUM2DBL(value)</div><div class='del'>-  rb_float_new(f)</div><div class='del'>-  RSTRING_LEN(str)</div><div class='del'>-  RSTRING_PTR(str)</div><div class='del'>-  StringValue(value)</div><div class='del'>-  StringValuePtr(value)</div><div class='del'>-  StringValueCStr(value)</div><div class='del'>-  rb_str_new2(s)</div><div class='del'>-</div><div class='del'>-== ã‚¯ãƒ©ã‚¹/ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«å®šç¾©</div><div class='del'>-</div><div class='del'>-VALUE rb_define_class(const char *name, VALUE super) ::</div><div class='del'>-</div><div class='del'>-  superã®ã‚µãƒ–ã‚¯ãƒ©ã‚¹ã¨ã—ã¦æ–°ã—ã„Rubyã‚¯ãƒ©ã‚¹ã‚’å®šç¾©ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUE rb_define_class_under(VALUE module, const char *name, VALUE super) ::</div><div class='del'>-</div><div class='del'>-  superã®ã‚µãƒ–ã‚¯ãƒ©ã‚¹ã¨ã—ã¦æ–°ã—ã„Rubyã‚¯ãƒ©ã‚¹ã‚’å®šç¾©ã—ï¼Œmoduleã®</div><div class='del'>-  å®šæ•°ã¨ã—ã¦å®šç¾©ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUE rb_define_module(const char *name) ::</div><div class='del'>-</div><div class='del'>-  æ–°ã—ã„Rubyãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’å®šç¾©ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUE rb_define_module_under(VALUE module, const char *name) ::</div><div class='del'>-</div><div class='del'>-  æ–°ã—ã„Rubyãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’å®šç¾©ã—ï¼Œmoduleã®å®šæ•°ã¨ã—ã¦å®šç¾©ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_include_module(VALUE klass, VALUE module) ::</div><div class='del'>-</div><div class='del'>-  ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã™ã‚‹ï¼ŽclassãŒã™ã§ã«moduleã‚’ã‚¤ãƒ³ã‚¯</div><div class='del'>-  ãƒ«ãƒ¼ãƒ‰ã—ã¦ã„ã‚‹æ™‚ã«ã¯ä½•ã‚‚ã—ãªã„(å¤šé‡ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã®ç¦æ­¢)ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_extend_object(VALUE object, VALUE module) ::</div><div class='del'>-</div><div class='del'>-  ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«(ã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰)ã§æ‹¡å¼µã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-== å¤§åŸŸå¤‰æ•°å®šç¾©</div><div class='del'>-</div><div class='del'>-void rb_define_variable(const char *name, VALUE *var) ::</div><div class='del'>-</div><div class='del'>-  Rubyã¨Cã¨ã§å…±æœ‰ã™ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’å®šç¾©ã™ã‚‹ï¼Žå¤‰æ•°åãŒ`$'ã§</div><div class='del'>-  å§‹ã¾ã‚‰ãªã„æ™‚ã«ã¯è‡ªå‹•çš„ã«è¿½åŠ ã•ã‚Œã‚‹ï¼Žnameã¨ã—ã¦Rubyã®è­˜åˆ¥å­</div><div class='del'>-  ã¨ã—ã¦è¨±ã•ã‚Œãªã„æ–‡å­—(ä¾‹ãˆã°` ')ã‚’å«ã‚€å ´åˆã«ã¯Rubyãƒ—ãƒ­ã‚°ãƒ©</div><div class='del'>-  ãƒ ã‹ã‚‰ã¯è¦‹ãˆãªããªã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_define_readonly_variable(const char *name, VALUE *var) ::</div><div class='del'>-</div><div class='del'>-  Rubyã¨Cã¨ã§å…±æœ‰ã™ã‚‹read onlyã®ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’å®šç¾©ã™ã‚‹ï¼Ž</div><div class='del'>-  read onlyã§ã‚ã‚‹ã“ã¨ä»¥å¤–ã¯rb_define_variable()ã¨åŒã˜ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_define_virtual_variable(const char *name, VALUE (*getter)(), void (*setter)()) ::</div><div class='del'>-</div><div class='del'>-  é–¢æ•°ã«ã‚ˆã£ã¦å®Ÿç¾ã•ã‚Œã‚‹Rubyå¤‰æ•°ã‚’å®šç¾©ã™ã‚‹ï¼Žå¤‰æ•°ãŒå‚ç…§ã•ã‚ŒãŸ</div><div class='del'>-  æ™‚ã«ã¯getterãŒï¼Œå¤‰æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•ã‚ŒãŸæ™‚ã«ã¯setterãŒå‘¼ã°ã‚Œ</div><div class='del'>-  ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_define_hooked_variable(const char *name, VALUE *var, VALUE (*getter)(), void (*setter)()) ::</div><div class='del'>-</div><div class='del'>-  é–¢æ•°ã«ã‚ˆã£ã¦hookã®ã¤ã‘ã‚‰ã‚ŒãŸã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’å®šç¾©ã™ã‚‹ï¼Žå¤‰æ•°</div><div class='del'>-  ãŒå‚ç…§ã•ã‚ŒãŸæ™‚ã«ã¯getterãŒï¼Œé–¢æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•ã‚ŒãŸæ™‚ã«ã¯</div><div class='del'>-  setterãŒå‘¼ã°ã‚Œã‚‹ï¼Žgetterã‚„setterã«0ã‚’æŒ‡å®šã—ãŸæ™‚ã«ã¯hookã‚’</div><div class='del'>-  æŒ‡å®šã—ãªã„ã®ã¨åŒã˜äº‹ã«ãªã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_global_variable(VALUE *var)</div><div class='del'>-</div><div class='del'>-  GCã®ãŸã‚ï¼ŒRubyãƒ—ãƒ­ã‚°ãƒ©ãƒ ã‹ã‚‰ã¯ã‚¢ã‚¯ã‚»ã‚¹ã•ã‚Œãªã„ãŒ, Rubyã‚ªãƒ–</div><div class='del'>-  ã‚¸ã‚§ã‚¯ãƒˆã‚’å«ã‚€å¤§åŸŸå¤‰æ•°ã‚’ãƒžãƒ¼ã‚¯ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-== å®šæ•°</div><div class='del'>-</div><div class='del'>-void rb_define_const(VALUE klass, const char *name, VALUE val) ::</div><div class='del'>-</div><div class='del'>-  å®šæ•°ã‚’å®šç¾©ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_define_global_const(const char *name, VALUE val) ::</div><div class='del'>-</div><div class='del'>-  å¤§åŸŸå®šæ•°ã‚’å®šç¾©ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-    rb_define_const(rb_cObject, name, val)</div><div class='del'>-</div><div class='del'>-  ã¨åŒã˜æ„å‘³ï¼Ž</div><div class='del'>-</div><div class='del'>-== ãƒ¡ã‚½ãƒƒãƒ‰å®šç¾©</div><div class='del'>-</div><div class='del'>-rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::</div><div class='del'>-</div><div class='del'>-  ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®šç¾©ã™ã‚‹ï¼Žargcã¯selfã‚’é™¤ãå¼•æ•°ã®æ•°ï¼ŽargcãŒ-1ã®æ™‚,</div><div class='del'>-  é–¢æ•°ã«ã¯å¼•æ•°ã®æ•°(selfã‚’å«ã¾ãªã„)ã‚’ç¬¬1å¼•æ•°, å¼•æ•°ã®é…åˆ—ã‚’ç¬¬2</div><div class='del'>-  å¼•æ•°ã¨ã™ã‚‹å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã‚‹(ç¬¬3å¼•æ•°ã¯self)ï¼ŽargcãŒ-2ã®æ™‚,</div><div class='del'>-  ç¬¬1å¼•æ•°ãŒself, ç¬¬2å¼•æ•°ãŒargs(argsã¯å¼•æ•°ã‚’å«ã‚€Rubyã®é…åˆ—)ã¨</div><div class='del'>-  ã„ã†å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::</div><div class='del'>-</div><div class='del'>-  privateãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®šç¾©ã™ã‚‹ï¼Žå¼•æ•°ã¯rb_define_method()ã¨åŒã˜ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::</div><div class='del'>-</div><div class='del'>-  ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®šç¾©ã™ã‚‹ï¼Žå¼•æ•°ã¯rb_define_method()ã¨åŒã˜ï¼Ž</div><div class='del'>-</div><div class='del'>-rb_scan_args(int argc, VALUE *argv, const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  argc, argvå½¢å¼ã§ä¸Žãˆã‚‰ã‚ŒãŸæŒ‡å®šã•ã‚ŒãŸãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã«å¾“ã£ã¦å¼•</div><div class='del'>-  æ•°ã‚’åˆ†è§£ã—ï¼Œç¶šãVALUEã¸ã®å‚ç…§ã«ã‚»ãƒƒãƒˆã—ã¾ã™ï¼Žã“ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒ</div><div class='del'>-  ãƒˆã¯ï¼ŒABNFã§è¨˜è¿°ã™ã‚‹ã¨ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-    scan-arg-spec  := param-arg-spec [option-hash-arg-spec] [block-arg-spec]</div><div class='del'>-</div><div class='del'>-    param-arg-spec := pre-arg-spec [post-arg-spec] / post-arg-spec /</div><div class='del'>-                      pre-opt-post-arg-spec</div><div class='del'>-    pre-arg-spec   := num-of-leading-mandatory-args [num-of-optional-args]</div><div class='del'>-    post-arg-spec  := sym-for-variable-length-args</div><div class='del'>-                      [num-of-trailing-mandatory-args]</div><div class='del'>-    pre-opt-post-arg-spec := num-of-leading-mandatory-args num-of-optional-args</div><div class='del'>-                             num-of-trailing-mandatory-args</div><div class='del'>-    option-hash-arg-spec := sym-for-option-hash-arg</div><div class='del'>-    block-arg-spec := sym-for-block-arg</div><div class='del'>-</div><div class='del'>-    num-of-leading-mandatory-args  := DIGIT ; å…ˆé ­ã«ç½®ã‹ã‚Œã‚‹çœç•¥ä¸èƒ½ãªå¼•æ•°ã®æ•°</div><div class='del'>-    num-of-optional-args           := DIGIT ; ç¶šã„ã¦ç½®ã‹ã‚Œã‚‹çœç•¥å¯èƒ½ãªå¼•æ•°ã®æ•°</div><div class='del'>-    sym-for-variable-length-args   := "*"   ; ç¶šã„ã¦ç½®ã‹ã‚Œã‚‹å¯å¤‰é•·å¼•æ•°ã‚’</div><div class='del'>-                                            ; Rubyã®é…åˆ—ã§å–å¾—ã™ã‚‹ãŸã‚ã®æŒ‡å®š</div><div class='del'>-    num-of-trailing-mandatory-args := DIGIT ; çµ‚ç«¯ã«ç½®ã‹ã‚Œã‚‹çœç•¥ä¸èƒ½ãªå¼•æ•°ã®æ•°</div><div class='del'>-    sym-for-option-hash-arg        := ":"   ; ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãƒãƒƒã‚·ãƒ¥ã‚’å–å¾—ã™ã‚‹</div><div class='del'>-                                            ; ãŸã‚ã®æŒ‡å®š; çœç•¥ä¸èƒ½ãªå¼•æ•°ã®</div><div class='del'>-                                            ; æ•°ã‚ˆã‚Šã‚‚å¤šãã®å¼•æ•°ãŒæŒ‡å®šã•ã‚Œï¼Œ</div><div class='del'>-                                            ; æœ€å¾Œã®å¼•æ•°ãŒãƒãƒƒã‚·ãƒ¥ï¼ˆã¾ãŸã¯</div><div class='del'>-                                            ; #to_hashã§å¤‰æ›å¯èƒ½ï¼‰ã®å ´åˆã«</div><div class='del'>-                                            ; å–å¾—ã•ã‚Œã‚‹ï¼Žæœ€å¾Œã®å¼•æ•°ãŒnilã®</div><div class='del'>-                                            ; å ´åˆï¼Œå¯å¤‰é•·å¼•æ•°æŒ‡å®šãŒãªãï¼Œ</div><div class='del'>-                                            ; çœç•¥ä¸èƒ½å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚å¤šãã®</div><div class='del'>-                                            ; å¼•æ•°ãŒæŒ‡å®šã•ã‚ŒãŸå ´åˆã«å–å¾—ã•ã‚Œã‚‹</div><div class='del'>-    sym-for-block-arg              := "&amp;"   ; ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯ã‚’å–å¾—ã™ã‚‹ãŸã‚ã®</div><div class='del'>-                                            ; æŒ‡å®š</div><div class='del'>-</div><div class='del'>-  ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆãŒ"12"ã®å ´åˆï¼Œå¼•æ•°ã¯æœ€ä½Ž1ã¤ã§ï¼Œ3ã¤(1+2)ã¾ã§è¨±ã•</div><div class='del'>-  ã‚Œã‚‹ã¨ã„ã†æ„å‘³ã«ãªã‚Šã¾ã™ï¼Žå¾“ã£ã¦ï¼Œãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆæ–‡å­—åˆ—ã«ç¶šã„</div><div class='del'>-  ã¦3ã¤ã®VALUEã¸ã®å‚ç…§ã‚’ç½®ãå¿…è¦ãŒã‚ã‚Šã¾ã™ï¼Žãã‚Œã‚‰ã«ã¯å–å¾—ã—ãŸ</div><div class='del'>-  å¤‰æ•°ãŒã‚»ãƒƒãƒˆã•ã‚Œã¾ã™ï¼Žå¤‰æ•°ã¸ã®å‚ç…§ã®ä»£ã‚ã‚Šã«NULLã‚’æŒ‡å®šã™ã‚‹</div><div class='del'>-  ã“ã¨ã‚‚ã§ãï¼Œãã®å ´åˆã¯å–å¾—ã—ãŸå¼•æ•°ã®å€¤ã¯æ¨ã¦ã‚‰ã‚Œã¾ã™ï¼ŽãªãŠï¼Œ</div><div class='del'>-  çœç•¥å¯èƒ½å¼•æ•°ãŒçœç•¥ã•ã‚ŒãŸæ™‚ã®å¤‰æ•°ã®å€¤ã¯nil(Cè¨€èªžã®ãƒ¬ãƒ™ãƒ«ã§ã¯</div><div class='del'>-  Qnil)ã«ãªã‚Šã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-  è¿”ã‚Šå€¤ã¯ä¸Žãˆã‚‰ã‚ŒãŸå¼•æ•°ã®æ•°ã§ã™ï¼Žã‚ªãƒ—ã‚·ãƒ§ãƒ³ãƒãƒƒã‚·ãƒ¥ãŠã‚ˆã³ã‚¤</div><div class='del'>-  ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯ã¯æ•°ãˆã¾ã›ã‚“ï¼Ž</div><div class='del'>-</div><div class='del'>-int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *values)</div><div class='del'>-</div><div class='del'>-  ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã§æŒ‡å®šã•ã‚ŒãŸå€¤ã‚’tableã«ã—ãŸãŒã£ã¦å–ã‚Šå‡ºã—ã¾ã™ï¼Ž</div><div class='del'>-  tableã®æœ€åˆã®requiredå€‹ã®IDã¯å¿…é ˆã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã‚’è¡¨ã—ï¼Œç¶šã</div><div class='del'>-  optional (optionalãŒè² ã®å ´åˆã¯-optional-1) å€‹ã®IDã¯çœç•¥å¯èƒ½</div><div class='del'>-  ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã§ã™ï¼Žå¿…é ˆã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ãŒkeyword_hashä¸­ã«ãªã„å ´åˆï¼Œ</div><div class='del'>-  "missing keyword"ArgumentErrorãŒç™ºç”Ÿã—ã¾ã™ï¼Žçœç•¥å¯èƒ½ã‚­ãƒ¼ãƒ¯ãƒ¼</div><div class='del'>-  ãƒ‰ãŒãªã„å ´åˆã¯ï¼Œvaluesä¸­ã®å¯¾å¿œã™ã‚‹è¦ç´ ã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“ï¼Ž</div><div class='del'>-  keyword_hashã«ä½¿ç”¨ã•ã‚Œãªã„è¦ç´ ãŒã‚ã‚‹å ´åˆã¯ï¼ŒoptionalãŒè² ãªã‚‰</div><div class='del'>-  æ–°ã—ã„Hashã¨ã—ã¦çœç•¥å¯èƒ½å¼•æ•°ã®æ¬¡ã«ä¿å­˜ã•ã‚Œã¾ã™ãŒï¼Œãã†ã§ãªã‘</div><div class='del'>-  ã‚Œã°"unknown keyword"ArgumentErrorãŒç™ºç”Ÿã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUE rb_extract_keywords(VALUE *original_hash)</div><div class='del'>-</div><div class='del'>-  original_hashã§å‚ç…§ã•ã‚Œã‚‹Hashã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‹ã‚‰ï¼ŒSymbolã§ã‚ã‚‹</div><div class='del'>-  ã‚­ãƒ¼ã¨ãã®å€¤ã‚’æ–°ã—ã„Hashã«å–ã‚Šå‡ºã—ã¾ã™ï¼Žoriginal_hashã®æŒ‡ã™</div><div class='del'>-  å…ˆã«ã¯ï¼Œå…ƒã®HashãŒSymbolä»¥å¤–ã®ã‚­ãƒ¼ã‚’å«ã‚“ã§ã„ãŸå ´åˆã¯ãã‚Œã‚‰ãŒ</div><div class='del'>-  ã‚³ãƒ”ãƒ¼ã•ã‚ŒãŸåˆ¥ã®æ–°ã—ã„Hashï¼Œãã†ã§ãªã‘ã‚Œã°0ãŒä¿å­˜ã•ã‚Œã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== Rubyãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—</div><div class='del'>-</div><div class='del'>-VALUE rb_funcall(VALUE recv, ID mid, int narg, ...) ::</div><div class='del'>-</div><div class='del'>-  ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ï¼Žæ–‡å­—åˆ—ã‹ã‚‰midã‚’å¾—ã‚‹ãŸã‚ã«ã¯rb_intern()ã‚’</div><div class='del'>-  ä½¿ã†ï¼Ž</div><div class='del'>-  private/protectedãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚‚å‘¼ã³å‡ºã›ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv) ::</div><div class='del'>-VALUE rb_funcallv(VALUE recv, ID mid, int argc, VALUE *argv) ::</div><div class='del'>-</div><div class='del'>-  ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ï¼Žå¼•æ•°ã‚’argc, argvå½¢å¼ã§æ¸¡ã™ï¼Ž</div><div class='del'>-  private/protectedãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚‚å‘¼ã³å‡ºã›ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, VALUE *argv) ::</div><div class='del'>-</div><div class='del'>-  ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ï¼Ž</div><div class='del'>-  publicãªãƒ¡ã‚½ãƒƒãƒ‰ã—ã‹å‘¼ã¹ãªã„ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUE rb_eval_string(const char *str)</div><div class='del'>-</div><div class='del'>-  æ–‡å­—åˆ—ã‚’Rubyã‚¹ã‚¯ãƒªãƒ—ãƒˆã¨ã—ã¦ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ãƒ»å®Ÿè¡Œã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-ID rb_intern(const char *name) ::</div><div class='del'>-</div><div class='del'>-  æ–‡å­—åˆ—ã«å¯¾å¿œã™ã‚‹IDã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-char *rb_id2name(ID id) ::</div><div class='del'>-</div><div class='del'>-  IDã«å¯¾å¿œã™ã‚‹æ–‡å­—åˆ—ã‚’è¿”ã™(ãƒ‡ãƒãƒƒã‚°ç”¨)ï¼Ž</div><div class='del'>-</div><div class='del'>-char *rb_class2name(VALUE klass) ::</div><div class='del'>-</div><div class='del'>-  ã‚¯ãƒ©ã‚¹ã®åå‰ã‚’è¿”ã™(ãƒ‡ãƒãƒƒã‚°ç”¨)ï¼Žã‚¯ãƒ©ã‚¹ãŒåå‰ã‚’æŒãŸãªã„æ™‚ã«</div><div class='del'>-  ã¯, ç¥–å…ˆã‚’é¡ã£ã¦åå‰ã‚’æŒã¤ã‚¯ãƒ©ã‚¹ã®åå‰ã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-int rb_respond_to(VALUE obj, ID id) ::</div><div class='del'>-</div><div class='del'>-  objãŒidã§ç¤ºã•ã‚Œã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æŒã¤ã‹ã©ã†ã‹ã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°</div><div class='del'>-</div><div class='del'>-VALUE rb_iv_get(VALUE obj, const char *name) ::</div><div class='del'>-</div><div class='del'>-  objã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã®å€¤ã‚’å¾—ã‚‹ï¼Ž`@'ã§å§‹ã¾ã‚‰ãªã„ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³</div><div class='del'>-  ã‚¹å¤‰æ•°ã¯ Rubyãƒ—ãƒ­ã‚°ãƒ©ãƒ ã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„ã€Œéš ã‚ŒãŸã€ã‚¤ãƒ³</div><div class='del'>-  ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã«ãªã‚‹ï¼Žå®šæ•°ã¯å¤§æ–‡å­—ã®åå‰ã‚’æŒã¤ã‚¯ãƒ©ã‚¹(ã¾ãŸã¯</div><div class='del'>-  ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«)ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã¨ã—ã¦å®Ÿè£…ã•ã‚Œã¦ã„ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUE rb_iv_set(VALUE obj, const char *name, VALUE val) ::</div><div class='del'>-</div><div class='del'>-  objã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚’valã«ã‚»ãƒƒãƒˆã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-== åˆ¶å¾¡æ§‹é€ </div><div class='del'>-</div><div class='del'>-VALUE rb_block_call(VALUE obj, ID mid, int argc, VALUE * argv, VALUE (*func) (ANYARGS), VALUE data2) ::</div><div class='del'>-</div><div class='del'>-  funcã‚’ãƒ–ãƒ­ãƒƒã‚¯ã¨ã—ã¦è¨­å®šã—ï¼Œobjã‚’ãƒ¬ã‚·ãƒ¼ãƒï¼Œargcã¨argvã‚’å¼•æ•°</div><div class='del'>-  ã¨ã—ã¦midãƒ¡ã‚½ãƒƒãƒ‰ã‚’å‘¼ã³å‡ºã™ï¼Žfuncã¯ç¬¬ä¸€å¼•æ•°ã«yieldã•ã‚ŒãŸå€¤ï¼Œ</div><div class='del'>-  ç¬¬äºŒå¼•æ•°ã«data2ã‚’å—ã‘å–ã‚‹ï¼Žè¤‡æ•°ã®å€¤ãŒyieldã•ã‚ŒãŸå ´åˆ(Cã§ã¯</div><div class='del'>-  rb_yield_values()ã¨rb_yield_values2(), rb_yield_splat())ï¼Œ</div><div class='del'>-  data2ã¯Arrayã¨ã—ã¦ãƒ‘ãƒƒã‚¯ã•ã‚Œã¦ã„ã‚‹ï¼Žç¬¬ä¸‰, ç¬¬å››å¼•æ•°ã®argcã¨</div><div class='del'>-  argvã«ã‚ˆã£ã¦yieldã•ã‚ŒãŸå€¤ã‚’å–ã‚Šå‡ºã™ã“ã¨ãŒã§ãã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-[OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::</div><div class='del'>-</div><div class='del'>-  func2ã‚’ãƒ–ãƒ­ãƒƒã‚¯ã¨ã—ã¦è¨­å®šã—, func1ã‚’ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã¶ï¼Ž</div><div class='del'>-  func1ã«ã¯ arg1ãŒå¼•æ•°ã¨ã—ã¦æ¸¡ã•ã‚Œ, func2ã«ã¯ç¬¬1å¼•æ•°ã«ã‚¤ãƒ†ãƒ¬ãƒ¼</div><div class='del'>-  ã‚¿ã‹ã‚‰ä¸Žãˆã‚‰ã‚ŒãŸå€¤, ç¬¬2å¼•æ•°ã«arg2ãŒæ¸¡ã•ã‚Œã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-  1.9ã§rb_iterateã‚’ä½¿ã†å ´åˆã¯, func1ã®ä¸­ã§Rubyãƒ¬ãƒ™ãƒ«ã®ãƒ¡ã‚½ãƒƒãƒ‰</div><div class='del'>-  ã‚’å‘¼ã³å‡ºã•ãªã‘ã‚Œã°ãªã‚‰ãªã„.</div><div class='del'>-  1.9ã§obsoleteã¨ãªã£ãŸ. ä»£ã‚ã‚Šã«rb_block_callãŒç”¨æ„ã•ã‚ŒãŸ.</div><div class='del'>-</div><div class='del'>-VALUE rb_yield(VALUE val) ::</div><div class='del'>-</div><div class='del'>-  valã‚’å€¤ã¨ã—ã¦ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯ã‚’å‘¼ã³å‡ºã™ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::</div><div class='del'>-</div><div class='del'>-  é–¢æ•°func1ã‚’arg1ã‚’å¼•æ•°ã«å‘¼ã³å‡ºã™ï¼Žfunc1ã®å®Ÿè¡Œä¸­ã«ä¾‹å¤–ãŒç™ºç”Ÿ</div><div class='del'>-  ã—ãŸæ™‚ã«ã¯ func2ã‚’arg2ã‚’å¼•æ•°ã¨ã—ã¦å‘¼ã¶ï¼Žæˆ»ã‚Šå€¤ã¯ä¾‹å¤–ãŒç™ºç”Ÿ</div><div class='del'>-  ã—ãªã‹ã£ãŸæ™‚ã¯func1ã®æˆ»ã‚Šå€¤, ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸæ™‚ã«ã¯func2ã®æˆ»</div><div class='del'>-  ã‚Šå€¤ã§ã‚ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::</div><div class='del'>-</div><div class='del'>-  é–¢æ•°func1ã‚’arg1ã‚’å¼•æ•°ã¨ã—ã¦å®Ÿè¡Œã—, å®Ÿè¡Œçµ‚äº†å¾Œ(ãŸã¨ãˆä¾‹å¤–ãŒ</div><div class='del'>-  ç™ºç”Ÿã—ã¦ã‚‚) func2ã‚’arg2ã‚’å¼•æ•°ã¨ã—ã¦å®Ÿè¡Œã™ã‚‹ï¼Žæˆ»ã‚Šå€¤ã¯func1</div><div class='del'>-  ã®æˆ»ã‚Šå€¤ã§ã‚ã‚‹(ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸæ™‚ã¯æˆ»ã‚‰ãªã„)ï¼Ž</div><div class='del'>-</div><div class='del'>-VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state) ::</div><div class='del'>-</div><div class='del'>-  é–¢æ•°funcã‚’argã‚’å¼•æ•°ã¨ã—ã¦å®Ÿè¡Œã—, ä¾‹å¤–ãŒç™ºç”Ÿã—ãªã‘ã‚Œã°ãã®æˆ»</div><div class='del'>-  ã‚Šå€¤ã‚’è¿”ã™ï¼Žä¾‹å¤–ãŒç™ºç”Ÿã—ãŸå ´åˆã¯, *stateã«éž0ã‚’ã‚»ãƒƒãƒˆã—ã¦</div><div class='del'>-  Qnilã‚’è¿”ã™ï¼Ž</div><div class='del'>-  rb_jump_tag()ã‚’å‘¼ã°ãšã«æ•æ‰ã—ãŸä¾‹å¤–ã‚’ç„¡è¦–ã™ã‚‹å ´åˆã«ã¯ï¼Œ</div><div class='del'>-  rb_set_errinfo(Qnil)ã§ã‚¨ãƒ©ãƒ¼æƒ…å ±ã‚’ã‚¯ãƒªã‚¢ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_jump_tag(int state) ::</div><div class='del'>-</div><div class='del'>-  rb_protect()ã‚„rb_eval_string_protect()ã§æ•æ‰ã•ã‚ŒãŸä¾‹å¤–ã‚’å†</div><div class='del'>-  é€ã™ã‚‹ï¼Žstateã¯ãã‚Œã‚‰ã®é–¢æ•°ã‹ã‚‰è¿”ã•ã‚ŒãŸå€¤ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„ï¼Ž</div><div class='del'>-  ã“ã®é–¢æ•°ã¯ç›´æŽ¥ã®å‘¼ã³å‡ºã—å…ƒã«æˆ»ã‚‰ãªã„ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_iter_break() ::</div><div class='del'>-</div><div class='del'>-  ç¾åœ¨ã®æœ€ã‚‚å†…å´ã®ãƒ–ãƒ­ãƒƒã‚¯ã‚’çµ‚äº†ã™ã‚‹ï¼Žã“ã®é–¢æ•°ã¯ç›´æŽ¥ã®å‘¼ã³å‡º</div><div class='del'>-  ã—å…ƒã«æˆ»ã‚‰ãªã„ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_iter_break_value(VALUE value) ::</div><div class='del'>-</div><div class='del'>-  ç¾åœ¨ã®æœ€ã‚‚å†…å´ã®ãƒ–ãƒ­ãƒƒã‚¯ã‚’valueã§çµ‚äº†ã™ã‚‹ï¼Žãƒ–ãƒ­ãƒƒã‚¯ã¯å¼•æ•°ã§</div><div class='del'>-  ä¸Žãˆã‚‰ã‚ŒãŸvalueã‚’è¿”ã™ï¼Žã“ã®é–¢æ•°ã¯ç›´æŽ¥ã®å‘¼ã³å‡ºã—å…ƒã«æˆ»ã‚‰ãªã„ï¼Ž</div><div class='del'>-</div><div class='del'>-== ä¾‹å¤–ãƒ»ã‚¨ãƒ©ãƒ¼</div><div class='del'>-</div><div class='del'>-void rb_warning(const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  rb_verboseæ™‚ã«æ¨™æº–ã‚¨ãƒ©ãƒ¼å‡ºåŠ›ã«è­¦å‘Šæƒ…å ±ã‚’è¡¨ç¤ºã™ã‚‹ï¼Žå¼•æ•°ã¯</div><div class='del'>-  printf()ã¨åŒã˜ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_raise(rb_eRuntimeError, const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  RuntimeErrorä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ã‚‹ï¼Žå¼•æ•°ã¯printf()ã¨åŒã˜ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_raise(VALUE exception, const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  exceptionã§æŒ‡å®šã—ãŸä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ã‚‹ï¼Žfmtä»¥ä¸‹ã®å¼•æ•°ã¯</div><div class='del'>-  printf()ã¨åŒã˜ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_fatal(const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  è‡´å‘½çš„ä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ã‚‹ï¼Žé€šå¸¸ã®ä¾‹å¤–å‡¦ç†ã¯è¡Œãªã‚ã‚Œãš, ã‚¤ãƒ³ã‚¿ãƒ¼</div><div class='del'>-  ãƒ—ãƒªã‚¿ãŒçµ‚äº†ã™ã‚‹(ãŸã ã—ensureã§æŒ‡å®šã•ã‚ŒãŸã‚³ãƒ¼ãƒ‰ã¯çµ‚äº†å‰ã«</div><div class='del'>-  å®Ÿè¡Œã•ã‚Œã‚‹)ï¼Ž</div><div class='del'>-</div><div class='del'>-void rb_bug(const char *fmt, ...) ::</div><div class='del'>-</div><div class='del'>-  ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ—ãƒªã‚¿ãªã©ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã®ãƒã‚°ã§ã—ã‹ç™ºç”Ÿã™ã‚‹ã¯ãšã®ãªã„</div><div class='del'>-  çŠ¶æ³ã®æ™‚å‘¼ã¶ï¼Žã‚¤ãƒ³ã‚¿ãƒ¼ãƒ—ãƒªã‚¿ã¯ã‚³ã‚¢ãƒ€ãƒ³ãƒ—ã—ç›´ã¡ã«çµ‚äº†ã™ã‚‹ï¼Ž</div><div class='del'>-  ä¾‹å¤–å‡¦ç†ã¯ä¸€åˆ‡è¡Œãªã‚ã‚Œãªã„ï¼Ž</div><div class='del'>-</div><div class='del'>-æ³¨æ„: "%"PRIsVALUEãŒObject#to_s('+'ãƒ•ãƒ©ã‚°ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã¨</div><div class='del'>-ãã¯Object#inspect)ã‚’ä½¿ã£ãŸVALUEã®å‡ºåŠ›ã«åˆ©ç”¨ã§ãã‚‹ï¼Žã“ã‚Œã¯</div><div class='del'>-"%i"ã¨è¡çªã™ã‚‹ãŸã‚ï¼Œæ•´æ•°ã«ã¯"%d"ã‚’ä½¿ç”¨ã™ã‚‹ã“ã¨ï¼Ž</div><div class='del'>-</div><div class='del'>-== Rubyã®åˆæœŸåŒ–ãƒ»å®Ÿè¡Œ</div><div class='del'>-</div><div class='del'>-Rubyã‚’ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«åŸ‹ã‚è¾¼ã‚€å ´åˆã«ã¯ä»¥ä¸‹ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹</div><div class='del'>-ã‚’ä½¿ã†ï¼Žé€šå¸¸ã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã«ã¯å¿…è¦ãªã„ï¼Ž</div><div class='del'>-</div><div class='del'>-void ruby_init() ::</div><div class='del'>-</div><div class='del'>-  Rubyã‚¤ãƒ³ã‚¿ãƒ—ãƒªã‚¿ã®åˆæœŸåŒ–ã‚’è¡Œãªã†ï¼Ž</div><div class='del'>-</div><div class='del'>-void *ruby_options(int argc, char **argv) ::</div><div class='del'>-</div><div class='del'>-  Rubyã‚¤ãƒ³ã‚¿ãƒ—ãƒªã‚¿ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³å¼•æ•°ã®å‡¦ç†ã‚’è¡Œãªã„ï¼Œ</div><div class='del'>-  Rubyã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã™ã‚‹ï¼Ž</div><div class='del'>-  ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã•ã‚ŒãŸã‚½ãƒ¼ã‚¹ã¸ã®ãƒã‚¤ãƒ³ã‚¿ï¼Œã‚‚ã—ãã¯ç‰¹æ®Šå€¤ã‚’è¿”ã™.</div><div class='del'>-</div><div class='del'>-int ruby_run_node(void *n) ::</div><div class='del'>-</div><div class='del'>-  ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã•ã‚ŒãŸã‚³ãƒ¼ãƒ‰ã‚’å®Ÿè¡Œã™ã‚‹ï¼Ž</div><div class='del'>-  å®Ÿè¡Œã«æˆåŠŸã—ãŸå ´åˆã¯EXIT_SUCCESSã‚’ï¼Œã‚¨ãƒ©ãƒ¼ãŒèµ·ã“ã£ãŸã¨ãã¯ãã‚Œä»¥å¤–ã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-void ruby_script(char *name) ::</div><div class='del'>-</div><div class='del'>-  Rubyã®ã‚¹ã‚¯ãƒªãƒ—ãƒˆå($0)ã‚’è¨­å®šã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-== ã‚¤ãƒ³ã‚¿ãƒ—ãƒªã‚¿ã®ã‚¤ãƒ™ãƒ³ãƒˆã®ãƒ•ãƒƒã‚¯</div><div class='del'>-</div><div class='del'>-  void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,</div><div class='del'>-                         VALUE data)</div><div class='del'>-</div><div class='del'>-æŒ‡å®šã•ã‚ŒãŸã‚¤ãƒ³ã‚¿ãƒ—ãƒªã‚¿ã®ã‚¤ãƒ™ãƒ³ãƒˆã«å¯¾ã™ã‚‹ãƒ•ãƒƒã‚¯é–¢æ•°ã‚’è¿½åŠ ã—ã¾ã™ï¼Ž</div><div class='del'>-eventsã¯ä»¥ä¸‹ã®å€¤ã®orã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“:</div><div class='del'>-</div><div class='del'>-  RUBY_EVENT_LINE</div><div class='del'>-  RUBY_EVENT_CLASS</div><div class='del'>-  RUBY_EVENT_END</div><div class='del'>-  RUBY_EVENT_CALL</div><div class='del'>-  RUBY_EVENT_RETURN</div><div class='del'>-  RUBY_EVENT_C_CALL</div><div class='del'>-  RUBY_EVENT_C_RETURN</div><div class='del'>-  RUBY_EVENT_RAISE</div><div class='del'>-  RUBY_EVENT_ALL</div><div class='del'>-</div><div class='del'>-rb_event_hook_func_tã®å®šç¾©ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™:</div><div class='del'>-</div><div class='del'>-  typedef void (*rb_event_hook_func_t)(rb_event_t event, VALUE data,</div><div class='del'>-                                       VALUE self, ID id, VALUE klass)</div><div class='del'>-</div><div class='del'>-rb_add_event_hook() ã®ç¬¬3å¼•æ•° data ã¯ï¼Œãƒ•ãƒƒã‚¯é–¢æ•°ã®ç¬¬2å¼•æ•°ã¨</div><div class='del'>-ã—ã¦æ¸¡ã•ã‚Œã¾ã™ï¼Žã“ã‚Œã¯1.8ã§ã¯ç¾åœ¨ã®NODEã¸ã®ãƒã‚¤ãƒ³ã‚¿ã§ã—ãŸï¼Žä»¥</div><div class='del'>-ä¸‹ã® RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ã‚‚å‚ç…§ã—ã¦ãã ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-  int rb_remove_event_hook(rb_event_hook_func_t func)</div><div class='del'>-</div><div class='del'>-æŒ‡å®šã•ã‚ŒãŸãƒ•ãƒƒã‚¯é–¢æ•°ã‚’å‰Šé™¤ã—ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-== äº’æ›æ€§ã®ãŸã‚ã®ãƒžã‚¯ãƒ­</div><div class='del'>-</div><div class='del'>-APIã®äº’æ›æ€§ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ãŸã‚ã«ä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-NORETURN_STYLE_NEW ::</div><div class='del'>-</div><div class='del'>-  NORETURN ãƒžã‚¯ãƒ­ãŒé–¢æ•°åž‹ãƒžã‚¯ãƒ­ã¨ã—ã¦å®šç¾©ã•ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’æ„å‘³ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-HAVE_RB_DEFINE_ALLOC_FUNC ::</div><div class='del'>-</div><div class='del'>-  rb_define_alloc_func() é–¢æ•°ãŒæä¾›ã•ã‚Œã¦ã„ã‚‹ã“ã¨ï¼Œã¤ã¾ã‚Š</div><div class='del'>-  allocation framework ãŒä½¿ã‚ã‚Œã‚‹ã“ã¨ã‚’æ„å‘³ã™ã‚‹ï¼Ž</div><div class='del'>-  have_func("rb_define_alloc_func", "ruby.h")</div><div class='del'>-  ã®çµæžœã¨åŒã˜ï¼Ž</div><div class='del'>-</div><div class='del'>-HAVE_RB_REG_NEW_STR ::</div><div class='del'>-</div><div class='del'>-  Stringã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‹ã‚‰Regexpã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’ä½œã‚‹</div><div class='del'>-  rb_reg_new_str() é–¢æ•°ãŒæä¾›ã•ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’æ„å‘³ã™ã‚‹ï¼Ž</div><div class='del'>-  have_func("rb_reg_new_str", "ruby.h").</div><div class='del'>-  ã®çµæžœã¨åŒã˜ï¼Ž</div><div class='del'>-</div><div class='del'>-HAVE_RB_IO_T ::</div><div class='del'>-</div><div class='del'>-  rb_io_t åž‹ãŒæä¾›ã•ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’æ„å‘³ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-USE_SYMBOL_AS_METHOD_NAME ::</div><div class='del'>-</div><div class='del'>-  ãƒ¡ã‚½ãƒƒãƒ‰åã‚’è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰ï¼ŒModule#methods, #singleton_methods</div><div class='del'>-  ãªã©ãŒSymbolã‚’è¿”ã™ã“ã¨ã‚’æ„å‘³ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-HAVE_RUBY_*_H ::</div><div class='del'>-</div><div class='del'>-  ruby.h ã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹ï¼Žå¯¾å¿œã™ã‚‹ãƒ˜ãƒƒãƒ€ãŒæä¾›ã•ã‚Œã¦ã„ã‚‹ã“ã¨</div><div class='del'>-  ã‚’æ„å‘³ã™ã‚‹ï¼ŽãŸã¨ãˆã°ï¼ŒHAVE_RUBY_ST_H ãŒå®šç¾©ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯</div><div class='del'>-  å˜ãªã‚‹ st.h ã§ã¯ãªã ruby/st.h ã‚’ä½¿ç”¨ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ::</div><div class='del'>-</div><div class='del'>-  rb_add_event_hook() ãŒãƒ•ãƒƒã‚¯é–¢æ•°ã«æ¸¡ã™ data ã‚’ç¬¬3å¼•æ•°ã¨ã—ã¦</div><div class='del'>-  å—ã‘å–ã‚‹ã“ã¨ã‚’æ„å‘³ã™ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-= Appendix C. extconf.rbã§ä½¿ãˆã‚‹é–¢æ•°ãŸã¡</div><div class='del'>-</div><div class='del'>-extconf.rbã®ä¸­ã§ã¯åˆ©ç”¨å¯èƒ½ãªã‚³ãƒ³ãƒ‘ã‚¤ãƒ«æ¡ä»¶ãƒã‚§ãƒƒã‚¯ã®é–¢æ•°ã¯ä»¥</div><div class='del'>-ä¸‹ã®é€šã‚Šã§ã‚ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-have_macro(macro, headers) ::</div><div class='del'>-</div><div class='del'>-  ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«headerã‚’ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã—ã¦ãƒžã‚¯ãƒ­macroãŒå®šç¾©ã•</div><div class='del'>-  ã‚Œã¦ã„ã‚‹ã‹ã©ã†ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒžã‚¯ãƒ­ãŒå®šç¾©ã•ã‚Œã¦ã„ã‚‹æ™‚true</div><div class='del'>-  ã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-have_library(lib, func) ::</div><div class='del'>-</div><div class='del'>-  é–¢æ•°funcã‚’å®šç¾©ã—ã¦ã„ã‚‹ãƒ©ã‚¤ãƒ–ãƒ©ãƒªlibã®å­˜åœ¨ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Ž</div><div class='del'>-  ãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œ-llibã‚’$libsã«è¿½åŠ ã—ï¼Œtrueã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-find_library(lib, func, path...) ::</div><div class='del'>-</div><div class='del'>-  é–¢æ•°funcã‚’å®šç¾©ã—ã¦ã„ã‚‹ãƒ©ã‚¤ãƒ–ãƒ©ãƒªlibã®å­˜åœ¨ã‚’ -Lpath ã‚’è¿½åŠ </div><div class='del'>-  ã—ãªãŒã‚‰ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œ-llibã‚’$libsã«</div><div class='del'>-  è¿½åŠ ã—ï¼Œtrueã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-have_func(func, header) ::</div><div class='del'>-</div><div class='del'>-  ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«headerã‚’ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã—ã¦é–¢æ•°funcã®å­˜åœ¨ã‚’ãƒã‚§</div><div class='del'>-  ãƒƒã‚¯ã™ã‚‹ï¼ŽfuncãŒæ¨™æº–ã§ã¯ãƒªãƒ³ã‚¯ã•ã‚Œãªã„ãƒ©ã‚¤ãƒ–ãƒ©ãƒªå†…ã®ã‚‚ã®ã§</div><div class='del'>-  ã‚ã‚‹æ™‚ã«ã¯å…ˆã«have_libraryã§ãã®ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãŠ</div><div class='del'>-  ãäº‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—ãƒªãƒ—ãƒ­ã‚»ãƒƒã‚µãƒžã‚¯ãƒ­</div><div class='del'>-  `HAVE_{FUNC}` ã‚’å®šç¾©ã—ï¼Œtrueã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-have_var(var, header) ::</div><div class='del'>-</div><div class='del'>-  ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«headerã‚’ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã—ã¦å¤‰æ•°varã®å­˜åœ¨ã‚’ãƒã‚§ãƒƒ</div><div class='del'>-  ã‚¯ã™ã‚‹ï¼ŽvarãŒæ¨™æº–ã§ã¯ãƒªãƒ³ã‚¯ã•ã‚Œãªã„ãƒ©ã‚¤ãƒ–ãƒ©ãƒªå†…ã®ã‚‚ã®ã§ã‚</div><div class='del'>-  ã‚‹æ™‚ã«ã¯å…ˆã«have_libraryã§ãã®ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãŠã</div><div class='del'>-  äº‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—ãƒªãƒ—ãƒ­ã‚»ãƒƒã‚µãƒžã‚¯ãƒ­</div><div class='del'>-  `HAVE_{VAR}` ã‚’å®šç¾©ã—ï¼Œtrueã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-have_header(header) ::</div><div class='del'>-</div><div class='del'>-  ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«ã®å­˜åœ¨ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œ</div><div class='del'>-  ãƒ—ãƒªãƒ—ãƒ­ã‚»ãƒƒã‚µãƒžã‚¯ãƒ­ `HAVE_{HEADER_H}` ã‚’å®šç¾©ã—ï¼Œtrueã‚’è¿”ã™ï¼Ž</div><div class='del'>-  (ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚„ãƒ‰ãƒƒãƒˆã¯ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã«ç½®æ›ã•ã‚Œã‚‹)</div><div class='del'>-</div><div class='del'>-find_header(header, path...) ::</div><div class='del'>-</div><div class='del'>-  ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«headerã®å­˜åœ¨ã‚’ -Ipath ã‚’è¿½åŠ ã—ãªãŒã‚‰ãƒã‚§ãƒƒã‚¯</div><div class='del'>-  ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—ãƒªãƒ—ãƒ­ã‚»ãƒƒã‚µãƒžã‚¯ãƒ­</div><div class='del'>-  `HAVE_{HEADER_H}` ã‚’å®šç¾©ã—ï¼Œtrueã‚’è¿”ã™ï¼Ž</div><div class='del'>-  (ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚„ãƒ‰ãƒƒãƒˆã¯ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã«ç½®æ›ã•ã‚Œã‚‹)</div><div class='del'>-</div><div class='del'>-have_struct_member(type, member[, header[, opt]]) ::</div><div class='del'>-</div><div class='del'>-  ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«headerã‚’ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã—ã¦åž‹typeãŒå®šç¾©ã•ã‚Œï¼Œ</div><div class='del'>-  ãªãŠã‹ã¤ãƒ¡ãƒ³ãƒmemberãŒå­˜åœ¨ã™ã‚‹ã‹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«</div><div class='del'>-  æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—ãƒªãƒ—ãƒ­ã‚»ãƒƒã‚µãƒžã‚¯ãƒ­ `HAVE_{TYPE}_{MEMBER}` ã‚’</div><div class='del'>-  å®šç¾©ã—ï¼Œtrueã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-have_type(type, header, opt) ::</div><div class='del'>-</div><div class='del'>-  ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«headerã‚’ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã—ã¦åž‹typeãŒå­˜åœ¨ã™ã‚‹ã‹ã‚’</div><div class='del'>-  ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—ãƒªãƒ—ãƒ­ã‚»ãƒƒã‚µãƒžã‚¯ãƒ­</div><div class='del'>-  `HAVE_TYPE_{TYPE}` ã‚’å®šç¾©ã—ï¼Œtrueã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-check_sizeof(type, header) ::</div><div class='del'>-</div><div class='del'>-  ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«headerã‚’ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã—ã¦åž‹typeã®charå˜ä½ã‚µã‚¤</div><div class='del'>-  ã‚ºã‚’èª¿ã¹ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—ãƒªãƒ—ãƒ­ã‚»ãƒƒã‚µãƒžã‚¯ãƒ­</div><div class='del'>-  `SIZEOF_{TYPE}` ã‚’å®šç¾©ã—ï¼Œãã®ã‚µã‚¤ã‚ºã‚’è¿”ã™ï¼Žå®šç¾©ã•ã‚Œã¦ã„ãª</div><div class='del'>-  ã„ã¨ãã¯nilã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-create_makefile(target[, target_prefix]) ::</div><div class='del'>-</div><div class='del'>-  æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªç”¨ã®Makefileã‚’ç”Ÿæˆã™ã‚‹ï¼Žã“ã®é–¢æ•°ã‚’å‘¼ã°ãªã‘ã‚Œ</div><div class='del'>-  ã°ãã®ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã¯ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã•ã‚Œãªã„ï¼Žtargetã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«å</div><div class='del'>-  ã‚’è¡¨ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-find_executable(command, path) ::</div><div class='del'>-</div><div class='del'>-  ã‚³ãƒžãƒ³ãƒ‰commandã‚’File::PATH_SEPARATORã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒ‘ã‚¹åã®</div><div class='del'>-  ãƒªã‚¹ãƒˆpathã‹ã‚‰æŽ¢ã™ï¼ŽpathãŒnilã¾ãŸã¯çœç•¥ã•ã‚ŒãŸå ´åˆã¯ï¼Œç’°å¢ƒ</div><div class='del'>-  å¤‰æ•°PATHã®å€¤ã‚’ä½¿ç”¨ã™ã‚‹ï¼Žå®Ÿè¡Œå¯èƒ½ãªã‚³ãƒžãƒ³ãƒ‰ãŒè¦‹ã¤ã‹ã£ãŸå ´åˆ</div><div class='del'>-  ã¯ãƒ‘ã‚¹ã‚’å«ã‚€ãƒ•ã‚¡ã‚¤ãƒ«åï¼Œè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸå ´åˆã¯nilã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-with_config(withval[, default=nil]) ::</div><div class='del'>-</div><div class='del'>-  ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ä¸Šã®--with-&lt;withval&gt;ã§æŒ‡å®šã•ã‚ŒãŸã‚ªãƒ—ã‚·ãƒ§ãƒ³å€¤</div><div class='del'>-  ã‚’å¾—ã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-enable_config(config, *defaults) ::</div><div class='del'>-disable_config(config, *defaults) ::</div><div class='del'>-</div><div class='del'>-  ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ä¸Šã®--enable-&lt;config&gt;ã¾ãŸã¯</div><div class='del'>-  --disable-&lt;config&gt;ã§æŒ‡å®šã•ã‚ŒãŸçœŸå½å€¤ã‚’å¾—ã‚‹ï¼Ž</div><div class='del'>-  --enable-&lt;config&gt;ãŒæŒ‡å®šã•ã‚Œã¦ã„ãŸå ´åˆã¯trueï¼Œ</div><div class='del'>-  --disable-&lt;config&gt;ãŒæŒ‡å®šã•ã‚Œã¦ã„ãŸå ´åˆã¯falseã‚’è¿”ã™ï¼Ž</div><div class='del'>-  ã©ã¡ã‚‰ã‚‚æŒ‡å®šã•ã‚Œã¦ã„ãªã„å ´åˆã¯ï¼Œãƒ–ãƒ­ãƒƒã‚¯ã¤ãã§å‘¼ã³å‡ºã•ã‚Œã¦</div><div class='del'>-  ã„ã‚‹å ´åˆã¯*defaultsã‚’yieldã—ãŸçµæžœï¼Œãƒ–ãƒ­ãƒƒã‚¯ãªã—ãªã‚‰</div><div class='del'>-  *defaultsã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-dir_config(target[, default_dir]) ::</div><div class='del'>-dir_config(target[, default_include, default_lib]) ::</div><div class='del'>-</div><div class='del'>-  ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ä¸Šã®--with-&lt;target&gt;-dir, --with-&lt;target&gt;-include,</div><div class='del'>-  --with-&lt;target&gt;-libã®ã„ãšã‚Œã‹ã§æŒ‡å®šã•ã‚Œã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’</div><div class='del'>-  $CFLAGS ã‚„ $LDFLAGS ã«è¿½åŠ ã™ã‚‹ï¼Ž--with-&lt;target&gt;-dir=/pathã¯</div><div class='del'>-  --with-&lt;target&gt;-include=/path/include --with-&lt;target&gt;-lib=/path/lib</div><div class='del'>-  ã¨ç­‰ä¾¡ã§ã‚ã‚‹ï¼Žè¿½åŠ ã•ã‚ŒãŸ include ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¨ lib ãƒ‡ã‚£ãƒ¬</div><div class='del'>-  ã‚¯ãƒˆãƒªã®é…åˆ—ã‚’è¿”ã™ï¼Ž ([include_dir, lib_dir])</div><div class='del'>-</div><div class='del'>-pkg_config(pkg, option=nil) ::</div><div class='del'>-</div><div class='del'>-  pkg-configã‚³ãƒžãƒ³ãƒ‰ã‹ã‚‰ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸pkgã®æƒ…å ±ã‚’ [cflags, ldflags, libs]</div><div class='del'>-  ã®é…åˆ—ã¨ã—ã¦å¾—ã‚‹ï¼Ž$CFLAGS, $LDFLAGS, $libs ã«ã¯ãã‚Œãžã‚Œã®å€¤ãŒ</div><div class='del'>-  è¿½åŠ ã•ã‚Œã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-  pkg-configã®å®Ÿéš›ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ï¼Œä»¥ä¸‹ã®é †ã§è©¦ã•ã‚Œã‚‹ï¼Ž</div><div class='del'>-</div><div class='del'>-  1. ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã§--with-{pkg}-config={command}ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒ</div><div class='del'>-     æŒ‡å®šã•ã‚ŒãŸå ´åˆ: {command} {option}</div><div class='del'>-  2. {pkg}-config {option}</div><div class='del'>-  3. pkg-config {option} {pkg}</div><div class='del'>-</div><div class='del'>-  optionãŒæŒ‡å®šã•ã‚ŒãŸå ´åˆã¯ï¼Œä¸Šè¨˜ã®é…åˆ—ã®ä»£ã‚ã‚Šã«ãã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’</div><div class='del'>-  æŒ‡å®šã—ã¦å¾—ã‚‰ã‚ŒãŸå‡ºåŠ›ã‚’stripã—ãŸã‚‚ã®ã‚’è¿”ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-= Appendix D. ä¸–ä»£åˆ¥GC</div><div class='del'>-</div><div class='del'>-Ruby 2.1ã‹ã‚‰ä¸–ä»£åˆ¥GCã«å¯¾å¿œã—ã¾ã—ãŸï¼Žæˆ‘ã€…ã¯ã“ã‚Œã‚’RGenGCã¨å‘¼ã‚“ã§ã„ã¾ã™ï¼Ž</div><div class='del'>-RGenGCã¯ï¼ŒéŽåŽ»ã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã«ï¼ˆã»ã¼ï¼‰äº’æ›æ€§ã‚’ä¿ã¤ã‚ˆã†ã«é–‹ç™ºã•ã‚Œã¦ã„ã‚‹</div><div class='del'>-ãŸã‚ï¼Œæ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªå´ã®å¯¾å¿œã¯ã»ã¼ä¸è¦ã§ã™ï¼Ž</div><div class='del'>-</div><div class='del'>-ãŸã ã—ï¼Œå¯¾å¿œã‚’ã™ã‚‹ã“ã¨ã§æ€§èƒ½ã‚’å‘ä¸Šã™ã‚‹ã“ã¨ãŒã§ãã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ï¼Žã‚‚ã—</div><div class='del'>-æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã«é«˜ã„æ€§èƒ½ãŒå¿…è¦ã§ã‚ã‚‹å ´åˆã¯å¯¾å¿œã‚’æ¤œè¨Žã—ã¦ä¸‹ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-ã¨ãã«RARRAY_PTR()/RHASH_TBL()ã®ã‚ˆã†ãªãƒžã‚¯ãƒ­ã‚’ç”¨ã„ã¦ãƒã‚¤ãƒ³ã‚¿ã«ç›´æŽ¥ã‚¢ã‚¯ã‚»</div><div class='del'>-ã‚¹ã™ã‚‹ã‚ˆã†ãªã‚³ãƒ¼ãƒ‰ã¯æ›¸ã‹ãªã„ã‚ˆã†ã«ã—ã¦ä¸‹ã•ã„ï¼Žä»£ã‚ã‚Šã«ï¼Œrb_ary_aref(),</div><div class='del'>-rb_ary_store() ãªã©ã®ï¼Œé©åˆ‡ãª API é–¢æ•°ã‚’åˆ©ç”¨ã™ã‚‹ã‚ˆã†ã«ã—ã¦ä¸‹ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-ãã®ã»ã‹ï¼Œå¯¾å¿œã«ã¤ã„ã¦ã®è©³ç´°ã¯ README.EXT ã®ã€ŒAppendix D. Generational</div><div class='del'>-GCã€ã‚’å‚ç…§ã—ã¦ä¸‹ã•ã„ï¼Ž</div><div class='del'>-</div><div class='del'>-/*</div><div class='del'>- * Local variables:</div><div class='del'>- * fill-column: 60</div><div class='del'>- * end:</div><div class='del'>- */</div><div class='add'>+doc/extension.ja.rdocã«ç§»å‹•ã—ã¾ã—ãŸ</div><div class='head'>diff --git a/README.ja.md b/README.ja.md<br/>index 1e9bae7e0c..9d6131e416 100644<br/>--- a/<a href='/ruby.git/tree/README.ja.md?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>README.ja.md</a><br/>+++ b/<a href='/ruby.git/tree/README.ja.md?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>README.ja.md</a></div><div class='hunk'>@@ -55,7 +55,7 @@ http://www.ruby-lang.org/</div><div class='ctx'> </div><div class='ctx'> ## ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆ</div><div class='ctx'> </div><div class='del'>-Rubyã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆãŒã‚ã‚Šã¾ã™ã€‚å‚åŠ å¸Œæœ›ã®æ–¹ã¯</div><div class='add'>+Rubyã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆãŒã‚ã‚Šã¾ã™ï¼Žå‚åŠ å¸Œæœ›ã®æ–¹ã¯</div><div class='ctx'> </div><div class='ctx'> mailto:ruby-list-request@ruby-lang.org</div><div class='ctx'> </div><div class='hunk'>@@ -63,22 +63,22 @@ mailto:ruby-list-request@ruby-lang.org</div><div class='ctx'> </div><div class='ctx'>     subscribe</div><div class='ctx'> </div><div class='del'>-ã¨æ›¸ã„ã¦é€ã£ã¦ä¸‹ã•ã„ã€‚</div><div class='add'>+ã¨æ›¸ã„ã¦é€ã£ã¦ä¸‹ã•ã„ï¼Ž</div><div class='ctx'> </div><div class='del'>-Rubyé–‹ç™ºè€…å‘ã‘ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã‚‚ã‚ã‚Šã¾ã™ã€‚ã“ã¡ã‚‰ã§ã¯rubyã®ãƒã‚°ã€å°†æ¥ã®ä»•æ§˜æ‹¡å¼µãªã©å®Ÿè£…ä¸Šã®å•é¡Œã«ã¤ã„ã¦è­°è«–ã•ã‚Œã¦ã„ã¾ã™ã€‚ å‚åŠ å¸Œæœ›ã®æ–¹ã¯</div><div class='add'>+Rubyé–‹ç™ºè€…å‘ã‘ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã‚‚ã‚ã‚Šã¾ã™ï¼Žã“ã¡ã‚‰ã§ã¯rubyã®ãƒã‚°ï¼Œå°†æ¥ã®ä»•æ§˜æ‹¡å¼µãªã©å®Ÿè£…ä¸Šã®å•é¡Œã«ã¤ã„ã¦è­°è«–ã•ã‚Œã¦ã„ã¾ã™ï¼Ž å‚åŠ å¸Œæœ›ã®æ–¹ã¯</div><div class='ctx'> </div><div class='ctx'> mailto:ruby-dev-request@ruby-lang.org</div><div class='ctx'> </div><div class='del'>-ã¾ã§ruby-listã¨åŒæ§˜ã®æ–¹æ³•ã§ãƒ¡ãƒ¼ãƒ«ã—ã¦ãã ã•ã„ã€‚</div><div class='add'>+ã¾ã§ruby-listã¨åŒæ§˜ã®æ–¹æ³•ã§ãƒ¡ãƒ¼ãƒ«ã—ã¦ãã ã•ã„ï¼Ž</div><div class='ctx'> </div><div class='ctx'> Rubyæ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã«ã¤ã„ã¦è©±ã—åˆã†ruby-extãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã¨æ•°å­¦é–¢ä¿‚ã®è©±é¡Œã«ã¤ã„ã¦è©±ã—åˆã†ruby-mathãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã¨</div><div class='del'>-è‹±èªžã§rubyã«ã¤ã„ã¦è©±ã—åˆã†ruby-talkãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã‚‚ã‚ã‚Šã¾ã™ã€‚å‚åŠ æ–¹æ³•ã¯ã©ã‚Œã‚‚åŒã˜ã§ã™ã€‚</div><div class='add'>+è‹±èªžã§rubyã«ã¤ã„ã¦è©±ã—åˆã†ruby-talkãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã‚‚ã‚ã‚Šã¾ã™ï¼Žå‚åŠ æ–¹æ³•ã¯ã©ã‚Œã‚‚åŒã˜ã§ã™ï¼Ž</div><div class='ctx'> </div><div class='ctx'> ## ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ãƒ»ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«</div><div class='ctx'> </div><div class='ctx'> ä»¥ä¸‹ã®æ‰‹é †ã§è¡Œã£ã¦ãã ã•ã„ï¼Ž</div><div class='ctx'> </div><div class='del'>-1.  ã‚‚ã— `configure` ãƒ•ã‚¡ã‚¤ãƒ«ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã€ã‚‚ã—ãã¯ `configure.in` ã‚ˆã‚Šå¤ã„ã‚ˆã†ãªã‚‰ã€ `autoconf` ã‚’å®Ÿè¡Œã—ã¦</div><div class='add'>+1.  ã‚‚ã— `configure` ãƒ•ã‚¡ã‚¤ãƒ«ãŒè¦‹ã¤ã‹ã‚‰ãªã„ï¼Œã‚‚ã—ãã¯ `configure.in` ã‚ˆã‚Šå¤ã„ã‚ˆã†ãªã‚‰ï¼Œ `autoconf` ã‚’å®Ÿè¡Œã—ã¦</div><div class='ctx'>     æ–°ã—ã `configure` ã‚’ç”Ÿæˆã™ã‚‹</div><div class='ctx'> </div><div class='ctx'> 2.  `configure` ã‚’å®Ÿè¡Œã—ã¦ `Makefile` ãªã©ã‚’ç”Ÿæˆã™ã‚‹</div><div class='hunk'>@@ -109,20 +109,17 @@ Rubyæ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã«ã¤ã„ã¦è©±ã—åˆã†ruby-extãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒ</div><div class='ctx'> </div><div class='ctx'>     *   `${DESTDIR}${prefix}/bin`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}`</div><div class='del'>-    *   `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFOR</div><div class='del'>-        M}`</div><div class='add'>+    *   `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/site_ruby`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}`</div><div class='del'>-    *   `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${P</div><div class='del'>-        LATFORM}`</div><div class='add'>+    *   `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/vendor_ruby`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}`</div><div class='del'>-    *   `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/$</div><div class='del'>-        {PLATFORM}`</div><div class='add'>+    *   `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/share/man/man1`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system`</div><div class='hunk'>@@ -147,17 +144,28 @@ UNIXã§ã‚ã‚Œã° `configure` ãŒã»ã¨ã‚“ã©ã®å·®ç•°ã‚’å¸åŽã—ã¦ãã‚Œã‚‹ã¯</div><div class='ctx'> ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ãŒ`setjmp()`ã¾ãŸã¯`getcontext()`ã«ã‚ˆã£ã¦å…¨ã¦ã®ãƒ¬ã‚¸ã‚¹ã‚¿ã‚’ `jmp_buf` ã‚„ `ucontext_t`</div><div class='ctx'> ã«æ ¼ç´ã™ã‚‹ã“ã¨ã¨ï¼Œ `jmp_buf` ã‚„ `ucontext_t` ã¨ã‚¹ã‚¿ãƒƒã‚¯ãŒ32bitã‚¢ãƒ©ã‚¤ãƒ³ãƒ¡ãƒ³ãƒˆã•ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’ä»®å®š</div><div class='ctx'> ã—ã¦ã„ã¾ã™ï¼Žç‰¹ã«å‰è€…ãŒæˆç«‹ã—ãªã„å ´åˆã®å¯¾å¿œã¯éžå¸¸ã«å›°é›£ã§ã—ã‚‡ã†ï¼Ž å¾Œè€…ã®è§£æ±ºã¯æ¯”è¼ƒçš„ç°¡å˜ã§ï¼Œ `gc.c` ã§ã‚¹ã‚¿ãƒƒã‚¯ã‚’ãƒžãƒ¼ã‚¯ã—ã¦ã„ã‚‹</div><div class='del'>-éƒ¨åˆ†ã«ã‚¢ãƒ©ã‚¤ãƒ³ãƒ¡ãƒ³ãƒˆã®ãƒã‚¤ãƒˆæ•°ã ã‘ãšã‚‰ã—ã¦ãƒžãƒ¼ã‚¯ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’è¿½åŠ ã™ã‚‹ã ã‘ã§æ¸ˆã¿ã¾ã™ï¼Ž`defined(_\*mc68000*\_)`ã§æ‹¬ã‚‰ã‚Œã¦ã„</div><div class='add'>+éƒ¨åˆ†ã«ã‚¢ãƒ©ã‚¤ãƒ³ãƒ¡ãƒ³ãƒˆã®ãƒã‚¤ãƒˆæ•°ã ã‘ãšã‚‰ã—ã¦ãƒžãƒ¼ã‚¯ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’è¿½åŠ ã™ã‚‹ã ã‘ã§æ¸ˆã¿ã¾ã™ï¼Ž`defined(__mc68000__)`ã§æ‹¬ã‚‰ã‚Œã¦ã„</div><div class='ctx'> ã‚‹éƒ¨åˆ†ã‚’å‚è€ƒã«ã—ã¦ãã ã•ã„ï¼Ž</div><div class='ctx'> </div><div class='ctx'> ãƒ¬ã‚¸ã‚¹ã‚¿ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’æŒã¤CPUã§ã¯ï¼Œãƒ¬ã‚¸ã‚¹ã‚¿ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’ã‚¹ã‚¿ãƒƒã‚¯ã«ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã™ã‚‹ã‚¢ã‚»ãƒ³ãƒ–ãƒ©ã‚³ãƒ¼ãƒ‰ã‚’è¿½åŠ ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ï¼Ž</div><div class='ctx'> </div><div class='ctx'> ## é…å¸ƒæ¡ä»¶</div><div class='ctx'> </div><div class='del'>-`COPYING.ja` ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å‚ç…§ã—ã¦ãã ã•ã„ã€‚</div><div class='add'>+[COPYING.ja](COPYING.ja) ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å‚ç…§ã—ã¦ãã ã•ã„ï¼Ž</div><div class='add'>+</div><div class='add'>+## ãƒ•ã‚£ãƒ¼ãƒ‰ãƒãƒƒã‚¯</div><div class='add'>+</div><div class='add'>+Rubyã«é–¢ã™ã‚‹è³ªå•ã¯ Ruby-Talkï¼ˆè‹±èªžï¼‰ã‚„ Ruby-Listï¼ˆæ—¥æœ¬èªžï¼‰ (https://www.ruby-lang.org/ja/community/mailing-lists) ã‚„ï¼Œ</div><div class='add'>+stackoverflow (http://ja.stackoverflow.com/) ãªã©ã®Webã‚µã‚¤ãƒˆã«æŠ•ç¨¿ã—ã¦ãã ã•ã„ï¼Ž</div><div class='add'>+</div><div class='add'>+ãƒã‚°å ±å‘Šã¯ http://bugs.ruby-lang.org ã§å—ã‘ä»˜ã‘ã¦ã„ã¾ã™ï¼Ž</div><div class='add'>+</div><div class='ctx'> </div><div class='ctx'> ## è‘—è€…</div><div class='ctx'> </div><div class='del'>-ã‚³ãƒ¡ãƒ³ãƒˆï¼Œãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆãã®ä»–ã¯ mailto:matz@ruby-lang.org ã¾ã§ï¼Ž</div><div class='add'>+Rubyã®ã‚ªãƒªã‚¸ãƒŠãƒ«ç‰ˆã¯ï¼Œ1995å¹´ã«ã¾ã¤ã‚‚ã¨ã‚†ãã²ã‚æ°ã«ã‚ˆã£ã¦è¨­è¨ˆãƒ»é–‹ç™ºã•ã‚Œã¾ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+&lt;mailto:matz@ruby-lang.org&gt;</div><div class='add'>+</div><div class='ctx'> ---</div><div class='ctx'> created at: Thu Aug  3 11:57:36 JST 1995</div><div class='head'>diff --git a/README.md b/README.md<br/>index c6498a8cca..f79ba9c718 100644<br/>--- a/<a href='/ruby.git/tree/README.md?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>README.md</a><br/>+++ b/<a href='/ruby.git/tree/README.md?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>README.md</a></div><div class='hunk'>@@ -1,3 +1,6 @@</div><div class='add'>+[![Build Status](https://travis-ci.org/ruby/ruby.svg)](https://travis-ci.org/ruby/ruby)</div><div class='add'>+[![Build status](https://ci.appveyor.com/api/projects/status/0sy8rrxut4o0k960/branch/trunk?svg=true)](https://ci.appveyor.com/project/ruby/ruby/branch/trunk)</div><div class='add'>+</div><div class='ctx'> # What's Ruby</div><div class='ctx'> </div><div class='ctx'> Ruby is the interpreted scripting language for quick and easy object-oriented</div><div class='hunk'>@@ -8,26 +11,26 @@ extensible.</div><div class='ctx'> ## Features of Ruby</div><div class='ctx'> </div><div class='ctx'> *   Simple Syntax</div><div class='del'>-*   **Normal** Object-Oriented features(ex. class, method calls)</div><div class='del'>-*   **Advanced** Object-Oriented features(ex. Mix-in, Singleton-method)</div><div class='add'>+*   **Normal** Object-oriented Features (e.g. class, method calls)</div><div class='add'>+*   **Advanced** Object-oriented Features (e.g. Mix-in, Singleton-method)</div><div class='ctx'> *   Operator Overloading</div><div class='ctx'> *   Exception Handling</div><div class='ctx'> *   Iterators and Closures</div><div class='ctx'> *   Garbage Collection</div><div class='del'>-*   Dynamic Loading of Object files(on some architecture)</div><div class='add'>+*   Dynamic Loading of Object Files (on some architectures)</div><div class='ctx'> *   Highly Portable (works on many Unix-like/POSIX compatible platforms as</div><div class='del'>-    well as Windows, Mac OS X, BeOS etc.) cf.</div><div class='add'>+    well as Windows, Mac OS X, BeOS, etc.) cf.</div><div class='ctx'>     http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatforms</div><div class='ctx'> </div><div class='ctx'> </div><div class='ctx'> ## How to get Ruby</div><div class='ctx'> </div><div class='del'>-For a complete list of ways to install Ruby, including using third party tools</div><div class='add'>+For a complete list of ways to install Ruby, including using third-party tools</div><div class='ctx'> like rvm, see:</div><div class='ctx'> </div><div class='ctx'> http://www.ruby-lang.org/en/downloads/</div><div class='ctx'> </div><div class='del'>-The Ruby distribution files can be found in the following FTP site:</div><div class='add'>+The Ruby distribution files can be found on the following FTP site:</div><div class='ctx'> </div><div class='ctx'> ftp://ftp.ruby-lang.org/pub/ruby/</div><div class='ctx'> </div><div class='hunk'>@@ -41,7 +44,7 @@ Or if you are using git then use the following command:</div><div class='ctx'>     $ git clone git://github.com/ruby/ruby.git</div><div class='ctx'> </div><div class='ctx'> There are some other branches under development.  Try the following command</div><div class='del'>-and see the list of branches:</div><div class='add'>+to see the list of branches:</div><div class='ctx'> </div><div class='ctx'>     $ svn ls http://svn.ruby-lang.org/repos/ruby/branches/</div><div class='ctx'> </div><div class='hunk'>@@ -49,16 +52,16 @@ Or if you are using git then use the following command:</div><div class='ctx'> </div><div class='ctx'>     $ git ls-remote git://github.com/ruby/ruby.git</div><div class='ctx'> </div><div class='del'>-## Ruby home-page</div><div class='add'>+## Ruby home page</div><div class='ctx'> </div><div class='del'>-The URL of the Ruby home-page is:</div><div class='add'>+The URL of the Ruby home page is:</div><div class='ctx'> </div><div class='ctx'> http://www.ruby-lang.org/</div><div class='ctx'> </div><div class='ctx'> ## Mailing list</div><div class='ctx'> </div><div class='del'>-There is a mailing list to talk about Ruby. To subscribe this list, please</div><div class='del'>-send the following phrase</div><div class='add'>+There is a mailing list to talk about Ruby. To subscribe to this list, please</div><div class='add'>+send the following phrase:</div><div class='ctx'> </div><div class='ctx'>     subscribe</div><div class='ctx'> </div><div class='hunk'>@@ -73,9 +76,9 @@ This is what you need to do to compile and install Ruby:</div><div class='ctx'>     win32/README.win32 instead of this document.</div><div class='ctx'> </div><div class='ctx'> 2.  If `./configure` does not exist or is older than configure.in, run</div><div class='del'>-    autoconf to (re)generate configure.</div><div class='add'>+    `autoconf` to (re)generate configure.</div><div class='ctx'> </div><div class='del'>-3.  Run `./configure`, which will generate config.h and Makefile.</div><div class='add'>+3.  Run `./configure`, which will generate `config.h` and `Makefile`.</div><div class='ctx'> </div><div class='ctx'>     Some C compiler flags may be added by default depending on your</div><div class='ctx'>     environment.  Specify `optflags=..` and `warnflags=..` as necessary to</div><div class='hunk'>@@ -100,25 +103,22 @@ This is what you need to do to compile and install Ruby:</div><div class='ctx'> </div><div class='ctx'> 8.  Run '`make install`'</div><div class='ctx'> </div><div class='del'>-    This command will create following directories and install files onto</div><div class='add'>+    This command will create the following directories and install files into</div><div class='ctx'>     them.</div><div class='ctx'> </div><div class='ctx'>     *   `${DESTDIR}${prefix}/bin`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}`</div><div class='del'>-    *   `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFOR</div><div class='del'>-        M}`</div><div class='add'>+    *   `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/site_ruby`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}`</div><div class='del'>-    *   `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${P</div><div class='del'>-        LATFORM}`</div><div class='add'>+    *   `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/vendor_ruby`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}`</div><div class='del'>-    *   `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/$</div><div class='del'>-        {PLATFORM}`</div><div class='add'>+    *   `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/share/man/man1`</div><div class='ctx'>     *   `${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system`</div><div class='hunk'>@@ -137,13 +137,12 @@ If you fail to compile ruby, please send the detailed error report with the</div><div class='ctx'> error log and machine/OS type, to help others.</div><div class='ctx'> </div><div class='ctx'> Some extension libraries may not get compiled because of lack of necessary</div><div class='del'>-external libraries and/or headers, then you will need to run '`make</div><div class='del'>-distclean-ext`' to remove old configuration after installing them in such</div><div class='del'>-case.</div><div class='add'>+external libraries and/or headers, then you will need to run '`make distclean-ext`'</div><div class='add'>+to remove old configuration after installing them in such case.</div><div class='ctx'> </div><div class='ctx'> ## Copying</div><div class='ctx'> </div><div class='del'>-See the file `COPYING`.</div><div class='add'>+See the file [COPYING](COPYING).</div><div class='ctx'> </div><div class='ctx'> ## Feedback</div><div class='ctx'> </div><div class='hunk'>@@ -151,7 +150,14 @@ Questions about the Ruby language can be asked on the Ruby-Talk mailing list</div><div class='ctx'> (http://www.ruby-lang.org/en/community/mailing-lists) or on websites like</div><div class='ctx'> (http://stackoverflow.com).</div><div class='ctx'> </div><div class='del'>-Bug reports should be filed at http://bugs.ruby-lang.org</div><div class='add'>+Bug reports should be filed at http://bugs.ruby-lang.org. Read [HowToReport] for more information.</div><div class='add'>+</div><div class='add'>+[HowToReport]: https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport</div><div class='add'>+</div><div class='add'>+##Contributing</div><div class='add'>+</div><div class='add'>+See the file [CONTRIBUTING.md](CONTRIBUTING.md)</div><div class='add'>+</div><div class='ctx'> </div><div class='ctx'> ## The Author</div><div class='ctx'> </div><div class='head'>diff --git a/acinclude.m4 b/acinclude.m4<br/>new file mode 100644<br/>index 0000000000..99b24e6d93<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/acinclude.m4?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>acinclude.m4</a></div><div class='hunk'>@@ -0,0 +1,46 @@</div><div class='add'>+# -*- autoconf -*-</div><div class='add'>+</div><div class='add'>+AC_DEFUN([_COLORIZE_RESULT_PREPARE], [</div><div class='add'>+    msg_checking= msg_result_yes= msg_result_no= msg_result_other= msg_reset=</div><div class='add'>+    AS_IF([test "x${CONFIGURE_TTY}" = xyes -o -t 1], [</div><div class='add'>+	msg_begin="`tput smso 2&gt;/dev/null`"</div><div class='add'>+	AS_CASE(["$msg_begin"], ['@&lt;:@'*m],</div><div class='add'>+	    [msg_begin="`echo "$msg_begin" | sed ['s/[0-9]*m$//']`"</div><div class='add'>+	    msg_checking="${msg_begin}33m"</div><div class='add'>+	    AS_IF([test ${TEST_COLORS:+set}], [</div><div class='add'>+		msg_result_yes=[`expr ":$TEST_COLORS:" : ".*:pass=\([^:]*\):"`]</div><div class='add'>+		msg_result_no=[`expr ":$TEST_COLORS:" : ".*:fail=\([^:]*\):"`]</div><div class='add'>+		msg_result_other=[`expr ":$TEST_COLORS:" : ".*:skip=\([^:]*\):"`]</div><div class='add'>+	    ])</div><div class='add'>+	    msg_result_yes="${msg_begin}${msg_result_yes:-32;1}m"</div><div class='add'>+	    msg_result_no="${msg_begin}${msg_result_no:-31;1}m"</div><div class='add'>+	    msg_result_other="${msg_begin}${msg_result_other:-33;1}m"</div><div class='add'>+	    msg_reset="${msg_begin}m"</div><div class='add'>+	    ])</div><div class='add'>+	AS_UNSET(msg_begin)</div><div class='add'>+	])</div><div class='add'>+    AS_REQUIRE_SHELL_FN([colorize_result],</div><div class='add'>+	[AS_FUNCTION_DESCRIBE([colorize_result], [MSG], [Colorize result])],</div><div class='add'>+        [AS_CASE(["$[]1"],</div><div class='add'>+            [yes], [AS_ECHO(["${msg_result_yes}$[]1${msg_reset}]")],</div><div class='add'>+            [no], [AS_ECHO(["${msg_result_no}$[]1${msg_reset}]")],</div><div class='add'>+            [AS_ECHO(["${msg_result_other}$[]1${msg_reset}]")])])</div><div class='add'>+])</div><div class='add'>+</div><div class='add'>+AC_DEFUN([COLORIZE_RESULT], [AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl</div><div class='add'>+    AS_LITERAL_IF([$1],</div><div class='add'>+	[m4_case([$1],</div><div class='add'>+		[yes], [AS_ECHO(["${msg_result_yes}$1${msg_reset}"])],</div><div class='add'>+		[no], [AS_ECHO(["${msg_result_no}$1${msg_reset}"])],</div><div class='add'>+		[AS_ECHO(["${msg_result_other}$1${msg_reset}"])])],</div><div class='add'>+	[colorize_result "$1"]) dnl</div><div class='add'>+])</div><div class='add'>+</div><div class='add'>+AC_DEFUN([AC_CHECKING],[dnl</div><div class='add'>+AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl</div><div class='add'>+AS_MESSAGE([checking ${msg_checking}$1${msg_reset}...])])</div><div class='add'>+</div><div class='add'>+AC_DEFUN([AC_MSG_RESULT], [dnl</div><div class='add'>+{ _AS_ECHO_LOG([result: $1])</div><div class='add'>+COLORIZE_RESULT([$1]); dnl</div><div class='add'>+}])</div><div class='head'>diff --git a/aclocal.m4 b/aclocal.m4<br/>new file mode 100644<br/>index 0000000000..56e944be8f<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/aclocal.m4?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>aclocal.m4</a></div><div class='hunk'>@@ -0,0 +1,15 @@</div><div class='add'>+# generated automatically by aclocal 1.15 -*- Autoconf -*-</div><div class='add'>+</div><div class='add'>+# Copyright (C) 1996-2014 Free Software Foundation, Inc.</div><div class='add'>+</div><div class='add'>+# This file is free software; the Free Software Foundation</div><div class='add'>+# gives unlimited permission to copy and/or distribute it,</div><div class='add'>+# with or without modifications, as long as this notice is preserved.</div><div class='add'>+</div><div class='add'>+# This program is distributed in the hope that it will be useful,</div><div class='add'>+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without</div><div class='add'>+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A</div><div class='add'>+# PARTICULAR PURPOSE.</div><div class='add'>+</div><div class='add'>+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])</div><div class='add'>+m4_include([acinclude.m4])</div><div class='head'>diff --git a/addr2line.c b/addr2line.c<br/>index c8faf48d62..a20e5000c4 100644<br/>--- a/<a href='/ruby.git/tree/addr2line.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>addr2line.c</a><br/>+++ b/<a href='/ruby.git/tree/addr2line.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>addr2line.c</a></div><div class='hunk'>@@ -36,11 +36,9 @@</div><div class='ctx'> </div><div class='ctx'> /* Make alloca work the best possible way.  */</div><div class='ctx'> #ifdef __GNUC__</div><div class='del'>-# ifndef atarist</div><div class='del'>-#  ifndef alloca</div><div class='del'>-#   define alloca __builtin_alloca</div><div class='del'>-#  endif</div><div class='del'>-# endif	/* atarist */</div><div class='add'>+# ifndef alloca</div><div class='add'>+#  define alloca __builtin_alloca</div><div class='add'>+# endif</div><div class='ctx'> #else</div><div class='ctx'> # ifdef HAVE_ALLOCA_H</div><div class='ctx'> #  include &lt;alloca.h&gt;</div><div class='hunk'>@@ -812,8 +810,7 @@ next_line:</div><div class='ctx'> </div><div class='ctx'> #include &lt;stdarg.h&gt;</div><div class='ctx'> #define MAXNBUF (sizeof(intmax_t) * CHAR_BIT + 1)</div><div class='del'>-extern int rb_toupper(int c);</div><div class='del'>-#define    toupper(c)  rb_toupper(c)</div><div class='add'>+static inline int toupper(int c) { return ('A' &lt;= c &amp;&amp; c &lt;= 'Z') ? (c&amp;0x5f) : c; }</div><div class='ctx'> #define    hex2ascii(hex)  (hex2ascii_data[hex])</div><div class='ctx'> char const hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz";</div><div class='ctx'> static inline int imax(int a, int b) { return (a &gt; b ? a : b); }</div><div class='head'>diff --git a/appveyor.yml b/appveyor.yml<br/>new file mode 100644<br/>index 0000000000..2cda4817a6<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/appveyor.yml?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>appveyor.yml</a></div><div class='hunk'>@@ -0,0 +1,37 @@</div><div class='add'>+---</div><div class='add'>+shallow_clone: true</div><div class='add'>+platform: x64</div><div class='add'>+install:</div><div class='add'>+  - SET</div><div class='add'>+  - '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" amd64'</div><div class='add'>+  - SET PATH=\usr\local\bin;C:\Ruby22-x64\bin;C:\Ruby21-x64\Devkit\mingw\bin;%PATH%;C:\msys64\usr\bin</div><div class='add'>+  - ruby --version</div><div class='add'>+  - 'cl'</div><div class='add'>+  - SET</div><div class='add'>+  - mkdir \usr\local\bin</div><div class='add'>+  - mkdir \usr\local\include</div><div class='add'>+  - mkdir \usr\local\lib</div><div class='add'>+  - ps: Start-FileDownload 'http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.3.7-windows.zip'</div><div class='add'>+  - 7z x libressl-2.3.7-windows.zip</div><div class='add'>+  - copy libressl-2.3.7-windows\x64\libcrypto-37.lib \usr\local\lib\crypto.lib</div><div class='add'>+  - copy libressl-2.3.7-windows\x64\libssl-38.lib    \usr\local\lib\ssl.lib</div><div class='add'>+  - copy libressl-2.3.7-windows\x64\libcrypto-37.dll \usr\local\bin</div><div class='add'>+  - copy libressl-2.3.7-windows\x64\libssl-38.dll    \usr\local\bin</div><div class='add'>+  - xcopy /e libressl-2.3.7-windows\include          \usr\local\include</div><div class='add'>+  - ps: Start-FileDownload 'http://zlib.net/zlib128.zip'</div><div class='add'>+  - 7z x zlib128.zip</div><div class='add'>+  - cd zlib-1.2.8</div><div class='add'>+  - nmake -f win32/Makefile.msc</div><div class='add'>+  - copy zlib1.dll \usr\local\bin</div><div class='add'>+  - copy zlib.lib  \usr\local\lib</div><div class='add'>+  - copy zconf.h   \usr\local\include</div><div class='add'>+  - copy zlib.h    \usr\local\include</div><div class='add'>+build_script:</div><div class='add'>+  - cd %APPVEYOR_BUILD_FOLDER%</div><div class='add'>+  - win32\configure.bat --without-ext=+,dbm,gdbm,readline --with-opt-dir=/usr/local</div><div class='add'>+  - nmake -l up</div><div class='add'>+  - nmake -l</div><div class='add'>+  - nmake install-nodoc</div><div class='add'>+test_script:</div><div class='add'>+  - nmake -l "OPTS=-v -q" btest</div><div class='add'>+  - nmake -l "OPTS=-v -q" test-basic</div><div class='head'>diff --git a/array.c b/array.c<br/>index c255e096ed..4e60177121 100644<br/>--- a/<a href='/ruby.git/tree/array.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>array.c</a><br/>+++ b/<a href='/ruby.git/tree/array.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>array.c</a></div><div class='hunk'>@@ -20,7 +20,7 @@</div><div class='ctx'> #ifndef ARRAY_DEBUG</div><div class='ctx'> # define NDEBUG</div><div class='ctx'> #endif</div><div class='del'>-#include &lt;assert.h&gt;</div><div class='add'>+#include "ruby_assert.h"</div><div class='ctx'> </div><div class='ctx'> VALUE rb_cArray;</div><div class='ctx'> </div><div class='hunk'>@@ -453,10 +453,7 @@ ary_alloc(VALUE klass)</div><div class='ctx'> static VALUE</div><div class='ctx'> empty_ary_alloc(VALUE klass)</div><div class='ctx'> {</div><div class='del'>-    if (RUBY_DTRACE_ARRAY_CREATE_ENABLED()) {</div><div class='del'>-	RUBY_DTRACE_ARRAY_CREATE(0, rb_sourcefile(), rb_sourceline());</div><div class='del'>-    }</div><div class='del'>-</div><div class='add'>+    RUBY_DTRACE_CREATE_HOOK(ARRAY, 0);</div><div class='ctx'>     return ary_alloc(klass);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -472,9 +469,7 @@ ary_new(VALUE klass, long capa)</div><div class='ctx'> 	rb_raise(rb_eArgError, "array size too big");</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    if (RUBY_DTRACE_ARRAY_CREATE_ENABLED()) {</div><div class='del'>-	RUBY_DTRACE_ARRAY_CREATE(capa, rb_sourcefile(), rb_sourceline());</div><div class='del'>-    }</div><div class='add'>+    RUBY_DTRACE_CREATE_HOOK(ARRAY, capa);</div><div class='ctx'> </div><div class='ctx'>     ary = ary_alloc(klass);</div><div class='ctx'>     if (capa &gt; RARRAY_EMBED_LEN_MAX) {</div><div class='hunk'>@@ -940,7 +935,7 @@ rb_ary_cat(VALUE ary, const VALUE *argv, long len)</div><div class='ctx'>  *     a = [ "a", "b", "c" ]</div><div class='ctx'>  *     a.push("d", "e", "f")</div><div class='ctx'>  *             #=&gt; ["a", "b", "c", "d", "e", "f"]</div><div class='del'>- *     [1, 2, 3,].push(4).push(5)</div><div class='add'>+ *     [1, 2, 3].push(4).push(5)</div><div class='ctx'>  *             #=&gt; [1, 2, 3, 4, 5]</div><div class='ctx'>  */</div><div class='ctx'> </div><div class='hunk'>@@ -1070,14 +1065,21 @@ rb_ary_shift_m(int argc, VALUE *argv, VALUE ary)</div><div class='ctx'>     n = RARRAY_LEN(result);</div><div class='ctx'>     if (ARY_SHARED_P(ary)) {</div><div class='ctx'> 	if (ARY_SHARED_OCCUPIED(ARY_SHARED(ary))) {</div><div class='add'>+	  setup_occupied_shared:</div><div class='ctx'> 	    ary_mem_clear(ary, 0, n);</div><div class='ctx'> 	}</div><div class='ctx'>         ARY_INCREASE_PTR(ary, n);</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-	RARRAY_PTR_USE(ary, ptr, {</div><div class='del'>-	    MEMMOVE(ptr, ptr + n, VALUE, RARRAY_LEN(ary)-n);</div><div class='del'>-	}); /* WB: no new reference */</div><div class='add'>+	if (RARRAY_LEN(ary) &lt; ARY_DEFAULT_SIZE) {</div><div class='add'>+	    RARRAY_PTR_USE(ary, ptr, {</div><div class='add'>+		MEMMOVE(ptr, ptr+n, VALUE, RARRAY_LEN(ary)-n);</div><div class='add'>+	    }); /* WB: no new reference */</div><div class='add'>+	}</div><div class='add'>+	else {</div><div class='add'>+	    ary_make_shared(ary);</div><div class='add'>+	    goto setup_occupied_shared;</div><div class='add'>+	}</div><div class='ctx'>     }</div><div class='ctx'>     ARY_INCREASE_LEN(ary, -n);</div><div class='ctx'> </div><div class='hunk'>@@ -1193,10 +1195,17 @@ rb_ary_elt(VALUE ary, long offset)</div><div class='ctx'> VALUE</div><div class='ctx'> rb_ary_entry(VALUE ary, long offset)</div><div class='ctx'> {</div><div class='add'>+    long len = RARRAY_LEN(ary);</div><div class='add'>+    const VALUE *ptr = RARRAY_CONST_PTR(ary);</div><div class='add'>+    if (len == 0) return Qnil;</div><div class='ctx'>     if (offset &lt; 0) {</div><div class='del'>-	offset += RARRAY_LEN(ary);</div><div class='add'>+        offset += len;</div><div class='add'>+        if (offset &lt; 0) return Qnil;</div><div class='add'>+    }</div><div class='add'>+    else if (len &lt;= offset) {</div><div class='add'>+        return Qnil;</div><div class='ctx'>     }</div><div class='del'>-    return rb_ary_elt(ary, offset);</div><div class='add'>+    return ptr[offset];</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> VALUE</div><div class='hunk'>@@ -1300,7 +1309,7 @@ rb_ary_aref(int argc, const VALUE *argv, VALUE ary)</div><div class='ctx'>  *     a.at(-1)    #=&gt; "e"</div><div class='ctx'>  */</div><div class='ctx'> </div><div class='del'>-static VALUE</div><div class='add'>+VALUE</div><div class='ctx'> rb_ary_at(VALUE ary, VALUE pos)</div><div class='ctx'> {</div><div class='ctx'>     return rb_ary_entry(ary, NUM2LONG(pos));</div><div class='hunk'>@@ -1551,10 +1560,10 @@ rb_ary_to_ary(VALUE obj)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static void</div><div class='del'>-rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)</div><div class='add'>+rb_ary_splice(VALUE ary, long beg, long len, const VALUE *rptr, long rlen)</div><div class='ctx'> {</div><div class='del'>-    long rlen;</div><div class='ctx'>     long olen;</div><div class='add'>+    long rofs;</div><div class='ctx'> </div><div class='ctx'>     if (len &lt; 0) rb_raise(rb_eIndexError, "negative length (%ld)", len);</div><div class='ctx'>     olen = RARRAY_LEN(ary);</div><div class='hunk'>@@ -1569,14 +1578,11 @@ rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)</div><div class='ctx'> 	len = olen - beg;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    if (rpl == Qundef) {</div><div class='del'>-	rlen = 0;</div><div class='del'>-    }</div><div class='del'>-    else {</div><div class='del'>-	rpl = rb_ary_to_ary(rpl);</div><div class='del'>-	rlen = RARRAY_LEN(rpl);</div><div class='del'>-	olen = RARRAY_LEN(ary);	/* ary may be resized in rpl.to_ary too */</div><div class='add'>+    {</div><div class='add'>+	const VALUE *optr = RARRAY_CONST_PTR(ary);</div><div class='add'>+	rofs = (rptr &gt;= optr &amp;&amp; rptr &lt; optr + olen) ? rptr - optr : -1;</div><div class='ctx'>     }</div><div class='add'>+</div><div class='ctx'>     if (beg &gt;= olen) {</div><div class='ctx'> 	VALUE target_ary;</div><div class='ctx'> 	if (beg &gt; ARY_MAX_SIZE - rlen) {</div><div class='hunk'>@@ -1586,7 +1592,8 @@ rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)</div><div class='ctx'> 	len = beg + rlen;</div><div class='ctx'> 	ary_mem_clear(ary, olen, beg - olen);</div><div class='ctx'> 	if (rlen &gt; 0) {</div><div class='del'>-	    ary_memcpy0(ary, beg, rlen, RARRAY_CONST_PTR(rpl), target_ary);</div><div class='add'>+	    if (rofs != -1) rptr = RARRAY_CONST_PTR(ary) + rofs;</div><div class='add'>+	    ary_memcpy0(ary, beg, rlen, rptr, target_ary);</div><div class='ctx'> 	}</div><div class='ctx'> 	ARY_SET_LEN(ary, len);</div><div class='ctx'>     }</div><div class='hunk'>@@ -1609,10 +1616,10 @@ rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)</div><div class='ctx'> 	    ARY_SET_LEN(ary, alen);</div><div class='ctx'> 	}</div><div class='ctx'> 	if (rlen &gt; 0) {</div><div class='del'>-	    MEMMOVE(RARRAY_PTR(ary) + beg, RARRAY_CONST_PTR(rpl), VALUE, rlen);</div><div class='add'>+	    if (rofs != -1) rptr = RARRAY_CONST_PTR(ary) + rofs;</div><div class='add'>+	    MEMMOVE(RARRAY_PTR(ary) + beg, rptr, VALUE, rlen);</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='del'>-    RB_GC_GUARD(rpl);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> void</div><div class='hunk'>@@ -1715,13 +1722,13 @@ static VALUE</div><div class='ctx'> rb_ary_aset(int argc, VALUE *argv, VALUE ary)</div><div class='ctx'> {</div><div class='ctx'>     long offset, beg, len;</div><div class='add'>+    VALUE rpl;</div><div class='ctx'> </div><div class='ctx'>     if (argc == 3) {</div><div class='ctx'> 	rb_ary_modify_check(ary);</div><div class='ctx'> 	beg = NUM2LONG(argv[0]);</div><div class='ctx'> 	len = NUM2LONG(argv[1]);</div><div class='del'>-	rb_ary_splice(ary, beg, len, argv[2]);</div><div class='del'>-	return argv[2];</div><div class='add'>+	goto range;</div><div class='ctx'>     }</div><div class='ctx'>     rb_check_arity(argc, 2, 2);</div><div class='ctx'>     rb_ary_modify_check(ary);</div><div class='hunk'>@@ -1731,8 +1738,11 @@ rb_ary_aset(int argc, VALUE *argv, VALUE ary)</div><div class='ctx'>     }</div><div class='ctx'>     if (rb_range_beg_len(argv[0], &amp;beg, &amp;len, RARRAY_LEN(ary), 1)) {</div><div class='ctx'> 	/* check if idx is Range */</div><div class='del'>-	rb_ary_splice(ary, beg, len, argv[1]);</div><div class='del'>-	return argv[1];</div><div class='add'>+      range:</div><div class='add'>+	rpl = rb_ary_to_ary(argv[argc-1]);</div><div class='add'>+	rb_ary_splice(ary, beg, len, RARRAY_CONST_PTR(rpl), RARRAY_LEN(rpl));</div><div class='add'>+	RB_GC_GUARD(rpl);</div><div class='add'>+	return argv[argc-1];</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     offset = NUM2LONG(argv[0]);</div><div class='hunk'>@@ -1772,7 +1782,7 @@ rb_ary_insert(int argc, VALUE *argv, VALUE ary)</div><div class='ctx'>     if (pos &lt; 0) {</div><div class='ctx'> 	pos++;</div><div class='ctx'>     }</div><div class='del'>-    rb_ary_splice(ary, pos, 0, rb_ary_new4(argc - 1, argv + 1));</div><div class='add'>+    rb_ary_splice(ary, pos, 0, argv + 1, argc - 1);</div><div class='ctx'>     return ary;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -1791,9 +1801,9 @@ ary_enum_length(VALUE ary, VALUE args, VALUE eobj)</div><div class='ctx'>  *     ary.each                   -&gt; Enumerator</div><div class='ctx'>  *</div><div class='ctx'>  *  Calls the given block once for each element in +self+, passing that element</div><div class='del'>- *  as a parameter.</div><div class='add'>+ *  as a parameter.  Returns the array itself.</div><div class='ctx'>  *</div><div class='del'>- *  An Enumerator is returned if no block is given.</div><div class='add'>+ *  If no block is given, an Enumerator is returned.</div><div class='ctx'>  *</div><div class='ctx'>  *     a = [ "a", "b", "c" ]</div><div class='ctx'>  *     a.each {|x| print x, " -- " }</div><div class='hunk'>@@ -1804,10 +1814,9 @@ ary_enum_length(VALUE ary, VALUE args, VALUE eobj)</div><div class='ctx'>  */</div><div class='ctx'> </div><div class='ctx'> VALUE</div><div class='del'>-rb_ary_each(VALUE array)</div><div class='add'>+rb_ary_each(VALUE ary)</div><div class='ctx'> {</div><div class='ctx'>     long i;</div><div class='del'>-    volatile VALUE ary = array;</div><div class='ctx'> </div><div class='ctx'>     RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);</div><div class='ctx'>     for (i=0; i&lt;RARRAY_LEN(ary); i++) {</div><div class='hunk'>@@ -2164,10 +2173,11 @@ rb_ary_to_h(VALUE ary)</div><div class='ctx'>     long i;</div><div class='ctx'>     VALUE hash = rb_hash_new();</div><div class='ctx'>     for (i=0; i&lt;RARRAY_LEN(ary); i++) {</div><div class='del'>-	VALUE key_value_pair = rb_check_array_type(rb_ary_elt(ary, i));</div><div class='add'>+	const VALUE elt = rb_ary_elt(ary, i);</div><div class='add'>+	const VALUE key_value_pair = rb_check_array_type(elt);</div><div class='ctx'> 	if (NIL_P(key_value_pair)) {</div><div class='del'>-	    rb_raise(rb_eTypeError, "wrong element type %s at %ld (expected array)",</div><div class='del'>-		rb_builtin_class_name(rb_ary_elt(ary, i)), i);</div><div class='add'>+	    rb_raise(rb_eTypeError, "wrong element type %"PRIsVALUE" at %ld (expected array)",</div><div class='add'>+		     rb_obj_class(elt), i);</div><div class='ctx'> 	}</div><div class='ctx'> 	if (RARRAY_LEN(key_value_pair) != 2) {</div><div class='ctx'> 	    rb_raise(rb_eArgError, "wrong array length at %ld (expected 2, was %ld)",</div><div class='hunk'>@@ -2362,26 +2372,9 @@ rb_ary_rotate_m(int argc, VALUE *argv, VALUE ary)</div><div class='ctx'> </div><div class='ctx'> struct ary_sort_data {</div><div class='ctx'>     VALUE ary;</div><div class='del'>-    int opt_methods;</div><div class='del'>-    int opt_inited;</div><div class='add'>+    struct cmp_opt_data cmp_opt;</div><div class='ctx'> };</div><div class='ctx'> </div><div class='del'>-enum {</div><div class='del'>-    sort_opt_Fixnum,</div><div class='del'>-    sort_opt_String,</div><div class='del'>-    sort_optimizable_count</div><div class='del'>-};</div><div class='del'>-</div><div class='del'>-#define STRING_P(s) (RB_TYPE_P((s), T_STRING) &amp;&amp; CLASS_OF(s) == rb_cString)</div><div class='del'>-</div><div class='del'>-#define SORT_OPTIMIZABLE_BIT(type) (1U &lt;&lt; TOKEN_PASTE(sort_opt_,type))</div><div class='del'>-#define SORT_OPTIMIZABLE(data, type) \</div><div class='del'>-    (((data)-&gt;opt_inited &amp; SORT_OPTIMIZABLE_BIT(type)) ? \</div><div class='del'>-     ((data)-&gt;opt_methods &amp; SORT_OPTIMIZABLE_BIT(type)) : \</div><div class='del'>-     (((data)-&gt;opt_inited |= SORT_OPTIMIZABLE_BIT(type)), \</div><div class='del'>-      rb_method_basic_definition_p(TOKEN_PASTE(rb_c,type), id_cmp) &amp;&amp; \</div><div class='del'>-      ((data)-&gt;opt_methods |= SORT_OPTIMIZABLE_BIT(type))))</div><div class='del'>-</div><div class='ctx'> static VALUE</div><div class='ctx'> sort_reentered(VALUE ary)</div><div class='ctx'> {</div><div class='hunk'>@@ -2413,12 +2406,12 @@ sort_2(const void *ap, const void *bp, void *dummy)</div><div class='ctx'>     VALUE a = *(const VALUE *)ap, b = *(const VALUE *)bp;</div><div class='ctx'>     int n;</div><div class='ctx'> </div><div class='del'>-    if (FIXNUM_P(a) &amp;&amp; FIXNUM_P(b) &amp;&amp; SORT_OPTIMIZABLE(data, Fixnum)) {</div><div class='add'>+    if (FIXNUM_P(a) &amp;&amp; FIXNUM_P(b) &amp;&amp; CMP_OPTIMIZABLE(data-&gt;cmp_opt, Fixnum)) {</div><div class='ctx'> 	if ((long)a &gt; (long)b) return 1;</div><div class='ctx'> 	if ((long)a &lt; (long)b) return -1;</div><div class='ctx'> 	return 0;</div><div class='ctx'>     }</div><div class='del'>-    if (STRING_P(a) &amp;&amp; STRING_P(b) &amp;&amp; SORT_OPTIMIZABLE(data, String)) {</div><div class='add'>+    if (STRING_P(a) &amp;&amp; STRING_P(b) &amp;&amp; CMP_OPTIMIZABLE(data-&gt;cmp_opt, String)) {</div><div class='ctx'> 	return rb_str_cmp(a, b);</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='hunk'>@@ -2439,9 +2432,9 @@ sort_2(const void *ap, const void *bp, void *dummy)</div><div class='ctx'>  *  Comparisons for the sort will be done using the &lt;code&gt;&lt;=&gt;&lt;/code&gt; operator</div><div class='ctx'>  *  or using an optional code block.</div><div class='ctx'>  *</div><div class='del'>- *  The block must implement a comparison between +a+ and +b+, and return</div><div class='del'>- *  +-1+, when +a+ follows +b+, +0+ when +a+ and +b+ are equivalent, or ++1+</div><div class='del'>- *  if +b+ follows +a+.</div><div class='add'>+ *  The block must implement a comparison between +a+ and +b+ and return</div><div class='add'>+ *  an integer less than 0 when +b+ follows +a+, +0+ when +a+ and +b+</div><div class='add'>+ *  are equivalent, or an integer greater than 0 when +a+ follows +b+.</div><div class='ctx'>  *</div><div class='ctx'>  *  See also Enumerable#sort_by.</div><div class='ctx'>  *</div><div class='hunk'>@@ -2462,8 +2455,8 @@ rb_ary_sort_bang(VALUE ary)</div><div class='ctx'> </div><div class='ctx'> 	RBASIC_CLEAR_CLASS(tmp);</div><div class='ctx'> 	data.ary = tmp;</div><div class='del'>-	data.opt_methods = 0;</div><div class='del'>-	data.opt_inited = 0;</div><div class='add'>+	data.cmp_opt.opt_methods = 0;</div><div class='add'>+	data.cmp_opt.opt_inited = 0;</div><div class='ctx'> 	RARRAY_PTR_USE(tmp, ptr, {</div><div class='ctx'> 	    ruby_qsort(ptr, len, sizeof(VALUE),</div><div class='ctx'> 		       rb_block_given_p()?sort_1:sort_2, &amp;data);</div><div class='hunk'>@@ -2472,8 +2465,8 @@ rb_ary_sort_bang(VALUE ary)</div><div class='ctx'>         if (ARY_EMBED_P(tmp)) {</div><div class='ctx'>             if (ARY_SHARED_P(ary)) { /* ary might be destructively operated in the given block */</div><div class='ctx'>                 rb_ary_unshare(ary);</div><div class='add'>+		FL_SET_EMBED(ary);</div><div class='ctx'>             }</div><div class='del'>-            FL_SET_EMBED(ary);</div><div class='ctx'> 	    ary_memcpy(ary, 0, ARY_EMBED_LEN(tmp), ARY_EMBED_PTR(tmp));</div><div class='ctx'>             ARY_SET_LEN(ary, ARY_EMBED_LEN(tmp));</div><div class='ctx'>         }</div><div class='hunk'>@@ -2520,9 +2513,9 @@ rb_ary_sort_bang(VALUE ary)</div><div class='ctx'>  *  Comparisons for the sort will be done using the &lt;code&gt;&lt;=&gt;&lt;/code&gt; operator</div><div class='ctx'>  *  or using an optional code block.</div><div class='ctx'>  *</div><div class='del'>- *  The block must implement a comparison between +a+ and +b+, and return</div><div class='del'>- *  +-1+, when +a+ follows +b+, +0+ when +a+ and +b+ are equivalent, or ++1+</div><div class='del'>- *  if +b+ follows +a+.</div><div class='add'>+ *  The block must implement a comparison between +a+ and +b+ and return</div><div class='add'>+ *  an integer less than 0 when +b+ follows +a+, +0+ when +a+ and +b+</div><div class='add'>+ *  are equivalent, or an integer greater than 0 when +a+ follows +b+.</div><div class='ctx'>  *</div><div class='ctx'>  *</div><div class='ctx'>  *  See also Enumerable#sort_by.</div><div class='hunk'>@@ -2540,6 +2533,8 @@ rb_ary_sort(VALUE ary)</div><div class='ctx'>     return ary;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+static VALUE rb_ary_bsearch_index(VALUE ary);</div><div class='add'>+</div><div class='ctx'> /*</div><div class='ctx'>  *  call-seq:</div><div class='ctx'>  *     ary.bsearch {|x| block }  -&gt; elem</div><div class='hunk'>@@ -2596,6 +2591,30 @@ rb_ary_sort(VALUE ary)</div><div class='ctx'> static VALUE</div><div class='ctx'> rb_ary_bsearch(VALUE ary)</div><div class='ctx'> {</div><div class='add'>+    VALUE index_result = rb_ary_bsearch_index(ary);</div><div class='add'>+</div><div class='add'>+    if (FIXNUM_P(index_result)) {</div><div class='add'>+	return rb_ary_entry(ary, FIX2LONG(index_result));</div><div class='add'>+    }</div><div class='add'>+    return index_result;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/*</div><div class='add'>+ *  call-seq:</div><div class='add'>+ *     ary.bsearch_index {|x| block }  -&gt; int or nil</div><div class='add'>+ *</div><div class='add'>+ *  By using binary search, finds an index of a value from this array which</div><div class='add'>+ *  meets the given condition in O(log n) where n is the size of the array.</div><div class='add'>+ *</div><div class='add'>+ *  It supports two modes, depending on the nature of the block and they are</div><div class='add'>+ *  exactly the same as in the case of #bsearch method with the only difference</div><div class='add'>+ *  being that this method returns the index of the element instead of the</div><div class='add'>+ *  element itself. For more details consult the documentation for #bsearch.</div><div class='add'>+ */</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+rb_ary_bsearch_index(VALUE ary)</div><div class='add'>+{</div><div class='ctx'>     long low = 0, high = RARRAY_LEN(ary), mid;</div><div class='ctx'>     int smaller = 0, satisfied = 0;</div><div class='ctx'>     VALUE v, val;</div><div class='hunk'>@@ -2606,8 +2625,8 @@ rb_ary_bsearch(VALUE ary)</div><div class='ctx'> 	val = rb_ary_entry(ary, mid);</div><div class='ctx'> 	v = rb_yield(val);</div><div class='ctx'> 	if (FIXNUM_P(v)) {</div><div class='del'>-	    if (FIX2INT(v) == 0) return val;</div><div class='del'>-	    smaller = FIX2INT(v) &lt; 0;</div><div class='add'>+	    if (v == INT2FIX(0)) return INT2FIX(mid);</div><div class='add'>+	    smaller = (SIGNED_VALUE)v &lt; 0; /* Fixnum preserves its sign-bit */</div><div class='ctx'> 	}</div><div class='ctx'> 	else if (v == Qtrue) {</div><div class='ctx'> 	    satisfied = 1;</div><div class='hunk'>@@ -2618,16 +2637,16 @@ rb_ary_bsearch(VALUE ary)</div><div class='ctx'> 	}</div><div class='ctx'> 	else if (rb_obj_is_kind_of(v, rb_cNumeric)) {</div><div class='ctx'> 	    const VALUE zero = INT2FIX(0);</div><div class='del'>-	    switch (rb_cmpint(rb_funcallv(v, id_cmp, 1, &amp;zero), v, INT2FIX(0))) {</div><div class='del'>-		case 0: return val;</div><div class='del'>-		case 1: smaller = 1; break;</div><div class='del'>-		case -1: smaller = 0;</div><div class='add'>+	    switch (rb_cmpint(rb_funcallv(v, id_cmp, 1, &amp;zero), v, zero)) {</div><div class='add'>+	      case 0: return INT2FIX(mid);</div><div class='add'>+	      case 1: smaller = 1; break;</div><div class='add'>+	      case -1: smaller = 0;</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='del'>-	    rb_raise(rb_eTypeError, "wrong argument type %s"</div><div class='del'>-		" (must be numeric, true, false or nil)",</div><div class='del'>-		rb_obj_classname(v));</div><div class='add'>+	    rb_raise(rb_eTypeError, "wrong argument type %"PRIsVALUE</div><div class='add'>+		     " (must be numeric, true, false or nil)",</div><div class='add'>+		     rb_obj_class(v));</div><div class='ctx'> 	}</div><div class='ctx'> 	if (smaller) {</div><div class='ctx'> 	    high = mid;</div><div class='hunk'>@@ -2636,9 +2655,8 @@ rb_ary_bsearch(VALUE ary)</div><div class='ctx'> 	    low = mid + 1;</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='del'>-    if (low == RARRAY_LEN(ary)) return Qnil;</div><div class='ctx'>     if (!satisfied) return Qnil;</div><div class='del'>-    return rb_ary_entry(ary, low);</div><div class='add'>+    return INT2FIX(low);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> </div><div class='hunk'>@@ -2689,9 +2707,9 @@ rb_ary_sort_by_bang(VALUE ary)</div><div class='ctx'>  *  If no block is given, an Enumerator is returned instead.</div><div class='ctx'>  *</div><div class='ctx'>  *     a = [ "a", "b", "c", "d" ]</div><div class='del'>- *     a.collect { |x| x + "!" }        #=&gt; ["a!", "b!", "c!", "d!"]</div><div class='del'>- *     a.map.with_index{ |x, i| x * i } #=&gt; ["", "b", "cc", "ddd"]</div><div class='del'>- *     a                                #=&gt; ["a", "b", "c", "d"]</div><div class='add'>+ *     a.collect { |x| x + "!" }         #=&gt; ["a!", "b!", "c!", "d!"]</div><div class='add'>+ *     a.map.with_index { |x, i| x * i } #=&gt; ["", "b", "cc", "ddd"]</div><div class='add'>+ *     a                                 #=&gt; ["a", "b", "c", "d"]</div><div class='ctx'>  */</div><div class='ctx'> </div><div class='ctx'> static VALUE</div><div class='hunk'>@@ -2828,6 +2846,48 @@ rb_ary_select(VALUE ary)</div><div class='ctx'>     return result;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+struct select_bang_arg {</div><div class='add'>+    VALUE ary;</div><div class='add'>+    long len[2];</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+select_bang_i(VALUE a)</div><div class='add'>+{</div><div class='add'>+    volatile struct select_bang_arg *arg = (void *)a;</div><div class='add'>+    VALUE ary = arg-&gt;ary;</div><div class='add'>+    long i1, i2;</div><div class='add'>+</div><div class='add'>+    for (i1 = i2 = 0; i1 &lt; RARRAY_LEN(ary); arg-&gt;len[0] = ++i1) {</div><div class='add'>+	VALUE v = RARRAY_AREF(ary, i1);</div><div class='add'>+	if (!RTEST(rb_yield(v))) continue;</div><div class='add'>+	if (i1 != i2) {</div><div class='add'>+	    rb_ary_store(ary, i2, v);</div><div class='add'>+	}</div><div class='add'>+	arg-&gt;len[1] = ++i2;</div><div class='add'>+    }</div><div class='add'>+    return (i1 == i2) ? Qnil : ary;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+select_bang_ensure(VALUE a)</div><div class='add'>+{</div><div class='add'>+    volatile struct select_bang_arg *arg = (void *)a;</div><div class='add'>+    VALUE ary = arg-&gt;ary;</div><div class='add'>+    long len = RARRAY_LEN(ary);</div><div class='add'>+    long i1 = arg-&gt;len[0], i2 = arg-&gt;len[1];</div><div class='add'>+</div><div class='add'>+    if (i2 &lt; i1) {</div><div class='add'>+	if (i1 &lt; len) {</div><div class='add'>+	    RARRAY_PTR_USE(ary, ptr, {</div><div class='add'>+		    MEMMOVE(ptr + i2, ptr + i1, VALUE, len - i1);</div><div class='add'>+		});</div><div class='add'>+	}</div><div class='add'>+	ARY_SET_LEN(ary, len - i1 + i2);</div><div class='add'>+    }</div><div class='add'>+    return ary;</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> /*</div><div class='ctx'>  *  call-seq:</div><div class='ctx'>  *     ary.select!  {|item| block } -&gt; ary or nil</div><div class='hunk'>@@ -2836,6 +2896,8 @@ rb_ary_select(VALUE ary)</div><div class='ctx'>  *  Invokes the given block passing in successive elements from +self+,</div><div class='ctx'>  *  deleting elements for which the block returns a +false+ value.</div><div class='ctx'>  *</div><div class='add'>+ *  The array may not be changed instantly every time the block is called.</div><div class='add'>+ *</div><div class='ctx'>  *  If changes were made, it will return +self+, otherwise it returns +nil+.</div><div class='ctx'>  *</div><div class='ctx'>  *  See also Array#keep_if</div><div class='hunk'>@@ -2847,23 +2909,14 @@ rb_ary_select(VALUE ary)</div><div class='ctx'> static VALUE</div><div class='ctx'> rb_ary_select_bang(VALUE ary)</div><div class='ctx'> {</div><div class='del'>-    long i1, i2;</div><div class='add'>+    struct select_bang_arg args;</div><div class='ctx'> </div><div class='ctx'>     RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);</div><div class='ctx'>     rb_ary_modify(ary);</div><div class='del'>-    for (i1 = i2 = 0; i1 &lt; RARRAY_LEN(ary); i1++) {</div><div class='del'>-	VALUE v = RARRAY_AREF(ary, i1);</div><div class='del'>-	if (!RTEST(rb_yield(v))) continue;</div><div class='del'>-	if (i1 != i2) {</div><div class='del'>-	    rb_ary_store(ary, i2, v);</div><div class='del'>-	}</div><div class='del'>-	i2++;</div><div class='del'>-    }</div><div class='ctx'> </div><div class='del'>-    if (i1 == i2) return Qnil;</div><div class='del'>-    if (i2 &lt; i1)</div><div class='del'>-	ARY_SET_LEN(ary, i2);</div><div class='del'>-    return ary;</div><div class='add'>+    args.ary = ary;</div><div class='add'>+    args.len[0] = args.len[1] = 0;</div><div class='add'>+    return rb_ensure(select_bang_i, (VALUE)&amp;args, select_bang_ensure, (VALUE)&amp;args);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='hunk'>@@ -3064,7 +3117,7 @@ rb_ary_slice_bang(int argc, VALUE *argv, VALUE ary)</div><div class='ctx'> 	if (len == 0) return rb_ary_new2(0);</div><div class='ctx'> 	arg2 = rb_ary_new4(len, RARRAY_CONST_PTR(ary)+pos);</div><div class='ctx'> 	RBASIC_SET_CLASS(arg2, rb_obj_class(ary));</div><div class='del'>-	rb_ary_splice(ary, pos, len, Qundef);</div><div class='add'>+	rb_ary_splice(ary, pos, len, 0, 0);</div><div class='ctx'> 	return arg2;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='hunk'>@@ -3106,23 +3159,32 @@ ary_reject(VALUE orig, VALUE result)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static VALUE</div><div class='del'>-ary_reject_bang(VALUE ary)</div><div class='add'>+reject_bang_i(VALUE a)</div><div class='ctx'> {</div><div class='del'>-    long i;</div><div class='del'>-    VALUE result = Qnil;</div><div class='add'>+    volatile struct select_bang_arg *arg = (void *)a;</div><div class='add'>+    VALUE ary = arg-&gt;ary;</div><div class='add'>+    long i1, i2;</div><div class='ctx'> </div><div class='del'>-    rb_ary_modify_check(ary);</div><div class='del'>-    for (i = 0; i &lt; RARRAY_LEN(ary); ) {</div><div class='del'>-	VALUE v = RARRAY_AREF(ary, i);</div><div class='del'>-	if (RTEST(rb_yield(v))) {</div><div class='del'>-	    rb_ary_delete_at(ary, i);</div><div class='del'>-	    result = ary;</div><div class='del'>-	}</div><div class='del'>-	else {</div><div class='del'>-	    i++;</div><div class='add'>+    for (i1 = i2 = 0; i1 &lt; RARRAY_LEN(ary); arg-&gt;len[0] = ++i1) {</div><div class='add'>+	VALUE v = RARRAY_AREF(ary, i1);</div><div class='add'>+	if (RTEST(rb_yield(v))) continue;</div><div class='add'>+	if (i1 != i2) {</div><div class='add'>+	    rb_ary_store(ary, i2, v);</div><div class='ctx'> 	}</div><div class='add'>+	arg-&gt;len[1] = ++i2;</div><div class='ctx'>     }</div><div class='del'>-    return result;</div><div class='add'>+    return (i1 == i2) ? Qnil : ary;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ary_reject_bang(VALUE ary)</div><div class='add'>+{</div><div class='add'>+    struct select_bang_arg args;</div><div class='add'>+</div><div class='add'>+    rb_ary_modify_check(ary);</div><div class='add'>+    args.ary = ary;</div><div class='add'>+    args.len[0] = args.len[1] = 0;</div><div class='add'>+    return rb_ensure(reject_bang_i, (VALUE)&amp;args, select_bang_ensure, (VALUE)&amp;args);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='hunk'>@@ -3130,11 +3192,10 @@ ary_reject_bang(VALUE ary)</div><div class='ctx'>  *     ary.reject! { |item| block }  -&gt; ary or nil</div><div class='ctx'>  *     ary.reject!                   -&gt; Enumerator</div><div class='ctx'>  *</div><div class='del'>- *  Equivalent to Array#delete_if, deleting elements from +self+ for which the</div><div class='del'>- *  block evaluates to +true+, but returns +nil+ if no changes were made.</div><div class='add'>+ *  Deletes every element of +self+ for which the block evaluates to +true+,</div><div class='add'>+ *  if no changes were made returns +nil+.</div><div class='ctx'>  *</div><div class='del'>- *  The array is changed instantly every time the block is called, not after</div><div class='del'>- *  the iteration is over.</div><div class='add'>+ *  The array may not be changed instantly every time the block is called.</div><div class='ctx'>  *</div><div class='ctx'>  *  See also Enumerable#reject and Array#delete_if.</div><div class='ctx'>  *</div><div class='hunk'>@@ -3154,7 +3215,7 @@ rb_ary_reject_bang(VALUE ary)</div><div class='ctx'>  *     ary.reject                   -&gt; Enumerator</div><div class='ctx'>  *</div><div class='ctx'>  *  Returns a new array containing the items in +self+ for which the given</div><div class='del'>- *  block is not +true+.</div><div class='add'>+ *  block is not +true+. The ordering of non-rejected elements is maintained.</div><div class='ctx'>  *</div><div class='ctx'>  *  See also Array#delete_if</div><div class='ctx'>  *</div><div class='hunk'>@@ -3460,12 +3521,10 @@ rb_ary_clear(VALUE ary)</div><div class='ctx'> static VALUE</div><div class='ctx'> rb_ary_fill(int argc, VALUE *argv, VALUE ary)</div><div class='ctx'> {</div><div class='del'>-    VALUE item, arg1, arg2;</div><div class='add'>+    VALUE item = Qundef, arg1, arg2;</div><div class='ctx'>     long beg = 0, end = 0, len = 0;</div><div class='del'>-    int block_p = FALSE;</div><div class='ctx'> </div><div class='ctx'>     if (rb_block_given_p()) {</div><div class='del'>-	block_p = TRUE;</div><div class='ctx'> 	rb_scan_args(argc, argv, "02", &amp;arg1, &amp;arg2);</div><div class='ctx'> 	argc += 1;		/* hackish */</div><div class='ctx'>     }</div><div class='hunk'>@@ -3507,7 +3566,7 @@ rb_ary_fill(int argc, VALUE *argv, VALUE ary)</div><div class='ctx'> 	ARY_SET_LEN(ary, end);</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    if (block_p) {</div><div class='add'>+    if (item == Qundef) {</div><div class='ctx'> 	VALUE v;</div><div class='ctx'> 	long i;</div><div class='ctx'> </div><div class='hunk'>@@ -3564,31 +3623,58 @@ rb_ary_plus(VALUE x, VALUE y)</div><div class='ctx'>     return z;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+static VALUE</div><div class='add'>+ary_append(VALUE x, VALUE y)</div><div class='add'>+{</div><div class='add'>+    long n = RARRAY_LEN(y);</div><div class='add'>+    if (n &gt; 0) {</div><div class='add'>+	rb_ary_splice(x, RARRAY_LEN(x), 0, RARRAY_CONST_PTR(y), n);</div><div class='add'>+    }</div><div class='add'>+    return x;</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> /*</div><div class='ctx'>  *  call-seq:</div><div class='del'>- *     ary.concat(other_ary)   -&gt; ary</div><div class='add'>+ *     ary.concat(other_ary1, other_ary2,...)   -&gt; ary</div><div class='ctx'>  *</div><div class='del'>- *  Appends the elements of +other_ary+ to +self+.</div><div class='add'>+ *  Appends the elements of +other_ary+s to +self+.</div><div class='ctx'>  *</div><div class='ctx'>  *     [ "a", "b" ].concat( ["c", "d"] ) #=&gt; [ "a", "b", "c", "d" ]</div><div class='add'>+ *     [ "a" ].concat( ["b"], ["c", "d"] ) #=&gt; [ "a", "b", "c", "d" ]</div><div class='add'>+ *     [ "a" ].concat #=&gt; [ "a" ]</div><div class='add'>+ *</div><div class='ctx'>  *     a = [ 1, 2, 3 ]</div><div class='ctx'>  *     a.concat( [ 4, 5 ] )</div><div class='ctx'>  *     a                                 #=&gt; [ 1, 2, 3, 4, 5 ]</div><div class='ctx'>  *</div><div class='add'>+ *     a = [ 1, 2 ]</div><div class='add'>+ *     a.concat(a, a)                    #=&gt; [1, 2, 1, 2, 1, 2]</div><div class='add'>+ *</div><div class='ctx'>  *  See also Array#+.</div><div class='ctx'>  */</div><div class='ctx'> </div><div class='del'>-VALUE</div><div class='del'>-rb_ary_concat(VALUE x, VALUE y)</div><div class='add'>+static VALUE</div><div class='add'>+rb_ary_concat_multi(int argc, VALUE *argv, VALUE ary)</div><div class='ctx'> {</div><div class='del'>-    rb_ary_modify_check(x);</div><div class='del'>-    y = to_ary(y);</div><div class='del'>-    if (RARRAY_LEN(y) &gt; 0) {</div><div class='del'>-	rb_ary_splice(x, RARRAY_LEN(x), 0, y);</div><div class='add'>+    rb_ary_modify_check(ary);</div><div class='add'>+</div><div class='add'>+    if (argc &gt; 0) {</div><div class='add'>+	int i;</div><div class='add'>+	VALUE args = rb_ary_tmp_new(argc);</div><div class='add'>+	for (i = 0; i &lt; argc; i++) {</div><div class='add'>+	    rb_ary_concat(args, argv[i]);</div><div class='add'>+	}</div><div class='add'>+	ary_append(ary, args);</div><div class='ctx'>     }</div><div class='del'>-    return x;</div><div class='add'>+</div><div class='add'>+    return ary;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+VALUE</div><div class='add'>+rb_ary_concat(VALUE x, VALUE y)</div><div class='add'>+{</div><div class='add'>+    return ary_append(x, to_ary(y));</div><div class='add'>+}</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='ctx'>  *  call-seq:</div><div class='hunk'>@@ -3655,7 +3741,7 @@ rb_ary_times(VALUE ary, VALUE times)</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='ctx'>  *  call-seq:</div><div class='del'>- *     ary.assoc(obj)   -&gt; new_ary  or  nil</div><div class='add'>+ *     ary.assoc(obj)   -&gt; element_ary  or  nil</div><div class='ctx'>  *</div><div class='ctx'>  *  Searches through an array whose elements are also arrays comparing +obj+</div><div class='ctx'>  *  with the first element of each contained array using &lt;code&gt;obj.==&lt;/code&gt;.</div><div class='hunk'>@@ -3690,7 +3776,7 @@ rb_ary_assoc(VALUE ary, VALUE key)</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='ctx'>  *  call-seq:</div><div class='del'>- *     ary.rassoc(obj) -&gt; new_ary or nil</div><div class='add'>+ *     ary.rassoc(obj) -&gt; element_ary or nil</div><div class='ctx'>  *</div><div class='ctx'>  *  Searches through the array whose elements are also arrays.</div><div class='ctx'>  *</div><div class='hunk'>@@ -3817,7 +3903,7 @@ rb_ary_eql(VALUE ary1, VALUE ary2)</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='ctx'>  *  call-seq:</div><div class='del'>- *     ary.hash   -&gt; fixnum</div><div class='add'>+ *     ary.hash   -&gt; integer</div><div class='ctx'>  *</div><div class='ctx'>  *  Compute a hash-code for this array.</div><div class='ctx'>  *</div><div class='hunk'>@@ -3950,9 +4036,7 @@ ary_add_hash(VALUE hash, VALUE ary)</div><div class='ctx'> </div><div class='ctx'>     for (i=0; i&lt;RARRAY_LEN(ary); i++) {</div><div class='ctx'> 	VALUE elt = RARRAY_AREF(ary, i);</div><div class='del'>-	if (rb_hash_lookup2(hash, elt, Qundef) == Qundef) {</div><div class='del'>-	    rb_hash_aset(hash, elt, elt);</div><div class='del'>-	}</div><div class='add'>+	rb_hash_add_new_element(hash, elt, elt);</div><div class='ctx'>     }</div><div class='ctx'>     return hash;</div><div class='ctx'> }</div><div class='hunk'>@@ -3980,9 +4064,7 @@ ary_add_hash_by(VALUE hash, VALUE ary)</div><div class='ctx'> </div><div class='ctx'>     for (i = 0; i &lt; RARRAY_LEN(ary); ++i) {</div><div class='ctx'> 	VALUE v = rb_ary_elt(ary, i), k = rb_yield(v);</div><div class='del'>-	if (rb_hash_lookup2(hash, k, Qundef) == Qundef) {</div><div class='del'>-	    rb_hash_aset(hash, k, v);</div><div class='del'>-	}</div><div class='add'>+	rb_hash_add_new_element(hash, k, v);</div><div class='ctx'>     }</div><div class='ctx'>     return hash;</div><div class='ctx'> }</div><div class='hunk'>@@ -4044,13 +4126,12 @@ rb_ary_diff(VALUE ary1, VALUE ary2)</div><div class='ctx'>  *  call-seq:</div><div class='ctx'>  *     ary &amp; other_ary      -&gt; new_ary</div><div class='ctx'>  *</div><div class='del'>- *  Set Intersection --- Returns a new array containing elements common to the</div><div class='del'>- *  two arrays, excluding any duplicates. The order is preserved from the</div><div class='del'>- *  original array.</div><div class='add'>+ *  Set Intersection --- Returns a new array containing unique elements common to the</div><div class='add'>+ *  two arrays. The order is preserved from the original array.</div><div class='ctx'>  *</div><div class='ctx'>  *  It compares elements using their #hash and #eql? methods for efficiency.</div><div class='ctx'>  *</div><div class='del'>- *     [ 1, 1, 3, 5 ] &amp; [ 1, 2, 3 ]                 #=&gt; [ 1, 3 ]</div><div class='add'>+ *     [ 1, 1, 3, 5 ] &amp; [ 3, 2, 1 ]                 #=&gt; [ 1, 3 ]</div><div class='ctx'>  *     [ 'a', 'b', 'b', 'z' ] &amp; [ 'a', 'b', 'c' ]   #=&gt; [ 'a', 'b' ]</div><div class='ctx'>  *</div><div class='ctx'>  *  See also Array#uniq.</div><div class='hunk'>@@ -4096,11 +4177,12 @@ ary_hash_orset(st_data_t *key, st_data_t *value, st_data_t arg, int existing)</div><div class='ctx'>  *     ary | other_ary     -&gt; new_ary</div><div class='ctx'>  *</div><div class='ctx'>  *  Set Union --- Returns a new array by joining +ary+ with +other_ary+,</div><div class='del'>- *  excluding any duplicates and preserving the order from the original array.</div><div class='add'>+ *  excluding any duplicates and preserving the order from the given arrays.</div><div class='ctx'>  *</div><div class='ctx'>  *  It compares elements using their #hash and #eql? methods for efficiency.</div><div class='ctx'>  *</div><div class='ctx'>  *     [ "a", "b", "c" ] | [ "c", "d", "a" ]    #=&gt; [ "a", "b", "c", "d" ]</div><div class='add'>+ *     [ "c", "d", "a" ] | [ "a", "b", "c" ]    #=&gt; [ "c", "d", "a", "b" ]</div><div class='ctx'>  *</div><div class='ctx'>  *  See also Array#uniq.</div><div class='ctx'>  */</div><div class='hunk'>@@ -4125,6 +4207,116 @@ rb_ary_or(VALUE ary1, VALUE ary2)</div><div class='ctx'>     return ary3;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+/*</div><div class='add'>+ *  call-seq:</div><div class='add'>+ *     ary.max                     -&gt; obj</div><div class='add'>+ *     ary.max { |a, b| block }    -&gt; obj</div><div class='add'>+ *     ary.max(n)                  -&gt; array</div><div class='add'>+ *     ary.max(n) { |a, b| block } -&gt; array</div><div class='add'>+ *</div><div class='add'>+ *  Returns the object in _ary_ with the maximum value. The</div><div class='add'>+ *  first form assumes all objects implement &lt;code&gt;Comparable&lt;/code&gt;;</div><div class='add'>+ *  the second uses the block to return &lt;em&gt;a &lt;=&gt; b&lt;/em&gt;.</div><div class='add'>+ *</div><div class='add'>+ *     a = %w(albatross dog horse)</div><div class='add'>+ *     a.max                                   #=&gt; "horse"</div><div class='add'>+ *     a.max { |a, b| a.length &lt;=&gt; b.length }  #=&gt; "albatross"</div><div class='add'>+ *</div><div class='add'>+ *  If the +n+ argument is given, maximum +n+ elements are returned</div><div class='add'>+ *  as an array.</div><div class='add'>+ *</div><div class='add'>+ *     a = %w[albatross dog horse]</div><div class='add'>+ *     a.max(2)                                  #=&gt; ["horse", "dog"]</div><div class='add'>+ *     a.max(2) {|a, b| a.length &lt;=&gt; b.length }  #=&gt; ["albatross", "horse"]</div><div class='add'>+ */</div><div class='add'>+static VALUE</div><div class='add'>+rb_ary_max(int argc, VALUE *argv, VALUE ary)</div><div class='add'>+{</div><div class='add'>+    struct cmp_opt_data cmp_opt = { 0, 0 };</div><div class='add'>+    VALUE result = Qundef, v;</div><div class='add'>+    VALUE num;</div><div class='add'>+    long i;</div><div class='add'>+</div><div class='add'>+    rb_scan_args(argc, argv, "01", &amp;num);</div><div class='add'>+</div><div class='add'>+    if (!NIL_P(num))</div><div class='add'>+       return rb_nmin_run(ary, num, 0, 1, 1);</div><div class='add'>+</div><div class='add'>+    if (rb_block_given_p()) {</div><div class='add'>+	for (i = 0; i &lt; RARRAY_LEN(ary); i++) {</div><div class='add'>+	   v = RARRAY_AREF(ary, i);</div><div class='add'>+	   if (result == Qundef || rb_cmpint(rb_yield_values(2, v, result), v, result) &gt; 0) {</div><div class='add'>+	       result = v;</div><div class='add'>+	   }</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	for (i = 0; i &lt; RARRAY_LEN(ary); i++) {</div><div class='add'>+	   v = RARRAY_AREF(ary, i);</div><div class='add'>+	   if (result == Qundef || OPTIMIZED_CMP(v, result, cmp_opt) &gt; 0) {</div><div class='add'>+	       result = v;</div><div class='add'>+	   }</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+    if (result == Qundef) return Qnil;</div><div class='add'>+    return result;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/*</div><div class='add'>+ *  call-seq:</div><div class='add'>+ *     ary.min                     -&gt; obj</div><div class='add'>+ *     ary.min {| a,b | block }    -&gt; obj</div><div class='add'>+ *     ary.min(n)                  -&gt; array</div><div class='add'>+ *     ary.min(n) {| a,b | block } -&gt; array</div><div class='add'>+ *</div><div class='add'>+ *  Returns the object in _ary_ with the minimum value. The</div><div class='add'>+ *  first form assumes all objects implement &lt;code&gt;Comparable&lt;/code&gt;;</div><div class='add'>+ *  the second uses the block to return &lt;em&gt;a &lt;=&gt; b&lt;/em&gt;.</div><div class='add'>+ *</div><div class='add'>+ *     a = %w(albatross dog horse)</div><div class='add'>+ *     a.min                                   #=&gt; "albatross"</div><div class='add'>+ *     a.min { |a, b| a.length &lt;=&gt; b.length }  #=&gt; "dog"</div><div class='add'>+ *</div><div class='add'>+ *  If the +n+ argument is given, minimum +n+ elements are returned</div><div class='add'>+ *  as an array.</div><div class='add'>+ *</div><div class='add'>+ *     a = %w[albatross dog horse]</div><div class='add'>+ *     a.min(2)                                  #=&gt; ["albatross", "dog"]</div><div class='add'>+ *     a.min(2) {|a, b| a.length &lt;=&gt; b.length }  #=&gt; ["dog", "horse"]</div><div class='add'>+ */</div><div class='add'>+static VALUE</div><div class='add'>+rb_ary_min(int argc, VALUE *argv, VALUE ary)</div><div class='add'>+{</div><div class='add'>+    struct cmp_opt_data cmp_opt = { 0, 0 };</div><div class='add'>+    VALUE result = Qundef, v;</div><div class='add'>+    VALUE num;</div><div class='add'>+    long i;</div><div class='add'>+</div><div class='add'>+    rb_scan_args(argc, argv, "01", &amp;num);</div><div class='add'>+</div><div class='add'>+    if (!NIL_P(num))</div><div class='add'>+       return rb_nmin_run(ary, num, 0, 0, 1);</div><div class='add'>+</div><div class='add'>+    if (rb_block_given_p()) {</div><div class='add'>+	for (i = 0; i &lt; RARRAY_LEN(ary); i++) {</div><div class='add'>+	   v = RARRAY_AREF(ary, i);</div><div class='add'>+	   if (result == Qundef || rb_cmpint(rb_yield_values(2, v, result), v, result) &lt; 0) {</div><div class='add'>+	       result = v;</div><div class='add'>+	   }</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	for (i = 0; i &lt; RARRAY_LEN(ary); i++) {</div><div class='add'>+	   v = RARRAY_AREF(ary, i);</div><div class='add'>+	   if (result == Qundef || OPTIMIZED_CMP(v, result, cmp_opt) &lt; 0) {</div><div class='add'>+	       result = v;</div><div class='add'>+	   }</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+    if (result == Qundef) return Qnil;</div><div class='add'>+    return result;</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> static int</div><div class='ctx'> push_value(st_data_t key, st_data_t val, st_data_t ary)</div><div class='ctx'> {</div><div class='hunk'>@@ -4144,6 +4336,8 @@ push_value(st_data_t key, st_data_t val, st_data_t ary)</div><div class='ctx'>  *</div><div class='ctx'>  *  It compares values using their #hash and #eql? methods for efficiency.</div><div class='ctx'>  *</div><div class='add'>+ *  +self+ is traversed in order, and the first occurrence is kept.</div><div class='add'>+ *</div><div class='ctx'>  *  Returns +nil+ if no changes are made (that is, no duplicates are found).</div><div class='ctx'>  *</div><div class='ctx'>  *     a = [ "a", "a", "b", "b", "c" ]</div><div class='hunk'>@@ -4199,6 +4393,8 @@ rb_ary_uniq_bang(VALUE ary)</div><div class='ctx'>  *</div><div class='ctx'>  *  It compares values using their #hash and #eql? methods for efficiency.</div><div class='ctx'>  *</div><div class='add'>+ *  +self+ is traversed in order, and the first occurrence is kept.</div><div class='add'>+ *</div><div class='ctx'>  *     a = [ "a", "a", "b", "b", "c" ]</div><div class='ctx'>  *     a.uniq   # =&gt; ["a", "b", "c"]</div><div class='ctx'>  *</div><div class='hunk'>@@ -4350,11 +4546,15 @@ flatten(VALUE ary, int level, int *modified)</div><div class='ctx'>     while (1) {</div><div class='ctx'> 	while (i &lt; RARRAY_LEN(ary)) {</div><div class='ctx'> 	    elt = RARRAY_AREF(ary, i++);</div><div class='add'>+	    if (level &gt;= 0 &amp;&amp; RARRAY_LEN(stack) / 2 &gt;= level) {</div><div class='add'>+		rb_ary_push(result, elt);</div><div class='add'>+		continue;</div><div class='add'>+	    }</div><div class='ctx'> 	    tmp = rb_check_array_type(elt);</div><div class='ctx'> 	    if (RBASIC(result)-&gt;klass) {</div><div class='ctx'> 		rb_raise(rb_eRuntimeError, "flatten reentered");</div><div class='ctx'> 	    }</div><div class='del'>-	    if (NIL_P(tmp) || (level &gt;= 0 &amp;&amp; RARRAY_LEN(stack) / 2 &gt;= level)) {</div><div class='add'>+	    if (NIL_P(tmp)) {</div><div class='ctx'> 		rb_ary_push(result, elt);</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else {</div><div class='hunk'>@@ -4383,7 +4583,7 @@ flatten(VALUE ary, int level, int *modified)</div><div class='ctx'> </div><div class='ctx'>     st_free_table(memo);</div><div class='ctx'> </div><div class='del'>-    RBASIC_SET_CLASS(result, rb_class_of(ary));</div><div class='add'>+    RBASIC_SET_CLASS(result, rb_obj_class(ary));</div><div class='ctx'>     return result;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -4766,8 +4966,8 @@ yield_indexed_values(const VALUE values, const long r, const long *const p)</div><div class='ctx'> /*</div><div class='ctx'>  * Compute permutations of +r+ elements of the set &lt;code&gt;[0..n-1]&lt;/code&gt;.</div><div class='ctx'>  *</div><div class='del'>- * When we have a complete permutation of array indexes, copy the values</div><div class='del'>- * at those indexes into a new array and yield that array.</div><div class='add'>+ * When we have a complete permutation of array indices, copy the values</div><div class='add'>+ * at those indices into a new array and yield that array.</div><div class='ctx'>  *</div><div class='ctx'>  * n: the size of the set</div><div class='ctx'>  * r: the number of elements in each permutation</div><div class='hunk'>@@ -4901,7 +5101,7 @@ rb_ary_permutation(int argc, VALUE *argv, VALUE ary)</div><div class='ctx'>     }</div><div class='ctx'>     else {             /* this is the general case */</div><div class='ctx'> 	volatile VALUE t0;</div><div class='del'>-	long *p = (long*)ALLOCV(t0, r*sizeof(long)+n*sizeof(char));</div><div class='add'>+	long *p = ALLOCV_N(long, t0, r+roomof(n, sizeof(long)));</div><div class='ctx'> 	char *used = (char*)(p + r);</div><div class='ctx'> 	VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */</div><div class='ctx'> 	RBASIC_CLEAR_CLASS(ary0);</div><div class='hunk'>@@ -5006,8 +5206,8 @@ rb_ary_combination(VALUE ary, VALUE num)</div><div class='ctx'>  * Compute repeated permutations of +r+ elements of the set</div><div class='ctx'>  * &lt;code&gt;[0..n-1]&lt;/code&gt;.</div><div class='ctx'>  *</div><div class='del'>- * When we have a complete repeated permutation of array indexes, copy the</div><div class='del'>- * values at those indexes into a new array and yield that array.</div><div class='add'>+ * When we have a complete repeated permutation of array indices, copy the</div><div class='add'>+ * values at those indices into a new array and yield that array.</div><div class='ctx'>  *</div><div class='ctx'>  * n: the size of the set</div><div class='ctx'>  * r: the number of elements in each permutation</div><div class='hunk'>@@ -5341,7 +5541,7 @@ rb_ary_take(VALUE obj, VALUE n)</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='ctx'>  *  call-seq:</div><div class='del'>- *     ary.take_while { |arr| block }  -&gt; new_ary</div><div class='add'>+ *     ary.take_while { |obj| block }  -&gt; new_ary</div><div class='ctx'>  *     ary.take_while                  -&gt; Enumerator</div><div class='ctx'>  *</div><div class='ctx'>  *  Passes elements to the block until the block returns +nil+ or +false+, then</div><div class='hunk'>@@ -5400,7 +5600,7 @@ rb_ary_drop(VALUE ary, VALUE n)</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='ctx'>  *  call-seq:</div><div class='del'>- *     ary.drop_while { |arr| block }   -&gt; new_ary</div><div class='add'>+ *     ary.drop_while { |obj| block }   -&gt; new_ary</div><div class='ctx'>  *     ary.drop_while                  -&gt; Enumerator</div><div class='ctx'>  *</div><div class='ctx'>  *  Drops elements up to, but not including, the first element for which the</div><div class='hunk'>@@ -5454,6 +5654,184 @@ rb_ary_any_p(VALUE ary)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='add'>+ * call-seq:</div><div class='add'>+ *   ary.dig(idx, ...)                 -&gt; object</div><div class='add'>+ *</div><div class='add'>+ * Extracts the nested value specified by the sequence of &lt;i&gt;idx&lt;/i&gt;</div><div class='add'>+ * objects by calling +dig+ at each step, returning +nil+ if any</div><div class='add'>+ * intermediate step is +nil+.</div><div class='add'>+ *</div><div class='add'>+ *   a = [[1, [2, 3]]]</div><div class='add'>+ *</div><div class='add'>+ *   a.dig(0, 1, 1)                    #=&gt; 3</div><div class='add'>+ *   a.dig(1, 2, 3)                    #=&gt; nil</div><div class='add'>+ *   a.dig(0, 0, 0)                    #=&gt; TypeError: Fixnum does not have #dig method</div><div class='add'>+ *   [42, {foo: :bar}].dig(1, :foo)    #=&gt; :bar</div><div class='add'>+ */</div><div class='add'>+</div><div class='add'>+VALUE</div><div class='add'>+rb_ary_dig(int argc, VALUE *argv, VALUE self)</div><div class='add'>+{</div><div class='add'>+    rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS);</div><div class='add'>+    self = rb_ary_at(self, *argv);</div><div class='add'>+    if (!--argc) return self;</div><div class='add'>+    ++argv;</div><div class='add'>+    return rb_obj_dig(argc, argv, self, Qnil);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/*</div><div class='add'>+ * call-seq:</div><div class='add'>+ *   ary.sum(init=0)                    -&gt; number</div><div class='add'>+ *   ary.sum(init=0) {|e| expr }        -&gt; number</div><div class='add'>+ *</div><div class='add'>+ * Returns the sum of elements.</div><div class='add'>+ * For example, [e1, e2, e3].sum returns init + e1 + e2 + e3.</div><div class='add'>+ *</div><div class='add'>+ * If a block is given, the block is applied to each element</div><div class='add'>+ * before addition.</div><div class='add'>+ *</div><div class='add'>+ * If &lt;i&gt;ary&lt;/i&gt; is empty, it returns &lt;i&gt;init&lt;/i&gt;.</div><div class='add'>+ *</div><div class='add'>+ *   [].sum                             #=&gt; 0</div><div class='add'>+ *   [].sum(0.0)                        #=&gt; 0.0</div><div class='add'>+ *   [1, 2, 3].sum                      #=&gt; 6</div><div class='add'>+ *   [3, 5.5].sum                       #=&gt; 8.5</div><div class='add'>+ *   [2.5, 3.0].sum(0.0) {|e| e * e }   #=&gt; 15.25</div><div class='add'>+ *   [Object.new].sum                   #=&gt; TypeError</div><div class='add'>+ *</div><div class='add'>+ * The (arithmetic) mean value of an array can be obtained as follows.</div><div class='add'>+ *</div><div class='add'>+ *   mean = ary.sum(0.0) / ary.length</div><div class='add'>+ *</div><div class='add'>+ * This method can be used for non-numeric objects by</div><div class='add'>+ * explicit &lt;i&gt;init&lt;/i&gt; argument.</div><div class='add'>+ *</div><div class='add'>+ *   ["a", "b", "c"].sum("")            #=&gt; "abc"</div><div class='add'>+ *   [[1], [[2]], [3]].sum([])          #=&gt; [1, [2], 3]</div><div class='add'>+ *</div><div class='add'>+ * However, Array#join and Array#flatten is faster than Array#sum.</div><div class='add'>+ *</div><div class='add'>+ *   ["a", "b", "c"].join               #=&gt; "abc"</div><div class='add'>+ *   [[1], [[2]], [3]].flatten(1)       #=&gt; [1, [2], 3]</div><div class='add'>+ *</div><div class='add'>+ *</div><div class='add'>+ * Array#sum method may not respect method redefinition of "+" methods</div><div class='add'>+ * such as Fixnum#+.</div><div class='add'>+ *</div><div class='add'>+ */</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+rb_ary_sum(int argc, VALUE *argv, VALUE ary)</div><div class='add'>+{</div><div class='add'>+    VALUE e, v, r;</div><div class='add'>+    long i, n;</div><div class='add'>+    int block_given;</div><div class='add'>+</div><div class='add'>+    if (rb_scan_args(argc, argv, "01", &amp;v) == 0)</div><div class='add'>+        v = LONG2FIX(0);</div><div class='add'>+</div><div class='add'>+    block_given = rb_block_given_p();</div><div class='add'>+</div><div class='add'>+    if (RARRAY_LEN(ary) == 0)</div><div class='add'>+        return v;</div><div class='add'>+</div><div class='add'>+    n = 0;</div><div class='add'>+    r = Qundef;</div><div class='add'>+    for (i = 0; i &lt; RARRAY_LEN(ary); i++) {</div><div class='add'>+        e = RARRAY_AREF(ary, i);</div><div class='add'>+        if (block_given)</div><div class='add'>+            e = rb_yield(e);</div><div class='add'>+        if (FIXNUM_P(e)) {</div><div class='add'>+            n += FIX2LONG(e); /* should not overflow long type */</div><div class='add'>+            if (!FIXABLE(n)) {</div><div class='add'>+                v = rb_big_plus(LONG2NUM(n), v);</div><div class='add'>+                n = 0;</div><div class='add'>+            }</div><div class='add'>+        }</div><div class='add'>+        else if (RB_TYPE_P(e, T_BIGNUM))</div><div class='add'>+            v = rb_big_plus(e, v);</div><div class='add'>+        else if (RB_TYPE_P(e, T_RATIONAL)) {</div><div class='add'>+            if (r == Qundef)</div><div class='add'>+                r = e;</div><div class='add'>+            else</div><div class='add'>+                r = rb_rational_plus(r, e);</div><div class='add'>+        }</div><div class='add'>+        else</div><div class='add'>+            goto not_exact;</div><div class='add'>+    }</div><div class='add'>+    if (n != 0)</div><div class='add'>+        v = rb_fix_plus(LONG2FIX(n), v);</div><div class='add'>+    if (r != Qundef) {</div><div class='add'>+        /* r can be a Integer when mathn is loaded */</div><div class='add'>+        if (FIXNUM_P(r))</div><div class='add'>+            v = rb_fix_plus(r, v);</div><div class='add'>+        else if (RB_TYPE_P(r, T_BIGNUM))</div><div class='add'>+            v = rb_big_plus(r, v);</div><div class='add'>+        else</div><div class='add'>+            v = rb_rational_plus(r, v);</div><div class='add'>+    }</div><div class='add'>+    return v;</div><div class='add'>+</div><div class='add'>+  not_exact:</div><div class='add'>+    if (n != 0)</div><div class='add'>+        v = rb_fix_plus(LONG2FIX(n), v);</div><div class='add'>+    if (r != Qundef) {</div><div class='add'>+        /* r can be a Integer when mathn is loaded */</div><div class='add'>+        if (FIXNUM_P(r))</div><div class='add'>+            v = rb_fix_plus(r, v);</div><div class='add'>+        else if (RB_TYPE_P(r, T_BIGNUM))</div><div class='add'>+            v = rb_big_plus(r, v);</div><div class='add'>+        else</div><div class='add'>+            v = rb_rational_plus(r, v);</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    if (RB_FLOAT_TYPE_P(e)) {</div><div class='add'>+        /* Kahan's compensated summation algorithm */</div><div class='add'>+        double f, c;</div><div class='add'>+</div><div class='add'>+        f = NUM2DBL(v);</div><div class='add'>+        c = 0.0;</div><div class='add'>+        goto has_float_value;</div><div class='add'>+        for (; i &lt; RARRAY_LEN(ary); i++) {</div><div class='add'>+            double x, y, t;</div><div class='add'>+            e = RARRAY_AREF(ary, i);</div><div class='add'>+            if (block_given)</div><div class='add'>+                e = rb_yield(e);</div><div class='add'>+            if (RB_FLOAT_TYPE_P(e))</div><div class='add'>+              has_float_value:</div><div class='add'>+                x = RFLOAT_VALUE(e);</div><div class='add'>+            else if (FIXNUM_P(e))</div><div class='add'>+                x = FIX2LONG(e);</div><div class='add'>+            else if (RB_TYPE_P(e, T_BIGNUM))</div><div class='add'>+                x = rb_big2dbl(e);</div><div class='add'>+            else if (RB_TYPE_P(e, T_RATIONAL))</div><div class='add'>+                x = rb_num2dbl(e);</div><div class='add'>+            else</div><div class='add'>+                goto not_float;</div><div class='add'>+</div><div class='add'>+            y = x - c;</div><div class='add'>+            t = f + y;</div><div class='add'>+            c = (t - f) - y;</div><div class='add'>+            f = t;</div><div class='add'>+        }</div><div class='add'>+        return DBL2NUM(f);</div><div class='add'>+</div><div class='add'>+      not_float:</div><div class='add'>+        v = DBL2NUM(f);</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    goto has_some_value;</div><div class='add'>+    for (; i &lt; RARRAY_LEN(ary); i++) {</div><div class='add'>+        e = RARRAY_AREF(ary, i);</div><div class='add'>+        if (block_given)</div><div class='add'>+            e = rb_yield(e);</div><div class='add'>+      has_some_value:</div><div class='add'>+        v = rb_funcall(v, idPLUS, 1, e);</div><div class='add'>+    }</div><div class='add'>+    return v;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/*</div><div class='ctx'>  *  Arrays are ordered, integer-indexed collections of any object.</div><div class='ctx'>  *</div><div class='ctx'>  *  Array indexing starts at 0, as in C or Java.  A negative index is assumed</div><div class='hunk'>@@ -5722,7 +6100,7 @@ Init_Array(void)</div><div class='ctx'>     rb_define_method(rb_cArray, "fetch", rb_ary_fetch, -1);</div><div class='ctx'>     rb_define_method(rb_cArray, "first", rb_ary_first, -1);</div><div class='ctx'>     rb_define_method(rb_cArray, "last", rb_ary_last, -1);</div><div class='del'>-    rb_define_method(rb_cArray, "concat", rb_ary_concat, 1);</div><div class='add'>+    rb_define_method(rb_cArray, "concat", rb_ary_concat_multi, -1);</div><div class='ctx'>     rb_define_method(rb_cArray, "&lt;&lt;", rb_ary_push, 1);</div><div class='ctx'>     rb_define_method(rb_cArray, "push", rb_ary_push_m, -1);</div><div class='ctx'>     rb_define_method(rb_cArray, "pop", rb_ary_pop_m, -1);</div><div class='hunk'>@@ -5780,6 +6158,9 @@ Init_Array(void)</div><div class='ctx'>     rb_define_method(rb_cArray, "&amp;", rb_ary_and, 1);</div><div class='ctx'>     rb_define_method(rb_cArray, "|", rb_ary_or, 1);</div><div class='ctx'> </div><div class='add'>+    rb_define_method(rb_cArray, "max", rb_ary_max, -1);</div><div class='add'>+    rb_define_method(rb_cArray, "min", rb_ary_min, -1);</div><div class='add'>+</div><div class='ctx'>     rb_define_method(rb_cArray, "uniq", rb_ary_uniq, 0);</div><div class='ctx'>     rb_define_method(rb_cArray, "uniq!", rb_ary_uniq_bang, 0);</div><div class='ctx'>     rb_define_method(rb_cArray, "compact", rb_ary_compact, 0);</div><div class='hunk'>@@ -5802,7 +6183,10 @@ Init_Array(void)</div><div class='ctx'>     rb_define_method(rb_cArray, "drop", rb_ary_drop, 1);</div><div class='ctx'>     rb_define_method(rb_cArray, "drop_while", rb_ary_drop_while, 0);</div><div class='ctx'>     rb_define_method(rb_cArray, "bsearch", rb_ary_bsearch, 0);</div><div class='add'>+    rb_define_method(rb_cArray, "bsearch_index", rb_ary_bsearch_index, 0);</div><div class='ctx'>     rb_define_method(rb_cArray, "any?", rb_ary_any_p, 0);</div><div class='add'>+    rb_define_method(rb_cArray, "dig", rb_ary_dig, -1);</div><div class='add'>+    rb_define_method(rb_cArray, "sum", rb_ary_sum, -1);</div><div class='ctx'> </div><div class='ctx'>     id_cmp = rb_intern("&lt;=&gt;");</div><div class='ctx'>     id_random = rb_intern("random");</div><div class='head'>diff --git a/basictest/runner.rb b/basictest/runner.rb<br/>new file mode 100755<br/>index 0000000000..0330b6d506<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/basictest/runner.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>basictest/runner.rb</a></div><div class='hunk'>@@ -0,0 +1,33 @@</div><div class='add'>+#! ./miniruby</div><div class='add'>+</div><div class='add'>+exit if defined?(CROSS_COMPILING) and CROSS_COMPILING</div><div class='add'>+ruby = ENV["RUBY"]</div><div class='add'>+unless ruby</div><div class='add'>+  load './rbconfig.rb'</div><div class='add'>+  ruby = "./#{RbConfig::CONFIG['ruby_install_name']}#{RbConfig::CONFIG['EXEEXT']}"</div><div class='add'>+end</div><div class='add'>+unless File.exist? ruby</div><div class='add'>+  print "#{ruby} is not found.\n"</div><div class='add'>+  print "Try `make' first, then `make test', please.\n"</div><div class='add'>+  exit false</div><div class='add'>+end</div><div class='add'>+ARGV[0] and opt = ARGV[0][/\A--run-opt=(.*)/, 1] and ARGV.shift</div><div class='add'>+</div><div class='add'>+$stderr.reopen($stdout)</div><div class='add'>+error = ''</div><div class='add'>+</div><div class='add'>+srcdir = File.expand_path('..', File.dirname(__FILE__))</div><div class='add'>+if opt = ENV["RUBYOPT"]</div><div class='add'>+  ENV["RUBYOPT"] = opt + " -W1"</div><div class='add'>+end</div><div class='add'>+`#{ruby} #{opt} -W1 #{srcdir}/basictest/test.rb #{ARGV.join(' ')}`.each_line do |line|</div><div class='add'>+  if line =~ /^end of test/</div><div class='add'>+    print "\ntest succeeded\n"</div><div class='add'>+    exit true</div><div class='add'>+  end</div><div class='add'>+  error &lt;&lt; line if %r:^(basictest/test.rb|not): =~ line</div><div class='add'>+end</div><div class='add'>+puts</div><div class='add'>+print error</div><div class='add'>+print "test failed\n"</div><div class='add'>+exit false</div><div class='head'>diff --git a/basictest/test.rb b/basictest/test.rb<br/>new file mode 100755<br/>index 0000000000..8472a0d14a<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/basictest/test.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>basictest/test.rb</a></div><div class='hunk'>@@ -0,0 +1,2367 @@</div><div class='add'>+#! /usr/bin/env ruby</div><div class='add'>+# -*- coding: us-ascii -*-</div><div class='add'>+</div><div class='add'>+$testnum=0</div><div class='add'>+$ntest=0</div><div class='add'>+$failed = 0</div><div class='add'>+class Progress</div><div class='add'>+  def initialize</div><div class='add'>+    @color = nil</div><div class='add'>+    @tty = nil</div><div class='add'>+    @quiet = nil</div><div class='add'>+    @verbose = nil</div><div class='add'>+    ARGV.each do |arg|</div><div class='add'>+      case arg</div><div class='add'>+      when /\A--color(?:=(?:always|(auto)|(never)|(.*)))?\z/</div><div class='add'>+        warn "unknown --color argument: #$3" if $3</div><div class='add'>+        @color = $1 ? nil : !$2</div><div class='add'>+      when /\A--tty(=(?:yes|(no)|(.*)))?\z/</div><div class='add'>+        warn "unknown --tty argument: #$3" if $3</div><div class='add'>+        @tty = !$1 || !$2</div><div class='add'>+        true</div><div class='add'>+      when /\A-(q|-quiet)\z/</div><div class='add'>+        @quiet = true</div><div class='add'>+      when /\A-(v|-verbose)\z/</div><div class='add'>+        @verbose = true</div><div class='add'>+      end</div><div class='add'>+    end</div><div class='add'>+    @tty = STDERR.tty? &amp;&amp; !STDOUT.tty? &amp;&amp; /dumb/ !~ ENV["TERM"] if @tty.nil?</div><div class='add'>+    @eol = @tty &amp;&amp; !@verbose ? "\r\e[K\r" : "\n"</div><div class='add'>+    case @color</div><div class='add'>+    when nil</div><div class='add'>+      @color = @tty</div><div class='add'>+    end</div><div class='add'>+    if @color</div><div class='add'>+      # dircolors-like style</div><div class='add'>+      colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:\n]*)/)] : {}</div><div class='add'>+      begin</div><div class='add'>+        File.read(File.join(__dir__, "../test/colors")).scan(/(\w+)=([^:\n]*)/) do |n, c|</div><div class='add'>+          colors[n] ||= c</div><div class='add'>+        end</div><div class='add'>+      rescue</div><div class='add'>+      end</div><div class='add'>+      @passed = "\e[;#{colors["pass"] || "32"}m"</div><div class='add'>+      @failed = "\e[;#{colors["fail"] || "31"}m"</div><div class='add'>+      @reset = "\e[m"</div><div class='add'>+    else</div><div class='add'>+      @passed = @failed = @reset = ""</div><div class='add'>+    end</div><div class='add'>+    extend(Rotator) if @tty</div><div class='add'>+  end</div><div class='add'>+</div><div class='add'>+  def passed_string</div><div class='add'>+    "."</div><div class='add'>+  end</div><div class='add'>+  def failed_string</div><div class='add'>+    "#{@failed}F#{@reset}"</div><div class='add'>+  end</div><div class='add'>+  def init_string</div><div class='add'>+  end</div><div class='add'>+  def finish_string</div><div class='add'>+    if @quiet</div><div class='add'>+      @eol</div><div class='add'>+    else</div><div class='add'>+      "#{@passed}#{@ok ? 'OK' : ''} #{$testnum}#{@reset}#{@eol}"</div><div class='add'>+    end</div><div class='add'>+  end</div><div class='add'>+  def pass</div><div class='add'>+    STDERR.print passed_string</div><div class='add'>+  end</div><div class='add'>+  def fail</div><div class='add'>+    @ok = false</div><div class='add'>+    STDERR.print failed_string</div><div class='add'>+  end</div><div class='add'>+  def init</div><div class='add'>+    @ok = true</div><div class='add'>+    STDERR.print init_string</div><div class='add'>+  end</div><div class='add'>+  def finish</div><div class='add'>+    STDERR.print finish_string</div><div class='add'>+  end</div><div class='add'>+</div><div class='add'>+  module Rotator</div><div class='add'>+    ROTATOR = %w[- \\ | /]</div><div class='add'>+    BS = "\b" * ROTATOR[0].size</div><div class='add'>+    def passed_string</div><div class='add'>+      "#{BS}#{ROTATOR[(@count += 1) % ROTATOR.size]}"</div><div class='add'>+    end</div><div class='add'>+    def failed_string</div><div class='add'>+      "#{BS}#{super}#{ROTATOR[@count % ROTATOR.size]}"</div><div class='add'>+    end</div><div class='add'>+    def init_string</div><div class='add'>+      @count = 0</div><div class='add'>+      " "</div><div class='add'>+    end</div><div class='add'>+    def finish_string</div><div class='add'>+      s = "#{BS}#{' ' * BS.size}#{BS}#{super}"</div><div class='add'>+      s.gsub!(/\n/, "\r\e[2K\r") if @quiet</div><div class='add'>+      s</div><div class='add'>+    end</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+PROGRESS = Progress.new</div><div class='add'>+</div><div class='add'>+def test_check(what)</div><div class='add'>+  unless $ntest.zero?</div><div class='add'>+    PROGRESS.finish</div><div class='add'>+  end</div><div class='add'>+  STDERR.print "#{$0}:#{what} "</div><div class='add'>+  PROGRESS.init</div><div class='add'>+  $what = what</div><div class='add'>+  $testnum = 0</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+def test_ok(cond,n=1)</div><div class='add'>+  $testnum+=1</div><div class='add'>+  $ntest+=1</div><div class='add'>+  where = (st = caller(n)) ? st[0] : "caller error! (n=#{n}, trace=#{caller(0).join(', ')}"</div><div class='add'>+  if cond</div><div class='add'>+    PROGRESS.pass</div><div class='add'>+    printf "ok %d (%s)\n", $testnum, where</div><div class='add'>+  else</div><div class='add'>+    PROGRESS.fail</div><div class='add'>+    printf "not ok %s %d -- %s\n", $what, $testnum, where</div><div class='add'>+    $failed+=1</div><div class='add'>+  end</div><div class='add'>+  STDOUT.flush</div><div class='add'>+  STDERR.flush</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+# make sure conditional operators work</div><div class='add'>+</div><div class='add'>+test_check "assignment"</div><div class='add'>+</div><div class='add'>+a=[]; a[0] ||= "bar";</div><div class='add'>+test_ok(a[0] == "bar")</div><div class='add'>+h={}; h["foo"] ||= "bar";</div><div class='add'>+test_ok(h["foo"] == "bar")</div><div class='add'>+</div><div class='add'>+aa = 5</div><div class='add'>+aa ||= 25</div><div class='add'>+test_ok(aa == 5)</div><div class='add'>+bb ||= 25</div><div class='add'>+test_ok(bb == 25)</div><div class='add'>+cc &amp;&amp;=33</div><div class='add'>+test_ok(cc == nil)</div><div class='add'>+cc = 5</div><div class='add'>+cc &amp;&amp;=44</div><div class='add'>+test_ok(cc == 44)</div><div class='add'>+</div><div class='add'>+a = nil; test_ok(a == nil)</div><div class='add'>+a = 1; test_ok(a == 1)</div><div class='add'>+a = []; test_ok(a == [])</div><div class='add'>+a = [1]; test_ok(a == [1])</div><div class='add'>+a = [nil]; test_ok(a == [nil])</div><div class='add'>+a = [[]]; test_ok(a == [[]])</div><div class='add'>+a = [1,2]; test_ok(a == [1,2])</div><div class='add'>+a = [*[]]; test_ok(a == [])</div><div class='add'>+a = [*[1]]; test_ok(a == [1])</div><div class='add'>+a = [*[1,2]]; test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+a = *[]; test_ok(a == [])</div><div class='add'>+a = *[1]; test_ok(a == [1])</div><div class='add'>+a = *[nil]; test_ok(a == [nil])</div><div class='add'>+a = *[[]]; test_ok(a == [[]])</div><div class='add'>+a = *[1,2]; test_ok(a == [1,2])</div><div class='add'>+a = *[*[]]; test_ok(a == [])</div><div class='add'>+a = *[*[1]]; test_ok(a == [1])</div><div class='add'>+a = *[*[1,2]]; test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+a, = nil; test_ok(a == nil)</div><div class='add'>+a, = 1; test_ok(a == 1)</div><div class='add'>+a, = []; test_ok(a == nil)</div><div class='add'>+a, = [1]; test_ok(a == 1)</div><div class='add'>+a, = [nil]; test_ok(a == nil)</div><div class='add'>+a, = [[]]; test_ok(a == [])</div><div class='add'>+a, = 1,2; test_ok(a == 1)</div><div class='add'>+a, = [1,2]; test_ok(a == 1)</div><div class='add'>+a, = [*[]]; test_ok(a == nil)</div><div class='add'>+a, = [*[1]]; test_ok(a == 1)</div><div class='add'>+a, = *[1,2]; test_ok(a == 1)</div><div class='add'>+a, = [*[1,2]]; test_ok(a == 1)</div><div class='add'>+</div><div class='add'>+a, = *[]; test_ok(a == nil)</div><div class='add'>+a, = *[1]; test_ok(a == 1)</div><div class='add'>+a, = *[nil]; test_ok(a == nil)</div><div class='add'>+a, = *[[]]; test_ok(a == [])</div><div class='add'>+a, = *[1,2]; test_ok(a == 1)</div><div class='add'>+a, = *[*[]]; test_ok(a == nil)</div><div class='add'>+a, = *[*[1]]; test_ok(a == 1)</div><div class='add'>+a, = *[*[1,2]]; test_ok(a == 1)</div><div class='add'>+</div><div class='add'>+*a = nil; test_ok(a == [nil])</div><div class='add'>+*a = 1; test_ok(a == [1])</div><div class='add'>+*a = []; test_ok(a == [])</div><div class='add'>+*a = [1]; test_ok(a == [1])</div><div class='add'>+*a = [nil]; test_ok(a == [nil])</div><div class='add'>+*a = [[]]; test_ok(a == [[]])</div><div class='add'>+*a = [1,2]; test_ok(a == [1,2])</div><div class='add'>+*a = [*[]]; test_ok(a == [])</div><div class='add'>+*a = [*[1]]; test_ok(a == [1])</div><div class='add'>+*a = [*[1,2]]; test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+*a = *[]; test_ok(a == [])</div><div class='add'>+*a = *[1]; test_ok(a == [1])</div><div class='add'>+*a = *[nil]; test_ok(a == [nil])</div><div class='add'>+*a = *[[]]; test_ok(a == [[]])</div><div class='add'>+*a = *[1,2]; test_ok(a == [1,2])</div><div class='add'>+*a = *[*[]]; test_ok(a == [])</div><div class='add'>+*a = *[*[1]]; test_ok(a == [1])</div><div class='add'>+*a = *[*[1,2]]; test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+a,b,*c = nil; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = 1; test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+a,b,*c = []; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = [1]; test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+a,b,*c = [nil]; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = [[]]; test_ok([a,b,c] == [[],nil,[]])</div><div class='add'>+a,b,*c = [1,2]; test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+a,b,*c = [*[]]; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = [*[1]]; test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+a,b,*c = [*[1,2]]; test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+</div><div class='add'>+a,b,*c = *[]; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = *[1]; test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+a,b,*c = *[nil]; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = *[[]]; test_ok([a,b,c] == [[],nil,[]])</div><div class='add'>+a,b,*c = *[1,2]; test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+a,b,*c = *[*[]]; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = *[*[1]]; test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+a,b,*c = *[*[1,2]]; test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+</div><div class='add'>+def f; yield nil; end; f {|a| test_ok(a == nil)}</div><div class='add'>+def f; yield 1; end; f {|a| test_ok(a == 1)}</div><div class='add'>+def f; yield []; end; f {|a| test_ok(a == [])}</div><div class='add'>+def f; yield [1]; end; f {|a| test_ok(a == [1])}</div><div class='add'>+def f; yield [nil]; end; f {|a| test_ok(a == [nil])}</div><div class='add'>+def f; yield [[]]; end; f {|a| test_ok(a == [[]])}</div><div class='add'>+def f; yield [*[]]; end; f {|a| test_ok(a == [])}</div><div class='add'>+def f; yield [*[1]]; end; f {|a| test_ok(a == [1])}</div><div class='add'>+def f; yield [*[1,2]]; end; f {|a| test_ok(a == [1,2])}</div><div class='add'>+def f; yield *[]; end; f {|a| test_ok(a == nil)}</div><div class='add'>+def f; yield *[1]; end; f {|a| test_ok(a == 1)}</div><div class='add'>+def f; yield *[nil]; end; f {|a| test_ok(a == nil)}</div><div class='add'>+def f; yield *[[]]; end; f {|a| test_ok(a == [])}</div><div class='add'>+def f; yield *[*[]]; end; f {|a| test_ok(a == nil)}</div><div class='add'>+def f; yield *[*[1]]; end; f {|a| test_ok(a == 1)}</div><div class='add'>+def f; yield *[*[1,2]]; end; f {|a| test_ok(a == 1)}</div><div class='add'>+</div><div class='add'>+def f; yield; end; f {|a,| test_ok(a == nil)}</div><div class='add'>+def f; yield nil; end; f {|a,| test_ok(a == nil)}</div><div class='add'>+def f; yield 1; end; f {|a,| test_ok(a == 1)}</div><div class='add'>+def f; yield []; end; f {|a,| test_ok(a == nil)}</div><div class='add'>+def f; yield [1]; end; f {|a,| test_ok(a == 1)}</div><div class='add'>+def f; yield [nil]; end; f {|a,| test_ok(a == nil)}</div><div class='add'>+def f; yield [[]]; end; f {|a,| test_ok(a == [])}</div><div class='add'>+def f; yield [*[]]; end; f {|a,| test_ok(a == nil)}</div><div class='add'>+def f; yield [*[1]]; end; f {|a,| test_ok(a == 1)}</div><div class='add'>+def f; yield [*[1,2]]; end; f {|a,| test_ok(a == 1)}</div><div class='add'>+</div><div class='add'>+def f; yield *[]; end; f {|a,| test_ok(a == nil)}</div><div class='add'>+def f; yield *[1]; end; f {|a,| test_ok(a == 1)}</div><div class='add'>+def f; yield *[nil]; end; f {|a,| test_ok(a == nil)}</div><div class='add'>+def f; yield *[[]]; end; f {|a,| test_ok(a == nil)}</div><div class='add'>+def f; yield *[*[]]; end; f {|a,| test_ok(a == nil)}</div><div class='add'>+def f; yield *[*[1]]; end; f {|a,| test_ok(a == 1)}</div><div class='add'>+def f; yield *[*[1,2]]; end; f {|a,| test_ok(a == 1)}</div><div class='add'>+</div><div class='add'>+def f; yield; end; f {|*a| test_ok(a == [])}</div><div class='add'>+def f; yield nil; end; f {|*a| test_ok(a == [nil])}</div><div class='add'>+def f; yield 1; end; f {|*a| test_ok(a == [1])}</div><div class='add'>+def f; yield []; end; f {|*a| test_ok(a == [[]])}</div><div class='add'>+def f; yield [1]; end; f {|*a| test_ok(a == [[1]])}</div><div class='add'>+def f; yield [nil]; end; f {|*a| test_ok(a == [[nil]])}</div><div class='add'>+def f; yield [[]]; end; f {|*a| test_ok(a == [[[]]])}</div><div class='add'>+def f; yield [1,2]; end; f {|*a| test_ok(a == [[1,2]])}</div><div class='add'>+def f; yield [*[]]; end; f {|*a| test_ok(a == [[]])}</div><div class='add'>+def f; yield [*[1]]; end; f {|*a| test_ok(a == [[1]])}</div><div class='add'>+def f; yield [*[1,2]]; end; f {|*a| test_ok(a == [[1,2]])}</div><div class='add'>+</div><div class='add'>+def f; yield *[]; end; f {|*a| test_ok(a == [])}</div><div class='add'>+def f; yield *[1]; end; f {|*a| test_ok(a == [1])}</div><div class='add'>+def f; yield *[nil]; end; f {|*a| test_ok(a == [nil])}</div><div class='add'>+def f; yield *[[]]; end; f {|*a| test_ok(a == [[]])}</div><div class='add'>+def f; yield *[*[]]; end; f {|*a| test_ok(a == [])}</div><div class='add'>+def f; yield *[*[1]]; end; f {|*a| test_ok(a == [1])}</div><div class='add'>+def f; yield *[*[1,2]]; end; f {|*a| test_ok(a == [1,2])}</div><div class='add'>+</div><div class='add'>+def f; yield; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}</div><div class='add'>+def f; yield nil; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}</div><div class='add'>+def f; yield 1; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}</div><div class='add'>+def f; yield []; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}</div><div class='add'>+def f; yield [1]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}</div><div class='add'>+def f; yield [nil]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}</div><div class='add'>+def f; yield [[]]; end; f {|a,b,*c| test_ok([a,b,c] == [[],nil,[]])}</div><div class='add'>+def f; yield [*[]]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}</div><div class='add'>+def f; yield [*[1]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}</div><div class='add'>+def f; yield [*[1,2]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,2,[]])}</div><div class='add'>+</div><div class='add'>+def f; yield *[]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}</div><div class='add'>+def f; yield *[1]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}</div><div class='add'>+def f; yield *[nil]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}</div><div class='add'>+def f; yield *[[]]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}</div><div class='add'>+def f; yield *[*[]]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}</div><div class='add'>+def f; yield *[*[1]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}</div><div class='add'>+def f; yield *[*[1,2]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,2,[]])}</div><div class='add'>+</div><div class='add'>+def r; return; end; a = r(); test_ok(a == nil)</div><div class='add'>+def r; return nil; end; a = r(); test_ok(a == nil)</div><div class='add'>+def r; return 1; end; a = r(); test_ok(a == 1)</div><div class='add'>+def r; return []; end; a = r(); test_ok(a == [])</div><div class='add'>+def r; return [1]; end; a = r(); test_ok(a == [1])</div><div class='add'>+def r; return [nil]; end; a = r(); test_ok(a == [nil])</div><div class='add'>+def r; return [[]]; end; a = r(); test_ok(a == [[]])</div><div class='add'>+def r; return [*[]]; end; a = r(); test_ok(a == [])</div><div class='add'>+def r; return [*[1]]; end; a = r(); test_ok(a == [1])</div><div class='add'>+def r; return [*[1,2]]; end; a = r(); test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+def r; return *[]; end; a = r(); test_ok(a == [])</div><div class='add'>+def r; return *[1]; end; a = r(); test_ok(a == [1])</div><div class='add'>+def r; return *[nil]; end; a = r(); test_ok(a == [nil])</div><div class='add'>+def r; return *[[]]; end; a = r(); test_ok(a == [[]])</div><div class='add'>+def r; return *[*[]]; end; a = r(); test_ok(a == [])</div><div class='add'>+def r; return *[*[1]]; end; a = r(); test_ok(a == [1])</div><div class='add'>+def r; return *[*[1,2]]; end; a = r(); test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+def r; return *[[]]; end; a = *r(); test_ok(a == [[]])</div><div class='add'>+def r; return *[*[1,2]]; end; a = *r(); test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+def r; return; end; *a = r(); test_ok(a == [nil])</div><div class='add'>+def r; return nil; end; *a = r(); test_ok(a == [nil])</div><div class='add'>+def r; return 1; end; *a = r(); test_ok(a == [1])</div><div class='add'>+def r; return []; end; *a = r(); test_ok(a == [])</div><div class='add'>+def r; return [1]; end; *a = r(); test_ok(a == [1])</div><div class='add'>+def r; return [nil]; end; *a = r(); test_ok(a == [nil])</div><div class='add'>+def r; return [[]]; end; *a = r(); test_ok(a == [[]])</div><div class='add'>+def r; return [1,2]; end; *a = r(); test_ok(a == [1,2])</div><div class='add'>+def r; return [*[]]; end; *a = r(); test_ok(a == [])</div><div class='add'>+def r; return [*[1]]; end; *a = r(); test_ok(a == [1])</div><div class='add'>+def r; return [*[1,2]]; end; *a = r(); test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+def r; return *[]; end; *a = r(); test_ok(a == [])</div><div class='add'>+def r; return *[1]; end; *a = r(); test_ok(a == [1])</div><div class='add'>+def r; return *[nil]; end; *a = r(); test_ok(a == [nil])</div><div class='add'>+def r; return *[[]]; end; *a = r(); test_ok(a == [[]])</div><div class='add'>+def r; return *[1,2]; end; *a = r(); test_ok(a == [1,2])</div><div class='add'>+def r; return *[*[]]; end; *a = r(); test_ok(a == [])</div><div class='add'>+def r; return *[*[1]]; end; *a = r(); test_ok(a == [1])</div><div class='add'>+def r; return *[*[1,2]]; end; *a = r(); test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+def r; return *[[]]; end; *a = *r(); test_ok(a == [[]])</div><div class='add'>+def r; return *[1,2]; end; *a = *r(); test_ok(a == [1,2])</div><div class='add'>+def r; return *[*[1,2]]; end; *a = *r(); test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+def r; return; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+def r; return nil; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+def r; return 1; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+def r; return []; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+def r; return [1]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+def r; return [nil]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+def r; return [[]]; end; a,b,*c = r(); test_ok([a,b,c] == [[],nil,[]])</div><div class='add'>+def r; return [1,2]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+def r; return [*[]]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+def r; return [*[1]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+def r; return [*[1,2]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+</div><div class='add'>+def r; return *[]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+def r; return *[1]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+def r; return *[nil]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+def r; return *[[]]; end; a,b,*c = r(); test_ok([a,b,c] == [[],nil,[]])</div><div class='add'>+def r; return *[1,2]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+def r; return *[*[]]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+def r; return *[*[1]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+def r; return *[*[1,2]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+</div><div class='add'>+f = lambda {|r,| test_ok([] == r)}</div><div class='add'>+f.call([], *[])</div><div class='add'>+</div><div class='add'>+f = lambda {|r,*l| test_ok([] == r); test_ok([1] == l)}</div><div class='add'>+f.call([], *[1])</div><div class='add'>+</div><div class='add'>+f = lambda{|x| x}</div><div class='add'>+test_ok(f.call(42) == 42)</div><div class='add'>+test_ok(f.call([42]) == [42])</div><div class='add'>+test_ok(f.call([[42]]) == [[42]])</div><div class='add'>+test_ok(f.call([42,55]) == [42,55])</div><div class='add'>+</div><div class='add'>+f = lambda{|x,| x}</div><div class='add'>+test_ok(f.call(42) == 42)</div><div class='add'>+test_ok(f.call([42]) == [42])</div><div class='add'>+test_ok(f.call([[42]]) == [[42]])</div><div class='add'>+test_ok(f.call([42,55]) == [42,55])</div><div class='add'>+</div><div class='add'>+f = lambda{|*x| x}</div><div class='add'>+test_ok(f.call(42) == [42])</div><div class='add'>+test_ok(f.call([42]) == [[42]])</div><div class='add'>+test_ok(f.call([[42]]) == [[[42]]])</div><div class='add'>+test_ok(f.call([42,55]) == [[42,55]])</div><div class='add'>+test_ok(f.call(42,55) == [42,55])</div><div class='add'>+</div><div class='add'>+f = lambda { |a, b=42, *c| [a,b,c] }</div><div class='add'>+test_ok(f.call(1      ) == [1,42,[  ]] )</div><div class='add'>+test_ok(f.call(1,43   ) == [1,43,[  ]] )</div><div class='add'>+test_ok(f.call(1,43,44) == [1,43,[44]] )</div><div class='add'>+</div><div class='add'>+f = lambda { |a, b=(a|16), *c, &amp;block| [a,b,c,block&amp;&amp;block[]] }</div><div class='add'>+test_ok(f.call(8      )     == [8,24,[  ],nil] )</div><div class='add'>+test_ok(f.call(8,43   )     == [8,43,[  ],nil] )</div><div class='add'>+test_ok(f.call(8,43,44)     == [8,43,[44],nil] )</div><div class='add'>+test_ok(f.call(8      ){45} == [8,24,[  ],45 ] )</div><div class='add'>+test_ok(f.call(8,43   ){45} == [8,43,[  ],45 ] )</div><div class='add'>+test_ok(f.call(8,43,44){45} == [8,43,[44],45 ] )</div><div class='add'>+</div><div class='add'>+f = lambda { |a, b=42, *c, d| [a,b,c,d] }</div><div class='add'>+test_ok(f.call(1      ,99) == [1,42,[  ],99] )</div><div class='add'>+test_ok(f.call(1,43   ,99) == [1,43,[  ],99] )</div><div class='add'>+test_ok(f.call(1,43,44,99) == [1,43,[44],99] )</div><div class='add'>+</div><div class='add'>+f = lambda { |a, b=(a|16), &amp;block| [a,b,block&amp;&amp;block[]] }</div><div class='add'>+test_ok(f.call(8   )     == [8,24,nil] )</div><div class='add'>+test_ok(f.call(8,43)     == [8,43,nil] )</div><div class='add'>+test_ok(f.call(8,43)     == [8,43,nil] )</div><div class='add'>+test_ok(f.call(8   ){45} == [8,24,45 ] )</div><div class='add'>+test_ok(f.call(8,43){45} == [8,43,45 ] )</div><div class='add'>+test_ok(f.call(8,43){45} == [8,43,45 ] )</div><div class='add'>+</div><div class='add'>+f = lambda { |a, b=42, d| [a,b,d] }</div><div class='add'>+test_ok(f.call(1   ,99) == [1,42,99] )</div><div class='add'>+test_ok(f.call(1,43,99) == [1,43,99] )</div><div class='add'>+test_ok(f.call(1,43,99) == [1,43,99] )</div><div class='add'>+</div><div class='add'>+f = lambda { |b=42, *c, &amp;block| [b,c,block&amp;&amp;block[]] }</div><div class='add'>+test_ok(f.call(     )     == [42,[  ],nil] )</div><div class='add'>+test_ok(f.call(43   )     == [43,[  ],nil] )</div><div class='add'>+test_ok(f.call(43,44)     == [43,[44],nil] )</div><div class='add'>+test_ok(f.call(     ){45} == [42,[  ],45 ] )</div><div class='add'>+test_ok(f.call(43   ){45} == [43,[  ],45 ] )</div><div class='add'>+test_ok(f.call(43,44){45} == [43,[44],45 ] )</div><div class='add'>+</div><div class='add'>+f = lambda { |b=42, *c, d| [b,c,d] }</div><div class='add'>+test_ok(f.call(      99) == [42,[  ],99] )</div><div class='add'>+test_ok(f.call(43   ,99) == [43,[  ],99] )</div><div class='add'>+test_ok(f.call(43,44,99) == [43,[44],99] )</div><div class='add'>+</div><div class='add'>+f = lambda { |b=42, &amp;block| [b,block&amp;&amp;block[]] }</div><div class='add'>+test_ok(f.call(  )     == [42,nil] )</div><div class='add'>+test_ok(f.call(43)     == [43,nil] )</div><div class='add'>+test_ok(f.call(43)     == [43,nil] )</div><div class='add'>+test_ok(f.call(  ){45} == [42,45 ] )</div><div class='add'>+test_ok(f.call(43){45} == [43,45 ] )</div><div class='add'>+test_ok(f.call(43){45} == [43,45 ] )</div><div class='add'>+</div><div class='add'>+f = lambda { |b=42, d| [b,d] }</div><div class='add'>+test_ok(f.call(   99) == [42,99] )</div><div class='add'>+test_ok(f.call(43,99) == [43,99] )</div><div class='add'>+test_ok(f.call(43,99) == [43,99] )</div><div class='add'>+</div><div class='add'>+</div><div class='add'>+a,=*[1]</div><div class='add'>+test_ok(a == 1)</div><div class='add'>+a,=*[[1]]</div><div class='add'>+test_ok(a == [1])</div><div class='add'>+a,=*[[[1]]]</div><div class='add'>+test_ok(a == [[1]])</div><div class='add'>+</div><div class='add'>+x, (y, z) = 1, 2, 3</div><div class='add'>+test_ok([1,2,nil] == [x,y,z])</div><div class='add'>+x, (y, z) = 1, [2,3]</div><div class='add'>+test_ok([1,2,3] == [x,y,z])</div><div class='add'>+x, (y, z) = 1, [2]</div><div class='add'>+test_ok([1,2,nil] == [x,y,z])</div><div class='add'>+</div><div class='add'>+a = loop do break; end; test_ok(a == nil)</div><div class='add'>+a = loop do break nil; end; test_ok(a == nil)</div><div class='add'>+a = loop do break 1; end; test_ok(a == 1)</div><div class='add'>+a = loop do break []; end; test_ok(a == [])</div><div class='add'>+a = loop do break [1]; end; test_ok(a == [1])</div><div class='add'>+a = loop do break [nil]; end; test_ok(a == [nil])</div><div class='add'>+a = loop do break [[]]; end; test_ok(a == [[]])</div><div class='add'>+a = loop do break [*[]]; end; test_ok(a == [])</div><div class='add'>+a = loop do break [*[1]]; end; test_ok(a == [1])</div><div class='add'>+a = loop do break [*[1,2]]; end; test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+a = loop do break *[]; end; test_ok(a == [])</div><div class='add'>+a = loop do break *[1]; end; test_ok(a == [1])</div><div class='add'>+a = loop do break *[nil]; end; test_ok(a == [nil])</div><div class='add'>+a = loop do break *[[]]; end; test_ok(a == [[]])</div><div class='add'>+a = loop do break *[*[]]; end; test_ok(a == [])</div><div class='add'>+a = loop do break *[*[1]]; end; test_ok(a == [1])</div><div class='add'>+a = loop do break *[*[1,2]]; end; test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+*a = loop do break; end; test_ok(a == [nil])</div><div class='add'>+*a = loop do break nil; end; test_ok(a == [nil])</div><div class='add'>+*a = loop do break 1; end; test_ok(a == [1])</div><div class='add'>+*a = loop do break []; end; test_ok(a == [])</div><div class='add'>+*a = loop do break [1]; end; test_ok(a == [1])</div><div class='add'>+*a = loop do break [nil]; end; test_ok(a == [nil])</div><div class='add'>+*a = loop do break [[]]; end; test_ok(a == [[]])</div><div class='add'>+*a = loop do break [1,2]; end; test_ok(a == [1,2])</div><div class='add'>+*a = loop do break [*[]]; end; test_ok(a == [])</div><div class='add'>+*a = loop do break [*[1]]; end; test_ok(a == [1])</div><div class='add'>+*a = loop do break [*[1,2]]; end; test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+*a = loop do break *[]; end; test_ok(a == [])</div><div class='add'>+*a = loop do break *[1]; end; test_ok(a == [1])</div><div class='add'>+*a = loop do break *[nil]; end; test_ok(a == [nil])</div><div class='add'>+*a = loop do break *[[]]; end; test_ok(a == [[]])</div><div class='add'>+*a = loop do break *[1,2]; end; test_ok(a == [1,2])</div><div class='add'>+*a = loop do break *[*[]]; end; test_ok(a == [])</div><div class='add'>+*a = loop do break *[*[1]]; end; test_ok(a == [1])</div><div class='add'>+*a = loop do break *[*[1,2]]; end; test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+*a = *loop do break *[[]]; end; test_ok(a == [[]])</div><div class='add'>+*a = *loop do break *[1,2]; end; test_ok(a == [1,2])</div><div class='add'>+*a = *loop do break *[*[1,2]]; end; test_ok(a == [1,2])</div><div class='add'>+</div><div class='add'>+a,b,*c = loop do break; end; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = loop do break nil; end; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = loop do break 1; end; test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+a,b,*c = loop do break []; end; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = loop do break [1]; end; test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+a,b,*c = loop do break [nil]; end; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = loop do break [[]]; end; test_ok([a,b,c] == [[],nil,[]])</div><div class='add'>+a,b,*c = loop do break [1,2]; end; test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+a,b,*c = loop do break [*[]]; end; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = loop do break [*[1]]; end; test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+a,b,*c = loop do break [*[1,2]]; end; test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+</div><div class='add'>+a,b,*c = loop do break *[]; end; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = loop do break *[1]; end; test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+a,b,*c = loop do break *[nil]; end; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = loop do break *[[]]; end; test_ok([a,b,c] == [[],nil,[]])</div><div class='add'>+a,b,*c = loop do break *[1,2]; end; test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+a,b,*c = loop do break *[*[]]; end; test_ok([a,b,c] == [nil,nil,[]])</div><div class='add'>+a,b,*c = loop do break *[*[1]]; end; test_ok([a,b,c] == [1,nil,[]])</div><div class='add'>+a,b,*c = loop do break *[*[1,2]]; end; test_ok([a,b,c] == [1,2,[]])</div><div class='add'>+</div><div class='add'>+def r(val); a = yield(); test_ok(a == val, 2); end</div><div class='add'>+r(nil){next}</div><div class='add'>+r(nil){next nil}</div><div class='add'>+r(1){next 1}</div><div class='add'>+r([]){next []}</div><div class='add'>+r([1]){next [1]}</div><div class='add'>+r([nil]){next [nil]}</div><div class='add'>+r([[]]){next [[]]}</div><div class='add'>+r([]){next [*[]]}</div><div class='add'>+r([1]){next [*[1]]}</div><div class='add'>+r([1,2]){next [*[1,2]]}</div><div class='add'>+</div><div class='add'>+r([]){next *[]}</div><div class='add'>+r([1]){next *[1]}</div><div class='add'>+r([nil]){next *[nil]}</div><div class='add'>+r([[]]){next *[[]]}</div><div class='add'>+r([]){next *[*[]]}</div><div class='add'>+r([1]){next *[*[1]]}</div><div class='add'>+r([1,2]){next *[*[1,2]]}</div><div class='add'>+</div><div class='add'>+def r(val); *a = yield(); test_ok(a == val, 2); end</div><div class='add'>+r([nil]){next}</div><div class='add'>+r([nil]){next nil}</div><div class='add'>+r([1]){next 1}</div><div class='add'>+r([]){next []}</div><div class='add'>+r([1]){next [1]}</div><div class='add'>+r([nil]){next [nil]}</div><div class='add'>+r([[]]){next [[]]}</div><div class='add'>+r([1,2]){next [1,2]}</div><div class='add'>+r([]){next [*[]]}</div><div class='add'>+r([1]){next [*[1]]}</div><div class='add'>+r([1,2]){next [*[1,2]]}</div><div class='add'>+</div><div class='add'>+def r(val); *a = *yield(); test_ok(a == val, 2); end</div><div class='add'>+r([[]]){next *[[]]}</div><div class='add'>+r([1,2]){next *[1,2]}</div><div class='add'>+r([1,2]){next *[*[1,2]]}</div><div class='add'>+</div><div class='add'>+def r(val); a,b,*c = yield(); test_ok([a,b,c] == val, 2); end</div><div class='add'>+r([nil,nil,[]]){next}</div><div class='add'>+r([nil,nil,[]]){next nil}</div><div class='add'>+r([1,nil,[]]){next 1}</div><div class='add'>+r([nil,nil,[]]){next []}</div><div class='add'>+r([1,nil,[]]){next [1]}</div><div class='add'>+r([nil,nil,[]]){next [nil]}</div><div class='add'>+r([[],nil,[]]){next [[]]}</div><div class='add'>+r([1,2,[]]){next [1,2]}</div><div class='add'>+r([nil,nil,[]]){next [*[]]}</div><div class='add'>+r([1,nil,[]]){next [*[1]]}</div><div class='add'>+r([1,2,[]]){next [*[1,2]]}</div><div class='add'>+</div><div class='add'>+def r(val); a,b,*c = *yield(); test_ok([a,b,c] == val, 2); end</div><div class='add'>+r([[],nil,[]]){next *[[]]}</div><div class='add'>+r([1,2,[]]){next *[1,2]}</div><div class='add'>+r([1,2,[]]){next *[*[1,2]]}</div><div class='add'>+</div><div class='add'>+test_check "condition"</div><div class='add'>+</div><div class='add'>+$x = '0';</div><div class='add'>+</div><div class='add'>+$x == $x &amp;&amp; test_ok(true)</div><div class='add'>+$x != $x &amp;&amp; test_ok(false)</div><div class='add'>+$x == $x || test_ok(false)</div><div class='add'>+$x != $x || test_ok(true)</div><div class='add'>+</div><div class='add'>+# first test to see if we can run the tests.</div><div class='add'>+</div><div class='add'>+test_check "if/unless";</div><div class='add'>+</div><div class='add'>+$x = 'test';</div><div class='add'>+test_ok(if $x == $x then true else false end)</div><div class='add'>+$bad = false</div><div class='add'>+unless $x == $x</div><div class='add'>+  $bad = true</div><div class='add'>+end</div><div class='add'>+test_ok(!$bad)</div><div class='add'>+test_ok(unless $x != $x then true else false end)</div><div class='add'>+</div><div class='add'>+test_check "case"</div><div class='add'>+</div><div class='add'>+case 5</div><div class='add'>+when 1, 2, 3, 4, 6, 7, 8</div><div class='add'>+  test_ok(false)</div><div class='add'>+when 5</div><div class='add'>+  test_ok(true)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+case 5</div><div class='add'>+when 5</div><div class='add'>+  test_ok(true)</div><div class='add'>+when 1..10</div><div class='add'>+  test_ok(false)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+case 5</div><div class='add'>+when 1..10</div><div class='add'>+  test_ok(true)</div><div class='add'>+else</div><div class='add'>+  test_ok(false)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+case 5</div><div class='add'>+when 5</div><div class='add'>+  test_ok(true)</div><div class='add'>+else</div><div class='add'>+  test_ok(false)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+case "foobar"</div><div class='add'>+when /^f.*r$/</div><div class='add'>+  test_ok(true)</div><div class='add'>+else</div><div class='add'>+  test_ok(false)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_check "while/until";</div><div class='add'>+</div><div class='add'>+while_tmp = "while_tmp.#{$$}"</div><div class='add'>+tmp = open(while_tmp, "w")</div><div class='add'>+tmp.print "tvi925\n";</div><div class='add'>+tmp.print "tvi920\n";</div><div class='add'>+tmp.print "vt100\n";</div><div class='add'>+tmp.print "Amiga\n";</div><div class='add'>+tmp.print "paper\n";</div><div class='add'>+tmp.close</div><div class='add'>+</div><div class='add'>+# test break</div><div class='add'>+</div><div class='add'>+tmp = open(while_tmp, "r")</div><div class='add'>+test_ok(tmp.kind_of?(File))</div><div class='add'>+</div><div class='add'>+while line = tmp.gets()</div><div class='add'>+  break if /vt100/ =~ line</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_ok(!tmp.eof? &amp;&amp; /vt100/ =~ line)</div><div class='add'>+tmp.close</div><div class='add'>+</div><div class='add'>+# test next</div><div class='add'>+$bad = false</div><div class='add'>+tmp = open(while_tmp, "r")</div><div class='add'>+while line = tmp.gets()</div><div class='add'>+  next if /vt100/ =~ line</div><div class='add'>+  $bad = 1 if /vt100/ =~ line</div><div class='add'>+end</div><div class='add'>+test_ok(!(!tmp.eof? || /vt100/ =~ line || $bad))</div><div class='add'>+tmp.close</div><div class='add'>+</div><div class='add'>+# test redo</div><div class='add'>+$bad = false</div><div class='add'>+tmp = open(while_tmp, "r")</div><div class='add'>+while line = tmp.gets()</div><div class='add'>+  lastline = line</div><div class='add'>+  line = line.gsub(/vt100/, 'VT100')</div><div class='add'>+  if lastline != line</div><div class='add'>+    line.gsub!('VT100', 'Vt100')</div><div class='add'>+    redo</div><div class='add'>+  end</div><div class='add'>+  $bad = 1 if /vt100/ =~ line</div><div class='add'>+  $bad = 1 if /VT100/ =~ line</div><div class='add'>+end</div><div class='add'>+test_ok(tmp.eof? &amp;&amp; !$bad)</div><div class='add'>+tmp.close</div><div class='add'>+</div><div class='add'>+sum=0</div><div class='add'>+for i in 1..10</div><div class='add'>+  sum += i</div><div class='add'>+  i -= 1</div><div class='add'>+  if i &gt; 0</div><div class='add'>+    redo</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(sum == 220)</div><div class='add'>+</div><div class='add'>+# test interval</div><div class='add'>+$bad = false</div><div class='add'>+tmp = open(while_tmp, "r")</div><div class='add'>+while line = tmp.gets()</div><div class='add'>+  break if 3</div><div class='add'>+  case line</div><div class='add'>+  when /vt100/, /Amiga/, /paper/</div><div class='add'>+    $bad = true</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(!$bad)</div><div class='add'>+tmp.close</div><div class='add'>+</div><div class='add'>+File.unlink while_tmp or `/bin/rm -f "#{while_tmp}"`</div><div class='add'>+test_ok(!File.exist?(while_tmp))</div><div class='add'>+</div><div class='add'>+i = 0</div><div class='add'>+until i&gt;4</div><div class='add'>+  i+=1</div><div class='add'>+end</div><div class='add'>+test_ok(i&gt;4)</div><div class='add'>+</div><div class='add'>+</div><div class='add'>+# exception handling</div><div class='add'>+test_check "exception";</div><div class='add'>+</div><div class='add'>+begin</div><div class='add'>+  raise "this must be handled"</div><div class='add'>+  test_ok(false)</div><div class='add'>+rescue</div><div class='add'>+  test_ok(true)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+$bad = true</div><div class='add'>+begin</div><div class='add'>+  raise "this must be handled no.2"</div><div class='add'>+rescue</div><div class='add'>+  if $bad</div><div class='add'>+    $bad = false</div><div class='add'>+    retry</div><div class='add'>+    test_ok(false)</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(true)</div><div class='add'>+</div><div class='add'>+# exception in rescue clause</div><div class='add'>+$string = "this must be handled no.3"</div><div class='add'>+begin</div><div class='add'>+  begin</div><div class='add'>+    raise "exception in rescue clause"</div><div class='add'>+  rescue</div><div class='add'>+    raise $string</div><div class='add'>+  end</div><div class='add'>+  test_ok(false)</div><div class='add'>+rescue =&gt; e</div><div class='add'>+  test_ok($! == e)</div><div class='add'>+  test_ok(e.message == $string)</div><div class='add'>+  test_ok(e != $string)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+# exception in ensure clause</div><div class='add'>+begin</div><div class='add'>+  begin</div><div class='add'>+    raise "this must be handled no.4"</div><div class='add'>+  ensure</div><div class='add'>+    raise "exception in ensure clause"</div><div class='add'>+  end</div><div class='add'>+  test_ok(false)</div><div class='add'>+rescue</div><div class='add'>+  test_ok(true)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+$bad = true</div><div class='add'>+begin</div><div class='add'>+  begin</div><div class='add'>+    raise "this must be handled no.5"</div><div class='add'>+  ensure</div><div class='add'>+    $bad = false</div><div class='add'>+  end</div><div class='add'>+rescue</div><div class='add'>+end</div><div class='add'>+test_ok(!$bad)</div><div class='add'>+</div><div class='add'>+$bad = true</div><div class='add'>+begin</div><div class='add'>+  begin</div><div class='add'>+    raise "this must be handled no.6"</div><div class='add'>+  ensure</div><div class='add'>+    $bad = false</div><div class='add'>+  end</div><div class='add'>+rescue</div><div class='add'>+end</div><div class='add'>+test_ok(!$bad)</div><div class='add'>+</div><div class='add'>+$bad = true</div><div class='add'>+while true</div><div class='add'>+  begin</div><div class='add'>+    break</div><div class='add'>+  ensure</div><div class='add'>+    $bad = false</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(!$bad)</div><div class='add'>+</div><div class='add'>+test_ok(catch(:foo) {</div><div class='add'>+     loop do</div><div class='add'>+       loop do</div><div class='add'>+	 throw :foo, true</div><div class='add'>+	 break</div><div class='add'>+       end</div><div class='add'>+       break</div><div class='add'>+       test_ok(false)			# should not reach here</div><div class='add'>+     end</div><div class='add'>+     false</div><div class='add'>+   })</div><div class='add'>+</div><div class='add'>+test_check "array"</div><div class='add'>+test_ok([1, 2] + [3, 4] == [1, 2, 3, 4])</div><div class='add'>+test_ok([1, 2] * 2 == [1, 2, 1, 2])</div><div class='add'>+test_ok([1, 2] * ":" == "1:2")</div><div class='add'>+</div><div class='add'>+test_ok([1, 2].hash == [1, 2].hash)</div><div class='add'>+</div><div class='add'>+test_ok([1,2,3] &amp; [2,3,4] == [2,3])</div><div class='add'>+test_ok([1,2,3] | [2,3,4] == [1,2,3,4])</div><div class='add'>+test_ok([1,2,3] - [2,3] == [1])</div><div class='add'>+</div><div class='add'>+$x = [0, 1, 2, 3, 4, 5]</div><div class='add'>+test_ok($x[2] == 2)</div><div class='add'>+test_ok($x[1..3] == [1, 2, 3])</div><div class='add'>+test_ok($x[1,3] == [1, 2, 3])</div><div class='add'>+</div><div class='add'>+$x[0, 2] = 10</div><div class='add'>+test_ok($x[0] == 10 &amp;&amp; $x[1] == 2)</div><div class='add'>+</div><div class='add'>+$x[0, 0] = -1</div><div class='add'>+test_ok($x[0] == -1 &amp;&amp; $x[1] == 10)</div><div class='add'>+</div><div class='add'>+$x[-1, 1] = 20</div><div class='add'>+test_ok($x[-1] == 20 &amp;&amp; $x.pop == 20)</div><div class='add'>+</div><div class='add'>+# array and/or</div><div class='add'>+test_ok(([1,2,3]&amp;[2,4,6]) == [2])</div><div class='add'>+test_ok(([1,2,3]|[2,4,6]) == [1,2,3,4,6])</div><div class='add'>+</div><div class='add'>+# compact</div><div class='add'>+$x = [nil, 1, nil, nil, 5, nil, nil]</div><div class='add'>+$x.compact!</div><div class='add'>+test_ok($x == [1, 5])</div><div class='add'>+</div><div class='add'>+# uniq</div><div class='add'>+$x = [1, 1, 4, 2, 5, 4, 5, 1, 2]</div><div class='add'>+$x.uniq!</div><div class='add'>+test_ok($x == [1, 4, 2, 5])</div><div class='add'>+</div><div class='add'>+# empty?</div><div class='add'>+test_ok(!$x.empty?)</div><div class='add'>+$x = []</div><div class='add'>+test_ok($x.empty?)</div><div class='add'>+</div><div class='add'>+# sort</div><div class='add'>+$x = ["it", "came", "to", "pass", "that", "..."]</div><div class='add'>+$x = $x.sort.join(" ")</div><div class='add'>+test_ok($x == "... came it pass that to")</div><div class='add'>+$x = [2,5,3,1,7]</div><div class='add'>+$x.sort!{|a,b| a&lt;=&gt;b}		# sort with condition</div><div class='add'>+test_ok($x == [1,2,3,5,7])</div><div class='add'>+$x.sort!{|a,b| b-a}		# reverse sort</div><div class='add'>+test_ok($x == [7,5,3,2,1])</div><div class='add'>+</div><div class='add'>+# split test</div><div class='add'>+$x = "The Book of Mormon"</div><div class='add'>+test_ok($x.split(//).reverse!.join == $x.reverse)</div><div class='add'>+test_ok($x.reverse == $x.reverse!)</div><div class='add'>+test_ok("1 byte string".split(//).reverse.join(":") == "g:n:i:r:t:s: :e:t:y:b: :1")</div><div class='add'>+$x = "a b c  d"</div><div class='add'>+test_ok($x.split == ['a', 'b', 'c', 'd'])</div><div class='add'>+test_ok($x.split(' ') == ['a', 'b', 'c', 'd'])</div><div class='add'>+test_ok(defined? "a".chomp)</div><div class='add'>+test_ok("abc".scan(/./) == ["a", "b", "c"])</div><div class='add'>+test_ok("1a2b3c".scan(/(\d.)/) == [["1a"], ["2b"], ["3c"]])</div><div class='add'>+# non-greedy match</div><div class='add'>+test_ok("a=12;b=22".scan(/(.*?)=(\d*);?/) == [["a", "12"], ["b", "22"]])</div><div class='add'>+</div><div class='add'>+$x = [1]</div><div class='add'>+test_ok(($x * 5).join(":") == '1:1:1:1:1')</div><div class='add'>+test_ok(($x * 1).join(":") == '1')</div><div class='add'>+test_ok(($x * 0).join(":") == '')</div><div class='add'>+</div><div class='add'>+*$x = *(1..7).to_a</div><div class='add'>+test_ok($x.size == 7)</div><div class='add'>+test_ok($x == [1, 2, 3, 4, 5, 6, 7])</div><div class='add'>+</div><div class='add'>+$x = [1,2,3]</div><div class='add'>+$x[1,0] = $x</div><div class='add'>+test_ok($x == [1,1,2,3,2,3])</div><div class='add'>+</div><div class='add'>+$x = [1,2,3]</div><div class='add'>+$x[-1,0] = $x</div><div class='add'>+test_ok($x == [1,2,1,2,3,3])</div><div class='add'>+</div><div class='add'>+$x = [1,2,3]</div><div class='add'>+$x.concat($x)</div><div class='add'>+test_ok($x == [1,2,3,1,2,3])</div><div class='add'>+</div><div class='add'>+test_check "hash"</div><div class='add'>+$x = {1=&gt;2, 2=&gt;4, 3=&gt;6}</div><div class='add'>+</div><div class='add'>+test_ok($x[1] == 2)</div><div class='add'>+</div><div class='add'>+test_ok(begin</div><div class='add'>+     for k,v in $x</div><div class='add'>+       raise if k*2 != v</div><div class='add'>+     end</div><div class='add'>+     true</div><div class='add'>+   rescue</div><div class='add'>+     false</div><div class='add'>+   end)</div><div class='add'>+</div><div class='add'>+test_ok($x.length == 3)</div><div class='add'>+test_ok($x.has_key?(1))</div><div class='add'>+test_ok($x.has_value?(4))</div><div class='add'>+test_ok($x.values_at(2,3) == [4,6])</div><div class='add'>+test_ok($x == {1=&gt;2, 2=&gt;4, 3=&gt;6})</div><div class='add'>+</div><div class='add'>+$z = $x.keys.sort.join(":")</div><div class='add'>+test_ok($z == "1:2:3")</div><div class='add'>+</div><div class='add'>+$z = $x.values.sort.join(":")</div><div class='add'>+test_ok($z == "2:4:6")</div><div class='add'>+test_ok($x == $x)</div><div class='add'>+</div><div class='add'>+$x.shift</div><div class='add'>+test_ok($x.length == 2)</div><div class='add'>+</div><div class='add'>+$z = [1,2]</div><div class='add'>+$x[$z] = 256</div><div class='add'>+test_ok($x[$z] == 256)</div><div class='add'>+</div><div class='add'>+$x = Hash.new(0)</div><div class='add'>+$x[1] = 1</div><div class='add'>+test_ok($x[1] == 1)</div><div class='add'>+test_ok($x[2] == 0)</div><div class='add'>+</div><div class='add'>+$x = Hash.new([])</div><div class='add'>+test_ok($x[22] == [])</div><div class='add'>+test_ok($x[22].equal?($x[22]))</div><div class='add'>+</div><div class='add'>+$x = Hash.new{[]}</div><div class='add'>+test_ok($x[22] == [])</div><div class='add'>+test_ok(!$x[22].equal?($x[22]))</div><div class='add'>+</div><div class='add'>+$x = Hash.new{|h,k| $z = k; h[k] = k*2}</div><div class='add'>+$z = 0</div><div class='add'>+test_ok($x[22] == 44)</div><div class='add'>+test_ok($z == 22)</div><div class='add'>+$z = 0</div><div class='add'>+test_ok($x[22] == 44)</div><div class='add'>+test_ok($z == 0)</div><div class='add'>+$x.default = 5</div><div class='add'>+test_ok($x[23] == 5)</div><div class='add'>+</div><div class='add'>+$x = Hash.new</div><div class='add'>+def $x.default(k)</div><div class='add'>+  $z = k</div><div class='add'>+  self[k] = k*2</div><div class='add'>+end</div><div class='add'>+$z = 0</div><div class='add'>+test_ok($x[22] == 44)</div><div class='add'>+test_ok($z == 22)</div><div class='add'>+$z = 0</div><div class='add'>+test_ok($x[22] == 44)</div><div class='add'>+test_ok($z == 0)</div><div class='add'>+</div><div class='add'>+test_check "iterator"</div><div class='add'>+</div><div class='add'>+test_ok(!iterator?)</div><div class='add'>+</div><div class='add'>+def ttt</div><div class='add'>+  test_ok(iterator?)</div><div class='add'>+end</div><div class='add'>+ttt{}</div><div class='add'>+</div><div class='add'>+# yield at top level</div><div class='add'>+test_ok(!defined?(yield))</div><div class='add'>+</div><div class='add'>+$x = [1, 2, 3, 4]</div><div class='add'>+$y = []</div><div class='add'>+</div><div class='add'>+# iterator over array</div><div class='add'>+for i in $x</div><div class='add'>+  $y.push i</div><div class='add'>+end</div><div class='add'>+test_ok($x == $y)</div><div class='add'>+</div><div class='add'>+# nested iterator</div><div class='add'>+def tt</div><div class='add'>+  1.upto(10) {|i|</div><div class='add'>+    yield i</div><div class='add'>+  }</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+i=0</div><div class='add'>+tt{|i| break if i == 5}</div><div class='add'>+test_ok(i == 0)</div><div class='add'>+</div><div class='add'>+def tt2(dummy)</div><div class='add'>+  yield 1</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+def tt3(&amp;block)</div><div class='add'>+  tt2(raise(ArgumentError,""),&amp;block)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+$x = false</div><div class='add'>+begin</div><div class='add'>+  tt3{}</div><div class='add'>+rescue ArgumentError</div><div class='add'>+  $x = true</div><div class='add'>+rescue Exception</div><div class='add'>+end</div><div class='add'>+test_ok($x)</div><div class='add'>+</div><div class='add'>+def tt4 &amp;block</div><div class='add'>+  tt2(raise(ArgumentError,""),&amp;block)</div><div class='add'>+end</div><div class='add'>+$x = false</div><div class='add'>+begin</div><div class='add'>+  tt4{}</div><div class='add'>+rescue ArgumentError</div><div class='add'>+  $x = true</div><div class='add'>+rescue Exception</div><div class='add'>+end</div><div class='add'>+test_ok($x)</div><div class='add'>+</div><div class='add'>+# iterator break/redo/next/retry</div><div class='add'>+done = true</div><div class='add'>+loop{</div><div class='add'>+  break</div><div class='add'>+  done = false			# should not reach here</div><div class='add'>+}</div><div class='add'>+test_ok(done)</div><div class='add'>+</div><div class='add'>+done = false</div><div class='add'>+$bad = false</div><div class='add'>+loop {</div><div class='add'>+  break if done</div><div class='add'>+  done = true</div><div class='add'>+  next</div><div class='add'>+  $bad = true			# should not reach here</div><div class='add'>+}</div><div class='add'>+test_ok(!$bad)</div><div class='add'>+</div><div class='add'>+done = false</div><div class='add'>+$bad = false</div><div class='add'>+loop {</div><div class='add'>+  break if done</div><div class='add'>+  done = true</div><div class='add'>+  redo</div><div class='add'>+  $bad = true			# should not reach here</div><div class='add'>+}</div><div class='add'>+test_ok(!$bad)</div><div class='add'>+</div><div class='add'>+$x = []</div><div class='add'>+for i in 1 .. 7</div><div class='add'>+  $x.push i</div><div class='add'>+end</div><div class='add'>+test_ok($x.size == 7)</div><div class='add'>+test_ok($x == [1, 2, 3, 4, 5, 6, 7])</div><div class='add'>+</div><div class='add'>+# append method to built-in class</div><div class='add'>+class Array</div><div class='add'>+  def iter_test1</div><div class='add'>+    collect{|e| [e, yield(e)]}.sort{|a,b|a[1]&lt;=&gt;b[1]}</div><div class='add'>+  end</div><div class='add'>+  def iter_test2</div><div class='add'>+    a = collect{|e| [e, yield(e)]}</div><div class='add'>+    a.sort{|a,b|a[1]&lt;=&gt;b[1]}</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+$x = [[1,2],[3,4],[5,6]]</div><div class='add'>+test_ok($x.iter_test1{|x|x} == $x.iter_test2{|x|x})</div><div class='add'>+</div><div class='add'>+class IterTest</div><div class='add'>+  def initialize(e); @body = e; end</div><div class='add'>+</div><div class='add'>+  def each0(&amp;block); @body.each(&amp;block); end</div><div class='add'>+  def each1(&amp;block); @body.each {|*x| block.call(*x) } end</div><div class='add'>+  def each2(&amp;block); @body.each {|*x| block.call(x) } end</div><div class='add'>+  def each3(&amp;block); @body.each {|x| block.call(*x) } end</div><div class='add'>+  def each4(&amp;block); @body.each {|x| block.call(x) } end</div><div class='add'>+  def each5; @body.each {|*x| yield(*x) } end</div><div class='add'>+  def each6; @body.each {|*x| yield(x) } end</div><div class='add'>+  def each7; @body.each {|x| yield(*x) } end</div><div class='add'>+  def each8; @body.each {|x| yield(x) } end</div><div class='add'>+</div><div class='add'>+  def f(a)</div><div class='add'>+    a</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(IterTest.new(nil).method(:f).to_proc.call([1]) == [1])</div><div class='add'>+m = /\w+/.match("abc")</div><div class='add'>+test_ok(IterTest.new(nil).method(:f).to_proc.call([m]) == [m])</div><div class='add'>+</div><div class='add'>+IterTest.new([0]).each0 {|x| test_ok(x == 0)}</div><div class='add'>+IterTest.new([1]).each1 {|x| test_ok(x == 1)}</div><div class='add'>+IterTest.new([2]).each2 {|x| test_ok(x == [2])}</div><div class='add'>+#IterTest.new([3]).each3 {|x| test_ok(x == 3)}</div><div class='add'>+IterTest.new([4]).each4 {|x| test_ok(x == 4)}</div><div class='add'>+IterTest.new([5]).each5 {|x| test_ok(x == 5)}</div><div class='add'>+IterTest.new([6]).each6 {|x| test_ok(x == [6])}</div><div class='add'>+#IterTest.new([7]).each7 {|x| test_ok(x == 7)}</div><div class='add'>+IterTest.new([8]).each8 {|x| test_ok(x == 8)}</div><div class='add'>+</div><div class='add'>+IterTest.new([[0]]).each0 {|x| test_ok(x == [0])}</div><div class='add'>+IterTest.new([[1]]).each1 {|x| test_ok(x == [1])}</div><div class='add'>+IterTest.new([[2]]).each2 {|x| test_ok(x == [[2]])}</div><div class='add'>+IterTest.new([[3]]).each3 {|x| test_ok(x == 3)}</div><div class='add'>+IterTest.new([[4]]).each4 {|x| test_ok(x == [4])}</div><div class='add'>+IterTest.new([[5]]).each5 {|x| test_ok(x == [5])}</div><div class='add'>+IterTest.new([[6]]).each6 {|x| test_ok(x == [[6]])}</div><div class='add'>+IterTest.new([[7]]).each7 {|x| test_ok(x == 7)}</div><div class='add'>+IterTest.new([[8]]).each8 {|x| test_ok(x == [8])}</div><div class='add'>+</div><div class='add'>+IterTest.new([[0,0]]).each0 {|*x| test_ok(x == [[0,0]])}</div><div class='add'>+IterTest.new([[8,8]]).each8 {|*x| test_ok(x == [[8,8]])}</div><div class='add'>+</div><div class='add'>+def m0(v)</div><div class='add'>+  v</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+def m1</div><div class='add'>+  m0(block_given?)</div><div class='add'>+end</div><div class='add'>+test_ok(m1{p 'test'})</div><div class='add'>+test_ok(!m1)</div><div class='add'>+</div><div class='add'>+def m</div><div class='add'>+  m0(block_given?,&amp;Proc.new{})</div><div class='add'>+end</div><div class='add'>+test_ok(m1{p 'test'})</div><div class='add'>+test_ok(!m1)</div><div class='add'>+</div><div class='add'>+class C</div><div class='add'>+  include Enumerable</div><div class='add'>+  def initialize</div><div class='add'>+    @a = [1,2,3]</div><div class='add'>+  end</div><div class='add'>+  def each(&amp;block)</div><div class='add'>+    @a.each(&amp;block)</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_ok(C.new.collect{|n| n} == [1,2,3])</div><div class='add'>+</div><div class='add'>+test_ok(Proc == lambda{}.class)</div><div class='add'>+test_ok(Proc == Proc.new{}.class)</div><div class='add'>+lambda{|a|test_ok(a==1)}.call(1)</div><div class='add'>+def block_test(klass, &amp;block)</div><div class='add'>+  test_ok(klass === block)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+block_test(NilClass)</div><div class='add'>+block_test(Proc){}</div><div class='add'>+</div><div class='add'>+def call_argument_test(state, proc, *args)</div><div class='add'>+  x = state</div><div class='add'>+  begin</div><div class='add'>+    proc.call(*args)</div><div class='add'>+  rescue ArgumentError</div><div class='add'>+    x = !x</div><div class='add'>+  end</div><div class='add'>+  test_ok(x,2)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+call_argument_test(true, lambda{||})</div><div class='add'>+call_argument_test(false, lambda{||}, 1)</div><div class='add'>+call_argument_test(true, lambda{|a,|}, 1)</div><div class='add'>+call_argument_test(false, lambda{|a,|})</div><div class='add'>+call_argument_test(false, lambda{|a,|}, 1,2)</div><div class='add'>+</div><div class='add'>+call_argument_test(true, Proc.new{||})</div><div class='add'>+call_argument_test(true, Proc.new{||}, 1)</div><div class='add'>+call_argument_test(true, Proc.new{|a,|}, 1)</div><div class='add'>+call_argument_test(true, Proc.new{|a,|})</div><div class='add'>+call_argument_test(true, Proc.new{|a,|}, 1,2)</div><div class='add'>+</div><div class='add'>+def block_get(&amp;block)</div><div class='add'>+  block</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_ok(Proc == block_get{}.class)</div><div class='add'>+call_argument_test(true, block_get{||})</div><div class='add'>+call_argument_test(true, block_get{||}, 1)</div><div class='add'>+call_argument_test(true, block_get{|a,|}, 1)</div><div class='add'>+call_argument_test(true, block_get{|a,|})</div><div class='add'>+call_argument_test(true, block_get{|a,|}, 1,2)</div><div class='add'>+</div><div class='add'>+call_argument_test(true, block_get(&amp;lambda{||}))</div><div class='add'>+call_argument_test(false, block_get(&amp;lambda{||}),1)</div><div class='add'>+call_argument_test(true, block_get(&amp;lambda{|a,|}),1)</div><div class='add'>+call_argument_test(false, block_get(&amp;lambda{|a,|}),1,2)</div><div class='add'>+</div><div class='add'>+blk = block_get{11}</div><div class='add'>+test_ok(blk.class == Proc)</div><div class='add'>+test_ok(blk.to_proc.class == Proc)</div><div class='add'>+test_ok(blk.clone.call == 11)</div><div class='add'>+test_ok(block_get(&amp;blk).class == Proc)</div><div class='add'>+</div><div class='add'>+lmd = lambda{44}</div><div class='add'>+test_ok(lmd.class == Proc)</div><div class='add'>+test_ok(lmd.to_proc.class == Proc)</div><div class='add'>+test_ok(lmd.clone.call == 44)</div><div class='add'>+test_ok(block_get(&amp;lmd).class == Proc)</div><div class='add'>+</div><div class='add'>+test_ok(Proc.new{|a,| a}.yield(1,2,3) == 1)</div><div class='add'>+call_argument_test(true, Proc.new{|a,|}, 1,2)</div><div class='add'>+</div><div class='add'>+test_ok(Proc.new{|&amp;b| b.call(10)}.call {|x| x} == 10)</div><div class='add'>+test_ok(Proc.new{|a,&amp;b| b.call(a)}.call(12) {|x| x} == 12)</div><div class='add'>+</div><div class='add'>+def test_return1</div><div class='add'>+  Proc.new {</div><div class='add'>+    return 55</div><div class='add'>+  }.yield + 5</div><div class='add'>+end</div><div class='add'>+test_ok(test_return1() == 55)</div><div class='add'>+def test_return2</div><div class='add'>+  lambda {</div><div class='add'>+    return 55</div><div class='add'>+  }.call + 5</div><div class='add'>+end</div><div class='add'>+test_ok(test_return2() == 60)</div><div class='add'>+</div><div class='add'>+def proc_call(&amp;b)</div><div class='add'>+  b.call</div><div class='add'>+end</div><div class='add'>+def proc_yield()</div><div class='add'>+  yield</div><div class='add'>+end</div><div class='add'>+def proc_return1</div><div class='add'>+  lambda{return 42}.call+1</div><div class='add'>+end</div><div class='add'>+test_ok(proc_return1() == 43)</div><div class='add'>+def proc_return2</div><div class='add'>+  -&gt;{return 42}.call+1</div><div class='add'>+end</div><div class='add'>+test_ok(proc_return2() == 43)</div><div class='add'>+def proc_return3</div><div class='add'>+  proc_call{return 42}+1</div><div class='add'>+end</div><div class='add'>+test_ok(proc_return3() == 42)</div><div class='add'>+def proc_return4</div><div class='add'>+  proc_yield{return 42}+1</div><div class='add'>+end</div><div class='add'>+test_ok(proc_return4() == 42)</div><div class='add'>+</div><div class='add'>+def ljump_test(state, proc, *args)</div><div class='add'>+  x = state</div><div class='add'>+  begin</div><div class='add'>+    proc.call(*args)</div><div class='add'>+  rescue LocalJumpError</div><div class='add'>+    x = !x</div><div class='add'>+  end</div><div class='add'>+  test_ok(x,2)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+ljump_test(false, block_get{break})</div><div class='add'>+ljump_test(true, lambda{break})</div><div class='add'>+</div><div class='add'>+def exit_value_test(&amp;block)</div><div class='add'>+  block.call</div><div class='add'>+rescue LocalJumpError</div><div class='add'>+  $!.exit_value</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_ok(45 == exit_value_test{break 45})</div><div class='add'>+</div><div class='add'>+test_ok(55 == begin</div><div class='add'>+              block_get{break 55}.call</div><div class='add'>+            rescue LocalJumpError</div><div class='add'>+              $!.exit_value</div><div class='add'>+            end)</div><div class='add'>+</div><div class='add'>+def block_call(&amp;block)</div><div class='add'>+  block.call</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+def test_b1</div><div class='add'>+  block_call{break 11}</div><div class='add'>+end</div><div class='add'>+test_ok(test_b1() == 11)</div><div class='add'>+</div><div class='add'>+def ljump_rescue(r)</div><div class='add'>+  begin</div><div class='add'>+    yield</div><div class='add'>+  rescue LocalJumpError =&gt; e</div><div class='add'>+    r if /from proc-closure/ =~ e.message</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+def test_b2</div><div class='add'>+  ljump_rescue(22) do</div><div class='add'>+    block_get{break 21}.call</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(test_b2() == 22)</div><div class='add'>+</div><div class='add'>+def test_b3</div><div class='add'>+  ljump_rescue(33) do</div><div class='add'>+    Proc.new{break 31}.yield</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(test_b3() == 33)</div><div class='add'>+</div><div class='add'>+def test_b4</div><div class='add'>+  lambda{break 44}.call</div><div class='add'>+end</div><div class='add'>+test_ok(test_b4() == 44)</div><div class='add'>+</div><div class='add'>+def test_b5</div><div class='add'>+  ljump_rescue(55) do</div><div class='add'>+    b = block_get{break 54}</div><div class='add'>+    block_call(&amp;b)</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(test_b5() == 55)</div><div class='add'>+</div><div class='add'>+def test_b6</div><div class='add'>+  b = lambda{break 67}</div><div class='add'>+  block_call(&amp;b)</div><div class='add'>+  66</div><div class='add'>+end</div><div class='add'>+test_ok(test_b6() == 66)</div><div class='add'>+</div><div class='add'>+def util_r7</div><div class='add'>+  block_get{break 78}</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+def test_b7</div><div class='add'>+  b = util_r7()</div><div class='add'>+  ljump_rescue(77) do</div><div class='add'>+    block_call(&amp;b)</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(test_b7() == 77)</div><div class='add'>+</div><div class='add'>+def util_b8(&amp;block)</div><div class='add'>+  block_call(&amp;block)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+def test_b8</div><div class='add'>+  util_b8{break 88}</div><div class='add'>+end</div><div class='add'>+test_ok(test_b8() == 88)</div><div class='add'>+</div><div class='add'>+def util_b9(&amp;block)</div><div class='add'>+  lambda{block.call; 98}.call</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+def test_b9</div><div class='add'>+  util_b9{break 99}</div><div class='add'>+end</div><div class='add'>+test_ok(test_b9() == 99)</div><div class='add'>+</div><div class='add'>+def util_b10</div><div class='add'>+  util_b9{break 100}</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+def test_b10</div><div class='add'>+  util_b10()</div><div class='add'>+end</div><div class='add'>+test_ok(test_b10() == 100)</div><div class='add'>+</div><div class='add'>+def test_b11</div><div class='add'>+  ljump_rescue(111) do</div><div class='add'>+    loop do</div><div class='add'>+      Proc.new{break 110}.yield</div><div class='add'>+      break 112</div><div class='add'>+    end</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(test_b11() == 111)</div><div class='add'>+</div><div class='add'>+def test_b12</div><div class='add'>+  loop do</div><div class='add'>+    break lambda{break 122}.call</div><div class='add'>+    break 121</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(test_b12() == 122)</div><div class='add'>+</div><div class='add'>+def test_b13</div><div class='add'>+  ljump_rescue(133) do</div><div class='add'>+    while true</div><div class='add'>+      Proc.new{break 130}.yield</div><div class='add'>+      break 131</div><div class='add'>+    end</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(test_b13() == 133)</div><div class='add'>+</div><div class='add'>+def test_b14</div><div class='add'>+  while true</div><div class='add'>+    break lambda{break 144}.call</div><div class='add'>+    break 143</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok(test_b14() == 144)</div><div class='add'>+</div><div class='add'>+def test_b15</div><div class='add'>+  [0].each {|c| yield 1 }</div><div class='add'>+  156</div><div class='add'>+end</div><div class='add'>+test_ok(test_b15{|e| break 155 } == 155)</div><div class='add'>+</div><div class='add'>+def marity_test(m)</div><div class='add'>+  method = method(m)</div><div class='add'>+  test_ok(method.arity == method.to_proc.arity, 2)</div><div class='add'>+end</div><div class='add'>+marity_test(:test_ok)</div><div class='add'>+marity_test(:marity_test)</div><div class='add'>+marity_test(:p)</div><div class='add'>+</div><div class='add'>+lambda(&amp;method(:test_ok)).call(true)</div><div class='add'>+lambda(&amp;block_get{|a,n| test_ok(a,n)}).call(true, 2)</div><div class='add'>+</div><div class='add'>+class ITER_TEST1</div><div class='add'>+   def a</div><div class='add'>+     block_given?</div><div class='add'>+   end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+class ITER_TEST2 &lt; ITER_TEST1</div><div class='add'>+   def a</div><div class='add'>+     test_ok(super)</div><div class='add'>+     super</div><div class='add'>+   end</div><div class='add'>+end</div><div class='add'>+test_ok(ITER_TEST2.new.a {})</div><div class='add'>+</div><div class='add'>+class ITER_TEST3</div><div class='add'>+  def foo x</div><div class='add'>+    return yield if block_given?</div><div class='add'>+    x</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+class ITER_TEST4 &lt; ITER_TEST3</div><div class='add'>+  def foo x</div><div class='add'>+    test_ok(super == yield)</div><div class='add'>+    test_ok(super(x, &amp;nil) == x)</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+ITER_TEST4.new.foo(44){55}</div><div class='add'>+</div><div class='add'>+class ITER_TEST5</div><div class='add'>+   def tt(aa)</div><div class='add'>+     aa</div><div class='add'>+   end</div><div class='add'>+</div><div class='add'>+   def uu(a)</div><div class='add'>+      class &lt;&lt; self</div><div class='add'>+         define_method(:tt) do |sym|</div><div class='add'>+            super(sym)</div><div class='add'>+         end</div><div class='add'>+      end</div><div class='add'>+   end</div><div class='add'>+</div><div class='add'>+   def xx(*x)</div><div class='add'>+     x.size</div><div class='add'>+   end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+a = ITER_TEST5.new</div><div class='add'>+a.uu(12)</div><div class='add'>+test_ok(a.tt(1) == 1)</div><div class='add'>+</div><div class='add'>+class ITER_TEST6 &lt; ITER_TEST5</div><div class='add'>+   def xx(*a)</div><div class='add'>+      a &lt;&lt; 12</div><div class='add'>+      super</div><div class='add'>+   end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_ok(ITER_TEST6.new.xx([24]) == 2)</div><div class='add'>+</div><div class='add'>+test_check "float"</div><div class='add'>+test_ok(2.6.floor == 2)</div><div class='add'>+test_ok((-2.6).floor == -3)</div><div class='add'>+test_ok(2.6.ceil == 3)</div><div class='add'>+test_ok((-2.6).ceil == -2)</div><div class='add'>+test_ok(2.6.truncate == 2)</div><div class='add'>+test_ok((-2.6).truncate == -2)</div><div class='add'>+test_ok(2.6.round == 3)</div><div class='add'>+test_ok((-2.4).truncate == -2)</div><div class='add'>+test_ok((13.4 % 1 - 0.4).abs &lt; 0.0001)</div><div class='add'>+nan = 0.0/0</div><div class='add'>+def nan_test(x,y)</div><div class='add'>+  test_ok(x != y)</div><div class='add'>+  test_ok((x &lt; y) == false)</div><div class='add'>+  test_ok((x &gt; y) == false)</div><div class='add'>+  test_ok((x &lt;= y) == false)</div><div class='add'>+  test_ok((x &gt;= y) == false)</div><div class='add'>+end</div><div class='add'>+nan_test(nan, nan)</div><div class='add'>+nan_test(nan, 0)</div><div class='add'>+nan_test(nan, 1)</div><div class='add'>+nan_test(nan, -1)</div><div class='add'>+nan_test(nan, 1000)</div><div class='add'>+nan_test(nan, -1000)</div><div class='add'>+nan_test(nan, 1_000_000_000_000)</div><div class='add'>+nan_test(nan, -1_000_000_000_000)</div><div class='add'>+nan_test(nan, 100.0);</div><div class='add'>+nan_test(nan, -100.0);</div><div class='add'>+nan_test(nan, 0.001);</div><div class='add'>+nan_test(nan, -0.001);</div><div class='add'>+nan_test(nan, 1.0/0);</div><div class='add'>+nan_test(nan, -1.0/0);</div><div class='add'>+</div><div class='add'>+#s = "3.7517675036461267e+17"</div><div class='add'>+#test_ok(s == sprintf("%.16e", s.to_f))</div><div class='add'>+f = 3.7517675036461267e+17</div><div class='add'>+test_ok(f == sprintf("%.16e", f).to_f)</div><div class='add'>+</div><div class='add'>+</div><div class='add'>+test_check "bignum"</div><div class='add'>+def fact(n)</div><div class='add'>+  return 1 if n == 0</div><div class='add'>+  f = 1</div><div class='add'>+  while n&gt;0</div><div class='add'>+    f *= n</div><div class='add'>+    n -= 1</div><div class='add'>+  end</div><div class='add'>+  return f</div><div class='add'>+end</div><div class='add'>+$x = fact(40)</div><div class='add'>+test_ok($x == $x)</div><div class='add'>+test_ok($x == fact(40))</div><div class='add'>+test_ok($x &lt; $x+2)</div><div class='add'>+test_ok($x &gt; $x-2)</div><div class='add'>+test_ok($x == 815915283247897734345611269596115894272000000000)</div><div class='add'>+test_ok($x != 815915283247897734345611269596115894272000000001)</div><div class='add'>+test_ok($x+1 == 815915283247897734345611269596115894272000000001)</div><div class='add'>+test_ok($x/fact(20) == 335367096786357081410764800000)</div><div class='add'>+$x = -$x</div><div class='add'>+test_ok($x == -815915283247897734345611269596115894272000000000)</div><div class='add'>+test_ok(2-(2**32) == -(2**32-2))</div><div class='add'>+test_ok(2**32 - 5 == (2**32-3)-2)</div><div class='add'>+</div><div class='add'>+$good = true;</div><div class='add'>+for i in 1000..1014</div><div class='add'>+  $good = false if ((1 &lt;&lt; i) != (2**i))</div><div class='add'>+end</div><div class='add'>+test_ok($good)</div><div class='add'>+</div><div class='add'>+$good = true;</div><div class='add'>+n1= 1 &lt;&lt; 1000</div><div class='add'>+for i in 1000..1014</div><div class='add'>+  $good = false if ((1 &lt;&lt; i) != n1)</div><div class='add'>+  n1 *= 2</div><div class='add'>+end</div><div class='add'>+test_ok($good)</div><div class='add'>+</div><div class='add'>+$good = true;</div><div class='add'>+n2=n1</div><div class='add'>+for i in 1..10</div><div class='add'>+  n1 = n1 / 2</div><div class='add'>+  n2 = n2 &gt;&gt; 1</div><div class='add'>+  $good = false if (n1 != n2)</div><div class='add'>+end</div><div class='add'>+test_ok($good)</div><div class='add'>+</div><div class='add'>+$good = true;</div><div class='add'>+for i in 4000..4096</div><div class='add'>+  n1 = 1 &lt;&lt; i;</div><div class='add'>+  if (n1**2-1) / (n1+1) != (n1-1)</div><div class='add'>+    $good = false</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+test_ok($good)</div><div class='add'>+</div><div class='add'>+b = 10**80</div><div class='add'>+a = b * 9 + 7</div><div class='add'>+test_ok(7 == a.modulo(b))</div><div class='add'>+test_ok(-b + 7 == a.modulo(-b))</div><div class='add'>+test_ok(b + -7 == (-a).modulo(b))</div><div class='add'>+test_ok(-7 == (-a).modulo(-b))</div><div class='add'>+test_ok(7 == a.remainder(b))</div><div class='add'>+test_ok(7 == a.remainder(-b))</div><div class='add'>+test_ok(-7 == (-a).remainder(b))</div><div class='add'>+test_ok(-7 == (-a).remainder(-b))</div><div class='add'>+</div><div class='add'>+test_ok(10**40+10**20 == 10000000000000000000100000000000000000000)</div><div class='add'>+test_ok(10**40/10**20 == 100000000000000000000)</div><div class='add'>+</div><div class='add'>+a = 677330545177305025495135714080</div><div class='add'>+b = 14269972710765292560</div><div class='add'>+test_ok(a % b == 0)</div><div class='add'>+test_ok(-a % b == 0)</div><div class='add'>+</div><div class='add'>+def shift_test(a)</div><div class='add'>+  b = a / (2 ** 32)</div><div class='add'>+  c = a &gt;&gt; 32</div><div class='add'>+  test_ok(b == c)</div><div class='add'>+</div><div class='add'>+  b = a * (2 ** 32)</div><div class='add'>+  c = a &lt;&lt; 32</div><div class='add'>+  test_ok(b == c)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+shift_test(-4518325415524767873)</div><div class='add'>+shift_test(-0xfffffffffffffffff)</div><div class='add'>+</div><div class='add'>+test_check "string &amp; char"</div><div class='add'>+</div><div class='add'>+test_ok("abcd" == "abcd")</div><div class='add'>+test_ok("abcd" =~ /abcd/)</div><div class='add'>+test_ok("abcd" === "abcd")</div><div class='add'>+# compile time string concatenation</div><div class='add'>+test_ok("ab" "cd" == "abcd")</div><div class='add'>+test_ok("#{22}aa" "cd#{44}" == "22aacd44")</div><div class='add'>+test_ok("#{22}aa" "cd#{44}" "55" "#{66}" == "22aacd445566")</div><div class='add'>+test_ok("abc" !~ /^$/)</div><div class='add'>+test_ok("abc\n" !~ /^$/)</div><div class='add'>+test_ok("abc" !~ /^d*$/)</div><div class='add'>+test_ok(("abc" =~ /d*$/) == 3)</div><div class='add'>+test_ok("" =~ /^$/)</div><div class='add'>+test_ok("\n" =~ /^$/)</div><div class='add'>+test_ok("a\n\n" =~ /^$/)</div><div class='add'>+test_ok("abcabc" =~ /.*a/ &amp;&amp; $&amp; == "abca")</div><div class='add'>+test_ok("abcabc" =~ /.*c/ &amp;&amp; $&amp; == "abcabc")</div><div class='add'>+test_ok("abcabc" =~ /.*?a/ &amp;&amp; $&amp; == "a")</div><div class='add'>+test_ok("abcabc" =~ /.*?c/ &amp;&amp; $&amp; == "abc")</div><div class='add'>+test_ok(/(.|\n)*?\n(b|\n)/ =~ "a\nb\n\n" &amp;&amp; $&amp; == "a\nb")</div><div class='add'>+</div><div class='add'>+test_ok(/^(ab+)+b/ =~ "ababb" &amp;&amp; $&amp; == "ababb")</div><div class='add'>+test_ok(/^(?:ab+)+b/ =~ "ababb" &amp;&amp; $&amp; == "ababb")</div><div class='add'>+test_ok(/^(ab+)+/ =~ "ababb" &amp;&amp; $&amp; == "ababb")</div><div class='add'>+test_ok(/^(?:ab+)+/ =~ "ababb" &amp;&amp; $&amp; == "ababb")</div><div class='add'>+</div><div class='add'>+test_ok(/(\s+\d+){2}/ =~ " 1 2" &amp;&amp; $&amp; == " 1 2")</div><div class='add'>+test_ok(/(?:\s+\d+){2}/ =~ " 1 2" &amp;&amp; $&amp; == " 1 2")</div><div class='add'>+</div><div class='add'>+$x = &lt;&lt;END;</div><div class='add'>+ABCD</div><div class='add'>+ABCD</div><div class='add'>+END</div><div class='add'>+$x.gsub!(/((.|\n)*?)B((.|\n)*?)D/, '\1\3')</div><div class='add'>+test_ok($x == "AC\nAC\n")</div><div class='add'>+</div><div class='add'>+test_ok("foobar" =~ /foo(?=(bar)|(baz))/)</div><div class='add'>+test_ok("foobaz" =~ /foo(?=(bar)|(baz))/)</div><div class='add'>+</div><div class='add'>+$foo = "abc"</div><div class='add'>+test_ok("#$foo = abc" == "abc = abc")</div><div class='add'>+test_ok("#{$foo} = abc" == "abc = abc")</div><div class='add'>+</div><div class='add'>+foo = "abc"</div><div class='add'>+test_ok("#{foo} = abc" == "abc = abc")</div><div class='add'>+</div><div class='add'>+test_ok('-' * 5 == '-----')</div><div class='add'>+test_ok('-' * 1 == '-')</div><div class='add'>+test_ok('-' * 0 == '')</div><div class='add'>+</div><div class='add'>+foo = '-'</div><div class='add'>+test_ok(foo * 5 == '-----')</div><div class='add'>+test_ok(foo * 1 == '-')</div><div class='add'>+test_ok(foo * 0 == '')</div><div class='add'>+</div><div class='add'>+$x = "a.gif"</div><div class='add'>+test_ok($x.sub(/.*\.([^\.]+)$/, '\1') == "gif")</div><div class='add'>+test_ok($x.sub(/.*\.([^\.]+)$/, 'b.\1') == "b.gif")</div><div class='add'>+test_ok($x.sub(/.*\.([^\.]+)$/, '\2') == "")</div><div class='add'>+test_ok($x.sub(/.*\.([^\.]+)$/, 'a\2b') == "ab")</div><div class='add'>+test_ok($x.sub(/.*\.([^\.]+)$/, '&lt;\&amp;&gt;') == "&lt;a.gif&gt;")</div><div class='add'>+</div><div class='add'>+# character constants(assumes ASCII)</div><div class='add'>+test_ok("a"[0] == ?a)</div><div class='add'>+test_ok(?a == ?a)</div><div class='add'>+test_ok(?\C-a == "\1")</div><div class='add'>+test_ok(?\M-a == "\341")</div><div class='add'>+test_ok(?\M-\C-a == "\201")</div><div class='add'>+test_ok("a".upcase![0] == ?A)</div><div class='add'>+test_ok("A".downcase![0] == ?a)</div><div class='add'>+test_ok("abc".tr!("a-z", "A-Z") == "ABC")</div><div class='add'>+test_ok("aabbcccc".tr_s!("a-z", "A-Z") == "ABC")</div><div class='add'>+test_ok("abcc".squeeze!("a-z") == "abc")</div><div class='add'>+test_ok("abcd".delete!("bc") == "ad")</div><div class='add'>+</div><div class='add'>+$x = "abcdef"</div><div class='add'>+$y = [ ?a, ?b, ?c, ?d, ?e, ?f ]</div><div class='add'>+$bad = false</div><div class='add'>+$x.each_byte {|i|</div><div class='add'>+  if i.chr != $y.shift</div><div class='add'>+    $bad = true</div><div class='add'>+    break</div><div class='add'>+  end</div><div class='add'>+}</div><div class='add'>+test_ok(!$bad)</div><div class='add'>+</div><div class='add'>+s = "a string"</div><div class='add'>+s[0..s.size]="another string"</div><div class='add'>+test_ok(s == "another string")</div><div class='add'>+</div><div class='add'>+s = &lt;&lt;EOS</div><div class='add'>+#{</div><div class='add'>+[1,2,3].join(",")</div><div class='add'>+}</div><div class='add'>+EOS</div><div class='add'>+test_ok(s == "1,2,3\n")</div><div class='add'>+test_ok("Just".to_i(36) == 926381)</div><div class='add'>+test_ok("-another".to_i(36) == -23200231779)</div><div class='add'>+test_ok(1299022.to_s(36) == "ruby")</div><div class='add'>+test_ok(-1045307475.to_s(36) == "-hacker")</div><div class='add'>+test_ok("Just_another_Ruby_hacker".to_i(36) == 265419172580680477752431643787347)</div><div class='add'>+test_ok(-265419172580680477752431643787347.to_s(36) == "-justanotherrubyhacker")</div><div class='add'>+</div><div class='add'>+a = []</div><div class='add'>+(0..255).each {|n|</div><div class='add'>+  ch = [n].pack("C")</div><div class='add'>+  a.push ch if /a#{Regexp.quote ch}b/x =~ "ab"</div><div class='add'>+}</div><div class='add'>+test_ok(a.size == 0)</div><div class='add'>+</div><div class='add'>+test_check "assignment"</div><div class='add'>+a = nil</div><div class='add'>+test_ok(defined?(a))</div><div class='add'>+test_ok(a == nil)</div><div class='add'>+</div><div class='add'>+# multiple asignment</div><div class='add'>+a, b = 1, 2</div><div class='add'>+test_ok(a == 1 &amp;&amp; b == 2)</div><div class='add'>+</div><div class='add'>+a, b = b, a</div><div class='add'>+test_ok(a == 2 &amp;&amp; b == 1)</div><div class='add'>+</div><div class='add'>+a, = 1,2</div><div class='add'>+test_ok(a == 1)</div><div class='add'>+</div><div class='add'>+a, *b = 1, 2, 3</div><div class='add'>+test_ok(a == 1 &amp;&amp; b == [2, 3])</div><div class='add'>+</div><div class='add'>+a, (b, c), d = 1, [2, 3], 4</div><div class='add'>+test_ok(a == 1 &amp;&amp; b == 2 &amp;&amp; c == 3 &amp;&amp; d == 4)</div><div class='add'>+</div><div class='add'>+*a = 1, 2, 3</div><div class='add'>+test_ok(a == [1, 2, 3])</div><div class='add'>+</div><div class='add'>+*a = 4</div><div class='add'>+test_ok(a == [4])</div><div class='add'>+</div><div class='add'>+*a = nil</div><div class='add'>+test_ok(a == [nil])</div><div class='add'>+</div><div class='add'>+test_check "call"</div><div class='add'>+def aaa(a, b=100, *rest)</div><div class='add'>+  res = [a, b]</div><div class='add'>+  res += rest if rest</div><div class='add'>+  return res</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+# not enough argument</div><div class='add'>+begin</div><div class='add'>+  aaa()				# need at least 1 arg</div><div class='add'>+  test_ok(false)</div><div class='add'>+rescue</div><div class='add'>+  test_ok(true)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+begin</div><div class='add'>+  aaa				# no arg given (exception raised)</div><div class='add'>+  test_ok(false)</div><div class='add'>+rescue</div><div class='add'>+  test_ok(true)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_ok(aaa(1) == [1, 100])</div><div class='add'>+test_ok(aaa(1, 2) == [1, 2])</div><div class='add'>+test_ok(aaa(1, 2, 3, 4) == [1, 2, 3, 4])</div><div class='add'>+test_ok(aaa(1, *[2, 3, 4]) == [1, 2, 3, 4])</div><div class='add'>+</div><div class='add'>+test_check "proc"</div><div class='add'>+$proc = Proc.new{|i| i}</div><div class='add'>+test_ok($proc.call(2) == 2)</div><div class='add'>+test_ok($proc.call(3) == 3)</div><div class='add'>+</div><div class='add'>+$proc = Proc.new{|i| i*2}</div><div class='add'>+test_ok($proc.call(2) == 4)</div><div class='add'>+test_ok($proc.call(3) == 6)</div><div class='add'>+</div><div class='add'>+Proc.new{</div><div class='add'>+  iii=5				# nested local variable</div><div class='add'>+  $proc = Proc.new{|i|</div><div class='add'>+    iii = i</div><div class='add'>+  }</div><div class='add'>+  $proc2 = Proc.new {</div><div class='add'>+    $x = iii			# nested variables shared by procs</div><div class='add'>+  }</div><div class='add'>+  # scope of nested variables</div><div class='add'>+  test_ok(defined?(iii))</div><div class='add'>+}.call</div><div class='add'>+test_ok(!defined?(iii))		# out of scope</div><div class='add'>+</div><div class='add'>+loop{iii=5; test_ok(eval("defined? iii")); break}</div><div class='add'>+loop {</div><div class='add'>+  iii = 10</div><div class='add'>+  def dyna_var_check</div><div class='add'>+    loop {</div><div class='add'>+      test_ok(!defined?(iii))</div><div class='add'>+      break</div><div class='add'>+    }</div><div class='add'>+  end</div><div class='add'>+  dyna_var_check</div><div class='add'>+  break</div><div class='add'>+}</div><div class='add'>+$x=0</div><div class='add'>+$proc.call(5)</div><div class='add'>+$proc2.call</div><div class='add'>+test_ok($x == 5)</div><div class='add'>+</div><div class='add'>+if defined? Process.kill</div><div class='add'>+  test_check "signal"</div><div class='add'>+</div><div class='add'>+  $x = 0</div><div class='add'>+  trap "SIGINT", Proc.new{|sig| $x = 2}</div><div class='add'>+  Process.kill "SIGINT", $$</div><div class='add'>+  100.times {</div><div class='add'>+    sleep 0.1</div><div class='add'>+    break if $x != 0</div><div class='add'>+  }</div><div class='add'>+  test_ok($x == 2)</div><div class='add'>+</div><div class='add'>+  trap "SIGINT", Proc.new{raise "Interrupt"}</div><div class='add'>+</div><div class='add'>+  x = false</div><div class='add'>+  begin</div><div class='add'>+    Process.kill "SIGINT", $$</div><div class='add'>+    sleep 0.1</div><div class='add'>+  rescue</div><div class='add'>+    x = $!</div><div class='add'>+  end</div><div class='add'>+  test_ok(x &amp;&amp; /Interrupt/ =~ x.message)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_check "eval"</div><div class='add'>+test_ok(eval("") == nil)</div><div class='add'>+$bad=false</div><div class='add'>+eval 'while false; $bad = true; print "foo\n" end'</div><div class='add'>+test_ok(!$bad)</div><div class='add'>+</div><div class='add'>+test_ok(eval('Object'))</div><div class='add'>+test_ok(eval('true'))</div><div class='add'>+test_ok(!eval('nil'))</div><div class='add'>+test_ok(!eval('false'))</div><div class='add'>+</div><div class='add'>+$foo = 'test_ok(true)'</div><div class='add'>+begin</div><div class='add'>+  eval $foo</div><div class='add'>+rescue</div><div class='add'>+  test_ok(false)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_ok(eval("$foo") == 'test_ok(true)')</div><div class='add'>+test_ok(eval("true") == true)</div><div class='add'>+i = 5</div><div class='add'>+test_ok(eval("i == 5"))</div><div class='add'>+test_ok(eval("i") == 5)</div><div class='add'>+test_ok(eval("defined? i"))</div><div class='add'>+</div><div class='add'>+# eval with binding</div><div class='add'>+def test_ev</div><div class='add'>+  local1 = "local1"</div><div class='add'>+  lambda {</div><div class='add'>+    local2 = "local2"</div><div class='add'>+    return binding</div><div class='add'>+  }.call</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+$x = test_ev</div><div class='add'>+test_ok(eval("local1", $x) == "local1") # normal local var</div><div class='add'>+test_ok(eval("local2", $x) == "local2") # nested local var</div><div class='add'>+$bad = true</div><div class='add'>+begin</div><div class='add'>+  p eval("local1")</div><div class='add'>+rescue NameError		# must raise error</div><div class='add'>+  $bad = false</div><div class='add'>+end</div><div class='add'>+test_ok(!$bad)</div><div class='add'>+</div><div class='add'>+module EvTest</div><div class='add'>+  EVTEST1 = 25</div><div class='add'>+  evtest2 = 125</div><div class='add'>+  $x = binding</div><div class='add'>+end</div><div class='add'>+test_ok(eval("EVTEST1", $x) == 25)	# constant in module</div><div class='add'>+test_ok(eval("evtest2", $x) == 125)	# local var in module</div><div class='add'>+$bad = true</div><div class='add'>+begin</div><div class='add'>+  eval("EVTEST1")</div><div class='add'>+rescue NameError		# must raise error</div><div class='add'>+  $bad = false</div><div class='add'>+end</div><div class='add'>+test_ok(!$bad)</div><div class='add'>+</div><div class='add'>+x = binding #! YARV Limitation: Proc.new{}</div><div class='add'>+eval "i4 = 1", x</div><div class='add'>+test_ok(eval("i4", x) == 1)</div><div class='add'>+x = Proc.new{binding}.call #! YARV Limitation: Proc.new{Proc.new{}}.call</div><div class='add'>+eval "i4 = 22", x</div><div class='add'>+test_ok(eval("i4", x) == 22)</div><div class='add'>+$x = []</div><div class='add'>+x = Proc.new{binding}.call #! YARV Limitation: Proc.new{Proc.new{}}.call</div><div class='add'>+eval "(0..9).each{|i5| $x[i5] = Proc.new{i5*2}}", x</div><div class='add'>+test_ok($x[4].call == 8)</div><div class='add'>+</div><div class='add'>+x = binding</div><div class='add'>+eval "i = 1", x</div><div class='add'>+test_ok(eval("i", x) == 1)</div><div class='add'>+x = Proc.new{binding}.call</div><div class='add'>+eval "i = 22", x</div><div class='add'>+test_ok(eval("i", x) == 22)</div><div class='add'>+$x = []</div><div class='add'>+x = Proc.new{binding}.call</div><div class='add'>+eval "(0..9).each{|i5| $x[i5] = Proc.new{i5*2}}", x</div><div class='add'>+test_ok($x[4].call == 8)</div><div class='add'>+x = Proc.new{binding}.call</div><div class='add'>+eval "for i6 in 1..1; j6=i6; end", x</div><div class='add'>+test_ok(eval("defined? i6", x))</div><div class='add'>+test_ok(eval("defined? j6", x))</div><div class='add'>+</div><div class='add'>+Proc.new {</div><div class='add'>+  p = binding</div><div class='add'>+  eval "foo11 = 1", p</div><div class='add'>+  foo22 = 5</div><div class='add'>+  Proc.new{foo11=22}.call</div><div class='add'>+  Proc.new{foo22=55}.call</div><div class='add'>+  test_ok(eval("foo11", p) == eval("foo11"))</div><div class='add'>+  test_ok(eval("foo11") == 1)</div><div class='add'>+  test_ok(eval("foo22", p) == eval("foo22"))</div><div class='add'>+  test_ok(eval("foo22") == 55)</div><div class='add'>+}.call if false #! YARV Limitation</div><div class='add'>+</div><div class='add'>+#! YARV Limitation: p1 = Proc.new{i7 = 0; Proc.new{i7}}.call</div><div class='add'>+p1 = Proc.new{i7 = 0; binding}.call</div><div class='add'>+#! YARV Limitation: test_ok(p1.call == 0)</div><div class='add'>+eval "i7=5", p1</div><div class='add'>+#! YARV Limitation: test_ok(p1.call == 5)</div><div class='add'>+test_ok(!defined?(i7))</div><div class='add'>+</div><div class='add'>+if false #! YARV Limitation</div><div class='add'>+p1 = Proc.new{i7 = 0; Proc.new{i7}}.call</div><div class='add'>+i7 = nil</div><div class='add'>+test_ok(p1.call == 0)</div><div class='add'>+eval "i7=1", p1</div><div class='add'>+test_ok(p1.call == 1)</div><div class='add'>+eval "i7=5", p1</div><div class='add'>+test_ok(p1.call == 5)</div><div class='add'>+test_ok(i7 == nil)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_check "system"</div><div class='add'>+test_ok(`echo foobar` == "foobar\n")</div><div class='add'>+test_ok(`./miniruby -e 'print "foobar"'` == 'foobar')</div><div class='add'>+</div><div class='add'>+script_tmp = "script_tmp.#{$$}"</div><div class='add'>+tmp = open(script_tmp, "w")</div><div class='add'>+tmp.print "print $zzz\n";</div><div class='add'>+tmp.close</div><div class='add'>+</div><div class='add'>+test_ok(`./miniruby -s #{script_tmp} -zzz` == 'true')</div><div class='add'>+test_ok(`./miniruby -s #{script_tmp} -zzz=555` == '555')</div><div class='add'>+</div><div class='add'>+tmp = open(script_tmp, "w")</div><div class='add'>+tmp.print "#! /usr/local/bin/ruby -s\n";</div><div class='add'>+tmp.print "print $zzz\n";</div><div class='add'>+tmp.close</div><div class='add'>+</div><div class='add'>+test_ok(`./miniruby #{script_tmp} -zzz=678` == '678')</div><div class='add'>+</div><div class='add'>+tmp = open(script_tmp, "w")</div><div class='add'>+tmp.print "this is a leading junk\n";</div><div class='add'>+tmp.print "#! /usr/local/bin/ruby -s\n";</div><div class='add'>+tmp.print "print $zzz\n";</div><div class='add'>+tmp.print "__END__\n";</div><div class='add'>+tmp.print "this is a trailing junk\n";</div><div class='add'>+tmp.close</div><div class='add'>+</div><div class='add'>+test_ok(`./miniruby -x #{script_tmp}` == '')</div><div class='add'>+test_ok(`./miniruby -x #{script_tmp} -zzz=555` == '555')</div><div class='add'>+</div><div class='add'>+tmp = open(script_tmp, "w")</div><div class='add'>+for i in 1..5</div><div class='add'>+  tmp.print i, "\n"</div><div class='add'>+end</div><div class='add'>+tmp.close</div><div class='add'>+</div><div class='add'>+`./miniruby -i.bak -pe '$_.sub!(/^[0-9]+$/){$&amp;.to_i * 5}' #{script_tmp}`</div><div class='add'>+done = true</div><div class='add'>+tmp = open(script_tmp, "r")</div><div class='add'>+while tmp.gets</div><div class='add'>+  if $_.to_i % 5 != 0</div><div class='add'>+    done = false</div><div class='add'>+    break</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+tmp.close</div><div class='add'>+test_ok(done)</div><div class='add'>+</div><div class='add'>+File.unlink script_tmp or `/bin/rm -f "#{script_tmp}"`</div><div class='add'>+File.unlink "#{script_tmp}.bak" or `/bin/rm -f "#{script_tmp}.bak"`</div><div class='add'>+</div><div class='add'>+test_check "const"</div><div class='add'>+TEST1 = 1</div><div class='add'>+TEST2 = 2</div><div class='add'>+</div><div class='add'>+module Const</div><div class='add'>+  TEST3 = 3</div><div class='add'>+  TEST4 = 4</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+module Const2</div><div class='add'>+  TEST3 = 6</div><div class='add'>+  TEST4 = 8</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+include Const</div><div class='add'>+</div><div class='add'>+test_ok([TEST1,TEST2,TEST3,TEST4] == [1,2,3,4])</div><div class='add'>+</div><div class='add'>+include Const2</div><div class='add'>+STDERR.print "intentionally redefines TEST3, TEST4\n" if $VERBOSE</div><div class='add'>+test_ok([TEST1,TEST2,TEST3,TEST4] == [1,2,6,8])</div><div class='add'>+</div><div class='add'>+</div><div class='add'>+test_ok((String &lt;=&gt; Object) == -1)</div><div class='add'>+test_ok((Object &lt;=&gt; String) == 1)</div><div class='add'>+test_ok((Array &lt;=&gt; String) == nil)</div><div class='add'>+</div><div class='add'>+test_check "clone"</div><div class='add'>+foo = Object.new</div><div class='add'>+def foo.test</div><div class='add'>+  "test"</div><div class='add'>+end</div><div class='add'>+bar = foo.clone</div><div class='add'>+def bar.test2</div><div class='add'>+  "test2"</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_ok(bar.test2 == "test2")</div><div class='add'>+test_ok(bar.test == "test")</div><div class='add'>+test_ok(foo.test == "test")</div><div class='add'>+</div><div class='add'>+begin</div><div class='add'>+  foo.test2</div><div class='add'>+  test_ok false</div><div class='add'>+rescue NoMethodError</div><div class='add'>+  test_ok true</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+module M001; end</div><div class='add'>+module M002; end</div><div class='add'>+module M003; include M002; end</div><div class='add'>+module M002; include M001; end</div><div class='add'>+module M003; include M002; end</div><div class='add'>+</div><div class='add'>+test_ok(M003.ancestors == [M003, M002, M001])</div><div class='add'>+</div><div class='add'>+test_check "marshal"</div><div class='add'>+$x = [1,2,3,[4,5,"foo"],{1=&gt;"bar"},2.5,fact(30)]</div><div class='add'>+$y = Marshal.dump($x)</div><div class='add'>+test_ok($x == Marshal.load($y))</div><div class='add'>+</div><div class='add'>+StrClone=String.clone;</div><div class='add'>+test_ok(Marshal.load(Marshal.dump(StrClone.new("abc"))).class == StrClone)</div><div class='add'>+</div><div class='add'>+[[1,2,3,4], [81, 2, 118, 3146]].each { |w,x,y,z|</div><div class='add'>+  a = (x.to_f + y.to_f / z.to_f) * Math.exp(w.to_f / (x.to_f + y.to_f / z.to_f))</div><div class='add'>+  ma = Marshal.dump(a)</div><div class='add'>+  b = Marshal.load(ma)</div><div class='add'>+  test_ok(a == b)</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+test_check "pack"</div><div class='add'>+</div><div class='add'>+$format = "c2x5CCxsdils_l_a6";</div><div class='add'>+# Need the expression in here to force ary[5] to be numeric.  This avoids</div><div class='add'>+# test2 failing because ary2 goes str-&gt;numeric-&gt;str and ary does not.</div><div class='add'>+ary = [1,-100,127,128,32767,987.654321098 / 100.0,12345,123456,-32767,-123456,"abcdef"]</div><div class='add'>+$x = ary.pack($format)</div><div class='add'>+ary2 = $x.unpack($format)</div><div class='add'>+</div><div class='add'>+test_ok(ary.length == ary2.length)</div><div class='add'>+test_ok(ary.join(':') == ary2.join(':'))</div><div class='add'>+test_ok($x =~ /def/)</div><div class='add'>+</div><div class='add'>+$x = [-1073741825]</div><div class='add'>+test_ok($x.pack("q").unpack("q") == $x)</div><div class='add'>+</div><div class='add'>+test_check "math"</div><div class='add'>+test_ok(Math.sqrt(4) == 2)</div><div class='add'>+</div><div class='add'>+include Math</div><div class='add'>+test_ok(sqrt(4) == 2)</div><div class='add'>+</div><div class='add'>+test_check "struct"</div><div class='add'>+struct_test = Struct.new("Test", :foo, :bar)</div><div class='add'>+test_ok(struct_test == Struct::Test)</div><div class='add'>+</div><div class='add'>+test = struct_test.new(1, 2)</div><div class='add'>+test_ok(test.foo == 1 &amp;&amp; test.bar == 2)</div><div class='add'>+test_ok(test[0] == 1 &amp;&amp; test[1] == 2)</div><div class='add'>+</div><div class='add'>+a, b = test.to_a</div><div class='add'>+test_ok(a == 1 &amp;&amp; b == 2)</div><div class='add'>+</div><div class='add'>+test[0] = 22</div><div class='add'>+test_ok(test.foo == 22)</div><div class='add'>+</div><div class='add'>+test.bar = 47</div><div class='add'>+test_ok(test.bar == 47)</div><div class='add'>+</div><div class='add'>+test_check "variable"</div><div class='add'>+test_ok($$.instance_of?(Integer))</div><div class='add'>+</div><div class='add'>+# read-only variable</div><div class='add'>+begin</div><div class='add'>+  $$ = 5</div><div class='add'>+  test_ok false</div><div class='add'>+rescue NameError</div><div class='add'>+  test_ok true</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+foobar = "foobar"</div><div class='add'>+$_ = foobar</div><div class='add'>+test_ok($_ == foobar)</div><div class='add'>+</div><div class='add'>+class Gods</div><div class='add'>+  @@rule = "Uranus"		# private to Gods</div><div class='add'>+  def ruler0</div><div class='add'>+    @@rule</div><div class='add'>+  end</div><div class='add'>+</div><div class='add'>+  def self.ruler1		# &lt;= per method definition style</div><div class='add'>+    @@rule</div><div class='add'>+  end</div><div class='add'>+  class &lt;&lt; self			# &lt;= multiple method definition style</div><div class='add'>+    def ruler2</div><div class='add'>+      @@rule</div><div class='add'>+    end</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+module Olympians</div><div class='add'>+  @@rule ="Zeus"</div><div class='add'>+  def ruler3</div><div class='add'>+    @@rule</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+class Titans &lt; Gods</div><div class='add'>+  @@rule = "Cronus"		# do not affect @@rule in Gods</div><div class='add'>+  include Olympians</div><div class='add'>+  def ruler4</div><div class='add'>+    @@rule</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_ok(Gods.new.ruler0 == "Cronus")</div><div class='add'>+test_ok(Gods.ruler1 == "Cronus")</div><div class='add'>+test_ok(Gods.ruler2 == "Cronus")</div><div class='add'>+test_ok(Titans.ruler1 == "Cronus")</div><div class='add'>+test_ok(Titans.ruler2 == "Cronus")</div><div class='add'>+atlas = Titans.new</div><div class='add'>+test_ok(atlas.ruler0 == "Cronus")</div><div class='add'>+test_ok(atlas.ruler3 == "Zeus")</div><div class='add'>+test_ok(atlas.ruler4 == "Cronus")</div><div class='add'>+</div><div class='add'>+test_check "trace"</div><div class='add'>+$x = 1234</div><div class='add'>+$y = 0</div><div class='add'>+trace_var :$x, Proc.new{$y = $x}</div><div class='add'>+$x = 40414</div><div class='add'>+test_ok($y == $x)</div><div class='add'>+</div><div class='add'>+untrace_var :$x</div><div class='add'>+$x = 19660208</div><div class='add'>+test_ok($y != $x)</div><div class='add'>+</div><div class='add'>+trace_var :$x, Proc.new{$x *= 2}</div><div class='add'>+$x = 5</div><div class='add'>+test_ok($x == 10)</div><div class='add'>+</div><div class='add'>+untrace_var :$x</div><div class='add'>+</div><div class='add'>+test_check "defined?"</div><div class='add'>+</div><div class='add'>+test_ok(defined?($x))		# global variable</div><div class='add'>+test_ok(defined?($x) == 'global-variable')# returns description</div><div class='add'>+</div><div class='add'>+foo=5</div><div class='add'>+test_ok(defined?(foo))		# local variable</div><div class='add'>+</div><div class='add'>+test_ok(defined?(Array))	# constant</div><div class='add'>+test_ok(defined?(Object.new))	# method</div><div class='add'>+test_ok(!defined?(Object.print))# private method</div><div class='add'>+test_ok(defined?(1 == 2))	# operator expression</div><div class='add'>+</div><div class='add'>+class Foo</div><div class='add'>+  def foo</div><div class='add'>+    p :foo</div><div class='add'>+  end</div><div class='add'>+  protected :foo</div><div class='add'>+  def bar(f)</div><div class='add'>+    test_ok(defined?(self.foo))</div><div class='add'>+    test_ok(defined?(f.foo))</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+f = Foo.new</div><div class='add'>+test_ok(defined?(f.foo) == nil)</div><div class='add'>+f.bar(f)</div><div class='add'>+</div><div class='add'>+def defined_test</div><div class='add'>+  return !defined?(yield)</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+test_ok(defined_test)		# not iterator</div><div class='add'>+test_ok(!defined_test{})	# called as iterator</div><div class='add'>+</div><div class='add'>+test_check "alias"</div><div class='add'>+class Alias0</div><div class='add'>+  def foo; "foo" end</div><div class='add'>+end</div><div class='add'>+class Alias1&lt;Alias0</div><div class='add'>+  alias bar foo</div><div class='add'>+  def foo; "foo+" + super end</div><div class='add'>+end</div><div class='add'>+class Alias2&lt;Alias1</div><div class='add'>+  alias baz foo</div><div class='add'>+  undef foo</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+x = Alias2.new</div><div class='add'>+test_ok(x.bar == "foo")</div><div class='add'>+test_ok(x.baz == "foo+foo")</div><div class='add'>+</div><div class='add'>+# test_check for cache</div><div class='add'>+test_ok(x.baz == "foo+foo")</div><div class='add'>+</div><div class='add'>+class Alias3&lt;Alias2</div><div class='add'>+  def foo</div><div class='add'>+    defined? super</div><div class='add'>+  end</div><div class='add'>+  def bar</div><div class='add'>+    defined? super</div><div class='add'>+  end</div><div class='add'>+  def quux</div><div class='add'>+    defined? super</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+x = Alias3.new</div><div class='add'>+test_ok(!x.foo)</div><div class='add'>+test_ok(x.bar)</div><div class='add'>+test_ok(!x.quux)</div><div class='add'>+</div><div class='add'>+test_check "path"</div><div class='add'>+test_ok(File.basename("a") == "a")</div><div class='add'>+test_ok(File.basename("a/b") == "b")</div><div class='add'>+test_ok(File.basename("a/b/") == "b")</div><div class='add'>+test_ok(File.basename("/") == "/")</div><div class='add'>+test_ok(File.basename("//") == "/")</div><div class='add'>+test_ok(File.basename("///") == "/")</div><div class='add'>+test_ok(File.basename("a/b////") == "b")</div><div class='add'>+test_ok(File.basename("a.rb", ".rb") == "a")</div><div class='add'>+test_ok(File.basename("a.rb///", ".rb") == "a")</div><div class='add'>+test_ok(File.basename("a.rb///", ".*") == "a")</div><div class='add'>+test_ok(File.basename("a.rb///", ".c") == "a.rb")</div><div class='add'>+test_ok(File.dirname("a") == ".")</div><div class='add'>+test_ok(File.dirname("/") == "/")</div><div class='add'>+test_ok(File.dirname("/a") == "/")</div><div class='add'>+test_ok(File.dirname("a/b") == "a")</div><div class='add'>+test_ok(File.dirname("a/b/c") == "a/b")</div><div class='add'>+test_ok(File.dirname("/a/b/c") == "/a/b")</div><div class='add'>+test_ok(File.dirname("/a/b/") == "/a")</div><div class='add'>+test_ok(File.dirname("/a/b///") == "/a")</div><div class='add'>+case Dir.pwd</div><div class='add'>+when %r'\A\w:'</div><div class='add'>+  test_ok(/\A\w:\/\z/ =~ File.expand_path(".", "/"))</div><div class='add'>+  test_ok(/\A\w:\/a\z/ =~ File.expand_path("a", "/"))</div><div class='add'>+  dosish = true</div><div class='add'>+when %r'\A//'</div><div class='add'>+  test_ok(%r'\A//[^/]+/[^/]+\z' =~ File.expand_path(".", "/"))</div><div class='add'>+  test_ok(%r'\A//[^/]+/[^/]+/a\z' =~ File.expand_path(".", "/"))</div><div class='add'>+  dosish = true</div><div class='add'>+else</div><div class='add'>+  test_ok(File.expand_path(".", "/") == "/")</div><div class='add'>+  test_ok(File.expand_path("sub", "/") == "/sub")</div><div class='add'>+end</div><div class='add'>+if dosish</div><div class='add'>+  test_ok(File.expand_path("/", "//machine/share/sub") == "//machine/share")</div><div class='add'>+  test_ok(File.expand_path("/dir", "//machine/share/sub") == "//machine/share/dir")</div><div class='add'>+  test_ok(File.expand_path("/", "z:/sub") == "z:/")</div><div class='add'>+  test_ok(File.expand_path("/dir", "z:/sub") == "z:/dir")</div><div class='add'>+end</div><div class='add'>+test_ok(File.expand_path(".", "//") == "//")</div><div class='add'>+test_ok(File.expand_path("sub", "//") == "//sub")</div><div class='add'>+</div><div class='add'>+# test_check "Proc#binding"</div><div class='add'>+ObjectSpace.each_object(Proc){|o|</div><div class='add'>+  begin</div><div class='add'>+    b = o.binding</div><div class='add'>+    eval 'self', b</div><div class='add'>+  rescue ArgumentError</div><div class='add'>+  end</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+test_check "gc"</div><div class='add'>+begin</div><div class='add'>+  1.upto(10000) {</div><div class='add'>+    tmp = [0,1,2,3,4,5,6,7,8,9]</div><div class='add'>+  }</div><div class='add'>+  tmp = nil</div><div class='add'>+  test_ok true</div><div class='add'>+rescue</div><div class='add'>+  test_ok false</div><div class='add'>+end</div><div class='add'>+class S</div><div class='add'>+  def initialize(a)</div><div class='add'>+    @a = a</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+l=nil</div><div class='add'>+100000.times {</div><div class='add'>+  l = S.new(l)</div><div class='add'>+}</div><div class='add'>+GC.start</div><div class='add'>+test_ok true   # reach here or dumps core</div><div class='add'>+l = []</div><div class='add'>+100000.times {</div><div class='add'>+  l.push([l])</div><div class='add'>+}</div><div class='add'>+GC.start</div><div class='add'>+test_ok true   # reach here or dumps core</div><div class='add'>+</div><div class='add'>+ObjectSpace.each_object{|o|</div><div class='add'>+  o.class.name</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+test_ok true   # reach here or dumps core</div><div class='add'>+</div><div class='add'>+PROGRESS.finish</div><div class='add'>+if $failed &gt; 0</div><div class='add'>+  printf "not ok/test: %d failed %d\n", $ntest, $failed</div><div class='add'>+else</div><div class='add'>+  printf "end of test(test: %d)\n", $ntest</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_app_aobench.rb b/benchmark/bm_app_aobench.rb<br/>index ffab116fcd..2bd6acfaf8 100644<br/>--- a/<a href='/ruby.git/tree/benchmark/bm_app_aobench.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_app_aobench.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_app_aobench.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_app_aobench.rb</a></div><div class='hunk'>@@ -229,7 +229,7 @@ class Scene</div><div class='ctx'>       w.times do |x|</div><div class='ctx'>         rad = Vec.new(0.0, 0.0, 0.0)</div><div class='ctx'> </div><div class='del'>-        # Subsmpling</div><div class='add'>+        # Subsampling</div><div class='ctx'>         nsubsamples.times do |v|</div><div class='ctx'>           nsubsamples.times do |u|</div><div class='ctx'> </div><div class='head'>diff --git a/benchmark/bm_array_shift.rb b/benchmark/bm_array_shift.rb<br/>new file mode 100644<br/>index 0000000000..798bb9e3f4<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_array_shift.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_array_shift.rb</a></div><div class='hunk'>@@ -0,0 +1,14 @@</div><div class='add'>+require 'benchmark'</div><div class='add'>+</div><div class='add'>+Benchmark.bm do |x|</div><div class='add'>+  [10_000,1_000_000,100_000_000].each do |n|</div><div class='add'>+    ary = Array.new(n,0)</div><div class='add'>+    GC.start</div><div class='add'>+    x.report("#{n}:shift"){ ary.shift }</div><div class='add'>+    (0..4).each do |i|</div><div class='add'>+      ary = Array.new(n,0)</div><div class='add'>+      GC.start</div><div class='add'>+      x.report("#{n}:shift(#{i})"){ ary.shift(i) }</div><div class='add'>+    end</div><div class='add'>+  end</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_hash_aref_dsym.rb b/benchmark/bm_hash_aref_dsym.rb<br/>new file mode 100644<br/>index 0000000000..af4f8c36d4<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_hash_aref_dsym.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_hash_aref_dsym.rb</a></div><div class='hunk'>@@ -0,0 +1,4 @@</div><div class='add'>+h = {}</div><div class='add'>+syms = ('a'..'z').map { |s| s.to_sym }</div><div class='add'>+syms.each { |s| h[s] = 1 }</div><div class='add'>+200_000.times { syms.each { |s| h[s] } }</div><div class='head'>diff --git a/benchmark/bm_hash_aref_dsym_long.rb b/benchmark/bm_hash_aref_dsym_long.rb<br/>new file mode 100644<br/>index 0000000000..9d7759379e<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_hash_aref_dsym_long.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_hash_aref_dsym_long.rb</a></div><div class='hunk'>@@ -0,0 +1,21 @@</div><div class='add'>+# [ruby-core:70129] [Bug #11396]</div><div class='add'>+collection_size = 200000</div><div class='add'>+sample_size = 10000</div><div class='add'>+</div><div class='add'>+values = (1..collection_size).to_a.map do |x|</div><div class='add'>+  "THIS IS A LONGER STRING THAT IS ALSO UNIQUE #{x}"</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+symbol_hash = {}</div><div class='add'>+</div><div class='add'>+values.each do |x|</div><div class='add'>+  symbol_hash[x.to_sym] = 1</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+# use the same samples each time to minimize deviations</div><div class='add'>+rng = Random.new(0)</div><div class='add'>+symbol_sample_array = values.sample(sample_size, random: rng).map(&amp;:to_sym)</div><div class='add'>+</div><div class='add'>+3000.times do</div><div class='add'>+  symbol_sample_array.each { |x| symbol_hash[x] }</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_hash_aref_fix.rb b/benchmark/bm_hash_aref_fix.rb<br/>new file mode 100644<br/>index 0000000000..1346890582<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_hash_aref_fix.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_hash_aref_fix.rb</a></div><div class='hunk'>@@ -0,0 +1,4 @@</div><div class='add'>+h = {}</div><div class='add'>+nums = (1..26).to_a</div><div class='add'>+nums.each { |i| h[i] = i }</div><div class='add'>+200_000.times { nums.each { |s| h[s] } }</div><div class='head'>diff --git a/benchmark/bm_hash_shift_u16.rb b/benchmark/bm_hash_shift_u16.rb<br/>new file mode 100644<br/>index 0000000000..ec800d0342<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_hash_shift_u16.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_hash_shift_u16.rb</a></div><div class='hunk'>@@ -0,0 +1,10 @@</div><div class='add'>+h = {}</div><div class='add'>+</div><div class='add'>+(16384..65536).each do |i|</div><div class='add'>+  h[i] = nil</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+300000.times do</div><div class='add'>+  k, v = h.shift</div><div class='add'>+  h[k] = v</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_hash_shift_u24.rb b/benchmark/bm_hash_shift_u24.rb<br/>new file mode 100644<br/>index 0000000000..de4e0fa696<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_hash_shift_u24.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_hash_shift_u24.rb</a></div><div class='hunk'>@@ -0,0 +1,10 @@</div><div class='add'>+h = {}</div><div class='add'>+</div><div class='add'>+(0xff4000..0xffffff).each do |i|</div><div class='add'>+  h[i] = nil</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+300000.times do</div><div class='add'>+  k, v = h.shift</div><div class='add'>+  h[k] = v</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_hash_shift_u32.rb b/benchmark/bm_hash_shift_u32.rb<br/>new file mode 100644<br/>index 0000000000..656aa55583<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_hash_shift_u32.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_hash_shift_u32.rb</a></div><div class='hunk'>@@ -0,0 +1,10 @@</div><div class='add'>+h = {}</div><div class='add'>+</div><div class='add'>+(0xffff4000..0xffffffff).each do |i|</div><div class='add'>+  h[i] = nil</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+300000.times do</div><div class='add'>+  k, v = h.shift</div><div class='add'>+  h[k] = v</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_hash_to_proc.rb b/benchmark/bm_hash_to_proc.rb<br/>new file mode 100644<br/>index 0000000000..2b675bf509<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_hash_to_proc.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_hash_to_proc.rb</a></div><div class='hunk'>@@ -0,0 +1,9 @@</div><div class='add'>+h = {}</div><div class='add'>+</div><div class='add'>+10000.times do |i|</div><div class='add'>+  h[i] = nil</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+5000.times do |i|</div><div class='add'>+  [i].map(&amp;h)</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_io_nonblock_noex.rb b/benchmark/bm_io_nonblock_noex.rb<br/>new file mode 100644<br/>index 0000000000..da9357fdc6<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_io_nonblock_noex.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_io_nonblock_noex.rb</a></div><div class='hunk'>@@ -0,0 +1,22 @@</div><div class='add'>+nr = 1_000_000</div><div class='add'>+i = 0</div><div class='add'>+msg = '.'</div><div class='add'>+buf = '.'</div><div class='add'>+noex = { exception: false }</div><div class='add'>+begin</div><div class='add'>+  r, w = IO.pipe</div><div class='add'>+  while i &lt; nr</div><div class='add'>+    i += 1</div><div class='add'>+    w.write_nonblock(msg, noex)</div><div class='add'>+    r.read_nonblock(1, buf, noex)</div><div class='add'>+  end</div><div class='add'>+rescue ArgumentError # old Rubies</div><div class='add'>+  while i &lt; nr</div><div class='add'>+    i += 1</div><div class='add'>+    w.write_nonblock(msg)</div><div class='add'>+    r.read_nonblock(1, buf)</div><div class='add'>+  end</div><div class='add'>+ensure</div><div class='add'>+  r.close</div><div class='add'>+  w.close</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_io_nonblock_noex2.rb b/benchmark/bm_io_nonblock_noex2.rb<br/>new file mode 100644<br/>index 0000000000..56819d049b<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_io_nonblock_noex2.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_io_nonblock_noex2.rb</a></div><div class='hunk'>@@ -0,0 +1,21 @@</div><div class='add'>+nr = 1_000_000</div><div class='add'>+i = 0</div><div class='add'>+msg = '.'</div><div class='add'>+buf = '.'</div><div class='add'>+begin</div><div class='add'>+  r, w = IO.pipe</div><div class='add'>+  while i &lt; nr</div><div class='add'>+    i += 1</div><div class='add'>+    w.write_nonblock(msg, exception: false)</div><div class='add'>+    r.read_nonblock(1, buf, exception: false)</div><div class='add'>+  end</div><div class='add'>+rescue ArgumentError # old Rubies</div><div class='add'>+  while i &lt; nr</div><div class='add'>+    i += 1</div><div class='add'>+    w.write_nonblock(msg)</div><div class='add'>+    r.read_nonblock(1, buf)</div><div class='add'>+  end</div><div class='add'>+ensure</div><div class='add'>+  r.close</div><div class='add'>+  w.close</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_marshal_dump_load_geniv.rb b/benchmark/bm_marshal_dump_load_geniv.rb<br/>new file mode 100644<br/>index 0000000000..8252ad90fa<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_marshal_dump_load_geniv.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_marshal_dump_load_geniv.rb</a></div><div class='hunk'>@@ -0,0 +1,10 @@</div><div class='add'>+a = ''</div><div class='add'>+a.instance_eval do</div><div class='add'>+  @a = :a</div><div class='add'>+  @b = :b</div><div class='add'>+  @c = :c</div><div class='add'>+end</div><div class='add'>+100000.times do</div><div class='add'>+  a = Marshal.load(Marshal.dump(a))</div><div class='add'>+end</div><div class='add'>+#p(a.instance_eval { @a == :a &amp;&amp; @b == :b &amp;&amp; @c == :c })</div><div class='head'>diff --git a/benchmark/bm_marshal_dump_load_time.rb b/benchmark/bm_marshal_dump_load_time.rb<br/>new file mode 100644<br/>index 0000000000..e29743b791<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_marshal_dump_load_time.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_marshal_dump_load_time.rb</a></div><div class='hunk'>@@ -0,0 +1 @@</div><div class='add'>+100000.times { Marshal.load(Marshal.dump(Time.now)) }</div><div class='head'>diff --git a/benchmark/bm_require.rb b/benchmark/bm_require.rb<br/>new file mode 100644<br/>index 0000000000..b8abc88f41<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_require.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_require.rb</a></div><div class='hunk'>@@ -0,0 +1,7 @@</div><div class='add'>+$:.push File.join(File.dirname(__FILE__), "bm_require.data")</div><div class='add'>+</div><div class='add'>+1.upto(10000) do |i|</div><div class='add'>+  require "c#{i}"</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+$:.pop</div><div class='head'>diff --git a/benchmark/bm_require_thread.rb b/benchmark/bm_require_thread.rb<br/>new file mode 100644<br/>index 0000000000..e54db6c6e5<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_require_thread.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_require_thread.rb</a></div><div class='hunk'>@@ -0,0 +1,15 @@</div><div class='add'>+$:.push File.join(File.dirname(__FILE__), "bm_require.data")</div><div class='add'>+</div><div class='add'>+i=0</div><div class='add'>+t = Thread.new do</div><div class='add'>+  while true</div><div class='add'>+    i = i+1 # dummy loop</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+1.upto(100) do |i|</div><div class='add'>+  require "c#{i}"</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+$:.pop</div><div class='add'>+t.kill</div><div class='head'>diff --git a/benchmark/bm_so_meteor_contest.rb b/benchmark/bm_so_meteor_contest.rb<br/>index b8e93bd150..64a7d46afe 100644<br/>--- a/<a href='/ruby.git/tree/benchmark/bm_so_meteor_contest.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_so_meteor_contest.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_so_meteor_contest.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_so_meteor_contest.rb</a></div><div class='hunk'>@@ -260,7 +260,7 @@ end</div><div class='ctx'> </div><div class='ctx'> # support function that create three utility maps:</div><div class='ctx'> #  $converter -- for each row an array that maps a five bit row (via array mapping)</div><div class='del'>-#                to the a a five bit representation of the bits below it</div><div class='add'>+#                to the a five bit representation of the bits below it</div><div class='ctx'> #  $bit_count -- maps a five bit row (via array mapping) to the number of 1s in the row</div><div class='ctx'> #  @@new_regions -- maps a five bit row (via array mapping) to an array of "region" arrays</div><div class='ctx'> #                   a region array has three values the first is a mask of bits in the region,</div><div class='hunk'>@@ -467,7 +467,7 @@ def find_top( rotation_skip)</div><div class='ctx'> end</div><div class='ctx'> </div><div class='ctx'> # the normail find routine, iterates through the available pieces, checks all rotations at the current location</div><div class='del'>-# and adds any boards found.  depth is acheived via recursion.  the overall approach is described</div><div class='add'>+# and adds any boards found.  depth is achieved via recursion.  the overall approach is described</div><div class='ctx'> # here: http://www-128.ibm.com/developerworks/java/library/j-javaopt/</div><div class='ctx'> # parameters:</div><div class='ctx'> #  start_location -- where to start looking for place for the next piece at</div><div class='hunk'>@@ -561,4 +561,3 @@ create_collector_support</div><div class='ctx'> @boards_found = 0</div><div class='ctx'> </div><div class='ctx'> find_all ######## DO IT!!!</div><div class='del'>-</div><div class='head'>diff --git a/benchmark/bm_vm1_gc_wb_ary.rb b/benchmark/bm_vm1_gc_wb_ary.rb<br/>index ecfab51dbf..881528845b 100644<br/>--- a/<a href='/ruby.git/tree/benchmark/bm_vm1_gc_wb_ary.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm1_gc_wb_ary.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm1_gc_wb_ary.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm1_gc_wb_ary.rb</a></div><div class='hunk'>@@ -1,10 +1,12 @@</div><div class='del'>-long_lived = []</div><div class='del'>-GC.start</div><div class='del'>-GC.start</div><div class='add'>+short_lived_ary = []</div><div class='add'>+</div><div class='add'>+if RUBY_VERSION &gt;= "2.2.0"</div><div class='add'>+  GC.start(full_mark: false, immediate_mark: true, lazy_sweep: false)</div><div class='add'>+end</div><div class='ctx'> </div><div class='ctx'> i = 0</div><div class='ctx'> short_lived = ''</div><div class='ctx'> while i&lt;30_000_000 # while loop 1</div><div class='del'>-  long_lived[0] = short_lived # write barrier</div><div class='add'>+  short_lived_ary[0] = short_lived # write barrier</div><div class='ctx'>   i+=1</div><div class='ctx'> end</div><div class='head'>diff --git a/benchmark/bm_vm1_gc_wb_ary_promoted.rb b/benchmark/bm_vm1_gc_wb_ary_promoted.rb<br/>new file mode 100644<br/>index 0000000000..3c8279c956<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm1_gc_wb_ary_promoted.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm1_gc_wb_ary_promoted.rb</a></div><div class='hunk'>@@ -0,0 +1,14 @@</div><div class='add'>+long_lived = []</div><div class='add'>+</div><div class='add'>+if RUBY_VERSION &gt; "2.2.0"</div><div class='add'>+  3.times{ GC.start(full_mark: false, immediate_mark: true, lazy_sweep: false) }</div><div class='add'>+elsif</div><div class='add'>+  GC.start</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+i = 0</div><div class='add'>+short_lived = ''</div><div class='add'>+while i&lt;30_000_000 # while loop 1</div><div class='add'>+  long_lived[0] = short_lived # write barrier</div><div class='add'>+  i+=1</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm1_gc_wb_obj.rb b/benchmark/bm_vm1_gc_wb_obj.rb<br/>index 017eff4f94..a4067af36b 100644<br/>--- a/<a href='/ruby.git/tree/benchmark/bm_vm1_gc_wb_obj.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm1_gc_wb_obj.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm1_gc_wb_obj.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm1_gc_wb_obj.rb</a></div><div class='hunk'>@@ -1,13 +1,15 @@</div><div class='ctx'> class C</div><div class='ctx'>   attr_accessor :foo</div><div class='ctx'> end</div><div class='del'>-long_lived = C.new</div><div class='del'>-GC.start</div><div class='del'>-GC.start</div><div class='add'>+short_lived_obj = C.new</div><div class='add'>+</div><div class='add'>+if RUBY_VERSION &gt;= "2.2.0"</div><div class='add'>+  GC.start(full_mark: false, immediate_mark: true, lazy_sweep: false)</div><div class='add'>+end</div><div class='ctx'> </div><div class='ctx'> i = 0</div><div class='ctx'> short_lived = ''</div><div class='ctx'> while i&lt;30_000_000 # while loop 1</div><div class='del'>-  long_lived.foo = short_lived # write barrier</div><div class='add'>+  short_lived_obj.foo = short_lived # write barrier</div><div class='ctx'>   i+=1</div><div class='ctx'> end</div><div class='head'>diff --git a/benchmark/bm_vm1_gc_wb_obj_promoted.rb b/benchmark/bm_vm1_gc_wb_obj_promoted.rb<br/>new file mode 100644<br/>index 0000000000..eee07a0248<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm1_gc_wb_obj_promoted.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm1_gc_wb_obj_promoted.rb</a></div><div class='hunk'>@@ -0,0 +1,17 @@</div><div class='add'>+class C</div><div class='add'>+  attr_accessor :foo</div><div class='add'>+end</div><div class='add'>+long_lived = C.new</div><div class='add'>+</div><div class='add'>+if RUBY_VERSION &gt;= "2.2.0"</div><div class='add'>+  3.times{ GC.start(full_mark: false, immediate_mark: true, lazy_sweep: false) }</div><div class='add'>+elsif</div><div class='add'>+  GC.start</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+i = 0</div><div class='add'>+short_lived = ''</div><div class='add'>+while i&lt;30_000_000 # while loop 1</div><div class='add'>+  long_lived.foo = short_lived # write barrier</div><div class='add'>+  i+=1</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm2_case_lit.rb b/benchmark/bm_vm2_case_lit.rb<br/>new file mode 100644<br/>index 0000000000..c62b294e0e<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm2_case_lit.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm2_case_lit.rb</a></div><div class='hunk'>@@ -0,0 +1,19 @@</div><div class='add'>+i = 0</div><div class='add'>+@ret = [ "foo", true, false, :sym, 6, nil, 0.1, 0xffffffffffffffff ]</div><div class='add'>+def foo(i)</div><div class='add'>+  @ret[i % @ret.size]</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+while i&lt;6_000_000 # while loop 2</div><div class='add'>+  case foo(i)</div><div class='add'>+  when "foo" then :foo</div><div class='add'>+  when true then true</div><div class='add'>+  when false then false</div><div class='add'>+  when :sym then :sym</div><div class='add'>+  when 6 then :fix</div><div class='add'>+  when nil then nil</div><div class='add'>+  when 0.1 then :float</div><div class='add'>+  when 0xffffffffffffffff then :big</div><div class='add'>+  end</div><div class='add'>+  i += 1</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm2_mutex.rb b/benchmark/bm_vm2_mutex.rb<br/>index 7362f738c5..5d16480c6b 100644<br/>--- a/<a href='/ruby.git/tree/benchmark/bm_vm2_mutex.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm2_mutex.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm2_mutex.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm2_mutex.rb</a></div><div class='hunk'>@@ -1,6 +1,6 @@</div><div class='ctx'> require 'thread'</div><div class='ctx'> </div><div class='del'>-m = Mutex.new</div><div class='add'>+m = Thread::Mutex.new</div><div class='ctx'> </div><div class='ctx'> i = 0</div><div class='ctx'> while i&lt;6_000_000 # benchmark loop 2</div><div class='head'>diff --git a/benchmark/bm_vm2_string_literal.rb b/benchmark/bm_vm2_string_literal.rb<br/>new file mode 100644<br/>index 0000000000..1d73036849<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm2_string_literal.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm2_string_literal.rb</a></div><div class='hunk'>@@ -0,0 +1,5 @@</div><div class='add'>+i = 0</div><div class='add'>+while i&lt;6_000_000 # benchmark loop 2</div><div class='add'>+  i += 1</div><div class='add'>+  x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm2_struct_big_href_hi.rb b/benchmark/bm_vm2_struct_big_href_hi.rb<br/>new file mode 100644<br/>index 0000000000..fff940a80a<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm2_struct_big_href_hi.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm2_struct_big_href_hi.rb</a></div><div class='hunk'>@@ -0,0 +1,7 @@</div><div class='add'>+s = Struct.new(*('a'..'z').map { |x| x.to_sym })</div><div class='add'>+x = s.new</div><div class='add'>+i = 0</div><div class='add'>+while i&lt;6_000_000 # benchmark loop 2</div><div class='add'>+  i += 1</div><div class='add'>+  x[:z]</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm2_struct_big_href_lo.rb b/benchmark/bm_vm2_struct_big_href_lo.rb<br/>new file mode 100644<br/>index 0000000000..5e4085d59d<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm2_struct_big_href_lo.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm2_struct_big_href_lo.rb</a></div><div class='hunk'>@@ -0,0 +1,7 @@</div><div class='add'>+s = Struct.new(*('a'..'z').map { |x| x.to_sym })</div><div class='add'>+x = s.new</div><div class='add'>+i = 0</div><div class='add'>+while i&lt;6_000_000 # benchmark loop 2</div><div class='add'>+  i += 1</div><div class='add'>+  x[:k]</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm2_struct_big_hset.rb b/benchmark/bm_vm2_struct_big_hset.rb<br/>new file mode 100644<br/>index 0000000000..9c0cee4141<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm2_struct_big_hset.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm2_struct_big_hset.rb</a></div><div class='hunk'>@@ -0,0 +1,7 @@</div><div class='add'>+s = Struct.new(*('a'..'z').map { |x| x.to_sym })</div><div class='add'>+x = s.new</div><div class='add'>+i = 0</div><div class='add'>+while i&lt;6_000_000 # benchmark loop 2</div><div class='add'>+  i += 1</div><div class='add'>+  x[:k] = i</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm2_struct_small_href.rb b/benchmark/bm_vm2_struct_small_href.rb<br/>new file mode 100644<br/>index 0000000000..2c88fee6bf<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm2_struct_small_href.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm2_struct_small_href.rb</a></div><div class='hunk'>@@ -0,0 +1,7 @@</div><div class='add'>+s = Struct.new(:a, :b, :c)</div><div class='add'>+x = s.new</div><div class='add'>+i = 0</div><div class='add'>+while i&lt;6_000_000 # benchmark loop 2</div><div class='add'>+  i += 1</div><div class='add'>+  x[:a]</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm2_struct_small_hset.rb b/benchmark/bm_vm2_struct_small_hset.rb<br/>new file mode 100644<br/>index 0000000000..33c36d20f1<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm2_struct_small_hset.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm2_struct_small_hset.rb</a></div><div class='hunk'>@@ -0,0 +1,7 @@</div><div class='add'>+s = Struct.new(:a, :b, :c)</div><div class='add'>+x = s.new</div><div class='add'>+i = 0</div><div class='add'>+while i&lt;6_000_000 # benchmark loop 2</div><div class='add'>+  i += 1</div><div class='add'>+  x[:a] = 1</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm3_gc.rb b/benchmark/bm_vm3_gc.rb<br/>index 7db9829d44..e668026915 100755..100644<br/>--- a/<a href='/ruby.git/tree/benchmark/bm_vm3_gc.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm3_gc.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm3_gc.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm3_gc.rb</a></div><div class='hunk'>@@ -1,4 +1,3 @@</div><div class='del'>-#! /usr/bin/ruby</div><div class='ctx'> 5000.times do</div><div class='ctx'>   100.times do</div><div class='ctx'>     {"xxxx"=&gt;"yyyy"}</div><div class='head'>diff --git a/benchmark/bm_vm3_gc_old_full.rb b/benchmark/bm_vm3_gc_old_full.rb<br/>new file mode 100644<br/>index 0000000000..cfdfc8c5a5<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm3_gc_old_full.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm3_gc_old_full.rb</a></div><div class='hunk'>@@ -0,0 +1,4 @@</div><div class='add'>+old_object = Array.new(1_000_000){''}</div><div class='add'>+100.times do</div><div class='add'>+  GC.start</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm3_gc_old_immediate.rb b/benchmark/bm_vm3_gc_old_immediate.rb<br/>new file mode 100644<br/>index 0000000000..ad22feb655<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm3_gc_old_immediate.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm3_gc_old_immediate.rb</a></div><div class='hunk'>@@ -0,0 +1,4 @@</div><div class='add'>+old_object = Array.new(1_000_000){''}</div><div class='add'>+30_000.times do</div><div class='add'>+  GC.start(full_mark: false, immediate_sweep: true)</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm3_gc_old_lazy.rb b/benchmark/bm_vm3_gc_old_lazy.rb<br/>new file mode 100644<br/>index 0000000000..b74d44baf1<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm3_gc_old_lazy.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm3_gc_old_lazy.rb</a></div><div class='hunk'>@@ -0,0 +1,4 @@</div><div class='add'>+old_object = Array.new(1_000_000){''}</div><div class='add'>+30_000.times do</div><div class='add'>+  GC.start(full_mark: false, immediate_sweep: false)</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm_symbol_block_pass.rb b/benchmark/bm_vm_symbol_block_pass.rb<br/>new file mode 100644<br/>index 0000000000..1d433353e1<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm_symbol_block_pass.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm_symbol_block_pass.rb</a></div><div class='hunk'>@@ -0,0 +1,13 @@</div><div class='add'>+class C</div><div class='add'>+  1000.times {|i|</div><div class='add'>+    eval("def i#{i};end")</div><div class='add'>+  }</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+c = C.new</div><div class='add'>+m = C.instance_methods(false)</div><div class='add'>+5_000.times do</div><div class='add'>+  m.each do |n|</div><div class='add'>+    c.tap(&amp;n)</div><div class='add'>+  end</div><div class='add'>+end</div><div class='head'>diff --git a/benchmark/bm_vm_thread_mutex1.rb b/benchmark/bm_vm_thread_mutex1.rb<br/>index 5c9f85dfb7..66e42c85e1 100644<br/>--- a/<a href='/ruby.git/tree/benchmark/bm_vm_thread_mutex1.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm_thread_mutex1.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm_thread_mutex1.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm_thread_mutex1.rb</a></div><div class='hunk'>@@ -1,7 +1,7 @@</div><div class='ctx'> # one thread, one mutex (no contention)</div><div class='ctx'> </div><div class='ctx'> require 'thread'</div><div class='del'>-m = Mutex.new</div><div class='add'>+m = Thread::Mutex.new</div><div class='ctx'> r = 0</div><div class='ctx'> max = 2000</div><div class='ctx'> lmax = max * max</div><div class='head'>diff --git a/benchmark/bm_vm_thread_mutex2.rb b/benchmark/bm_vm_thread_mutex2.rb<br/>index 10de59054f..6e6c804c31 100644<br/>--- a/<a href='/ruby.git/tree/benchmark/bm_vm_thread_mutex2.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm_thread_mutex2.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm_thread_mutex2.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm_thread_mutex2.rb</a></div><div class='hunk'>@@ -1,7 +1,7 @@</div><div class='ctx'> # two threads, one mutex</div><div class='ctx'> </div><div class='ctx'> require 'thread'</div><div class='del'>-m = Mutex.new</div><div class='add'>+m = Thread::Mutex.new</div><div class='ctx'> r = 0</div><div class='ctx'> max = 2000</div><div class='ctx'> lmax = (max * max)/2</div><div class='head'>diff --git a/benchmark/bm_vm_thread_mutex3.rb b/benchmark/bm_vm_thread_mutex3.rb<br/>index 7f9a44b39d..c750dc542a 100644<br/>--- a/<a href='/ruby.git/tree/benchmark/bm_vm_thread_mutex3.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm_thread_mutex3.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm_thread_mutex3.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm_thread_mutex3.rb</a></div><div class='hunk'>@@ -1,7 +1,7 @@</div><div class='ctx'> # 1000 threads, one mutex</div><div class='ctx'> </div><div class='ctx'> require 'thread'</div><div class='del'>-m = Mutex.new</div><div class='add'>+m = Thread::Mutex.new</div><div class='ctx'> r = 0</div><div class='ctx'> max = 2000</div><div class='ctx'> (1..max).map{</div><div class='head'>diff --git a/benchmark/bm_vm_thread_pipe.rb b/benchmark/bm_vm_thread_pipe.rb<br/>index 272d231eba..112a621905 100644<br/>--- a/<a href='/ruby.git/tree/benchmark/bm_vm_thread_pipe.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm_thread_pipe.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm_thread_pipe.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm_thread_pipe.rb</a></div><div class='hunk'>@@ -1,4 +1,4 @@</div><div class='del'>-# Mesure small and plenty pipe read/write.</div><div class='add'>+# Measure small and plenty pipe read/write.</div><div class='ctx'> # A performance may depend on GVL implementation.</div><div class='ctx'> </div><div class='ctx'> lmax = 100_000</div><div class='head'>diff --git a/benchmark/bm_vm_thread_queue.rb b/benchmark/bm_vm_thread_queue.rb<br/>index 37381ae62b..274ceda366 100644<br/>--- a/<a href='/ruby.git/tree/benchmark/bm_vm_thread_queue.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/bm_vm_thread_queue.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/bm_vm_thread_queue.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/bm_vm_thread_queue.rb</a></div><div class='hunk'>@@ -1,7 +1,7 @@</div><div class='ctx'> require 'thread'</div><div class='ctx'> </div><div class='ctx'> n = 1_000_000</div><div class='del'>-q = Queue.new</div><div class='add'>+q = Thread::Queue.new</div><div class='ctx'> consumer = Thread.new{</div><div class='ctx'>   while q.pop</div><div class='ctx'>     # consuming</div><div class='head'>diff --git a/benchmark/driver.rb b/benchmark/driver.rb<br/>index 3904e25503..eb976b4a90 100644<br/>--- a/<a href='/ruby.git/tree/benchmark/driver.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>benchmark/driver.rb</a><br/>+++ b/<a href='/ruby.git/tree/benchmark/driver.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/driver.rb</a></div><div class='hunk'>@@ -18,6 +18,7 @@ end</div><div class='ctx'> </div><div class='ctx'> require 'benchmark'</div><div class='ctx'> require 'pp'</div><div class='add'>+require 'tempfile'</div><div class='ctx'> </div><div class='ctx'> class BenchmarkDriver</div><div class='ctx'>   def self.benchmark(opt)</div><div class='hunk'>@@ -29,6 +30,24 @@ class BenchmarkDriver</div><div class='ctx'>     end</div><div class='ctx'>   end</div><div class='ctx'> </div><div class='add'>+  def self.load(input, type, opt)</div><div class='add'>+    case type</div><div class='add'>+    when 'yaml'</div><div class='add'>+      require 'yaml'</div><div class='add'>+      h = YAML.load(input)</div><div class='add'>+    when 'json'</div><div class='add'>+      require 'json'</div><div class='add'>+      h = JSON.load(input)</div><div class='add'>+    else</div><div class='add'>+      h = eval(input.read)</div><div class='add'>+    end</div><div class='add'>+    obj = allocate</div><div class='add'>+    obj.instance_variable_set("@execs", h[:executables] || h["executables"])</div><div class='add'>+    obj.instance_variable_set("@results", h[:results] || h["results"])</div><div class='add'>+    obj.instance_variable_set("@opt", opt)</div><div class='add'>+    obj</div><div class='add'>+  end</div><div class='add'>+</div><div class='ctx'>   def output *args</div><div class='ctx'>     puts(*args)</div><div class='ctx'>     @output and @output.puts(*args)</div><div class='hunk'>@@ -77,9 +96,9 @@ class BenchmarkDriver</div><div class='ctx'>     @exclude = opt[:exclude] || nil</div><div class='ctx'>     @verbose = opt[:quiet] ? false : (opt[:verbose] || false)</div><div class='ctx'>     @output = opt[:output] ? open(opt[:output], 'w') : nil</div><div class='del'>-    @rawdata_output = opt[:rawdata_output] ? open(opt[:rawdata_output], 'w') : nil</div><div class='ctx'>     @loop_wl1 = @loop_wl2 = nil</div><div class='ctx'>     @ruby_arg = opt[:ruby_arg] || nil</div><div class='add'>+    @measure_target = opt[:measure_target]</div><div class='ctx'>     @opt = opt</div><div class='ctx'> </div><div class='ctx'>     # [[name, [[r-1-1, r-1-2, ...], [r-2-1, r-2-2, ...]]], ...]</div><div class='hunk'>@@ -91,6 +110,7 @@ class BenchmarkDriver</div><div class='ctx'>       @execs.each_with_index{|(path, label, version), i|</div><div class='ctx'>         message "target #{i}: " + (label == version ? "#{label}" : "#{label} (#{version})") + " at \"#{path}\""</div><div class='ctx'>       }</div><div class='add'>+      message "measure target: #{@measure_target}"</div><div class='ctx'>     end</div><div class='ctx'>   end</div><div class='ctx'> </div><div class='hunk'>@@ -118,6 +138,25 @@ class BenchmarkDriver</div><div class='ctx'>   end</div><div class='ctx'> </div><div class='ctx'>   def show_results</div><div class='add'>+    case @opt[:format]</div><div class='add'>+    when :tsv</div><div class='add'>+      strformat = "\t%1$s"</div><div class='add'>+      numformat = "\t%1$*2$.3f"</div><div class='add'>+      minwidth = 0</div><div class='add'>+      name_width = 0</div><div class='add'>+    when :markdown</div><div class='add'>+      markdown = true</div><div class='add'>+      strformat = "|%1$-*2$s"</div><div class='add'>+      numformat = "|%1$*2$.3f"</div><div class='add'>+    when :plain</div><div class='add'>+      strformat = " %1$-*2$s"</div><div class='add'>+      numformat = " %1$*2$.3f"</div><div class='add'>+    end</div><div class='add'>+</div><div class='add'>+    name_width ||= @results.map {|v,*| v.size}.max</div><div class='add'>+    minwidth ||= 7</div><div class='add'>+    width = @execs.map{|(_, v)| [v.size, minwidth].max}</div><div class='add'>+</div><div class='ctx'>     output</div><div class='ctx'> </div><div class='ctx'>     if @verbose</div><div class='hunk'>@@ -129,12 +168,27 @@ class BenchmarkDriver</div><div class='ctx'>       message "Elapsed time: #{Time.now - @start_time} (sec)"</div><div class='ctx'>     end</div><div class='ctx'> </div><div class='del'>-    if @rawdata_output</div><div class='add'>+    if rawdata_output = @opt[:rawdata_output]</div><div class='ctx'>       h = {}</div><div class='ctx'>       h[:cpuinfo] = File.read('/proc/cpuinfo') if File.exist?('/proc/cpuinfo')</div><div class='ctx'>       h[:executables] = @execs</div><div class='ctx'>       h[:results] = @results</div><div class='del'>-      @rawdata_output.puts h.inspect</div><div class='add'>+      if (type = File.extname(rawdata_output)).empty?</div><div class='add'>+        type = rawdata_output</div><div class='add'>+        rawdata_output = @output.path.sub(/\.[^.\/]+\z/, '') &lt;&lt; '.' &lt;&lt; rawdata_output</div><div class='add'>+      end</div><div class='add'>+      case type</div><div class='add'>+      when 'yaml'</div><div class='add'>+        require 'yaml'</div><div class='add'>+        h = YAML.dump(h)</div><div class='add'>+      when 'json'</div><div class='add'>+        require 'json'</div><div class='add'>+        h = JSON.pretty_generate(h)</div><div class='add'>+      else</div><div class='add'>+        require 'pp'</div><div class='add'>+        h = h.pretty_inspect</div><div class='add'>+      end</div><div class='add'>+      open(rawdata_output, 'w') {|f| f.puts h}</div><div class='ctx'>     end</div><div class='ctx'> </div><div class='ctx'>     output '-----------------------------------------------------------'</div><div class='hunk'>@@ -144,20 +198,33 @@ class BenchmarkDriver</div><div class='ctx'>       output "minimum results in each #{@repeat} measurements."</div><div class='ctx'>     end</div><div class='ctx'> </div><div class='del'>-    output "Execution time (sec)"</div><div class='del'>-    output "name\t#{@execs.map{|(_, v)| v}.join("\t")}"</div><div class='add'>+    output({</div><div class='add'>+      real: "Execution time (sec)",</div><div class='add'>+      peak: "Memory usage (peak) (B)",</div><div class='add'>+      size: "Memory usage (last size) (B)",</div><div class='add'>+    }[@measure_target])</div><div class='add'>+    output if markdown</div><div class='add'>+    output ["name".ljust(name_width), @execs.map.with_index{|(_, v), i| sprintf(strformat, v, width[i])}].join("").rstrip</div><div class='add'>+    output ["-"*name_width, width.map{|n|":".rjust(n, "-")}].join("|") if markdown</div><div class='ctx'>     @results.each{|v, result|</div><div class='ctx'>       rets = []</div><div class='ctx'>       s = adjusted_results(v, result){|r|</div><div class='del'>-        rets &lt;&lt; sprintf("%.3f", r)</div><div class='add'>+        rets &lt;&lt; sprintf(numformat, r, width[rets.size])</div><div class='ctx'>       }</div><div class='del'>-      output "#{v}#{s}\t#{rets.join("\t")}"</div><div class='add'>+      v += s if s</div><div class='add'>+      output [v.ljust(name_width), rets].join("")</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     if @execs.size &gt; 1</div><div class='ctx'>       output</div><div class='del'>-      output "Speedup ratio: compare with the result of `#{@execs[0][1]}' (greater is better)"</div><div class='del'>-      output "name\t#{@execs[1..-1].map{|(_, v)| v}.join("\t")}"</div><div class='add'>+      output({</div><div class='add'>+        real: "Speedup ratio: compare with the result of `#{@execs[0][1]}' (greater is better)",</div><div class='add'>+        peak: "Memory consuming ratio (peak) with the result of `#{@execs[0][1]}' (greater is better)",</div><div class='add'>+        size: "Memory consuming ratio (size) with the result of `#{@execs[0][1]}' (greater is better)",</div><div class='add'>+      }[@measure_target])</div><div class='add'>+      output if markdown</div><div class='add'>+      output ["name".ljust(name_width), @execs[1..-1].map.with_index{|(_, v), i| sprintf(strformat, v, width[i])}].join("").rstrip</div><div class='add'>+      output ["-"*name_width, width[1..-1].map{|n|":".rjust(n, "-")}].join("|") if markdown</div><div class='ctx'>       @results.each{|v, result|</div><div class='ctx'>         rets = []</div><div class='ctx'>         first_value = nil</div><div class='hunk'>@@ -166,13 +233,14 @@ class BenchmarkDriver</div><div class='ctx'>             if r == 0</div><div class='ctx'>               rets &lt;&lt; "Error"</div><div class='ctx'>             else</div><div class='del'>-              rets &lt;&lt; sprintf("%.3f", first_value/r)</div><div class='add'>+              rets &lt;&lt; sprintf(numformat, first_value/Float(r), width[rets.size+1])</div><div class='ctx'>             end</div><div class='ctx'>           else</div><div class='ctx'>             first_value = r</div><div class='ctx'>           end</div><div class='ctx'>         }</div><div class='del'>-        output "#{v}#{s}\t#{rets.join("\t")}"</div><div class='add'>+        v += s if s</div><div class='add'>+        output [v.ljust(name_width), rets].join("")</div><div class='ctx'>       }</div><div class='ctx'>     end</div><div class='ctx'> </div><div class='hunk'>@@ -254,17 +322,30 @@ class BenchmarkDriver</div><div class='ctx'>   end</div><div class='ctx'> </div><div class='ctx'>   def measure executable, file</div><div class='del'>-    cmd = "#{executable} #{@ruby_arg} #{file}"</div><div class='del'>-</div><div class='del'>-    m = Benchmark.measure{</div><div class='add'>+    case @measure_target</div><div class='add'>+    when :real</div><div class='add'>+      cmd = "#{executable} #{@ruby_arg} #{file}"</div><div class='add'>+      m = Benchmark.measure{</div><div class='add'>+        system(cmd, out: File::NULL)</div><div class='add'>+      }</div><div class='add'>+      result = m.real</div><div class='add'>+    when :peak, :size</div><div class='add'>+      tmp = Tempfile.new("benchmark-memory-wrapper-data")</div><div class='add'>+      wrapper = "#{File.join(__dir__, 'memory_wrapper.rb')} #{tmp.path} #{@measure_target}"</div><div class='add'>+      cmd = "#{executable} #{@ruby_arg} #{wrapper} #{file}"</div><div class='ctx'>       system(cmd, out: File::NULL)</div><div class='del'>-    }</div><div class='add'>+      result = tmp.read.to_i</div><div class='add'>+      tmp.close</div><div class='add'>+    else</div><div class='add'>+      raise "unknown measure target"</div><div class='add'>+    end</div><div class='ctx'> </div><div class='ctx'>     if $? != 0</div><div class='add'>+      raise $?.inspect if $? &amp;&amp; $?.signaled?</div><div class='ctx'>       output "\`#{cmd}\' exited with abnormal status (#{$?})"</div><div class='ctx'>       0</div><div class='ctx'>     else</div><div class='del'>-      m.real</div><div class='add'>+      result</div><div class='ctx'>     end</div><div class='ctx'>   end</div><div class='ctx'> end</div><div class='hunk'>@@ -274,8 +355,15 @@ if __FILE__ == $0</div><div class='ctx'>     :execs =&gt; [],</div><div class='ctx'>     :dir =&gt; File.dirname(__FILE__),</div><div class='ctx'>     :repeat =&gt; 1,</div><div class='del'>-    :output =&gt; "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}",</div><div class='del'>-    :raw_output =&gt; nil</div><div class='add'>+    :measure_target =&gt; :real,</div><div class='add'>+    :output =&gt; nil,</div><div class='add'>+    :raw_output =&gt; nil,</div><div class='add'>+    :format =&gt; :tsv,</div><div class='add'>+  }</div><div class='add'>+  formats = {</div><div class='add'>+    :tsv =&gt; ".tsv",</div><div class='add'>+    :markdown =&gt; ".md",</div><div class='add'>+    :plain =&gt; ".txt",</div><div class='ctx'>   }</div><div class='ctx'> </div><div class='ctx'>   parser = OptionParser.new{|o|</div><div class='hunk'>@@ -303,9 +391,18 @@ if __FILE__ == $0</div><div class='ctx'>     o.on('--ruby-arg [ARG]', "Optional argument for ruby"){|a|</div><div class='ctx'>       opt[:ruby_arg] = a</div><div class='ctx'>     }</div><div class='add'>+    o.on('--measure-target [TARGET]', 'real (execution time), peak, size (memory)'){|mt|</div><div class='add'>+      opt[:measure_target] = mt.to_sym</div><div class='add'>+    }</div><div class='ctx'>     o.on('--rawdata-output [FILE]', 'output rawdata'){|r|</div><div class='ctx'>       opt[:rawdata_output] = r</div><div class='ctx'>     }</div><div class='add'>+    o.on('--load-rawdata=FILE', 'input rawdata'){|r|</div><div class='add'>+      opt[:rawdata_input] = r</div><div class='add'>+    }</div><div class='add'>+    o.on('-f', "--format=FORMAT", "output format (#{formats.keys.join(",")})", formats.keys){|r|</div><div class='add'>+      opt[:format] = r</div><div class='add'>+    }</div><div class='ctx'>     o.on('-v', '--verbose'){|v|</div><div class='ctx'>       opt[:verbose] = v</div><div class='ctx'>     }</div><div class='hunk'>@@ -316,6 +413,15 @@ if __FILE__ == $0</div><div class='ctx'>   }</div><div class='ctx'> </div><div class='ctx'>   parser.parse!(ARGV)</div><div class='del'>-  BenchmarkDriver.benchmark(opt)</div><div class='add'>+  opt[:output] ||= "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}#{formats[opt[:format]]}"</div><div class='add'>+</div><div class='add'>+  if input = opt[:rawdata_input]</div><div class='add'>+    b = open(input) {|f|</div><div class='add'>+      BenchmarkDriver.load(f, File.extname(input)[1..-1], opt)</div><div class='add'>+    }</div><div class='add'>+    b.show_results</div><div class='add'>+  else</div><div class='add'>+    BenchmarkDriver.benchmark(opt)</div><div class='add'>+  end</div><div class='ctx'> end</div><div class='ctx'> </div><div class='head'>diff --git a/benchmark/memory_wrapper.rb b/benchmark/memory_wrapper.rb<br/>new file mode 100644<br/>index 0000000000..3f4451a037<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/memory_wrapper.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/memory_wrapper.rb</a></div><div class='hunk'>@@ -0,0 +1,16 @@</div><div class='add'>+</div><div class='add'>+write_file, target, script_file = ARGV</div><div class='add'>+</div><div class='add'>+load(script_file)</div><div class='add'>+require_relative '../test/lib/memory_status'</div><div class='add'>+open(write_file, 'wb'){|f|</div><div class='add'>+  ms = Memory::Status.new</div><div class='add'>+  case target.to_sym</div><div class='add'>+  when :peak</div><div class='add'>+    key = ms.respond_to?(:hwm) ? :hwm : :peak</div><div class='add'>+  when :size</div><div class='add'>+    key = ms.respond_to?(:rss) ? :rss : :size</div><div class='add'>+  end</div><div class='add'>+</div><div class='add'>+  f.puts ms[key]</div><div class='add'>+}</div><div class='head'>diff --git a/benchmark/prepare_require.rb b/benchmark/prepare_require.rb<br/>new file mode 100644<br/>index 0000000000..c4786f04ad<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/prepare_require.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/prepare_require.rb</a></div><div class='hunk'>@@ -0,0 +1,25 @@</div><div class='add'>+require "fileutils"</div><div class='add'>+</div><div class='add'>+def prepare</div><div class='add'>+  num_files = 10000</div><div class='add'>+</div><div class='add'>+  basename = File.dirname($0)</div><div class='add'>+  data_dir = File.join(basename, "bm_require.data")</div><div class='add'>+</div><div class='add'>+  # skip if all of files exists</div><div class='add'>+  if File.exist?(File.join(data_dir, "c#{num_files}.rb"))</div><div class='add'>+    return</div><div class='add'>+  end</div><div class='add'>+</div><div class='add'>+  FileUtils.mkdir_p(data_dir)</div><div class='add'>+</div><div class='add'>+  1.upto(num_files) do |i|</div><div class='add'>+    f = File.open("#{data_dir}/c#{i}.rb", "w")</div><div class='add'>+    f.puts &lt;&lt;-END</div><div class='add'>+      class C#{i}</div><div class='add'>+      end</div><div class='add'>+    END</div><div class='add'>+  end</div><div class='add'>+end</div><div class='add'>+</div><div class='add'>+prepare</div><div class='head'>diff --git a/benchmark/prepare_require_thread.rb b/benchmark/prepare_require_thread.rb<br/>new file mode 100644<br/>index 0000000000..339ecb8b39<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/benchmark/prepare_require_thread.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>benchmark/prepare_require_thread.rb</a></div><div class='hunk'>@@ -0,0 +1,2 @@</div><div class='add'>+load File.join(File.dirname(__FILE__), "prepare_require.rb")</div><div class='add'>+</div><div class='head'>diff --git a/bignum.c b/bignum.c<br/>index dfbe2ecec9..741fa2d21e 100644<br/>--- a/<a href='/ruby.git/tree/bignum.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>bignum.c</a><br/>+++ b/<a href='/ruby.git/tree/bignum.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>bignum.c</a></div><div class='hunk'>@@ -22,7 +22,7 @@</div><div class='ctx'> #ifdef HAVE_IEEEFP_H</div><div class='ctx'> #include &lt;ieeefp.h&gt;</div><div class='ctx'> #endif</div><div class='del'>-#include &lt;assert.h&gt;</div><div class='add'>+#include "ruby_assert.h"</div><div class='ctx'> </div><div class='ctx'> #if defined(HAVE_LIBGMP) &amp;&amp; defined(HAVE_GMP_H)</div><div class='ctx'> #define USE_GMP</div><div class='hunk'>@@ -31,7 +31,9 @@</div><div class='ctx'> </div><div class='ctx'> #define RB_BIGNUM_TYPE_P(x) RB_TYPE_P((x), T_BIGNUM)</div><div class='ctx'> </div><div class='add'>+#ifndef RUBY_INTEGER_UNIFICATION</div><div class='ctx'> VALUE rb_cBignum;</div><div class='add'>+#endif</div><div class='ctx'> const char ruby_digitmap[] = "0123456789abcdefghijklmnopqrstuvwxyz";</div><div class='ctx'> </div><div class='ctx'> #ifndef SIZEOF_BDIGIT_DBL</div><div class='hunk'>@@ -98,7 +100,6 @@ STATIC_ASSERT(sizeof_long_and_sizeof_bdigit, SIZEOF_BDIGIT % SIZEOF_LONG == 0);</div><div class='ctx'>     rb_absint_size(x, NULL))</div><div class='ctx'> </div><div class='ctx'> #define BIGDIVREM_EXTRA_WORDS 1</div><div class='del'>-#define roomof(n, m) ((long)(((n)+(m)-1) / (m)))</div><div class='ctx'> #define bdigit_roomof(n) roomof(n, SIZEOF_BDIGIT)</div><div class='ctx'> #define BARY_ARGS(ary) ary, numberof(ary)</div><div class='ctx'> </div><div class='hunk'>@@ -111,7 +112,7 @@ STATIC_ASSERT(sizeof_long_and_sizeof_bdigit, SIZEOF_BDIGIT % SIZEOF_LONG == 0);</div><div class='ctx'> #define BIGNUM_SET_NEGATIVE_SIGN(b) BIGNUM_SET_SIGN(b, 0)</div><div class='ctx'> #define BIGNUM_SET_POSITIVE_SIGN(b) BIGNUM_SET_SIGN(b, 1)</div><div class='ctx'> </div><div class='del'>-#define bignew(len,sign) bignew_1(rb_cBignum,(len),(sign))</div><div class='add'>+#define bignew(len,sign) bignew_1(rb_cInteger,(len),(sign))</div><div class='ctx'> </div><div class='ctx'> #define BDIGITS_ZERO(ptr, n) do { \</div><div class='ctx'>   BDIGIT *bdigitz_zero_ptr = (ptr); \</div><div class='hunk'>@@ -173,7 +174,7 @@ static int nlz(BDIGIT x) { return nlz_int128((uint128_t)x) - (SIZEOF_INT128_T-SI</div><div class='ctx'> #define U128(a,b,c,d) (((uint128_t)U64(a,b) &lt;&lt; 64) | U64(c,d))</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='del'>-/* The following scirpt, maxpow.rb, generates the tables follows.</div><div class='add'>+/* The following script, maxpow.rb, generates the tables follows.</div><div class='ctx'> </div><div class='ctx'> def big(n, bits)</div><div class='ctx'>   ns = []</div><div class='hunk'>@@ -2979,7 +2980,7 @@ static VALUE</div><div class='ctx'> bignew_1(VALUE klass, size_t len, int sign)</div><div class='ctx'> {</div><div class='ctx'>     NEWOBJ_OF(big, struct RBignum, klass, T_BIGNUM | (RGENGC_WB_PROTECTED_BIGNUM ? FL_WB_PROTECTED : 0));</div><div class='del'>-    BIGNUM_SET_SIGN(big, sign?1:0);</div><div class='add'>+    BIGNUM_SET_SIGN(big, sign);</div><div class='ctx'>     if (len &lt;= BIGNUM_EMBED_LEN_MAX) {</div><div class='ctx'> 	RBASIC(big)-&gt;flags |= BIGNUM_EMBED_FLAG;</div><div class='ctx'> 	BIGNUM_SET_LEN(big, len);</div><div class='hunk'>@@ -3175,7 +3176,7 @@ rb_int2big(SIGNED_VALUE n)</div><div class='ctx'>     }</div><div class='ctx'>     big = rb_uint2big(u);</div><div class='ctx'>     if (neg) {</div><div class='del'>-	BIGNUM_SET_SIGN(big, 0);</div><div class='add'>+	BIGNUM_SET_NEGATIVE_SIGN(big);</div><div class='ctx'>     }</div><div class='ctx'>     return big;</div><div class='ctx'> }</div><div class='hunk'>@@ -3686,16 +3687,44 @@ rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t na</div><div class='ctx'> </div><div class='ctx'> #define conv_digit(c) (ruby_digit36_to_number_table[(unsigned char)(c)])</div><div class='ctx'> </div><div class='del'>-static void</div><div class='del'>-str2big_scan_digits(const char *s, const char *str, int base, int badcheck, size_t *num_digits_p, size_t *len_p)</div><div class='add'>+NORETURN(static inline void invalid_radix(int base));</div><div class='add'>+NORETURN(static inline void invalid_integer(VALUE s));</div><div class='add'>+</div><div class='add'>+static inline int</div><div class='add'>+valid_radix_p(int base)</div><div class='add'>+{</div><div class='add'>+    return (1 &lt; base &amp;&amp; base &lt;= 36);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static inline void</div><div class='add'>+invalid_radix(int base)</div><div class='add'>+{</div><div class='add'>+    rb_raise(rb_eArgError, "invalid radix %d", base);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static inline void</div><div class='add'>+invalid_integer(VALUE s)</div><div class='add'>+{</div><div class='add'>+    rb_raise(rb_eArgError, "invalid value for Integer(): %+"PRIsVALUE, s);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static int</div><div class='add'>+str2big_scan_digits(const char *s, const char *str, int base, int badcheck, size_t *num_digits_p, ssize_t *len_p)</div><div class='ctx'> {</div><div class='ctx'>     char nondigit = 0;</div><div class='ctx'>     size_t num_digits = 0;</div><div class='ctx'>     const char *digits_start = str;</div><div class='ctx'>     const char *digits_end = str;</div><div class='add'>+    ssize_t len = *len_p;</div><div class='ctx'> </div><div class='ctx'>     int c;</div><div class='ctx'> </div><div class='add'>+    if (!len) {</div><div class='add'>+	*num_digits_p = 0;</div><div class='add'>+	*len_p = 0;</div><div class='add'>+	return TRUE;</div><div class='add'>+    }</div><div class='add'>+</div><div class='ctx'>     if (badcheck &amp;&amp; *str == '_') goto bad;</div><div class='ctx'> </div><div class='ctx'>     while ((c = *str++) != 0) {</div><div class='hunk'>@@ -3705,27 +3734,32 @@ str2big_scan_digits(const char *s, const char *str, int base, int badcheck, size</div><div class='ctx'> 		break;</div><div class='ctx'> 	    }</div><div class='ctx'> 	    nondigit = (char) c;</div><div class='del'>-	    continue;</div><div class='ctx'> 	}</div><div class='del'>-	else if ((c = conv_digit(c)) &lt; 0) {</div><div class='add'>+	else if ((c = conv_digit(c)) &lt; 0 || c &gt;= base) {</div><div class='ctx'> 	    break;</div><div class='ctx'> 	}</div><div class='del'>-	if (c &gt;= base) break;</div><div class='del'>-	nondigit = 0;</div><div class='del'>-        num_digits++;</div><div class='del'>-        digits_end = str;</div><div class='add'>+	else {</div><div class='add'>+	    nondigit = 0;</div><div class='add'>+	    num_digits++;</div><div class='add'>+	    digits_end = str;</div><div class='add'>+	}</div><div class='add'>+	if (len &gt; 0 &amp;&amp; !--len) break;</div><div class='ctx'>     }</div><div class='del'>-    if (badcheck) {</div><div class='add'>+    if (badcheck &amp;&amp; nondigit) goto bad;</div><div class='add'>+    if (badcheck &amp;&amp; len) {</div><div class='ctx'> 	str--;</div><div class='del'>-	if (s+1 &lt; str &amp;&amp; str[-1] == '_') goto bad;</div><div class='del'>-	while (*str &amp;&amp; ISSPACE(*str)) str++;</div><div class='del'>-	if (*str) {</div><div class='add'>+	while (*str &amp;&amp; ISSPACE(*str)) {</div><div class='add'>+	    str++;</div><div class='add'>+	    if (len &gt; 0 &amp;&amp; !--len) break;</div><div class='add'>+	}</div><div class='add'>+	if (len &amp;&amp; *str) {</div><div class='ctx'> 	  bad:</div><div class='del'>-	    rb_invalid_str(s, "Integer()");</div><div class='add'>+	    return FALSE;</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'>     *num_digits_p = num_digits;</div><div class='ctx'>     *len_p = digits_end - digits_start;</div><div class='add'>+    return TRUE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static VALUE</div><div class='hunk'>@@ -3940,59 +3974,111 @@ str2big_gmp(</div><div class='ctx'> }</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='add'>+/*</div><div class='add'>+ * Parse +str+ as Ruby Integer, i.e., underscores, 0d and 0b prefixes.</div><div class='add'>+ *</div><div class='add'>+ * str:      pointer to the string to be parsed.</div><div class='add'>+ *	     should be NUL-terminated.</div><div class='add'>+ * base:     base of conversion, must be 2..36, or -36..0.</div><div class='add'>+ *           if +base+ &gt; 0, the conversion is done according to the +base+</div><div class='add'>+ *           and unmatched prefix is parsed as a part of the result if</div><div class='add'>+ *           present.</div><div class='add'>+ *           if +base+ &lt;= 0, the conversion is done according to the</div><div class='add'>+ *           prefix if present, in base &lt;code&gt;-base&lt;/code&gt; if +base+ &lt; -1,</div><div class='add'>+ *           or in base 10.</div><div class='add'>+ * badcheck: if non-zero, +ArgumentError+ is raised when +str+ is not</div><div class='add'>+ *           valid as an Integer.  if zero, Fixnum 0 is returned in</div><div class='add'>+ *           that case.</div><div class='add'>+ */</div><div class='ctx'> VALUE</div><div class='ctx'> rb_cstr_to_inum(const char *str, int base, int badcheck)</div><div class='ctx'> {</div><div class='del'>-    const char *s = str;</div><div class='add'>+    char *end;</div><div class='add'>+    VALUE ret = rb_cstr_parse_inum(str, -1, (badcheck ? NULL : &amp;end), base);</div><div class='add'>+    if (NIL_P(ret)) {</div><div class='add'>+	if (badcheck) rb_invalid_str(str, "Integer()");</div><div class='add'>+	ret = INT2FIX(0);</div><div class='add'>+    }</div><div class='add'>+    return ret;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/*</div><div class='add'>+ * Parse +str+ as Ruby Integer, i.e., underscores, 0d and 0b prefixes.</div><div class='add'>+ *</div><div class='add'>+ * str:  pointer to the string to be parsed.</div><div class='add'>+ *       should be NUL-terminated if +len+ is negative.</div><div class='add'>+ * len:  length of +str+ if &gt;= 0.  if +len+ is negative, +str+ should</div><div class='add'>+ *       be NUL-terminated.</div><div class='add'>+ * endp: if non-NULL, the address after parsed part is stored.  if</div><div class='add'>+ *       NULL, Qnil is returned when +str+ is not valid as an Integer.</div><div class='add'>+ * base: see +rb_cstr_to_inum+</div><div class='add'>+ */</div><div class='add'>+</div><div class='add'>+VALUE</div><div class='add'>+rb_cstr_parse_inum(const char *str, ssize_t len, char **endp, int base)</div><div class='add'>+{</div><div class='add'>+    const char *const s = str;</div><div class='ctx'>     char sign = 1;</div><div class='ctx'>     int c;</div><div class='ctx'>     VALUE z;</div><div class='ctx'> </div><div class='del'>-    int bits_per_digit;</div><div class='add'>+    unsigned long val;</div><div class='add'>+    int ov;</div><div class='ctx'> </div><div class='ctx'>     const char *digits_start, *digits_end;</div><div class='ctx'>     size_t num_digits;</div><div class='ctx'>     size_t num_bdigits;</div><div class='del'>-    size_t len;</div><div class='add'>+    const ssize_t len0 = len;</div><div class='add'>+    const int badcheck = !endp;</div><div class='add'>+</div><div class='add'>+#define ADV(n) do {\</div><div class='add'>+	if (len &gt; 0 &amp;&amp; len &lt;= (n)) goto bad; \</div><div class='add'>+	str += (n); \</div><div class='add'>+	len -= (n); \</div><div class='add'>+    } while (0)</div><div class='add'>+#define ASSERT_LEN() do {\</div><div class='add'>+	assert(len != 0); \</div><div class='add'>+	if (len0 &gt;= 0) assert(s + len0 == str + len); \</div><div class='add'>+    } while (0)</div><div class='ctx'> </div><div class='ctx'>     if (!str) {</div><div class='del'>-	if (badcheck) {</div><div class='del'>-          bad:</div><div class='del'>-            rb_invalid_str(s, "Integer()");</div><div class='del'>-        }</div><div class='del'>-	return INT2FIX(0);</div><div class='add'>+      bad:</div><div class='add'>+	if (endp) *endp = (char *)str;</div><div class='add'>+	return Qnil;</div><div class='ctx'>     }</div><div class='del'>-    while (ISSPACE(*str)) str++;</div><div class='add'>+    if (len) {</div><div class='add'>+	while (ISSPACE(*str)) ADV(1);</div><div class='ctx'> </div><div class='del'>-    if (str[0] == '+') {</div><div class='del'>-	str++;</div><div class='del'>-    }</div><div class='del'>-    else if (str[0] == '-') {</div><div class='del'>-	str++;</div><div class='del'>-	sign = 0;</div><div class='del'>-    }</div><div class='del'>-    if (str[0] == '+' || str[0] == '-') {</div><div class='del'>-	if (badcheck) goto bad;</div><div class='del'>-	return INT2FIX(0);</div><div class='add'>+	if (str[0] == '+') {</div><div class='add'>+	    ADV(1);</div><div class='add'>+	}</div><div class='add'>+	else if (str[0] == '-') {</div><div class='add'>+	    ADV(1);</div><div class='add'>+	    sign = 0;</div><div class='add'>+	}</div><div class='add'>+	ASSERT_LEN();</div><div class='add'>+	if (str[0] == '+' || str[0] == '-') {</div><div class='add'>+	    goto bad;</div><div class='add'>+	}</div><div class='ctx'>     }</div><div class='ctx'>     if (base &lt;= 0) {</div><div class='del'>-	if (str[0] == '0') {</div><div class='add'>+	if (str[0] == '0' &amp;&amp; len &gt; 1) {</div><div class='ctx'> 	    switch (str[1]) {</div><div class='ctx'> 	      case 'x': case 'X':</div><div class='ctx'> 		base = 16;</div><div class='del'>-                str += 2;</div><div class='add'>+		ADV(2);</div><div class='ctx'> 		break;</div><div class='ctx'> 	      case 'b': case 'B':</div><div class='ctx'> 		base = 2;</div><div class='del'>-                str += 2;</div><div class='add'>+		ADV(2);</div><div class='ctx'> 		break;</div><div class='ctx'> 	      case 'o': case 'O':</div><div class='ctx'> 		base = 8;</div><div class='del'>-                str += 2;</div><div class='add'>+		ADV(2);</div><div class='ctx'> 		break;</div><div class='ctx'> 	      case 'd': case 'D':</div><div class='ctx'> 		base = 10;</div><div class='del'>-                str += 2;</div><div class='add'>+		ADV(2);</div><div class='ctx'> 		break;</div><div class='ctx'> 	      default:</div><div class='ctx'> 		base = 8;</div><div class='hunk'>@@ -4005,31 +4091,36 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)</div><div class='ctx'> 	    base = 10;</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='add'>+    else if (len == 1) {</div><div class='add'>+	/* no prefix */</div><div class='add'>+    }</div><div class='ctx'>     else if (base == 2) {</div><div class='ctx'> 	if (str[0] == '0' &amp;&amp; (str[1] == 'b'||str[1] == 'B')) {</div><div class='del'>-	    str += 2;</div><div class='add'>+	    ADV(2);</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'>     else if (base == 8) {</div><div class='ctx'> 	if (str[0] == '0' &amp;&amp; (str[1] == 'o'||str[1] == 'O')) {</div><div class='del'>-	    str += 2;</div><div class='add'>+	    ADV(2);</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'>     else if (base == 10) {</div><div class='ctx'> 	if (str[0] == '0' &amp;&amp; (str[1] == 'd'||str[1] == 'D')) {</div><div class='del'>-	    str += 2;</div><div class='add'>+	    ADV(2);</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'>     else if (base == 16) {</div><div class='ctx'> 	if (str[0] == '0' &amp;&amp; (str[1] == 'x'||str[1] == 'X')) {</div><div class='del'>-	    str += 2;</div><div class='add'>+	    ADV(2);</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='del'>-    if (base &lt; 2 || 36 &lt; base) {</div><div class='del'>-        rb_raise(rb_eArgError, "invalid radix %d", base);</div><div class='add'>+    if (!valid_radix_p(base)) {</div><div class='add'>+        invalid_radix(base);</div><div class='ctx'>     }</div><div class='del'>-    if (*str == '0') {		/* squeeze preceding 0s */</div><div class='add'>+    if (!len) goto bad;</div><div class='add'>+    if (*str == '0' &amp;&amp; len != 1) { /* squeeze preceding 0s */</div><div class='ctx'> 	int us = 0;</div><div class='add'>+	const char *end = len &lt; 0 ? NULL : str + len;</div><div class='ctx'> 	while ((c = *++str) == '0' || c == '_') {</div><div class='ctx'> 	    if (c == '_') {</div><div class='ctx'> 		if (++us &gt;= 2)</div><div class='hunk'>@@ -4038,26 +4129,29 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)</div><div class='ctx'> 	    else {</div><div class='ctx'> 		us = 0;</div><div class='ctx'> 	    }</div><div class='add'>+	    if (str == end) break;</div><div class='ctx'> 	}</div><div class='del'>-	if (!(c = *str) || ISSPACE(c)) --str;</div><div class='add'>+	if (!c || ISSPACE(c)) --str;</div><div class='add'>+	if (end) len = end - str;</div><div class='add'>+	ASSERT_LEN();</div><div class='ctx'>     }</div><div class='ctx'>     c = *str;</div><div class='ctx'>     c = conv_digit(c);</div><div class='ctx'>     if (c &lt; 0 || c &gt;= base) {</div><div class='del'>-	if (badcheck) goto bad;</div><div class='del'>-	return INT2FIX(0);</div><div class='add'>+	goto bad;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    bits_per_digit = bit_length(base-1);</div><div class='del'>-    if (bits_per_digit * strlen(str) &lt;= sizeof(long) * CHAR_BIT) {</div><div class='del'>-        char *end;</div><div class='del'>-	unsigned long val = STRTOUL(str, &amp;end, base);</div><div class='del'>-</div><div class='del'>-	if (str &lt; end &amp;&amp; *end == '_') goto bigparse;</div><div class='add'>+    val = ruby_scan_digits(str, len, base, &amp;num_digits, &amp;ov);</div><div class='add'>+    if (!ov) {</div><div class='add'>+	const char *end = &amp;str[num_digits];</div><div class='add'>+	if (num_digits &gt; 0 &amp;&amp; *end == '_') goto bigparse;</div><div class='add'>+	if (endp) *endp = (char *)end;</div><div class='ctx'> 	if (badcheck) {</div><div class='del'>-	    if (end == str) goto bad; /* no number */</div><div class='del'>-	    while (*end &amp;&amp; ISSPACE(*end)) end++;</div><div class='del'>-	    if (*end) goto bad;	      /* trailing garbage */</div><div class='add'>+	    if (num_digits == 0) return Qnil; /* no number */</div><div class='add'>+	    while (len &lt; 0 ? *end : end &lt; str + len) {</div><div class='add'>+		if (!ISSPACE(*end)) return Qnil; /* trailing garbage */</div><div class='add'>+		end++;</div><div class='add'>+	    }</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	if (POSFIXABLE(val)) {</div><div class='hunk'>@@ -4076,12 +4170,13 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)</div><div class='ctx'> </div><div class='ctx'>   bigparse:</div><div class='ctx'>     digits_start = str;</div><div class='del'>-    str2big_scan_digits(s, str, base, badcheck, &amp;num_digits, &amp;len);</div><div class='add'>+    if (!str2big_scan_digits(s, str, base, badcheck, &amp;num_digits, &amp;len))</div><div class='add'>+	goto bad;</div><div class='ctx'>     digits_end = digits_start + len;</div><div class='ctx'> </div><div class='ctx'>     if (POW2_P(base)) {</div><div class='ctx'>         z = str2big_poweroftwo(sign, digits_start, digits_end, num_digits,</div><div class='del'>-                bits_per_digit);</div><div class='add'>+			       bit_length(base-1));</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='ctx'>         int digits_per_bdigits_dbl;</div><div class='hunk'>@@ -4111,32 +4206,19 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)</div><div class='ctx'> VALUE</div><div class='ctx'> rb_str_to_inum(VALUE str, int base, int badcheck)</div><div class='ctx'> {</div><div class='del'>-    char *s;</div><div class='del'>-    long len;</div><div class='del'>-    VALUE v = 0;</div><div class='ctx'>     VALUE ret;</div><div class='add'>+    const char *s;</div><div class='add'>+    long len;</div><div class='add'>+    char *end;</div><div class='ctx'> </div><div class='ctx'>     StringValue(str);</div><div class='ctx'>     rb_must_asciicompat(str);</div><div class='del'>-    if (badcheck) {</div><div class='del'>-	s = StringValueCStr(str);</div><div class='del'>-    }</div><div class='del'>-    else {</div><div class='del'>-	s = RSTRING_PTR(str);</div><div class='del'>-    }</div><div class='del'>-    if (s) {</div><div class='del'>-	len = RSTRING_LEN(str);</div><div class='del'>-	if (s[len]) {		/* no sentinel somehow */</div><div class='del'>-	    char *p = ALLOCV(v, len+1);</div><div class='del'>-</div><div class='del'>-	    MEMCPY(p, s, char, len);</div><div class='del'>-	    p[len] = '\0';</div><div class='del'>-	    s = p;</div><div class='del'>-	}</div><div class='add'>+    RSTRING_GETMEM(str, s, len);</div><div class='add'>+    ret = rb_cstr_parse_inum(s, len, (badcheck ? NULL : &amp;end), base);</div><div class='add'>+    if (NIL_P(ret)) {</div><div class='add'>+	if (badcheck) invalid_integer(str);</div><div class='add'>+	ret = INT2FIX(0);</div><div class='ctx'>     }</div><div class='del'>-    ret = rb_cstr_to_inum(s, base, badcheck);</div><div class='del'>-    if (v)</div><div class='del'>-	ALLOCV_END(v);</div><div class='ctx'>     return ret;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -4147,22 +4229,25 @@ rb_str2big_poweroftwo(VALUE arg, int base, int badcheck)</div><div class='ctx'>     const char *s, *str;</div><div class='ctx'>     const char *digits_start, *digits_end;</div><div class='ctx'>     size_t num_digits;</div><div class='del'>-    size_t len;</div><div class='add'>+    ssize_t len;</div><div class='ctx'>     VALUE z;</div><div class='ctx'> </div><div class='del'>-    if (base &lt; 2 || 36 &lt; base || !POW2_P(base)) {</div><div class='del'>-        rb_raise(rb_eArgError, "invalid radix %d", base);</div><div class='add'>+    if (!valid_radix_p(base) || !POW2_P(base)) {</div><div class='add'>+        invalid_radix(base);</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     rb_must_asciicompat(arg);</div><div class='ctx'>     s = str = StringValueCStr(arg);</div><div class='add'>+    len = RSTRING_LEN(arg);</div><div class='ctx'>     if (*str == '-') {</div><div class='add'>+	len--;</div><div class='ctx'>         str++;</div><div class='ctx'>         positive_p = 0;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     digits_start = str;</div><div class='del'>-    str2big_scan_digits(s, str, base, badcheck, &amp;num_digits, &amp;len);</div><div class='add'>+    if (!str2big_scan_digits(s, str, base, badcheck, &amp;num_digits, &amp;len))</div><div class='add'>+	invalid_integer(arg);</div><div class='ctx'>     digits_end = digits_start + len;</div><div class='ctx'> </div><div class='ctx'>     z = str2big_poweroftwo(positive_p, digits_start, digits_end, num_digits,</div><div class='hunk'>@@ -4180,25 +4265,28 @@ rb_str2big_normal(VALUE arg, int base, int badcheck)</div><div class='ctx'>     const char *s, *str;</div><div class='ctx'>     const char *digits_start, *digits_end;</div><div class='ctx'>     size_t num_digits;</div><div class='del'>-    size_t len;</div><div class='add'>+    ssize_t len;</div><div class='ctx'>     VALUE z;</div><div class='ctx'> </div><div class='ctx'>     int digits_per_bdigits_dbl;</div><div class='ctx'>     size_t num_bdigits;</div><div class='ctx'> </div><div class='del'>-    if (base &lt; 2 || 36 &lt; base) {</div><div class='del'>-        rb_raise(rb_eArgError, "invalid radix %d", base);</div><div class='add'>+    if (!valid_radix_p(base)) {</div><div class='add'>+        invalid_radix(base);</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     rb_must_asciicompat(arg);</div><div class='del'>-    s = str = StringValueCStr(arg);</div><div class='del'>-    if (*str == '-') {</div><div class='add'>+    s = str = StringValuePtr(arg);</div><div class='add'>+    len = RSTRING_LEN(arg);</div><div class='add'>+    if (len &gt; 0 &amp;&amp; *str == '-') {</div><div class='add'>+	len--;</div><div class='ctx'>         str++;</div><div class='ctx'>         positive_p = 0;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     digits_start = str;</div><div class='del'>-    str2big_scan_digits(s, str, base, badcheck, &amp;num_digits, &amp;len);</div><div class='add'>+    if (!str2big_scan_digits(s, str, base, badcheck, &amp;num_digits, &amp;len))</div><div class='add'>+	invalid_integer(arg);</div><div class='ctx'>     digits_end = digits_start + len;</div><div class='ctx'> </div><div class='ctx'>     maxpow_in_bdigit_dbl(base, &amp;digits_per_bdigits_dbl);</div><div class='hunk'>@@ -4219,25 +4307,28 @@ rb_str2big_karatsuba(VALUE arg, int base, int badcheck)</div><div class='ctx'>     const char *s, *str;</div><div class='ctx'>     const char *digits_start, *digits_end;</div><div class='ctx'>     size_t num_digits;</div><div class='del'>-    size_t len;</div><div class='add'>+    ssize_t len;</div><div class='ctx'>     VALUE z;</div><div class='ctx'> </div><div class='ctx'>     int digits_per_bdigits_dbl;</div><div class='ctx'>     size_t num_bdigits;</div><div class='ctx'> </div><div class='del'>-    if (base &lt; 2 || 36 &lt; base) {</div><div class='del'>-        rb_raise(rb_eArgError, "invalid radix %d", base);</div><div class='add'>+    if (!valid_radix_p(base)) {</div><div class='add'>+        invalid_radix(base);</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     rb_must_asciicompat(arg);</div><div class='del'>-    s = str = StringValueCStr(arg);</div><div class='del'>-    if (*str == '-') {</div><div class='add'>+    s = str = StringValuePtr(arg);</div><div class='add'>+    len = RSTRING_LEN(arg);</div><div class='add'>+    if (len &gt; 0 &amp;&amp; *str == '-') {</div><div class='add'>+	len--;</div><div class='ctx'>         str++;</div><div class='ctx'>         positive_p = 0;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     digits_start = str;</div><div class='del'>-    str2big_scan_digits(s, str, base, badcheck, &amp;num_digits, &amp;len);</div><div class='add'>+    if (!str2big_scan_digits(s, str, base, badcheck, &amp;num_digits, &amp;len))</div><div class='add'>+	invalid_integer(arg);</div><div class='ctx'>     digits_end = digits_start + len;</div><div class='ctx'> </div><div class='ctx'>     maxpow_in_bdigit_dbl(base, &amp;digits_per_bdigits_dbl);</div><div class='hunk'>@@ -4259,25 +4350,28 @@ rb_str2big_gmp(VALUE arg, int base, int badcheck)</div><div class='ctx'>     const char *s, *str;</div><div class='ctx'>     const char *digits_start, *digits_end;</div><div class='ctx'>     size_t num_digits;</div><div class='del'>-    size_t len;</div><div class='add'>+    ssize_t len;</div><div class='ctx'>     VALUE z;</div><div class='ctx'> </div><div class='ctx'>     int digits_per_bdigits_dbl;</div><div class='ctx'>     size_t num_bdigits;</div><div class='ctx'> </div><div class='del'>-    if (base &lt; 2 || 36 &lt; base) {</div><div class='del'>-        rb_raise(rb_eArgError, "invalid radix %d", base);</div><div class='add'>+    if (!valid_radix_p(base)) {</div><div class='add'>+        invalid_radix(base);</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     rb_must_asciicompat(arg);</div><div class='del'>-    s = str = StringValueCStr(arg);</div><div class='del'>-    if (*str == '-') {</div><div class='add'>+    s = str = StringValuePtr(arg);</div><div class='add'>+    len = RSTRING_LEN(arg);</div><div class='add'>+    if (len &gt; 0 &amp;&amp; *str == '-') {</div><div class='add'>+	len--;</div><div class='ctx'>         str++;</div><div class='ctx'>         positive_p = 0;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     digits_start = str;</div><div class='del'>-    str2big_scan_digits(s, str, base, badcheck, &amp;num_digits, &amp;len);</div><div class='add'>+    if (!str2big_scan_digits(s, str, base, badcheck, &amp;num_digits, &amp;len))</div><div class='add'>+	invalid_integer(arg);</div><div class='ctx'>     digits_end = digits_start + len;</div><div class='ctx'> </div><div class='ctx'>     maxpow_in_bdigit_dbl(base, &amp;digits_per_bdigits_dbl);</div><div class='hunk'>@@ -4331,7 +4425,7 @@ rb_ll2big(LONG_LONG n)</div><div class='ctx'>     }</div><div class='ctx'>     big = rb_ull2big(u);</div><div class='ctx'>     if (neg) {</div><div class='del'>-	BIGNUM_SET_SIGN(big, 0);</div><div class='add'>+	BIGNUM_SET_NEGATIVE_SIGN(big);</div><div class='ctx'>     }</div><div class='ctx'>     return big;</div><div class='ctx'> }</div><div class='hunk'>@@ -4352,6 +4446,46 @@ rb_ll2inum(LONG_LONG n)</div><div class='ctx'> </div><div class='ctx'> #endif  /* HAVE_LONG_LONG */</div><div class='ctx'> </div><div class='add'>+#ifdef HAVE_INT128_T</div><div class='add'>+static VALUE</div><div class='add'>+rb_uint128t2big(uint128_t n)</div><div class='add'>+{</div><div class='add'>+    long i;</div><div class='add'>+    VALUE big = bignew(bdigit_roomof(SIZEOF_INT128_T), 1);</div><div class='add'>+    BDIGIT *digits = BDIGITS(big);</div><div class='add'>+</div><div class='add'>+    for (i = 0; i &lt; bdigit_roomof(SIZEOF_INT128_T); i++) {</div><div class='add'>+	digits[i] = BIGLO(RSHIFT(n ,BITSPERDIG*i));</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    i = bdigit_roomof(SIZEOF_INT128_T);</div><div class='add'>+    while (i-- &amp;&amp; !digits[i]) ;</div><div class='add'>+    BIGNUM_SET_LEN(big, i+1);</div><div class='add'>+    return big;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+VALUE</div><div class='add'>+rb_int128t2big(int128_t n)</div><div class='add'>+{</div><div class='add'>+    int neg = 0;</div><div class='add'>+    uint128_t u;</div><div class='add'>+    VALUE big;</div><div class='add'>+</div><div class='add'>+    if (n &lt; 0) {</div><div class='add'>+        u = 1 + (uint128_t)(-(n + 1)); /* u = -n avoiding overflow */</div><div class='add'>+	neg = 1;</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+        u = n;</div><div class='add'>+    }</div><div class='add'>+    big = rb_uint128t2big(u);</div><div class='add'>+    if (neg) {</div><div class='add'>+	BIGNUM_SET_NEGATIVE_SIGN(big);</div><div class='add'>+    }</div><div class='add'>+    return big;</div><div class='add'>+}</div><div class='add'>+#endif</div><div class='add'>+</div><div class='ctx'> VALUE</div><div class='ctx'> rb_cstr2inum(const char *str, int base)</div><div class='ctx'> {</div><div class='hunk'>@@ -4560,8 +4694,9 @@ big2str_2bdigits(struct big2str_struct *b2s, BDIGIT *xds, size_t xn, size_t tail</div><div class='ctx'>         p = buf;</div><div class='ctx'>         j = sizeof(buf);</div><div class='ctx'>         do {</div><div class='del'>-            p[--j] = ruby_digitmap[num % b2s-&gt;base];</div><div class='add'>+            BDIGIT_DBL idx = num % b2s-&gt;base;</div><div class='ctx'>             num /= b2s-&gt;base;</div><div class='add'>+            p[--j] = ruby_digitmap[idx];</div><div class='ctx'>         } while (num);</div><div class='ctx'>         len = sizeof(buf) - j;</div><div class='ctx'>         big2str_alloc(b2s, len + taillen);</div><div class='hunk'>@@ -4571,8 +4706,9 @@ big2str_2bdigits(struct big2str_struct *b2s, BDIGIT *xds, size_t xn, size_t tail</div><div class='ctx'>         p = b2s-&gt;ptr;</div><div class='ctx'>         j = b2s-&gt;hbase2_numdigits;</div><div class='ctx'>         do {</div><div class='del'>-            p[--j] = ruby_digitmap[num % b2s-&gt;base];</div><div class='add'>+            BDIGIT_DBL idx = num % b2s-&gt;base;</div><div class='ctx'>             num /= b2s-&gt;base;</div><div class='add'>+            p[--j] = ruby_digitmap[idx];</div><div class='ctx'>         } while (j);</div><div class='ctx'>         len = b2s-&gt;hbase2_numdigits;</div><div class='ctx'>     }</div><div class='hunk'>@@ -4756,8 +4892,8 @@ big2str_generic(VALUE x, int base)</div><div class='ctx'> 	return rb_usascii_str_new2("0");</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    if (base &lt; 2 || 36 &lt; base)</div><div class='del'>-	rb_raise(rb_eArgError, "invalid radix %d", base);</div><div class='add'>+    if (!valid_radix_p(base))</div><div class='add'>+	invalid_radix(base);</div><div class='ctx'> </div><div class='ctx'>     if (xn &gt;= LONG_MAX/BITSPERDIG) {</div><div class='ctx'>         rb_raise(rb_eRangeError, "bignum too big to convert into `string'");</div><div class='hunk'>@@ -4823,7 +4959,7 @@ rb_big2str_generic(VALUE x, int base)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> #ifdef USE_GMP</div><div class='del'>-VALUE</div><div class='add'>+static VALUE</div><div class='ctx'> big2str_gmp(VALUE x, int base)</div><div class='ctx'> {</div><div class='ctx'>     const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGIT)*CHAR_BIT;</div><div class='hunk'>@@ -4882,8 +5018,8 @@ rb_big2str1(VALUE x, int base)</div><div class='ctx'> 	return rb_usascii_str_new2("0");</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    if (base &lt; 2 || 36 &lt; base)</div><div class='del'>-	rb_raise(rb_eArgError, "invalid radix %d", base);</div><div class='add'>+    if (!valid_radix_p(base))</div><div class='add'>+	invalid_radix(base);</div><div class='ctx'> </div><div class='ctx'>     if (xn &gt;= LONG_MAX/BITSPERDIG) {</div><div class='ctx'>         rb_raise(rb_eRangeError, "bignum too big to convert into `string'");</div><div class='hunk'>@@ -4909,35 +5045,6 @@ rb_big2str(VALUE x, int base)</div><div class='ctx'>     return rb_big2str1(x, base);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big.to_s(base=10)   -&gt;  string</div><div class='del'>- *</div><div class='del'>- *  Returns a string containing the representation of &lt;i&gt;big&lt;/i&gt; radix</div><div class='del'>- *  &lt;i&gt;base&lt;/i&gt; (2 through 36).</div><div class='del'>- *</div><div class='del'>- *     12345654321.to_s         #=&gt; "12345654321"</div><div class='del'>- *     12345654321.to_s(2)      #=&gt; "1011011111110110111011110000110001"</div><div class='del'>- *     12345654321.to_s(8)      #=&gt; "133766736061"</div><div class='del'>- *     12345654321.to_s(16)     #=&gt; "2dfdbbc31"</div><div class='del'>- *     78546939656932.to_s(36)  #=&gt; "rubyrules"</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='del'>-rb_big_to_s(int argc, VALUE *argv, VALUE x)</div><div class='del'>-{</div><div class='del'>-    int base;</div><div class='del'>-</div><div class='del'>-    if (argc == 0) base = 10;</div><div class='del'>-    else {</div><div class='del'>-	VALUE b;</div><div class='del'>-</div><div class='del'>-	rb_scan_args(argc, argv, "01", &amp;b);</div><div class='del'>-	base = NUM2INT(b);</div><div class='del'>-    }</div><div class='del'>-    return rb_big2str(x, base);</div><div class='del'>-}</div><div class='del'>-</div><div class='ctx'> static unsigned long</div><div class='ctx'> big2ulong(VALUE x, const char *type)</div><div class='ctx'> {</div><div class='hunk'>@@ -4972,10 +5079,8 @@ rb_big2ulong(VALUE x)</div><div class='ctx'>         return num;</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-        if (num &lt;= LONG_MAX)</div><div class='del'>-            return -(long)num;</div><div class='del'>-        if (num == 1+(unsigned long)(-(LONG_MIN+1)))</div><div class='del'>-            return LONG_MIN;</div><div class='add'>+        if (num &lt;= 1+(unsigned long)(-(LONG_MIN+1)))</div><div class='add'>+            return -(long)(num-1)-1;</div><div class='ctx'>     }</div><div class='ctx'>     rb_raise(rb_eRangeError, "bignum out of range of unsigned long");</div><div class='ctx'> }</div><div class='hunk'>@@ -4990,10 +5095,8 @@ rb_big2long(VALUE x)</div><div class='ctx'>             return num;</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-        if (num &lt;= LONG_MAX)</div><div class='del'>-            return -(long)num;</div><div class='del'>-        if (num == 1+(unsigned long)(-(LONG_MIN+1)))</div><div class='del'>-            return LONG_MIN;</div><div class='add'>+        if (num &lt;= 1+(unsigned long)(-(LONG_MIN+1)))</div><div class='add'>+            return -(long)(num-1)-1;</div><div class='ctx'>     }</div><div class='ctx'>     rb_raise(rb_eRangeError, "bignum too big to convert into `long'");</div><div class='ctx'> }</div><div class='hunk'>@@ -5032,10 +5135,8 @@ rb_big2ull(VALUE x)</div><div class='ctx'>         return num;</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-        if (num &lt;= LLONG_MAX)</div><div class='del'>-            return -(LONG_LONG)num;</div><div class='del'>-        if (num == 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))</div><div class='del'>-            return LLONG_MIN;</div><div class='add'>+        if (num &lt;= 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))</div><div class='add'>+            return -(LONG_LONG)(num-1)-1;</div><div class='ctx'>     }</div><div class='ctx'>     rb_raise(rb_eRangeError, "bignum out of range of unsigned long long");</div><div class='ctx'> }</div><div class='hunk'>@@ -5050,10 +5151,8 @@ rb_big2ll(VALUE x)</div><div class='ctx'>             return num;</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-        if (num &lt;= LLONG_MAX)</div><div class='del'>-            return -(LONG_LONG)num;</div><div class='del'>-        if (num == 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))</div><div class='del'>-            return LLONG_MIN;</div><div class='add'>+        if (num &lt;= 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))</div><div class='add'>+            return -(LONG_LONG)(num-1)-1;</div><div class='ctx'>     }</div><div class='ctx'>     rb_raise(rb_eRangeError, "bignum too big to convert into `long long'");</div><div class='ctx'> }</div><div class='hunk'>@@ -5144,7 +5243,7 @@ big2dbl(VALUE x)</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='del'>-    if (!BIGNUM_SIGN(x)) d = -d;</div><div class='add'>+    if (BIGNUM_NEGATIVE_P(x)) d = -d;</div><div class='ctx'>     return d;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -5163,21 +5262,6 @@ rb_big2dbl(VALUE x)</div><div class='ctx'>     return d;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big.to_f -&gt; float</div><div class='del'>- *</div><div class='del'>- *  Converts &lt;i&gt;big&lt;/i&gt; to a &lt;code&gt;Float&lt;/code&gt;. If &lt;i&gt;big&lt;/i&gt; doesn't</div><div class='del'>- *  fit in a &lt;code&gt;Float&lt;/code&gt;, the result is infinity.</div><div class='del'>- *</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='del'>-rb_big_to_f(VALUE x)</div><div class='del'>-{</div><div class='del'>-    return DBL2NUM(rb_big2dbl(x));</div><div class='del'>-}</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_integer_float_cmp(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -5260,36 +5344,24 @@ rb_integer_float_eq(VALUE x, VALUE y)</div><div class='ctx'>     return rb_big_eq(x, y);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big &lt;=&gt; numeric   -&gt; -1, 0, +1 or nil</div><div class='del'>- *</div><div class='del'>- *  Comparison---Returns -1, 0, or +1 depending on whether +big+ is</div><div class='del'>- *  less than, equal to, or greater than +numeric+. This is the</div><div class='del'>- *  basis for the tests in Comparable.</div><div class='del'>- *</div><div class='del'>- *  +nil+ is returned if the two values are incomparable.</div><div class='del'>- *</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_cmp(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='del'>-    int cmp;</div><div class='del'>-</div><div class='ctx'>     if (FIXNUM_P(y)) {</div><div class='del'>-        x = bignorm(x);</div><div class='add'>+	x = bigfixize(x);</div><div class='ctx'>         if (FIXNUM_P(x)) {</div><div class='del'>-            if (FIX2LONG(x) &gt; FIX2LONG(y)) return INT2FIX(1);</div><div class='del'>-            if (FIX2LONG(x) &lt; FIX2LONG(y)) return INT2FIX(-1);</div><div class='del'>-            return INT2FIX(0);</div><div class='del'>-        }</div><div class='del'>-        else {</div><div class='del'>-            if (BIGNUM_NEGATIVE_P(x)) return INT2FIX(-1);</div><div class='del'>-            return INT2FIX(1);</div><div class='add'>+	    /* SIGNED_VALUE and Fixnum have same sign-bits, same</div><div class='add'>+	     * order */</div><div class='add'>+	    SIGNED_VALUE sx = (SIGNED_VALUE)x, sy = (SIGNED_VALUE)y;</div><div class='add'>+	    if (sx &lt; sy) return INT2FIX(-1);</div><div class='add'>+	    return INT2FIX(sx &gt; sy);</div><div class='ctx'>         }</div><div class='ctx'>     }</div><div class='ctx'>     else if (RB_BIGNUM_TYPE_P(y)) {</div><div class='add'>+	if (BIGNUM_SIGN(x) == BIGNUM_SIGN(y)) {</div><div class='add'>+	    int cmp = bary_cmp(BDIGITS(x), BIGNUM_LEN(x), BDIGITS(y), BIGNUM_LEN(y));</div><div class='add'>+	    return INT2FIX(BIGNUM_SIGN(x) ? cmp : -cmp);</div><div class='add'>+	}</div><div class='ctx'>     }</div><div class='ctx'>     else if (RB_FLOAT_TYPE_P(y)) {</div><div class='ctx'>         return rb_integer_float_cmp(x, y);</div><div class='hunk'>@@ -5297,15 +5369,7 @@ rb_big_cmp(VALUE x, VALUE y)</div><div class='ctx'>     else {</div><div class='ctx'> 	return rb_num_coerce_cmp(x, y, rb_intern("&lt;=&gt;"));</div><div class='ctx'>     }</div><div class='del'>-</div><div class='del'>-    if (BIGNUM_SIGN(x) &gt; BIGNUM_SIGN(y)) return INT2FIX(1);</div><div class='del'>-    if (BIGNUM_SIGN(x) &lt; BIGNUM_SIGN(y)) return INT2FIX(-1);</div><div class='del'>-</div><div class='del'>-    cmp = bary_cmp(BDIGITS(x), BIGNUM_LEN(x), BDIGITS(y), BIGNUM_LEN(y));</div><div class='del'>-    if (BIGNUM_SIGN(x))</div><div class='del'>-        return INT2FIX(cmp);</div><div class='del'>-    else</div><div class='del'>-        return INT2FIX(-cmp);</div><div class='add'>+    return INT2FIX(BIGNUM_SIGN(x) ? 1 : -1);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> enum big_op_t {</div><div class='hunk'>@@ -5350,58 +5414,26 @@ big_op(VALUE x, VALUE y, enum big_op_t op)</div><div class='ctx'>     return Qundef;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *   big &gt; real  -&gt;  true or false</div><div class='del'>- *</div><div class='del'>- * Returns &lt;code&gt;true&lt;/code&gt; if the value of &lt;code&gt;big&lt;/code&gt; is</div><div class='del'>- * greater than that of &lt;code&gt;real&lt;/code&gt;.</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='del'>-big_gt(VALUE x, VALUE y)</div><div class='add'>+VALUE</div><div class='add'>+rb_big_gt(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='ctx'>     return big_op(x, y, big_op_gt);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *   big &gt;= real  -&gt;  true or false</div><div class='del'>- *</div><div class='del'>- * Returns &lt;code&gt;true&lt;/code&gt; if the value of &lt;code&gt;big&lt;/code&gt; is</div><div class='del'>- * greater than or equal to that of &lt;code&gt;real&lt;/code&gt;.</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='del'>-big_ge(VALUE x, VALUE y)</div><div class='add'>+VALUE</div><div class='add'>+rb_big_ge(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='ctx'>     return big_op(x, y, big_op_ge);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *   big &lt; real  -&gt;  true or false</div><div class='del'>- *</div><div class='del'>- * Returns &lt;code&gt;true&lt;/code&gt; if the value of &lt;code&gt;big&lt;/code&gt; is</div><div class='del'>- * less than that of &lt;code&gt;real&lt;/code&gt;.</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='del'>-big_lt(VALUE x, VALUE y)</div><div class='add'>+VALUE</div><div class='add'>+rb_big_lt(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='ctx'>     return big_op(x, y, big_op_lt);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *   big &lt;= real  -&gt;  true or false</div><div class='del'>- *</div><div class='del'>- * Returns &lt;code&gt;true&lt;/code&gt; if the value of &lt;code&gt;big&lt;/code&gt; is</div><div class='del'>- * less than or equal to that of &lt;code&gt;real&lt;/code&gt;.</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='del'>-big_le(VALUE x, VALUE y)</div><div class='add'>+VALUE</div><div class='add'>+rb_big_le(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='ctx'>     return big_op(x, y, big_op_le);</div><div class='ctx'> }</div><div class='hunk'>@@ -5421,8 +5453,7 @@ VALUE</div><div class='ctx'> rb_big_eq(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='ctx'>     if (FIXNUM_P(y)) {</div><div class='del'>-	if (bignorm(x) == y) return Qtrue;</div><div class='del'>-	y = rb_int2big(FIX2LONG(y));</div><div class='add'>+	return bignorm(x) == y ? Qtrue : Qfalse;</div><div class='ctx'>     }</div><div class='ctx'>     else if (RB_BIGNUM_TYPE_P(y)) {</div><div class='ctx'>     }</div><div class='hunk'>@@ -5438,17 +5469,6 @@ rb_big_eq(VALUE x, VALUE y)</div><div class='ctx'>     return Qtrue;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big.eql?(obj)   -&gt; true or false</div><div class='del'>- *</div><div class='del'>- *  Returns &lt;code&gt;true&lt;/code&gt; only if &lt;i&gt;obj&lt;/i&gt; is a</div><div class='del'>- *  &lt;code&gt;Bignum&lt;/code&gt; with the same value as &lt;i&gt;big&lt;/i&gt;. Contrast this</div><div class='del'>- *  with &lt;code&gt;Bignum#==&lt;/code&gt;, which performs type conversions.</div><div class='del'>- *</div><div class='del'>- *     68719476736.eql?(68719476736.0)   #=&gt; false</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_eql(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -5459,37 +5479,18 @@ rb_big_eql(VALUE x, VALUE y)</div><div class='ctx'>     return Qtrue;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *    -big   -&gt;  integer</div><div class='del'>- *</div><div class='del'>- * Unary minus (returns an integer whose value is 0-big)</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_uminus(VALUE x)</div><div class='ctx'> {</div><div class='ctx'>     VALUE z = rb_big_clone(x);</div><div class='ctx'> </div><div class='del'>-    BIGNUM_SET_SIGN(z, !BIGNUM_SIGN(x));</div><div class='add'>+    BIGNUM_NEGATE(z);</div><div class='ctx'> </div><div class='ctx'>     return bignorm(z);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *     ~big  -&gt;  integer</div><div class='del'>- *</div><div class='del'>- * Inverts the bits in big. As Bignums are conceptually infinite</div><div class='del'>- * length, the result acts as if it had an infinite number of one</div><div class='del'>- * bits to the left. In hex representations, this is displayed</div><div class='del'>- * as two periods to the left of the digits.</div><div class='del'>- *</div><div class='del'>- *   sprintf("%X", ~0x1122334455)    #=&gt; "..FEEDDCCBBAA"</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='del'>-rb_big_neg(VALUE x)</div><div class='add'>+VALUE</div><div class='add'>+rb_big_comp(VALUE x)</div><div class='ctx'> {</div><div class='ctx'>     VALUE z = rb_big_clone(x);</div><div class='ctx'>     BDIGIT *ds = BDIGITS(z);</div><div class='hunk'>@@ -5569,7 +5570,7 @@ bigsub_int(VALUE x, long y0)</div><div class='ctx'>     assert(xn == zn);</div><div class='ctx'>     num = (BDIGIT_DBL_SIGNED)xds[0] - y;</div><div class='ctx'>     if (xn == 1 &amp;&amp; num &lt; 0) {</div><div class='del'>-	BIGNUM_SET_SIGN(z, !BIGNUM_SIGN(x));</div><div class='add'>+	BIGNUM_NEGATE(z);</div><div class='ctx'> 	zds[0] = (BDIGIT)-num;</div><div class='ctx'> 	RB_GC_GUARD(x);</div><div class='ctx'> 	return bignorm(z);</div><div class='hunk'>@@ -5632,7 +5633,7 @@ bigsub_int(VALUE x, long y0)</div><div class='ctx'>     assert(num == 0 || num == -1);</div><div class='ctx'>     if (num &lt; 0) {</div><div class='ctx'>         get2comp(z);</div><div class='del'>-	BIGNUM_SET_SIGN(z, !BIGNUM_SIGN(x));</div><div class='add'>+	BIGNUM_NEGATE(z);</div><div class='ctx'>     }</div><div class='ctx'>     RB_GC_GUARD(x);</div><div class='ctx'>     return bignorm(z);</div><div class='hunk'>@@ -5748,13 +5749,6 @@ bigadd(VALUE x, VALUE y, int sign)</div><div class='ctx'>     return z;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big + other  -&gt; Numeric</div><div class='del'>- *</div><div class='del'>- *  Adds big and other, returning the result.</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_plus(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -5784,13 +5778,6 @@ rb_big_plus(VALUE x, VALUE y)</div><div class='ctx'>     }</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big - other  -&gt; Numeric</div><div class='del'>- *</div><div class='del'>- *  Subtracts other from big, returning the result.</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_minus(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -5878,13 +5865,6 @@ bigmul0(VALUE x, VALUE y)</div><div class='ctx'>     return z;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big * other  -&gt; Numeric</div><div class='del'>- *</div><div class='del'>- *  Multiplies big and other, returning the result.</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_mul(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -6040,43 +6020,18 @@ rb_big_divide(VALUE x, VALUE y, ID op)</div><div class='ctx'>     return bignorm(z);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big / other     -&gt; Numeric</div><div class='del'>- *</div><div class='del'>- * Performs division: the class of the resulting object depends on</div><div class='del'>- * the class of &lt;code&gt;numeric&lt;/code&gt; and on the magnitude of the</div><div class='del'>- * result.</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_div(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='ctx'>     return rb_big_divide(x, y, '/');</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big.div(other)  -&gt; integer</div><div class='del'>- *</div><div class='del'>- * Performs integer division: returns integer value.</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_idiv(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='ctx'>     return rb_big_divide(x, y, rb_intern("div"));</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big % other         -&gt; Numeric</div><div class='del'>- *     big.modulo(other)   -&gt; Numeric</div><div class='del'>- *</div><div class='del'>- *  Returns big modulo other. See Numeric.divmod for more</div><div class='del'>- *  information.</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_modulo(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -6093,16 +6048,7 @@ rb_big_modulo(VALUE x, VALUE y)</div><div class='ctx'>     return bignorm(z);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big.remainder(numeric)    -&gt; number</div><div class='del'>- *</div><div class='del'>- *  Returns the remainder after dividing &lt;i&gt;big&lt;/i&gt; by &lt;i&gt;numeric&lt;/i&gt;.</div><div class='del'>- *</div><div class='del'>- *     -1234567890987654321.remainder(13731)      #=&gt; -6966</div><div class='del'>- *     -1234567890987654321.remainder(13731.24)   #=&gt; -9906.22531493148</div><div class='del'>- */</div><div class='del'>-static VALUE</div><div class='add'>+VALUE</div><div class='ctx'> rb_big_remainder(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='ctx'>     VALUE z;</div><div class='hunk'>@@ -6118,13 +6064,6 @@ rb_big_remainder(VALUE x, VALUE y)</div><div class='ctx'>     return bignorm(z);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big.divmod(numeric)   -&gt; array</div><div class='del'>- *</div><div class='del'>- *  See &lt;code&gt;Numeric#divmod&lt;/code&gt;.</div><div class='del'>- *</div><div class='del'>- */</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_divmod(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -6196,19 +6135,6 @@ big_fdiv_float(VALUE x, VALUE y)</div><div class='ctx'>     return big_fdiv(x, y, i - DBL_MANT_DIG);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>-  *     big.fdiv(numeric) -&gt; float</div><div class='del'>- *</div><div class='del'>- *  Returns the floating point result of dividing &lt;i&gt;big&lt;/i&gt; by</div><div class='del'>- *  &lt;i&gt;numeric&lt;/i&gt;.</div><div class='del'>- *</div><div class='del'>- *     -1234567890987654321.fdiv(13731)      #=&gt; -89910996357705.5</div><div class='del'>- *     -1234567890987654321.fdiv(13731.24)   #=&gt; -89909424858035.7</div><div class='del'>- *</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_fdiv(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -6238,19 +6164,6 @@ rb_big_fdiv(VALUE x, VALUE y)</div><div class='ctx'>     return DBL2NUM(dx / dy);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big ** exponent   -&gt; numeric</div><div class='del'>- *</div><div class='del'>- *  Raises _big_ to the _exponent_ power (which may be an integer, float,</div><div class='del'>- *  or anything that will coerce to a number). The result may be</div><div class='del'>- *  a Fixnum, Bignum, or Float</div><div class='del'>- *</div><div class='del'>- *    123456789 ** 2      #=&gt; 15241578750190521</div><div class='del'>- *    123456789 ** 1.2    #=&gt; 5126464716.09932</div><div class='del'>- *    123456789 ** -2     #=&gt; 6.5610001194102e-17</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_pow(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -6261,7 +6174,7 @@ rb_big_pow(VALUE x, VALUE y)</div><div class='ctx'>     if (y == INT2FIX(0)) return INT2FIX(1);</div><div class='ctx'>     if (RB_FLOAT_TYPE_P(y)) {</div><div class='ctx'> 	d = RFLOAT_VALUE(y);</div><div class='del'>-	if ((!BIGNUM_SIGN(x) &amp;&amp; !BIGZEROP(x)) &amp;&amp; d != round(d))</div><div class='add'>+	if ((BIGNUM_NEGATIVE_P(x) &amp;&amp; !BIGZEROP(x)) &amp;&amp; d != round(d))</div><div class='ctx'> 	    return rb_funcall(rb_complex_raw1(x), rb_intern("**"), 1, y);</div><div class='ctx'>     }</div><div class='ctx'>     else if (RB_BIGNUM_TYPE_P(y)) {</div><div class='hunk'>@@ -6360,13 +6273,6 @@ bigand_int(VALUE x, long xn, BDIGIT hibitsx, long y)</div><div class='ctx'>     return bignorm(z);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *     big &amp; numeric   -&gt;  integer</div><div class='del'>- *</div><div class='del'>- * Performs bitwise +and+ between _big_ and _numeric_.</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_and(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -6486,13 +6392,6 @@ bigor_int(VALUE x, long xn, BDIGIT hibitsx, long y)</div><div class='ctx'>     return bignorm(z);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *     big | numeric   -&gt;  integer</div><div class='del'>- *</div><div class='del'>- * Performs bitwise +or+ between _big_ and _numeric_.</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_or(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -6586,12 +6485,6 @@ bigxor_int(VALUE x, long xn, BDIGIT hibitsx, long y)</div><div class='ctx'>     RB_GC_GUARD(x);</div><div class='ctx'>     return bignorm(z);</div><div class='ctx'> }</div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *     big ^ numeric   -&gt;  integer</div><div class='del'>- *</div><div class='del'>- * Performs bitwise +exclusive or+ between _big_ and _numeric_.</div><div class='del'>- */</div><div class='ctx'> </div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_xor(VALUE x, VALUE y)</div><div class='hunk'>@@ -6641,13 +6534,6 @@ rb_big_xor(VALUE x, VALUE y)</div><div class='ctx'>     return bignorm(z);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *     big &lt;&lt; numeric   -&gt;  integer</div><div class='del'>- *</div><div class='del'>- * Shifts big left _numeric_ positions (right if _numeric_ is negative).</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_lshift(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -6678,14 +6564,6 @@ rb_big_lshift(VALUE x, VALUE y)</div><div class='ctx'>     }</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-</div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *     big &gt;&gt; numeric   -&gt;  integer</div><div class='del'>- *</div><div class='del'>- * Shifts big right _numeric_ positions (left if _numeric_ is negative).</div><div class='del'>- */</div><div class='del'>-</div><div class='ctx'> VALUE</div><div class='ctx'> rb_big_rshift(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='hunk'>@@ -6716,26 +6594,7 @@ rb_big_rshift(VALUE x, VALUE y)</div><div class='ctx'>     }</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big[n] -&gt; 0, 1</div><div class='del'>- *</div><div class='del'>- *  Bit Reference---Returns the &lt;em&gt;n&lt;/em&gt;th bit in the (assumed) binary</div><div class='del'>- *  representation of &lt;i&gt;big&lt;/i&gt;, where &lt;i&gt;big&lt;/i&gt;[0] is the least</div><div class='del'>- *  significant bit.</div><div class='del'>- *</div><div class='del'>- *     a = 9**15</div><div class='del'>- *     50.downto(0) do |n|</div><div class='del'>- *       print a[n]</div><div class='del'>- *     end</div><div class='del'>- *</div><div class='del'>- *  &lt;em&gt;produces:&lt;/em&gt;</div><div class='del'>- *</div><div class='del'>- *     000101110110100000111000011110010100111100010111001</div><div class='del'>- *</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='add'>+VALUE</div><div class='ctx'> rb_big_aref(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='ctx'>     BDIGIT *xds;</div><div class='hunk'>@@ -6745,7 +6604,7 @@ rb_big_aref(VALUE x, VALUE y)</div><div class='ctx'>     BDIGIT bit;</div><div class='ctx'> </div><div class='ctx'>     if (RB_BIGNUM_TYPE_P(y)) {</div><div class='del'>-	if (!BIGNUM_SIGN(y))</div><div class='add'>+	if (BIGNUM_NEGATIVE_P(y))</div><div class='ctx'> 	    return INT2FIX(0);</div><div class='ctx'> 	bigtrunc(y);</div><div class='ctx'> 	if (BIGSIZE(y) &gt; sizeof(size_t)) {</div><div class='hunk'>@@ -6780,16 +6639,7 @@ rb_big_aref(VALUE x, VALUE y)</div><div class='ctx'>     return (xds[s1] &amp; bit) ? INT2FIX(1) : INT2FIX(0);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- * call-seq:</div><div class='del'>- *   big.hash   -&gt; fixnum</div><div class='del'>- *</div><div class='del'>- * Compute a hash based on the value of _big_.</div><div class='del'>- *</div><div class='del'>- * See also Object#hash.</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='add'>+VALUE</div><div class='ctx'> rb_big_hash(VALUE x)</div><div class='ctx'> {</div><div class='ctx'>     st_index_t hash;</div><div class='hunk'>@@ -6813,95 +6663,41 @@ rb_big_hash(VALUE x)</div><div class='ctx'>  */</div><div class='ctx'> </div><div class='ctx'> static VALUE</div><div class='del'>-rb_big_coerce(VALUE x, VALUE y)</div><div class='add'>+rb_int_coerce(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='del'>-    if (FIXNUM_P(y)) {</div><div class='del'>-	y = rb_int2big(FIX2LONG(y));</div><div class='add'>+    if (FIXNUM_P(y) || RB_BIGNUM_TYPE_P(y)) {</div><div class='add'>+        return rb_assoc_new(y, x);</div><div class='ctx'>     }</div><div class='del'>-    else if (!RB_BIGNUM_TYPE_P(y)) {</div><div class='del'>-	rb_raise(rb_eTypeError, "can't coerce %s to Bignum",</div><div class='del'>-		 rb_obj_classname(y));</div><div class='add'>+    else {</div><div class='add'>+        x = rb_Float(x);</div><div class='add'>+        y = rb_Float(y);</div><div class='add'>+        return rb_assoc_new(y, x);</div><div class='ctx'>     }</div><div class='del'>-    return rb_assoc_new(y, x);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big.abs -&gt; aBignum</div><div class='del'>- *     big.magnitude -&gt; aBignum</div><div class='del'>- *</div><div class='del'>- *  Returns the absolute value of &lt;i&gt;big&lt;/i&gt;.</div><div class='del'>- *</div><div class='del'>- *     -1234567890987654321.abs   #=&gt; 1234567890987654321</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='add'>+VALUE</div><div class='ctx'> rb_big_abs(VALUE x)</div><div class='ctx'> {</div><div class='del'>-    if (!BIGNUM_SIGN(x)) {</div><div class='add'>+    if (BIGNUM_NEGATIVE_P(x)) {</div><div class='ctx'> 	x = rb_big_clone(x);</div><div class='del'>-	BIGNUM_SET_SIGN(x, 1);</div><div class='add'>+	BIGNUM_SET_POSITIVE_SIGN(x);</div><div class='ctx'>     }</div><div class='ctx'>     return x;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big.size -&gt; integer</div><div class='del'>- *</div><div class='del'>- *  Returns the number of bytes in the machine representation of</div><div class='del'>- *  &lt;i&gt;big&lt;/i&gt;.</div><div class='del'>- *</div><div class='del'>- *     (256**10 - 1).size   #=&gt; 12</div><div class='del'>- *     (256**20 - 1).size   #=&gt; 20</div><div class='del'>- *     (256**40 - 1).size   #=&gt; 40</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='add'>+size_t</div><div class='ctx'> rb_big_size(VALUE big)</div><div class='ctx'> {</div><div class='del'>-    return SIZET2NUM(BIGSIZE(big));</div><div class='add'>+    return BIGSIZE(big);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     int.bit_length -&gt; integer</div><div class='del'>- *</div><div class='del'>- *  Returns the number of bits of the value of &lt;i&gt;int&lt;/i&gt;.</div><div class='del'>- *</div><div class='del'>- *  "the number of bits" means that</div><div class='del'>- *  the bit position of the highest bit which is different to the sign bit.</div><div class='del'>- *  (The bit position of the bit 2**n is n+1.)</div><div class='del'>- *  If there is no such bit (zero or minus one), zero is returned.</div><div class='del'>- *</div><div class='del'>- *  I.e. This method returns ceil(log2(int &lt; 0 ? -int : int+1)).</div><div class='del'>- *</div><div class='del'>- *     (-2**10000-1).bit_length  #=&gt; 10001</div><div class='del'>- *     (-2**10000).bit_length    #=&gt; 10000</div><div class='del'>- *     (-2**10000+1).bit_length  #=&gt; 10000</div><div class='del'>- *</div><div class='del'>- *     (-2**1000-1).bit_length   #=&gt; 1001</div><div class='del'>- *     (-2**1000).bit_length     #=&gt; 1000</div><div class='del'>- *     (-2**1000+1).bit_length   #=&gt; 1000</div><div class='del'>- *</div><div class='del'>- *     (2**1000-1).bit_length    #=&gt; 1000</div><div class='del'>- *     (2**1000).bit_length      #=&gt; 1001</div><div class='del'>- *     (2**1000+1).bit_length    #=&gt; 1001</div><div class='del'>- *</div><div class='del'>- *     (2**10000-1).bit_length   #=&gt; 10000</div><div class='del'>- *     (2**10000).bit_length     #=&gt; 10001</div><div class='del'>- *     (2**10000+1).bit_length   #=&gt; 10001</div><div class='del'>- *</div><div class='del'>- *  This method can be used to detect overflow in Array#pack as follows.</div><div class='del'>- *</div><div class='del'>- *     if n.bit_length &lt; 32</div><div class='del'>- *       [n].pack("l") # no overflow</div><div class='del'>- *     else</div><div class='del'>- *       raise "overflow"</div><div class='del'>- *     end</div><div class='del'>- */</div><div class='add'>+VALUE</div><div class='add'>+rb_big_size_m(VALUE big)</div><div class='add'>+{</div><div class='add'>+    return SIZET2NUM(rb_big_size(big));</div><div class='add'>+}</div><div class='ctx'> </div><div class='del'>-static VALUE</div><div class='add'>+VALUE</div><div class='ctx'> rb_big_bit_length(VALUE big)</div><div class='ctx'> {</div><div class='ctx'>     int nlz_bits;</div><div class='hunk'>@@ -6942,14 +6738,7 @@ rb_big_bit_length(VALUE big)</div><div class='ctx'>             INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_NATIVE_BYTE_ORDER);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big.odd? -&gt; true or false</div><div class='del'>- *</div><div class='del'>- *  Returns &lt;code&gt;true&lt;/code&gt; if &lt;i&gt;big&lt;/i&gt; is an odd number.</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='add'>+VALUE</div><div class='ctx'> rb_big_odd_p(VALUE num)</div><div class='ctx'> {</div><div class='ctx'>     if (BIGNUM_LEN(num) != 0 &amp;&amp; BDIGITS(num)[0] &amp; 1) {</div><div class='hunk'>@@ -6958,14 +6747,7 @@ rb_big_odd_p(VALUE num)</div><div class='ctx'>     return Qfalse;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/*</div><div class='del'>- *  call-seq:</div><div class='del'>- *     big.even? -&gt; true or false</div><div class='del'>- *</div><div class='del'>- *  Returns &lt;code&gt;true&lt;/code&gt; if &lt;i&gt;big&lt;/i&gt; is an even number.</div><div class='del'>- */</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='add'>+VALUE</div><div class='ctx'> rb_big_even_p(VALUE num)</div><div class='ctx'> {</div><div class='ctx'>     if (BIGNUM_LEN(num) != 0 &amp;&amp; BDIGITS(num)[0] &amp; 1) {</div><div class='hunk'>@@ -6995,51 +6777,16 @@ rb_big_even_p(VALUE num)</div><div class='ctx'> void</div><div class='ctx'> Init_Bignum(void)</div><div class='ctx'> {</div><div class='del'>-    rb_cBignum = rb_define_class("Bignum", rb_cInteger);</div><div class='del'>-</div><div class='del'>-    rb_define_method(rb_cBignum, "to_s", rb_big_to_s, -1);</div><div class='del'>-    rb_define_alias(rb_cBignum, "inspect", "to_s");</div><div class='del'>-    rb_define_method(rb_cBignum, "coerce", rb_big_coerce, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "-@", rb_big_uminus, 0);</div><div class='del'>-    rb_define_method(rb_cBignum, "+", rb_big_plus, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "-", rb_big_minus, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "*", rb_big_mul, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "/", rb_big_div, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "%", rb_big_modulo, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "div", rb_big_idiv, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "divmod", rb_big_divmod, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "modulo", rb_big_modulo, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "remainder", rb_big_remainder, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "fdiv", rb_big_fdiv, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "**", rb_big_pow, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "&amp;", rb_big_and, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "|", rb_big_or, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "^", rb_big_xor, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "~", rb_big_neg, 0);</div><div class='del'>-    rb_define_method(rb_cBignum, "&lt;&lt;", rb_big_lshift, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "&gt;&gt;", rb_big_rshift, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "[]", rb_big_aref, 1);</div><div class='del'>-</div><div class='del'>-    rb_define_method(rb_cBignum, "&lt;=&gt;", rb_big_cmp, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "==", rb_big_eq, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "&gt;", big_gt, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "&gt;=", big_ge, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "&lt;", big_lt, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "&lt;=", big_le, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "===", rb_big_eq, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "eql?", rb_big_eql, 1);</div><div class='del'>-    rb_define_method(rb_cBignum, "hash", rb_big_hash, 0);</div><div class='del'>-    rb_define_method(rb_cBignum, "to_f", rb_big_to_f, 0);</div><div class='del'>-    rb_define_method(rb_cBignum, "abs", rb_big_abs, 0);</div><div class='del'>-    rb_define_method(rb_cBignum, "magnitude", rb_big_abs, 0);</div><div class='del'>-    rb_define_method(rb_cBignum, "size", rb_big_size, 0);</div><div class='del'>-    rb_define_method(rb_cBignum, "bit_length", rb_big_bit_length, 0);</div><div class='del'>-    rb_define_method(rb_cBignum, "odd?", rb_big_odd_p, 0);</div><div class='del'>-    rb_define_method(rb_cBignum, "even?", rb_big_even_p, 0);</div><div class='add'>+#ifndef RUBY_INTEGER_UNIFICATION</div><div class='add'>+    rb_cBignum = rb_cInteger;</div><div class='add'>+#endif</div><div class='add'>+    rb_define_const(rb_cObject, "Bignum", rb_cInteger);</div><div class='add'>+</div><div class='add'>+    rb_define_method(rb_cInteger, "coerce", rb_int_coerce, 1);</div><div class='ctx'> </div><div class='ctx'> #ifdef USE_GMP</div><div class='ctx'>     /* The version of loaded GMP. */</div><div class='del'>-    rb_define_const(rb_cBignum, "GMP_VERSION", rb_sprintf("GMP %s", gmp_version));</div><div class='add'>+    rb_define_const(rb_cInteger, "GMP_VERSION", rb_sprintf("GMP %s", gmp_version));</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='ctx'>     power_cache_init();</div><div class='head'>diff --git a/bin/erb b/bin/erb<br/>index 1ba49c9dc1..6a88c3b26a 100755<br/>--- a/<a href='/ruby.git/tree/bin/erb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>bin/erb</a><br/>+++ b/<a href='/ruby.git/tree/bin/erb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>bin/erb</a></div><div class='hunk'>@@ -76,7 +76,7 @@ class ERB</div><div class='ctx'>             require ARGV.req_arg</div><div class='ctx'>           when '-S'                        # security level</div><div class='ctx'>             arg = ARGV.req_arg</div><div class='del'>-            raise "invalid safe_level #{arg.dump}" unless arg =~ /\A[0-3]\z/</div><div class='add'>+            raise "invalid safe_level #{arg.dump}" unless arg =~ /\A[0-1]\z/</div><div class='ctx'>             safe_level = arg.to_i</div><div class='ctx'>           when '-T'                        # trim mode</div><div class='ctx'>             arg = ARGV.req_arg</div><div class='hunk'>@@ -112,7 +112,7 @@ class ERB</div><div class='ctx'>   -v               enable verbose mode</div><div class='ctx'>   -d               set $DEBUG to true</div><div class='ctx'>   -r library       load a library</div><div class='del'>-  -S safe_level    set $SAFE (0..3)</div><div class='add'>+  -S safe_level    set $SAFE (0..1)</div><div class='ctx'>   -E ex[:in]       set default external/internal encodings</div><div class='ctx'>   -U               set default encoding to UTF-8.</div><div class='ctx'>   -T trim_mode     specify trim_mode (0..2, -)</div><div class='head'>diff --git a/bin/rake b/bin/rake<br/>deleted file mode 100755<br/>index 4e0bbb7b7a..0000000000<br/>--- a/<a href='/ruby.git/tree/bin/rake?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>bin/rake</a><br/>+++ /dev/null</div><div class='hunk'>@@ -1,33 +0,0 @@</div><div class='del'>-#!/usr/bin/env ruby</div><div class='del'>-</div><div class='del'>-#--</div><div class='del'>-# Copyright (c) 2003, 2004, 2005, 2006, 2007  Jim Weirich</div><div class='del'>-#</div><div class='del'>-# Permission is hereby granted, free of charge, to any person obtaining a copy</div><div class='del'>-# of this software and associated documentation files (the "Software"), to</div><div class='del'>-# deal in the Software without restriction, including without limitation the</div><div class='del'>-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</div><div class='del'>-# sell copies of the Software, and to permit persons to whom the Software is</div><div class='del'>-# furnished to do so, subject to the following conditions:</div><div class='del'>-#</div><div class='del'>-# The above copyright notice and this permission notice shall be included in</div><div class='del'>-# all copies or substantial portions of the Software.</div><div class='del'>-#</div><div class='del'>-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</div><div class='del'>-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</div><div class='del'>-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</div><div class='del'>-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</div><div class='del'>-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</div><div class='del'>-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</div><div class='del'>-# IN THE SOFTWARE.</div><div class='del'>-#++</div><div class='del'>-</div><div class='del'>-begin</div><div class='del'>-  require 'rubygems'</div><div class='del'>-  gem 'rake'</div><div class='del'>-rescue LoadError</div><div class='del'>-end</div><div class='del'>-</div><div class='del'>-require 'rake'</div><div class='del'>-</div><div class='del'>-Rake.application.run</div><div class='head'>diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb<br/>index d58b824386..8945c16bd7 100755<br/>--- a/<a href='/ruby.git/tree/bootstraptest/runner.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/runner.rb</a><br/>+++ b/<a href='/ruby.git/tree/bootstraptest/runner.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>bootstraptest/runner.rb</a></div><div class='hunk'>@@ -60,6 +60,7 @@ end</div><div class='ctx'> def main</div><div class='ctx'>   @ruby = File.expand_path('miniruby')</div><div class='ctx'>   @verbose = false</div><div class='add'>+  $VERBOSE = false</div><div class='ctx'>   $stress = false</div><div class='ctx'>   @color = nil</div><div class='ctx'>   @tty = nil</div><div class='hunk'>@@ -136,9 +137,15 @@ End</div><div class='ctx'>   @tty &amp;&amp;= !@verbose</div><div class='ctx'>   if @color</div><div class='ctx'>     # dircolors-like style</div><div class='del'>-    colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:]*)/)] : {}</div><div class='del'>-    @passed = "\e[#{colors["pass"] || "32"}m"</div><div class='del'>-    @failed = "\e[#{colors["fail"] || "31"}m"</div><div class='add'>+    colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:\n]*)/)] : {}</div><div class='add'>+    begin</div><div class='add'>+      File.read(File.join(__dir__, "../test/colors")).scan(/(\w+)=([^:\n]*)/) do |n, c|</div><div class='add'>+        colors[n] ||= c</div><div class='add'>+      end</div><div class='add'>+    rescue</div><div class='add'>+    end</div><div class='add'>+    @passed = "\e[;#{colors["pass"] || "32"}m"</div><div class='add'>+    @failed = "\e[;#{colors["fail"] || "31"}m"</div><div class='ctx'>     @reset = "\e[m"</div><div class='ctx'>   else</div><div class='ctx'>     @passed = @failed = @reset = ""</div><div class='head'>diff --git a/bootstraptest/test_eval.rb b/bootstraptest/test_eval.rb<br/>index bf7478006d..8e90ac2728 100644<br/>--- a/<a href='/ruby.git/tree/bootstraptest/test_eval.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_eval.rb</a><br/>+++ b/<a href='/ruby.git/tree/bootstraptest/test_eval.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>bootstraptest/test_eval.rb</a></div><div class='hunk'>@@ -109,7 +109,7 @@ assert_equal %q{foo}, %q{</div><div class='ctx'>   }</div><div class='ctx'> }</div><div class='ctx'> assert_equal %q{1}, %q{</div><div class='del'>-  class Fixnum</div><div class='add'>+  class Integer</div><div class='ctx'>     Const = 1</div><div class='ctx'>   end</div><div class='ctx'>   1.instance_eval %{</div><div class='head'>diff --git a/bootstraptest/test_fork.rb b/bootstraptest/test_fork.rb<br/>index 5de6ee1b12..1cd9f7ac6c 100644<br/>--- a/<a href='/ruby.git/tree/bootstraptest/test_fork.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_fork.rb</a><br/>+++ b/<a href='/ruby.git/tree/bootstraptest/test_fork.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>bootstraptest/test_fork.rb</a></div><div class='hunk'>@@ -24,7 +24,7 @@ assert_finish 10, %q{</div><div class='ctx'> assert_normal_exit(&lt;&lt;'End', '[ruby-dev:37934]')</div><div class='ctx'>   main = Thread.current</div><div class='ctx'>   Thread.new { sleep 0.01 until main.stop?; Thread.kill main }</div><div class='del'>-  Process.setrlimit(:NPROC, 1)</div><div class='add'>+  Process.setrlimit(:NPROC, 1) if defined?(Process::RLIMIT_NPROC)</div><div class='ctx'>   fork {}</div><div class='ctx'> End</div><div class='ctx'> </div><div class='head'>diff --git a/bootstraptest/test_literal.rb b/bootstraptest/test_literal.rb<br/>index aa65bddae1..e79092e411 100644<br/>--- a/<a href='/ruby.git/tree/bootstraptest/test_literal.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_literal.rb</a><br/>+++ b/<a href='/ruby.git/tree/bootstraptest/test_literal.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>bootstraptest/test_literal.rb</a></div><div class='hunk'>@@ -15,17 +15,17 @@ assert_equal 'sym',             ':sym'</div><div class='ctx'> assert_equal ':sym',            ':sym.inspect'</div><div class='ctx'> assert_equal 'Symbol',          ':sym.class'</div><div class='ctx'> assert_equal '1234',            '1234'</div><div class='del'>-assert_equal 'Fixnum',          '1234.class'</div><div class='add'>+assert_equal 'Integer',         '1234.class'</div><div class='ctx'> assert_equal '1234',            '1_2_3_4'</div><div class='del'>-assert_equal 'Fixnum',          '1_2_3_4.class'</div><div class='add'>+assert_equal 'Integer',         '1_2_3_4.class'</div><div class='ctx'> assert_equal '18',              '0x12'</div><div class='del'>-assert_equal 'Fixnum',          '0x12.class'</div><div class='add'>+assert_equal 'Integer',         '0x12.class'</div><div class='ctx'> assert_equal '15',              '0o17'</div><div class='del'>-assert_equal 'Fixnum',          '0o17.class'</div><div class='add'>+assert_equal 'Integer',         '0o17.class'</div><div class='ctx'> assert_equal '5',               '0b101'</div><div class='del'>-assert_equal 'Fixnum',          '0b101.class'</div><div class='add'>+assert_equal 'Integer',         '0b101.class'</div><div class='ctx'> assert_equal '123456789012345678901234567890', '123456789012345678901234567890'</div><div class='del'>-assert_equal 'Bignum',          '123456789012345678901234567890.class'</div><div class='add'>+assert_equal 'Integer',         '123456789012345678901234567890.class'</div><div class='ctx'> assert_equal '2.0',             '2.0'</div><div class='ctx'> assert_equal 'Float',           '1.3.class'</div><div class='ctx'> </div><div class='hunk'>@@ -99,7 +99,7 @@ assert_equal '[3]',             '[3].inspect'</div><div class='ctx'> assert_equal '3',               'a = [3]; a[0]'</div><div class='ctx'> assert_equal 'Array',           '[1,2].class'</div><div class='ctx'> assert_equal '2',               '[1,2].size'</div><div class='del'>-assert_equal '[1, 2]',           '[1,2].inspect'</div><div class='add'>+assert_equal '[1, 2]',          '[1,2].inspect'</div><div class='ctx'> assert_equal 'Array',           '[1,2,3,4,5].class'</div><div class='ctx'> assert_equal '5',               '[1,2,3,4,5].size'</div><div class='ctx'> assert_equal '[1, 2, 3, 4, 5]', '[1,2,3,4,5].inspect'</div><div class='hunk'>@@ -169,7 +169,7 @@ assert_equal 'a',               'r = ("a".."c"); r.begin'</div><div class='ctx'> assert_equal 'c',               'r = ("a".."c"); r.end'</div><div class='ctx'> </div><div class='ctx'> assert_equal 'String',          '__FILE__.class'</div><div class='del'>-assert_equal 'Fixnum',          '__LINE__.class'</div><div class='add'>+assert_equal 'Integer',         '__LINE__.class'</div><div class='ctx'> </div><div class='ctx'> ###</div><div class='ctx'> </div><div class='head'>diff --git a/bootstraptest/test_method.rb b/bootstraptest/test_method.rb<br/>index 0a7cb0a577..3462aa9434 100644<br/>--- a/<a href='/ruby.git/tree/bootstraptest/test_method.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_method.rb</a><br/>+++ b/<a href='/ruby.git/tree/bootstraptest/test_method.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>bootstraptest/test_method.rb</a></div><div class='hunk'>@@ -3,7 +3,7 @@ assert_equal '1',       'def m() 1 end; m()'</div><div class='ctx'> assert_equal '1',       'def m(a) a end; m(1)'</div><div class='ctx'> assert_equal '[1, 2]',  'def m(a,b) [a, b] end; m(1,2)'</div><div class='ctx'> assert_equal '[1, 2, 3]', 'def m(a,b,c) [a, b, c] end; m(1,2,3)'</div><div class='del'>-assert_equal 'wrong number of arguments (1 for 0)', %q{</div><div class='add'>+assert_match /\Awrong number of arguments \(.*\b1\b.* 0\)\z/, %q{</div><div class='ctx'>   def m; end</div><div class='ctx'>   begin</div><div class='ctx'>     m(1)</div><div class='hunk'>@@ -12,7 +12,7 @@ assert_equal 'wrong number of arguments (1 for 0)', %q{</div><div class='ctx'>   end</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-assert_equal 'wrong number of arguments (0 for 1)', %q{</div><div class='add'>+assert_match /\Awrong number of arguments \(.*\b0\b.* 1\)\z/, %q{</div><div class='ctx'>   def m a; end</div><div class='ctx'>   begin</div><div class='ctx'>     m</div><div class='hunk'>@@ -910,34 +910,6 @@ assert_equal 'ok', %q{</div><div class='ctx'> }, '[ruby-core:11998]'</div><div class='ctx'> </div><div class='ctx'> assert_equal 'ok', %q{</div><div class='del'>-  proc{</div><div class='del'>-    $SAFE = 2</div><div class='del'>-    class C</div><div class='del'>-      def m</div><div class='del'>-        :ok</div><div class='del'>-      end</div><div class='del'>-    end</div><div class='del'>-  }.call</div><div class='del'>-  C.new.m</div><div class='del'>-}, '[ruby-core:11998]'</div><div class='del'>-</div><div class='del'>-assert_equal 'ok', %q{</div><div class='del'>-  proc{</div><div class='del'>-    $SAFE = 3</div><div class='del'>-    class C</div><div class='del'>-      def m</div><div class='del'>-        :ng</div><div class='del'>-      end</div><div class='del'>-    end</div><div class='del'>-  }.call</div><div class='del'>-  begin</div><div class='del'>-    C.new.m</div><div class='del'>-  rescue SecurityError</div><div class='del'>-    :ok</div><div class='del'>-  end</div><div class='del'>-}, '[ruby-core:11998]'</div><div class='del'>-</div><div class='del'>-assert_equal 'ok', %q{</div><div class='ctx'>   class B</div><div class='ctx'>     def m() :fail end</div><div class='ctx'>   end</div><div class='head'>diff --git a/bootstraptest/test_objectspace.rb b/bootstraptest/test_objectspace.rb<br/>index 862a94e376..24a1a0ce2c 100644<br/>--- a/<a href='/ruby.git/tree/bootstraptest/test_objectspace.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_objectspace.rb</a><br/>+++ b/<a href='/ruby.git/tree/bootstraptest/test_objectspace.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>bootstraptest/test_objectspace.rb</a></div><div class='hunk'>@@ -35,7 +35,7 @@ assert_normal_exit %q{</div><div class='ctx'> </div><div class='ctx'> assert_normal_exit %q{</div><div class='ctx'>   ObjectSpace.define_finalizer("") do</div><div class='del'>-    Mutex.new.lock</div><div class='add'>+    Thread::Mutex.new.lock</div><div class='ctx'>   end</div><div class='ctx'> }, '[ruby-dev:44049]'</div><div class='ctx'> </div><div class='head'>diff --git a/bootstraptest/test_syntax.rb b/bootstraptest/test_syntax.rb<br/>index 80eaa6416d..a111990a1f 100644<br/>--- a/<a href='/ruby.git/tree/bootstraptest/test_syntax.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_syntax.rb</a><br/>+++ b/<a href='/ruby.git/tree/bootstraptest/test_syntax.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>bootstraptest/test_syntax.rb</a></div><div class='hunk'>@@ -376,6 +376,8 @@ assert_equal %q{1}, %q{1 or 2 or 3 or 4}</div><div class='ctx'> assert_equal %q{1}, %q{1 or false or 3 or 4}</div><div class='ctx'> assert_equal %q{2}, %q{nil or 2 or 3 or 4}</div><div class='ctx'> assert_equal %q{2}, %q{false or 2 or 3 or 4}</div><div class='add'>+assert_equal %q{1}, %q{if true &amp;&amp; ""; then 1; end}</div><div class='add'>+assert_equal %q{1}, %q{if nil || true; then 1; end}</div><div class='ctx'> assert_equal %q{false}, %q{nil or false or nil or false}</div><div class='ctx'> assert_equal %q{elseng}, %q{</div><div class='ctx'>   case</div><div class='head'>diff --git a/bootstraptest/test_thread.rb b/bootstraptest/test_thread.rb<br/>index d64f44be49..d16295de8b 100644<br/>--- a/<a href='/ruby.git/tree/bootstraptest/test_thread.rb?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>bootstraptest/test_thread.rb</a><br/>+++ b/<a href='/ruby.git/tree/bootstraptest/test_thread.rb?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>bootstraptest/test_thread.rb</a></div><div class='hunk'>@@ -25,8 +25,9 @@ rescue ThreadError =&gt; e</div><div class='ctx'>   :ok if /can't create Thread/ =~ e.message</div><div class='ctx'> end</div><div class='ctx'> }</div><div class='del'>-assert_equal %q{5000}, %q{</div><div class='del'>-  5000.times{|e|</div><div class='add'>+assert_equal %q{ok}, %q{</div><div class='add'>+begin</div><div class='add'>+  :ok if 5000 == 5000.times{|e|</div><div class='ctx'>     (1..2).map{</div><div class='ctx'>       Thread.new{</div><div class='ctx'>       }</div><div class='hunk'>@@ -34,9 +35,13 @@ assert_equal %q{5000}, %q{</div><div class='ctx'>       e.join()</div><div class='ctx'>     }</div><div class='ctx'>   }</div><div class='add'>+rescue ThreadError =&gt; e</div><div class='add'>+  :ok if /can't create Thread/ =~ e.message</div><div class='add'>+end</div><div class='ctx'> }</div><div class='del'>-assert_equal %q{5000}, %q{</div><div class='del'>-  5000.times{|e|</div><div class='add'>+assert_equal %q{ok}, %q{</div><div class='add'>+begin</div><div class='add'>+  :ok if 5000 == 5000.times{|e|</div><div class='ctx'>     (1..2).map{</div><div class='ctx'>       Thread.new{</div><div class='ctx'>       }</div><div class='hunk'>@@ -44,6 +49,9 @@ assert_equal %q{5000}, %q{</div><div class='ctx'>       e.join(1000000000)</div><div class='ctx'>     }</div><div class='ctx'>   }</div><div class='add'>+rescue ThreadError =&gt; e</div><div class='add'>+  :ok if /can't create Thread/ =~ e.message</div><div class='add'>+end</div><div class='ctx'> }</div><div class='ctx'> assert_equal %q{ok}, %q{</div><div class='ctx'> begin</div><div class='hunk'>@@ -339,7 +347,7 @@ assert_equal 'ok', %q{</div><div class='ctx'> </div><div class='ctx'> assert_equal 'ok', %q{</div><div class='ctx'>   begin</div><div class='del'>-    m1, m2 = Mutex.new, Mutex.new</div><div class='add'>+    m1, m2 = Thread::Mutex.new, Thread::Mutex.new</div><div class='ctx'>     f1 = f2 = false</div><div class='ctx'>     Thread.new { m1.lock; f2 = true; sleep 0.001 until f1; m2.lock }</div><div class='ctx'>     m2.lock; f1 = true; sleep 0.001 until f2; m1.lock</div><div class='hunk'>@@ -350,32 +358,32 @@ assert_equal 'ok', %q{</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> assert_equal 'ok', %q{</div><div class='del'>-  m = Mutex.new</div><div class='add'>+  m = Thread::Mutex.new</div><div class='ctx'>   Thread.new { m.lock }; sleep 0.1; m.lock</div><div class='ctx'>   :ok</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> assert_equal 'ok', %q{</div><div class='del'>-  m = Mutex.new</div><div class='add'>+  m = Thread::Mutex.new</div><div class='ctx'>   Thread.new { m.lock }; m.lock</div><div class='ctx'>   :ok</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> assert_equal 'ok', %q{</div><div class='del'>-  m = Mutex.new</div><div class='add'>+  m = Thread::Mutex.new</div><div class='ctx'>   Thread.new { m.lock }.join; m.lock</div><div class='ctx'>   :ok</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> assert_equal 'ok', %q{</div><div class='del'>-  m = Mutex.new</div><div class='add'>+  m = Thread::Mutex.new</div><div class='ctx'>   Thread.new { m.lock; sleep 0.2 }</div><div class='ctx'>   sleep 0.1; m.lock</div><div class='ctx'>   :ok</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> assert_equal 'ok', %q{</div><div class='del'>-  m = Mutex.new</div><div class='add'>+  m = Thread::Mutex.new</div><div class='ctx'>   Thread.new { m.lock; sleep 0.2; m.unlock }</div><div class='ctx'>   sleep 0.1; m.lock</div><div class='ctx'>   :ok</div><div class='hunk'>@@ -401,7 +409,7 @@ assert_equal 'ok', %{</div><div class='ctx'>   open("zzz.rb", "w") do |f|</div><div class='ctx'>     f.puts &lt;&lt;-'end;' # do</div><div class='ctx'>       begin</div><div class='del'>-        m = Mutex.new</div><div class='add'>+        m = Thread::Mutex.new</div><div class='ctx'>         parent = Thread.current</div><div class='ctx'>         th1 = Thread.new { m.lock; sleep }</div><div class='ctx'>         sleep 0.01 until th1.stop?</div><div class='hunk'>@@ -429,8 +437,8 @@ assert_equal 'ok', %{</div><div class='ctx'> assert_finish 3, %q{</div><div class='ctx'>   require 'thread'</div><div class='ctx'> </div><div class='del'>-  lock = Mutex.new</div><div class='del'>-  cond = ConditionVariable.new</div><div class='add'>+  lock = Thread::Mutex.new</div><div class='add'>+  cond = Thread::ConditionVariable.new</div><div class='ctx'>   t = Thread.new do</div><div class='ctx'>     lock.synchronize do</div><div class='ctx'>       cond.wait(lock)</div><div class='head'>diff --git a/ccan/list/list.h b/ccan/list/list.h<br/>index 749db7849a..ca9f9f1f7f 100644<br/>--- a/<a href='/ruby.git/tree/ccan/list/list.h?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>ccan/list/list.h</a><br/>+++ b/<a href='/ruby.git/tree/ccan/list/list.h?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>ccan/list/list.h</a></div><div class='hunk'>@@ -42,8 +42,8 @@ struct list_head</div><div class='ctx'> };</div><div class='ctx'> </div><div class='ctx'> #define LIST_LOC __FILE__  ":" stringify(__LINE__)</div><div class='del'>-#define list_debug(h, loc) (h)</div><div class='del'>-#define list_debug_node(n, loc) (n)</div><div class='add'>+#define list_debug(h, loc) ((void)loc, h)</div><div class='add'>+#define list_debug_node(n, loc) ((void)loc, n)</div><div class='ctx'> </div><div class='ctx'> /**</div><div class='ctx'>  * LIST_HEAD_INIT - initializer for an empty list_head</div><div class='hunk'>@@ -104,6 +104,36 @@ static inline void list_node_init(struct list_node *n)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /**</div><div class='add'>+ * list_add_after - add an entry after an existing node in a linked list</div><div class='add'>+ * @h: the list_head to add the node to (for debugging)</div><div class='add'>+ * @p: the existing list_node to add the node after</div><div class='add'>+ * @n: the new list_node to add to the list.</div><div class='add'>+ *</div><div class='add'>+ * The existing list_node must already be a member of the list.</div><div class='add'>+ * The new list_node does not need to be initialized; it will be overwritten.</div><div class='add'>+ *</div><div class='add'>+ * Example:</div><div class='add'>+ *	struct child c1, c2, c3;</div><div class='add'>+ *	LIST_HEAD(h);</div><div class='add'>+ *</div><div class='add'>+ *	list_add_tail(&amp;h, &amp;c1.list);</div><div class='add'>+ *	list_add_tail(&amp;h, &amp;c3.list);</div><div class='add'>+ *	list_add_after(&amp;h, &amp;c1.list, &amp;c2.list);</div><div class='add'>+ */</div><div class='add'>+#define list_add_after(h, p, n) list_add_after_(h, p, n, LIST_LOC)</div><div class='add'>+static inline void list_add_after_(struct list_head *h,</div><div class='add'>+				   struct list_node *p,</div><div class='add'>+				   struct list_node *n,</div><div class='add'>+				   const char *abortstr)</div><div class='add'>+{</div><div class='add'>+	n-&gt;next = p-&gt;next;</div><div class='add'>+	n-&gt;prev = p;</div><div class='add'>+	p-&gt;next-&gt;prev = n;</div><div class='add'>+	p-&gt;next = n;</div><div class='add'>+	(void)list_debug(h, abortstr);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/**</div><div class='ctx'>  * list_add - add an entry at the start of a linked list.</div><div class='ctx'>  * @h: the list_head to add the node to</div><div class='ctx'>  * @n: the list_node to add to the list.</div><div class='hunk'>@@ -121,10 +151,34 @@ static inline void list_add_(struct list_head *h,</div><div class='ctx'> 			     struct list_node *n,</div><div class='ctx'> 			     const char *abortstr)</div><div class='ctx'> {</div><div class='del'>-	n-&gt;next = h-&gt;n.next;</div><div class='del'>-	n-&gt;prev = &amp;h-&gt;n;</div><div class='del'>-	h-&gt;n.next-&gt;prev = n;</div><div class='del'>-	h-&gt;n.next = n;</div><div class='add'>+	list_add_after_(h, &amp;h-&gt;n, n, abortstr);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/**</div><div class='add'>+ * list_add_before - add an entry before an existing node in a linked list</div><div class='add'>+ * @h: the list_head to add the node to (for debugging)</div><div class='add'>+ * @p: the existing list_node to add the node before</div><div class='add'>+ * @n: the new list_node to add to the list.</div><div class='add'>+ *</div><div class='add'>+ * The existing list_node must already be a member of the list.</div><div class='add'>+ * The new list_node does not need to be initialized; it will be overwritten.</div><div class='add'>+ *</div><div class='add'>+ * Example:</div><div class='add'>+ *	list_head_init(&amp;h);</div><div class='add'>+ *	list_add_tail(&amp;h, &amp;c1.list);</div><div class='add'>+ *	list_add_tail(&amp;h, &amp;c3.list);</div><div class='add'>+ *	list_add_before(&amp;h, &amp;c3.list, &amp;c2.list);</div><div class='add'>+ */</div><div class='add'>+#define list_add_before(h, p, n) list_add_before_(h, p, n, LIST_LOC)</div><div class='add'>+static inline void list_add_before_(struct list_head *h,</div><div class='add'>+				    struct list_node *p,</div><div class='add'>+				    struct list_node *n,</div><div class='add'>+				    const char *abortstr)</div><div class='add'>+{</div><div class='add'>+	n-&gt;next = p;</div><div class='add'>+	n-&gt;prev = p-&gt;prev;</div><div class='add'>+	p-&gt;prev-&gt;next = n;</div><div class='add'>+	p-&gt;prev = n;</div><div class='ctx'> 	(void)list_debug(h, abortstr);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -143,11 +197,7 @@ static inline void list_add_tail_(struct list_head *h,</div><div class='ctx'> 				  struct list_node *n,</div><div class='ctx'> 				  const char *abortstr)</div><div class='ctx'> {</div><div class='del'>-	n-&gt;next = &amp;h-&gt;n;</div><div class='del'>-	n-&gt;prev = h-&gt;n.prev;</div><div class='del'>-	h-&gt;n.prev-&gt;next = n;</div><div class='del'>-	h-&gt;n.prev = n;</div><div class='del'>-	(void)list_debug(h, abortstr);</div><div class='add'>+	list_add_before_(h, &amp;h-&gt;n, n, abortstr);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /**</div><div class='hunk'>@@ -265,6 +315,39 @@ static inline void list_del_from(struct list_head *h, struct list_node *n)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /**</div><div class='add'>+ * list_swap - swap out an entry from an (unknown) linked list for a new one.</div><div class='add'>+ * @o: the list_node to replace from the list.</div><div class='add'>+ * @n: the list_node to insert in place of the old one.</div><div class='add'>+ *</div><div class='add'>+ * Note that this leaves @o in an undefined state; it can be added to</div><div class='add'>+ * another list, but not deleted/swapped again.</div><div class='add'>+ *</div><div class='add'>+ * See also:</div><div class='add'>+ *	list_del()</div><div class='add'>+ *</div><div class='add'>+ * Example:</div><div class='add'>+ *	struct child x1, x2;</div><div class='add'>+ *	LIST_HEAD(xh);</div><div class='add'>+ *</div><div class='add'>+ *	list_add(&amp;xh, &amp;x1.list);</div><div class='add'>+ *	list_swap(&amp;x1.list, &amp;x2.list);</div><div class='add'>+ */</div><div class='add'>+#define list_swap(o, n) list_swap_(o, n, LIST_LOC)</div><div class='add'>+static inline void list_swap_(struct list_node *o,</div><div class='add'>+			      struct list_node *n,</div><div class='add'>+			      const char* abortstr)</div><div class='add'>+{</div><div class='add'>+	(void)list_debug_node(o, abortstr);</div><div class='add'>+	*n = *o;</div><div class='add'>+	n-&gt;next-&gt;prev = n;</div><div class='add'>+	n-&gt;prev-&gt;next = n;</div><div class='add'>+#ifdef CCAN_LIST_DEBUG</div><div class='add'>+	/* Catch use-after-del. */</div><div class='add'>+	o-&gt;next = o-&gt;prev = NULL;</div><div class='add'>+#endif</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/**</div><div class='ctx'>  * list_entry - convert a list_node back into the structure containing it.</div><div class='ctx'>  * @n: the list_node</div><div class='ctx'>  * @type: the type of the entry</div><div class='hunk'>@@ -385,9 +468,29 @@ static inline const void *list_tail_(const struct list_head *h, size_t off)</div><div class='ctx'>  *		printf("Name: %s\n", child-&gt;name);</div><div class='ctx'>  */</div><div class='ctx'> #define list_for_each_rev(h, i, member)					\</div><div class='del'>-	for (i = container_of_var(list_debug(h,	LIST_LOC)-&gt;n.prev, i, member); \</div><div class='del'>-	     &amp;i-&gt;member != &amp;(h)-&gt;n;					\</div><div class='del'>-	     i = container_of_var(i-&gt;member.prev, i, member))</div><div class='add'>+	list_for_each_rev_off(h, i, list_off_var_(i, member))</div><div class='add'>+</div><div class='add'>+/**</div><div class='add'>+ * list_for_each_rev_safe - iterate through a list backwards,</div><div class='add'>+ * maybe during deletion</div><div class='add'>+ * @h: the list_head</div><div class='add'>+ * @i: the structure containing the list_node</div><div class='add'>+ * @nxt: the structure containing the list_node</div><div class='add'>+ * @member: the list_node member of the structure</div><div class='add'>+ *</div><div class='add'>+ * This is a convenient wrapper to iterate @i over the entire list backwards.</div><div class='add'>+ * It's a for loop, so you can break and continue as normal.  The extra</div><div class='add'>+ * variable * @nxt is used to hold the next element, so you can delete @i</div><div class='add'>+ * from the list.</div><div class='add'>+ *</div><div class='add'>+ * Example:</div><div class='add'>+ *	struct child *next;</div><div class='add'>+ *	list_for_each_rev_safe(&amp;parent-&gt;children, child, next, list) {</div><div class='add'>+ *		printf("Name: %s\n", child-&gt;name);</div><div class='add'>+ *	}</div><div class='add'>+ */</div><div class='add'>+#define list_for_each_rev_safe(h, i, nxt, member)			\</div><div class='add'>+	list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member))</div><div class='ctx'> </div><div class='ctx'> /**</div><div class='ctx'>  * list_for_each_safe - iterate through a list, maybe during deletion</div><div class='hunk'>@@ -401,7 +504,6 @@ static inline const void *list_tail_(const struct list_head *h, size_t off)</div><div class='ctx'>  * @nxt is used to hold the next element, so you can delete @i from the list.</div><div class='ctx'>  *</div><div class='ctx'>  * Example:</div><div class='del'>- *	struct child *next;</div><div class='ctx'>  *	list_for_each_safe(&amp;parent-&gt;children, child, next, list) {</div><div class='ctx'>  *		list_del(&amp;child-&gt;list);</div><div class='ctx'>  *		parent-&gt;num_children--;</div><div class='hunk'>@@ -516,6 +618,24 @@ static inline void list_prepend_list_(struct list_head *to,</div><div class='ctx'> 	list_head_init(from);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+/* internal macros, do not use directly */</div><div class='add'>+#define list_for_each_off_dir_(h, i, off, dir)				\</div><div class='add'>+	for (i = list_node_to_off_(list_debug(h, LIST_LOC)-&gt;n.dir,	\</div><div class='add'>+				   (off));				\</div><div class='add'>+	list_node_from_off_((void *)i, (off)) != &amp;(h)-&gt;n;		\</div><div class='add'>+	i = list_node_to_off_(list_node_from_off_((void *)i, (off))-&gt;dir, \</div><div class='add'>+			      (off)))</div><div class='add'>+</div><div class='add'>+#define list_for_each_safe_off_dir_(h, i, nxt, off, dir)		\</div><div class='add'>+	for (i = list_node_to_off_(list_debug(h, LIST_LOC)-&gt;n.dir,	\</div><div class='add'>+				   (off)),				\</div><div class='add'>+	nxt = list_node_to_off_(list_node_from_off_(i, (off))-&gt;dir,	\</div><div class='add'>+				(off));					\</div><div class='add'>+	list_node_from_off_(i, (off)) != &amp;(h)-&gt;n;			\</div><div class='add'>+	i = nxt,							\</div><div class='add'>+	nxt = list_node_to_off_(list_node_from_off_(i, (off))-&gt;dir,	\</div><div class='add'>+				(off)))</div><div class='add'>+</div><div class='ctx'> /**</div><div class='ctx'>  * list_for_each_off - iterate through a list of memory regions.</div><div class='ctx'>  * @h: the list_head</div><div class='hunk'>@@ -546,11 +666,18 @@ static inline void list_prepend_list_(struct list_head *to,</div><div class='ctx'>  *		printf("Name: %s\n", child-&gt;name);</div><div class='ctx'>  */</div><div class='ctx'> #define list_for_each_off(h, i, off)                                    \</div><div class='del'>-	for (i = list_node_to_off_(list_debug(h, LIST_LOC)-&gt;n.next,	\</div><div class='del'>-				   (off));				\</div><div class='del'>-       list_node_from_off_((void *)i, (off)) != &amp;(h)-&gt;n;                \</div><div class='del'>-       i = list_node_to_off_(list_node_from_off_((void *)i, (off))-&gt;next, \</div><div class='del'>-                             (off)))</div><div class='add'>+	list_for_each_off_dir_((h),(i),(off),next)</div><div class='add'>+</div><div class='add'>+/**</div><div class='add'>+ * list_for_each_rev_off - iterate through a list of memory regions backwards</div><div class='add'>+ * @h: the list_head</div><div class='add'>+ * @i: the pointer to a memory region wich contains list node data.</div><div class='add'>+ * @off: offset(relative to @i) at which list node data resides.</div><div class='add'>+ *</div><div class='add'>+ * See list_for_each_off for details</div><div class='add'>+ */</div><div class='add'>+#define list_for_each_rev_off(h, i, off)                                    \</div><div class='add'>+	list_for_each_off_dir_((h),(i),(off),prev)</div><div class='ctx'> </div><div class='ctx'> /**</div><div class='ctx'>  * list_for_each_safe_off - iterate through a list of memory regions, maybe</div><div class='hunk'>@@ -569,15 +696,26 @@ static inline void list_prepend_list_(struct list_head *to,</div><div class='ctx'>  *		printf("Name: %s\n", child-&gt;name);</div><div class='ctx'>  */</div><div class='ctx'> #define list_for_each_safe_off(h, i, nxt, off)                          \</div><div class='del'>-	for (i = list_node_to_off_(list_debug(h, LIST_LOC)-&gt;n.next,	\</div><div class='del'>-				   (off)),				\</div><div class='del'>-         nxt = list_node_to_off_(list_node_from_off_(i, (off))-&gt;next,   \</div><div class='del'>-                                 (off));                                \</div><div class='del'>-       list_node_from_off_(i, (off)) != &amp;(h)-&gt;n;                        \</div><div class='del'>-       i = nxt,                                                         \</div><div class='del'>-         nxt = list_node_to_off_(list_node_from_off_(i, (off))-&gt;next,   \</div><div class='del'>-                                 (off)))</div><div class='add'>+	list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)</div><div class='ctx'> </div><div class='add'>+/**</div><div class='add'>+ * list_for_each_rev_safe_off - iterate backwards through a list of</div><div class='add'>+ * memory regions, maybe during deletion</div><div class='add'>+ * @h: the list_head</div><div class='add'>+ * @i: the pointer to a memory region wich contains list node data.</div><div class='add'>+ * @nxt: the structure containing the list_node</div><div class='add'>+ * @off: offset(relative to @i) at which list node data resides.</div><div class='add'>+ *</div><div class='add'>+ * For details see `list_for_each_rev_off' and `list_for_each_rev_safe'</div><div class='add'>+ * descriptions.</div><div class='add'>+ *</div><div class='add'>+ * Example:</div><div class='add'>+ *	list_for_each_rev_safe_off(&amp;parent-&gt;children, child,</div><div class='add'>+ *		next, offsetof(struct child, list))</div><div class='add'>+ *		printf("Name: %s\n", child-&gt;name);</div><div class='add'>+ */</div><div class='add'>+#define list_for_each_rev_safe_off(h, i, nxt, off)                      \</div><div class='add'>+	list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)</div><div class='ctx'> </div><div class='ctx'> /* Other -off variants. */</div><div class='ctx'> #define list_entry_off(n, type, off)		\</div><div class='head'>diff --git a/class.c b/class.c<br/>index f142f4472a..6c7dfa5c17 100644<br/>--- a/<a href='/ruby.git/tree/class.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>class.c</a><br/>+++ b/<a href='/ruby.git/tree/class.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>class.c</a></div><div class='hunk'>@@ -25,9 +25,9 @@</div><div class='ctx'> </div><div class='ctx'> #include "internal.h"</div><div class='ctx'> #include "ruby/st.h"</div><div class='del'>-#include "method.h"</div><div class='ctx'> #include "constant.h"</div><div class='ctx'> #include "vm_core.h"</div><div class='add'>+#include "id_table.h"</div><div class='ctx'> #include &lt;ctype.h&gt;</div><div class='ctx'> </div><div class='ctx'> #define id_attached id__attached__</div><div class='hunk'>@@ -110,7 +110,7 @@ rb_class_remove_from_module_subclasses(VALUE klass)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> void</div><div class='del'>-rb_class_foreach_subclass(VALUE klass, void(*f)(VALUE))</div><div class='add'>+rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE arg)</div><div class='ctx'> {</div><div class='ctx'>     rb_subclass_entry_t *cur = RCLASS_EXT(klass)-&gt;subclasses;</div><div class='ctx'> </div><div class='hunk'>@@ -119,20 +119,32 @@ rb_class_foreach_subclass(VALUE klass, void(*f)(VALUE))</div><div class='ctx'>     while (cur) {</div><div class='ctx'> 	VALUE curklass = cur-&gt;klass;</div><div class='ctx'> 	cur = cur-&gt;next;</div><div class='del'>-	f(curklass);</div><div class='add'>+	f(curklass, arg);</div><div class='ctx'>     }</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+static void</div><div class='add'>+class_detach_subclasses(VALUE klass, VALUE arg)</div><div class='add'>+{</div><div class='add'>+    rb_class_remove_from_super_subclasses(klass);</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> void</div><div class='ctx'> rb_class_detach_subclasses(VALUE klass)</div><div class='ctx'> {</div><div class='del'>-    rb_class_foreach_subclass(klass, rb_class_remove_from_super_subclasses);</div><div class='add'>+    rb_class_foreach_subclass(klass, class_detach_subclasses, Qnil);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+class_detach_module_subclasses(VALUE klass, VALUE arg)</div><div class='add'>+{</div><div class='add'>+    rb_class_remove_from_module_subclasses(klass);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> void</div><div class='ctx'> rb_class_detach_module_subclasses(VALUE klass)</div><div class='ctx'> {</div><div class='del'>-    rb_class_foreach_subclass(klass, rb_class_remove_from_module_subclasses);</div><div class='add'>+    rb_class_foreach_subclass(klass, class_detach_module_subclasses, Qnil);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /**</div><div class='hunk'>@@ -151,24 +163,30 @@ static VALUE</div><div class='ctx'> class_alloc(VALUE flags, VALUE klass)</div><div class='ctx'> {</div><div class='ctx'>     NEWOBJ_OF(obj, struct RClass, klass, (flags &amp; T_MASK) | FL_PROMOTED1 /* start from age == 2 */ | (RGENGC_WB_PROTECTED_CLASS ? FL_WB_PROTECTED : 0));</div><div class='del'>-    obj-&gt;ptr = ALLOC(rb_classext_t);</div><div class='del'>-    RCLASS_IV_TBL(obj) = 0;</div><div class='del'>-    RCLASS_CONST_TBL(obj) = 0;</div><div class='del'>-    RCLASS_M_TBL_WRAPPER(obj) = 0;</div><div class='del'>-    RCLASS_SET_SUPER((VALUE)obj, 0);</div><div class='del'>-    RCLASS_ORIGIN(obj) = (VALUE)obj;</div><div class='del'>-    RCLASS_IV_INDEX_TBL(obj) = 0;</div><div class='del'>-</div><div class='del'>-    RCLASS_EXT(obj)-&gt;subclasses = NULL;</div><div class='del'>-    RCLASS_EXT(obj)-&gt;parent_subclasses = NULL;</div><div class='del'>-    RCLASS_EXT(obj)-&gt;module_subclasses = NULL;</div><div class='add'>+    obj-&gt;ptr = ZALLOC(rb_classext_t);</div><div class='add'>+    /* ZALLOC</div><div class='add'>+      RCLASS_IV_TBL(obj) = 0;</div><div class='add'>+      RCLASS_CONST_TBL(obj) = 0;</div><div class='add'>+      RCLASS_M_TBL(obj) = 0;</div><div class='add'>+      RCLASS_IV_INDEX_TBL(obj) = 0;</div><div class='add'>+      RCLASS_SET_SUPER((VALUE)obj, 0);</div><div class='add'>+      RCLASS_EXT(obj)-&gt;subclasses = NULL;</div><div class='add'>+      RCLASS_EXT(obj)-&gt;parent_subclasses = NULL;</div><div class='add'>+      RCLASS_EXT(obj)-&gt;module_subclasses = NULL;</div><div class='add'>+     */</div><div class='add'>+    RCLASS_SET_ORIGIN((VALUE)obj, (VALUE)obj);</div><div class='ctx'>     RCLASS_SERIAL(obj) = rb_next_class_serial();</div><div class='del'>-</div><div class='ctx'>     RCLASS_REFINED_CLASS(obj) = Qnil;</div><div class='ctx'>     RCLASS_EXT(obj)-&gt;allocator = 0;</div><div class='add'>+</div><div class='ctx'>     return (VALUE)obj;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+static void</div><div class='add'>+RCLASS_M_TBL_INIT(VALUE c)</div><div class='add'>+{</div><div class='add'>+    RCLASS_M_TBL(c) = rb_id_table_create(0);</div><div class='add'>+}</div><div class='ctx'> </div><div class='ctx'> /*!</div><div class='ctx'>  * A utility function that wraps class_alloc.</div><div class='hunk'>@@ -202,8 +220,8 @@ void</div><div class='ctx'> rb_check_inheritable(VALUE super)</div><div class='ctx'> {</div><div class='ctx'>     if (!RB_TYPE_P(super, T_CLASS)) {</div><div class='del'>-	rb_raise(rb_eTypeError, "superclass must be a Class (%s given)",</div><div class='del'>-		 rb_obj_classname(super));</div><div class='add'>+	rb_raise(rb_eTypeError, "superclass must be a Class (%"PRIsVALUE" given)",</div><div class='add'>+		 rb_obj_class(super));</div><div class='ctx'>     }</div><div class='ctx'>     if (RBASIC(super)-&gt;flags &amp; FL_SINGLETON) {</div><div class='ctx'> 	rb_raise(rb_eTypeError, "can't make subclass of singleton class");</div><div class='hunk'>@@ -229,34 +247,34 @@ rb_class_new(VALUE super)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static void</div><div class='del'>-clone_method(VALUE klass, ID mid, const rb_method_entry_t *me)</div><div class='del'>-{</div><div class='del'>-    VALUE newiseqval;</div><div class='del'>-    if (me-&gt;def &amp;&amp; me-&gt;def-&gt;type == VM_METHOD_TYPE_ISEQ) {</div><div class='del'>-	rb_iseq_t *iseq;</div><div class='del'>-	NODE *new_cref;</div><div class='del'>-	newiseqval = rb_iseq_clone(me-&gt;def-&gt;body.iseq-&gt;self, klass);</div><div class='del'>-	GetISeqPtr(newiseqval, iseq);</div><div class='del'>-	rb_vm_rewrite_cref_stack(me-&gt;def-&gt;body.iseq-&gt;cref_stack, me-&gt;klass, klass, &amp;new_cref);</div><div class='del'>-	RB_OBJ_WRITE(iseq-&gt;self, &amp;iseq-&gt;cref_stack, new_cref);</div><div class='del'>-	rb_add_method(klass, mid, VM_METHOD_TYPE_ISEQ, iseq, me-&gt;flag);</div><div class='del'>-	RB_GC_GUARD(newiseqval);</div><div class='add'>+clone_method(VALUE old_klass, VALUE new_klass, ID mid, const rb_method_entry_t *me)</div><div class='add'>+{</div><div class='add'>+    if (me-&gt;def-&gt;type == VM_METHOD_TYPE_ISEQ) {</div><div class='add'>+	rb_cref_t *new_cref;</div><div class='add'>+	rb_vm_rewrite_cref(me-&gt;def-&gt;body.iseq.cref, old_klass, new_klass, &amp;new_cref);</div><div class='add'>+	rb_add_method_iseq(new_klass, mid, me-&gt;def-&gt;body.iseq.iseqptr, new_cref, METHOD_ENTRY_VISI(me));</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-	rb_method_entry_set(klass, mid, me, me-&gt;flag);</div><div class='add'>+	rb_method_entry_set(new_klass, mid, me, METHOD_ENTRY_VISI(me));</div><div class='ctx'>     }</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-static int</div><div class='del'>-clone_method_i(st_data_t key, st_data_t value, st_data_t data)</div><div class='add'>+struct clone_method_arg {</div><div class='add'>+    VALUE new_klass;</div><div class='add'>+    VALUE old_klass;</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+static enum rb_id_table_iterator_result</div><div class='add'>+clone_method_i(ID key, VALUE value, void *data)</div><div class='ctx'> {</div><div class='del'>-    clone_method((VALUE)data, (ID)key, (const rb_method_entry_t *)value);</div><div class='del'>-    return ST_CONTINUE;</div><div class='add'>+    const struct clone_method_arg *arg = (struct clone_method_arg *)data;</div><div class='add'>+    clone_method(arg-&gt;old_klass, arg-&gt;new_klass, key, (const rb_method_entry_t *)value);</div><div class='add'>+    return ID_TABLE_CONTINUE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> struct clone_const_arg {</div><div class='ctx'>     VALUE klass;</div><div class='del'>-    st_table *tbl;</div><div class='add'>+    struct rb_id_table *tbl;</div><div class='ctx'> };</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='hunk'>@@ -267,14 +285,14 @@ clone_const(ID key, const rb_const_entry_t *ce, struct clone_const_arg *arg)</div><div class='ctx'>     RB_OBJ_WRITTEN(arg-&gt;klass, Qundef, ce-&gt;value);</div><div class='ctx'>     RB_OBJ_WRITTEN(arg-&gt;klass, Qundef, ce-&gt;file);</div><div class='ctx'> </div><div class='del'>-    st_insert(arg-&gt;tbl, key, (st_data_t)nce);</div><div class='del'>-    return ST_CONTINUE;</div><div class='add'>+    rb_id_table_insert(arg-&gt;tbl, key, (VALUE)nce);</div><div class='add'>+    return ID_TABLE_CONTINUE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-static int</div><div class='del'>-clone_const_i(st_data_t key, st_data_t value, st_data_t data)</div><div class='add'>+static enum rb_id_table_iterator_result</div><div class='add'>+clone_const_i(ID key, VALUE value, void *data)</div><div class='ctx'> {</div><div class='del'>-    return clone_const((ID)key, (const rb_const_entry_t *)value, (struct clone_const_arg *)data);</div><div class='add'>+    return clone_const(key, (const rb_const_entry_t *)value, data);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static void</div><div class='hunk'>@@ -313,10 +331,7 @@ rb_mod_init_copy(VALUE clone, VALUE orig)</div><div class='ctx'> 	rb_free_const_table(RCLASS_CONST_TBL(clone));</div><div class='ctx'> 	RCLASS_CONST_TBL(clone) = 0;</div><div class='ctx'>     }</div><div class='del'>-    if (RCLASS_M_TBL_WRAPPER(clone)) {</div><div class='del'>-	rb_free_m_tbl_wrapper(RCLASS_M_TBL_WRAPPER(clone));</div><div class='del'>-	RCLASS_M_TBL_WRAPPER(clone) = 0;</div><div class='del'>-    }</div><div class='add'>+    RCLASS_M_TBL(clone) = 0;</div><div class='ctx'>     if (RCLASS_IV_TBL(orig)) {</div><div class='ctx'> 	st_data_t id;</div><div class='ctx'> </div><div class='hunk'>@@ -331,14 +346,16 @@ rb_mod_init_copy(VALUE clone, VALUE orig)</div><div class='ctx'>     if (RCLASS_CONST_TBL(orig)) {</div><div class='ctx'> 	struct clone_const_arg arg;</div><div class='ctx'> </div><div class='del'>-	RCLASS_CONST_TBL(clone) = st_init_numtable();</div><div class='add'>+	arg.tbl = RCLASS_CONST_TBL(clone) = rb_id_table_create(0);</div><div class='ctx'> 	arg.klass = clone;</div><div class='del'>-	arg.tbl = RCLASS_CONST_TBL(clone);</div><div class='del'>-	st_foreach(RCLASS_CONST_TBL(orig), clone_const_i, (st_data_t)&amp;arg);</div><div class='add'>+	rb_id_table_foreach(RCLASS_CONST_TBL(orig), clone_const_i, &amp;arg);</div><div class='ctx'>     }</div><div class='ctx'>     if (RCLASS_M_TBL(orig)) {</div><div class='add'>+	struct clone_method_arg arg;</div><div class='add'>+	arg.old_klass = orig;</div><div class='add'>+	arg.new_klass = clone;</div><div class='ctx'> 	RCLASS_M_TBL_INIT(clone);</div><div class='del'>-	st_foreach(RCLASS_M_TBL(orig), clone_method_i, (st_data_t)clone);</div><div class='add'>+	rb_id_table_foreach(RCLASS_M_TBL(orig), clone_method_i, &amp;arg);</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     return clone;</div><div class='hunk'>@@ -353,7 +370,7 @@ rb_singleton_class_clone(VALUE obj)</div><div class='ctx'> VALUE</div><div class='ctx'> rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)</div><div class='ctx'> {</div><div class='del'>-    VALUE klass = RBASIC(obj)-&gt;klass;</div><div class='add'>+    const VALUE klass = RBASIC(obj)-&gt;klass;</div><div class='ctx'> </div><div class='ctx'>     if (!FL_TEST(klass, FL_SINGLETON))</div><div class='ctx'> 	return klass;</div><div class='hunk'>@@ -375,16 +392,20 @@ rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)</div><div class='ctx'> 	}</div><div class='ctx'> 	if (RCLASS_CONST_TBL(klass)) {</div><div class='ctx'> 	    struct clone_const_arg arg;</div><div class='del'>-	    RCLASS_CONST_TBL(clone) = st_init_numtable();</div><div class='add'>+	    arg.tbl = RCLASS_CONST_TBL(clone) = rb_id_table_create(0);</div><div class='ctx'> 	    arg.klass = clone;</div><div class='del'>-	    arg.tbl = RCLASS_CONST_TBL(clone);</div><div class='del'>-	    st_foreach(RCLASS_CONST_TBL(klass), clone_const_i, (st_data_t)&amp;arg);</div><div class='add'>+	    rb_id_table_foreach(RCLASS_CONST_TBL(klass), clone_const_i, &amp;arg);</div><div class='ctx'> 	}</div><div class='ctx'> 	if (attach != Qundef) {</div><div class='ctx'> 	    rb_singleton_class_attached(clone, attach);</div><div class='ctx'> 	}</div><div class='ctx'> 	RCLASS_M_TBL_INIT(clone);</div><div class='del'>-	st_foreach(RCLASS_M_TBL(klass), clone_method_i, (st_data_t)clone);</div><div class='add'>+	{</div><div class='add'>+	    struct clone_method_arg arg;</div><div class='add'>+	    arg.old_klass = klass;</div><div class='add'>+	    arg.new_klass = clone;</div><div class='add'>+	    rb_id_table_foreach(RCLASS_M_TBL(klass), clone_method_i, &amp;arg);</div><div class='add'>+	}</div><div class='ctx'> 	rb_singleton_class_attached(RBASIC(clone)-&gt;klass, clone);</div><div class='ctx'> 	FL_SET(clone, FL_SINGLETON);</div><div class='ctx'> </div><div class='hunk'>@@ -403,7 +424,7 @@ rb_singleton_class_attached(VALUE klass, VALUE obj)</div><div class='ctx'> 	if (!RCLASS_IV_TBL(klass)) {</div><div class='ctx'> 	    RCLASS_IV_TBL(klass) = st_init_numtable();</div><div class='ctx'> 	}</div><div class='del'>-	rb_st_insert_id_and_value(klass, RCLASS_IV_TBL(klass), id_attached, obj);</div><div class='add'>+	rb_class_ivar_set(klass, id_attached, obj);</div><div class='ctx'>     }</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -419,6 +440,19 @@ rb_singleton_class_attached(VALUE klass, VALUE obj)</div><div class='ctx'>  */</div><div class='ctx'> #define META_CLASS_OF_CLASS_CLASS_P(k)  (METACLASS_OF(k) == (k))</div><div class='ctx'> </div><div class='add'>+static int</div><div class='add'>+rb_singleton_class_has_metaclass_p(VALUE sklass)</div><div class='add'>+{</div><div class='add'>+    return rb_attr_get(METACLASS_OF(sklass), id_attached) == sklass;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+int</div><div class='add'>+rb_singleton_class_internal_p(VALUE sklass)</div><div class='add'>+{</div><div class='add'>+    return (RB_TYPE_P(rb_attr_get(sklass, id_attached), T_CLASS) &amp;&amp;</div><div class='add'>+	    !rb_singleton_class_has_metaclass_p(sklass));</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> /*!</div><div class='ctx'>  * whether k has a metaclass</div><div class='ctx'>  * @retval 1 if \a k has a metaclass</div><div class='hunk'>@@ -426,7 +460,7 @@ rb_singleton_class_attached(VALUE klass, VALUE obj)</div><div class='ctx'>  */</div><div class='ctx'> #define HAVE_METACLASS_P(k) \</div><div class='ctx'>     (FL_TEST(METACLASS_OF(k), FL_SINGLETON) &amp;&amp; \</div><div class='del'>-     rb_ivar_get(METACLASS_OF(k), id_attached) == (k))</div><div class='add'>+     rb_singleton_class_has_metaclass_p(k))</div><div class='ctx'> </div><div class='ctx'> /*!</div><div class='ctx'>  * ensures \a klass belongs to its own eigenclass.</div><div class='hunk'>@@ -513,6 +547,11 @@ Init_class_hierarchy(void)</div><div class='ctx'> {</div><div class='ctx'>     rb_cBasicObject = boot_defclass("BasicObject", 0);</div><div class='ctx'>     rb_cObject = boot_defclass("Object", rb_cBasicObject);</div><div class='add'>+    rb_gc_register_mark_object(rb_cObject);</div><div class='add'>+</div><div class='add'>+    /* resolve class name ASAP for order-independence */</div><div class='add'>+    rb_class_name(rb_cObject);</div><div class='add'>+</div><div class='ctx'>     rb_cModule = boot_defclass("Module", rb_cObject);</div><div class='ctx'>     rb_cClass =  boot_defclass("Class",  rb_cModule);</div><div class='ctx'> </div><div class='hunk'>@@ -592,12 +631,12 @@ rb_class_inherited(VALUE super, VALUE klass)</div><div class='ctx'>  * Defines a top-level class.</div><div class='ctx'>  * \param name   name of the class</div><div class='ctx'>  * \param super  a class from which the new class will derive.</div><div class='del'>- *               NULL means \c Object class.</div><div class='ctx'>  * \return the created class</div><div class='ctx'>  * \throw TypeError if the constant name \a name is already taken but</div><div class='ctx'>  *                  the constant is not a \c Class.</div><div class='del'>- * \throw NameError if the class is already defined but the class can not</div><div class='add'>+ * \throw TypeError if the class is already defined but the class can not</div><div class='ctx'>  *                  be reopened because its superclass is not \a super.</div><div class='add'>+ * \throw ArgumentError if the \a super is NULL.</div><div class='ctx'>  * \post top-level constant named \a name refers the returned class.</div><div class='ctx'>  *</div><div class='ctx'>  * \note if a class named \a name is already defined and its superclass is</div><div class='hunk'>@@ -613,7 +652,8 @@ rb_define_class(const char *name, VALUE super)</div><div class='ctx'>     if (rb_const_defined(rb_cObject, id)) {</div><div class='ctx'> 	klass = rb_const_get(rb_cObject, id);</div><div class='ctx'> 	if (!RB_TYPE_P(klass, T_CLASS)) {</div><div class='del'>-	    rb_raise(rb_eTypeError, "%s is not a class", name);</div><div class='add'>+	    rb_raise(rb_eTypeError, "%s is not a class (%"PRIsVALUE")",</div><div class='add'>+		     name, rb_obj_class(klass));</div><div class='ctx'> 	}</div><div class='ctx'> 	if (rb_class_real(RCLASS_SUPER(klass)) != super) {</div><div class='ctx'> 	    rb_raise(rb_eTypeError, "superclass mismatch for class %s", name);</div><div class='hunk'>@@ -621,7 +661,7 @@ rb_define_class(const char *name, VALUE super)</div><div class='ctx'> 	return klass;</div><div class='ctx'>     }</div><div class='ctx'>     if (!super) {</div><div class='del'>-	rb_warn("no super class for `%s', Object assumed", name);</div><div class='add'>+	rb_raise(rb_eArgError, "no super class for `%s'", name);</div><div class='ctx'>     }</div><div class='ctx'>     klass = rb_define_class_id(id, super);</div><div class='ctx'>     rb_vm_add_root_module(id, klass);</div><div class='hunk'>@@ -642,7 +682,7 @@ rb_define_class(const char *name, VALUE super)</div><div class='ctx'>  * \return the created class</div><div class='ctx'>  * \throw TypeError if the constant name \a name is already taken but</div><div class='ctx'>  *                  the constant is not a \c Class.</div><div class='del'>- * \throw NameError if the class is already defined but the class can not</div><div class='add'>+ * \throw TypeError if the class is already defined but the class can not</div><div class='ctx'>  *                  be reopened because its superclass is not \a super.</div><div class='ctx'>  * \post top-level constant named \a name refers the returned class.</div><div class='ctx'>  *</div><div class='hunk'>@@ -665,7 +705,7 @@ rb_define_class_under(VALUE outer, const char *name, VALUE super)</div><div class='ctx'>  * \return the created class</div><div class='ctx'>  * \throw TypeError if the constant name \a name is already taken but</div><div class='ctx'>  *                  the constant is not a \c Class.</div><div class='del'>- * \throw NameError if the class is already defined but the class can not</div><div class='add'>+ * \throw TypeError if the class is already defined but the class can not</div><div class='ctx'>  *                  be reopened because its superclass is not \a super.</div><div class='ctx'>  * \post top-level constant named \a name refers the returned class.</div><div class='ctx'>  *</div><div class='hunk'>@@ -680,16 +720,21 @@ rb_define_class_id_under(VALUE outer, ID id, VALUE super)</div><div class='ctx'>     if (rb_const_defined_at(outer, id)) {</div><div class='ctx'> 	klass = rb_const_get_at(outer, id);</div><div class='ctx'> 	if (!RB_TYPE_P(klass, T_CLASS)) {</div><div class='del'>-	    rb_raise(rb_eTypeError, "%"PRIsVALUE" is not a class", rb_id2str(id));</div><div class='add'>+	    rb_raise(rb_eTypeError, "%"PRIsVALUE"::%"PRIsVALUE" is not a class"</div><div class='add'>+		     " (%"PRIsVALUE")",</div><div class='add'>+		     outer, rb_id2str(id), rb_obj_class(klass));</div><div class='ctx'> 	}</div><div class='ctx'> 	if (rb_class_real(RCLASS_SUPER(klass)) != super) {</div><div class='del'>-	    rb_name_error(id, "%"PRIsVALUE" is already defined", rb_id2str(id));</div><div class='add'>+	    rb_raise(rb_eTypeError, "superclass mismatch for class "</div><div class='add'>+		     "%"PRIsVALUE"::%"PRIsVALUE""</div><div class='add'>+		     " (%"PRIsVALUE" is given but was %"PRIsVALUE")",</div><div class='add'>+		     outer, rb_id2str(id), RCLASS_SUPER(klass), super);</div><div class='ctx'> 	}</div><div class='ctx'> 	return klass;</div><div class='ctx'>     }</div><div class='ctx'>     if (!super) {</div><div class='del'>-	rb_warn("no super class for `%"PRIsVALUE"::%"PRIsVALUE"', Object assumed",</div><div class='del'>-		rb_class_path(outer), rb_id2str(id));</div><div class='add'>+	rb_raise(rb_eArgError, "no super class for `%"PRIsVALUE"::%"PRIsVALUE"'",</div><div class='add'>+		 rb_class_path(outer), rb_id2str(id));</div><div class='ctx'>     }</div><div class='ctx'>     klass = rb_define_class_id(id, super);</div><div class='ctx'>     rb_set_class_path_string(klass, outer, rb_id2str(id));</div><div class='hunk'>@@ -728,9 +773,11 @@ rb_define_module(const char *name)</div><div class='ctx'>     id = rb_intern(name);</div><div class='ctx'>     if (rb_const_defined(rb_cObject, id)) {</div><div class='ctx'> 	module = rb_const_get(rb_cObject, id);</div><div class='del'>-	if (RB_TYPE_P(module, T_MODULE))</div><div class='del'>-	    return module;</div><div class='del'>-	rb_raise(rb_eTypeError, "%s is not a module", rb_obj_classname(module));</div><div class='add'>+	if (!RB_TYPE_P(module, T_MODULE)) {</div><div class='add'>+	    rb_raise(rb_eTypeError, "%s is not a module (%"PRIsVALUE")",</div><div class='add'>+		     name, rb_obj_class(module));</div><div class='add'>+	}</div><div class='add'>+	return module;</div><div class='ctx'>     }</div><div class='ctx'>     module = rb_define_module_id(id);</div><div class='ctx'>     rb_vm_add_root_module(id, module);</div><div class='hunk'>@@ -752,10 +799,12 @@ rb_define_module_id_under(VALUE outer, ID id)</div><div class='ctx'> </div><div class='ctx'>     if (rb_const_defined_at(outer, id)) {</div><div class='ctx'> 	module = rb_const_get_at(outer, id);</div><div class='del'>-	if (RB_TYPE_P(module, T_MODULE))</div><div class='del'>-	    return module;</div><div class='del'>-	rb_raise(rb_eTypeError, "%s::%s is not a module",</div><div class='del'>-		 rb_class2name(outer), rb_obj_classname(module));</div><div class='add'>+	if (!RB_TYPE_P(module, T_MODULE)) {</div><div class='add'>+	    rb_raise(rb_eTypeError, "%"PRIsVALUE"::%"PRIsVALUE" is not a module"</div><div class='add'>+		     " (%"PRIsVALUE")",</div><div class='add'>+		     outer, rb_id2str(id), rb_obj_class(module));</div><div class='add'>+	}</div><div class='add'>+	return module;</div><div class='ctx'>     }</div><div class='ctx'>     module = rb_define_module_id(id);</div><div class='ctx'>     rb_const_set(outer, id, module);</div><div class='hunk'>@@ -777,13 +826,13 @@ rb_include_class_new(VALUE module, VALUE super)</div><div class='ctx'> 	RCLASS_IV_TBL(module) = st_init_numtable();</div><div class='ctx'>     }</div><div class='ctx'>     if (!RCLASS_CONST_TBL(module)) {</div><div class='del'>-	RCLASS_CONST_TBL(module) = st_init_numtable();</div><div class='add'>+	RCLASS_CONST_TBL(module) = rb_id_table_create(0);</div><div class='ctx'>     }</div><div class='ctx'>     RCLASS_IV_TBL(klass) = RCLASS_IV_TBL(module);</div><div class='ctx'>     RCLASS_CONST_TBL(klass) = RCLASS_CONST_TBL(module);</div><div class='ctx'> </div><div class='del'>-    RCLASS_M_TBL_WRAPPER(OBJ_WB_UNPROTECT(klass)) =</div><div class='del'>-	RCLASS_M_TBL_WRAPPER(OBJ_WB_UNPROTECT(RCLASS_ORIGIN(module)));</div><div class='add'>+    RCLASS_M_TBL(OBJ_WB_UNPROTECT(klass)) =</div><div class='add'>+      RCLASS_M_TBL(OBJ_WB_UNPROTECT(RCLASS_ORIGIN(module))); /* TODO: unprotected? */</div><div class='ctx'> </div><div class='ctx'>     RCLASS_SET_SUPER(klass, super);</div><div class='ctx'>     if (RB_TYPE_P(module, T_ICLASS)) {</div><div class='hunk'>@@ -798,7 +847,7 @@ rb_include_class_new(VALUE module, VALUE super)</div><div class='ctx'>     return (VALUE)klass;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-static int include_modules_at(const VALUE klass, VALUE c, VALUE module);</div><div class='add'>+static int include_modules_at(const VALUE klass, VALUE c, VALUE module, int search_super);</div><div class='ctx'> </div><div class='ctx'> void</div><div class='ctx'> rb_include_module(VALUE klass, VALUE module)</div><div class='hunk'>@@ -806,34 +855,31 @@ rb_include_module(VALUE klass, VALUE module)</div><div class='ctx'>     int changed = 0;</div><div class='ctx'> </div><div class='ctx'>     rb_frozen_class_p(klass);</div><div class='del'>-</div><div class='del'>-    if (!RB_TYPE_P(module, T_MODULE)) {</div><div class='del'>-	Check_Type(module, T_MODULE);</div><div class='del'>-    }</div><div class='del'>-</div><div class='add'>+    Check_Type(module, T_MODULE);</div><div class='ctx'>     OBJ_INFECT(klass, module);</div><div class='ctx'> </div><div class='del'>-    changed = include_modules_at(klass, RCLASS_ORIGIN(klass), module);</div><div class='add'>+    changed = include_modules_at(klass, RCLASS_ORIGIN(klass), module, TRUE);</div><div class='ctx'>     if (changed &lt; 0)</div><div class='ctx'> 	rb_raise(rb_eArgError, "cyclic include detected");</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-static int</div><div class='del'>-add_refined_method_entry_i(st_data_t key, st_data_t value, st_data_t data)</div><div class='add'>+static enum rb_id_table_iterator_result</div><div class='add'>+add_refined_method_entry_i(ID key, VALUE value, void *data)</div><div class='ctx'> {</div><div class='del'>-    rb_add_refined_method_entry((VALUE) data, (ID) key);</div><div class='del'>-    return ST_CONTINUE;</div><div class='add'>+    rb_add_refined_method_entry((VALUE)data, key);</div><div class='add'>+    return ID_TABLE_CONTINUE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='del'>-include_modules_at(const VALUE klass, VALUE c, VALUE module)</div><div class='add'>+include_modules_at(const VALUE klass, VALUE c, VALUE module, int search_super)</div><div class='ctx'> {</div><div class='ctx'>     VALUE p, iclass;</div><div class='ctx'>     int method_changed = 0, constant_changed = 0;</div><div class='del'>-    const st_table *const klass_m_tbl = RCLASS_M_TBL(RCLASS_ORIGIN(klass));</div><div class='add'>+    struct rb_id_table *const klass_m_tbl = RCLASS_M_TBL(RCLASS_ORIGIN(klass));</div><div class='ctx'> </div><div class='ctx'>     while (module) {</div><div class='ctx'> 	int superclass_seen = FALSE;</div><div class='add'>+	struct rb_id_table *tbl;</div><div class='ctx'> </div><div class='ctx'> 	if (RCLASS_ORIGIN(module) != module)</div><div class='ctx'> 	    goto skip;</div><div class='hunk'>@@ -841,42 +887,42 @@ include_modules_at(const VALUE klass, VALUE c, VALUE module)</div><div class='ctx'> 	    return -1;</div><div class='ctx'> 	/* ignore if the module included already in superclasses */</div><div class='ctx'> 	for (p = RCLASS_SUPER(klass); p; p = RCLASS_SUPER(p)) {</div><div class='del'>-	    switch (BUILTIN_TYPE(p)) {</div><div class='del'>-	      case T_ICLASS:</div><div class='del'>-		if (RCLASS_M_TBL_WRAPPER(p) == RCLASS_M_TBL_WRAPPER(module)) {</div><div class='add'>+	    int type = BUILTIN_TYPE(p);</div><div class='add'>+	    if (type == T_ICLASS) {</div><div class='add'>+		if (RCLASS_M_TBL(p) == RCLASS_M_TBL(module)) {</div><div class='ctx'> 		    if (!superclass_seen) {</div><div class='ctx'> 			c = p;  /* move insertion point */</div><div class='ctx'> 		    }</div><div class='ctx'> 		    goto skip;</div><div class='ctx'> 		}</div><div class='del'>-		break;</div><div class='del'>-	      case T_CLASS:</div><div class='add'>+	    }</div><div class='add'>+	    else if (type == T_CLASS) {</div><div class='add'>+		if (!search_super) break;</div><div class='ctx'> 		superclass_seen = TRUE;</div><div class='del'>-		break;</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'> 	iclass = rb_include_class_new(module, RCLASS_SUPER(c));</div><div class='ctx'> 	c = RCLASS_SET_SUPER(c, iclass);</div><div class='ctx'> </div><div class='del'>-	if (BUILTIN_TYPE(module) == T_ICLASS) {</div><div class='del'>-	    rb_module_add_to_subclasses_list(RBASIC(module)-&gt;klass, iclass);</div><div class='del'>-	}</div><div class='del'>-	else {</div><div class='del'>-	    rb_module_add_to_subclasses_list(module, iclass);</div><div class='add'>+	{</div><div class='add'>+	    VALUE m = module;</div><div class='add'>+	    if (BUILTIN_TYPE(m) == T_ICLASS) m = RBASIC(m)-&gt;klass;</div><div class='add'>+	    rb_module_add_to_subclasses_list(m, iclass);</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	if (FL_TEST(klass, RMODULE_IS_REFINEMENT)) {</div><div class='ctx'> 	    VALUE refined_class =</div><div class='ctx'> 		rb_refinement_module_get_refined_class(klass);</div><div class='ctx'> </div><div class='del'>-	    st_foreach(RMODULE_M_TBL(module), add_refined_method_entry_i,</div><div class='del'>-		       (st_data_t) refined_class);</div><div class='add'>+	    rb_id_table_foreach(RMODULE_M_TBL(module), add_refined_method_entry_i, (void *)refined_class);</div><div class='ctx'> 	    FL_SET(c, RMODULE_INCLUDED_INTO_REFINEMENT);</div><div class='ctx'> 	}</div><div class='del'>-	if (RMODULE_M_TBL(module) &amp;&amp; RMODULE_M_TBL(module)-&gt;num_entries)</div><div class='del'>-	    method_changed = 1;</div><div class='del'>-	if (RMODULE_CONST_TBL(module) &amp;&amp; RMODULE_CONST_TBL(module)-&gt;num_entries)</div><div class='del'>-	    constant_changed = 1;</div><div class='add'>+</div><div class='add'>+	tbl = RMODULE_M_TBL(module);</div><div class='add'>+	if (tbl &amp;&amp; rb_id_table_size(tbl)) method_changed = 1;</div><div class='add'>+</div><div class='add'>+	tbl = RMODULE_CONST_TBL(module);</div><div class='add'>+	if (tbl &amp;&amp; rb_id_table_size(tbl)) constant_changed = 1;</div><div class='ctx'>       skip:</div><div class='ctx'> 	module = RCLASS_SUPER(module);</div><div class='ctx'>     }</div><div class='hunk'>@@ -887,30 +933,30 @@ include_modules_at(const VALUE klass, VALUE c, VALUE module)</div><div class='ctx'>     return method_changed;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-static int</div><div class='del'>-move_refined_method(st_data_t key, st_data_t value, st_data_t data)</div><div class='add'>+static enum rb_id_table_iterator_result</div><div class='add'>+move_refined_method(ID key, VALUE value, void *data)</div><div class='ctx'> {</div><div class='ctx'>     rb_method_entry_t *me = (rb_method_entry_t *) value;</div><div class='del'>-    st_table *tbl = (st_table *) data;</div><div class='add'>+    VALUE klass = (VALUE)data;</div><div class='add'>+    struct rb_id_table *tbl = RCLASS_M_TBL(klass);</div><div class='ctx'> </div><div class='ctx'>     if (me-&gt;def-&gt;type == VM_METHOD_TYPE_REFINED) {</div><div class='del'>-	if (me-&gt;def-&gt;body.orig_me) {</div><div class='del'>-	    rb_method_entry_t *orig_me = me-&gt;def-&gt;body.orig_me, *new_me;</div><div class='del'>-	    me-&gt;def-&gt;body.orig_me = NULL;</div><div class='del'>-	    new_me = ALLOC(rb_method_entry_t);</div><div class='del'>-	    *new_me = *me;</div><div class='del'>-	    st_add_direct(tbl, key, (st_data_t) new_me);</div><div class='del'>-	    *me = *orig_me;</div><div class='del'>-	    xfree(orig_me);</div><div class='del'>-	    return ST_CONTINUE;</div><div class='add'>+	if (me-&gt;def-&gt;body.refined.orig_me) {</div><div class='add'>+	    const rb_method_entry_t *orig_me = me-&gt;def-&gt;body.refined.orig_me, *new_me;</div><div class='add'>+	    RB_OBJ_WRITE(me, &amp;me-&gt;def-&gt;body.refined.orig_me, NULL);</div><div class='add'>+	    new_me = rb_method_entry_clone(me);</div><div class='add'>+	    rb_id_table_insert(tbl, key, (VALUE)new_me);</div><div class='add'>+	    RB_OBJ_WRITTEN(klass, Qundef, new_me);</div><div class='add'>+	    rb_method_entry_copy(me, orig_me);</div><div class='add'>+	    return ID_TABLE_CONTINUE;</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='del'>-	    st_add_direct(tbl, key, (st_data_t) me);</div><div class='del'>-	    return ST_DELETE;</div><div class='add'>+	    rb_id_table_insert(tbl, key, (VALUE)me);</div><div class='add'>+	    return ID_TABLE_DELETE;</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-	return ST_CONTINUE;</div><div class='add'>+	return ID_TABLE_CONTINUE;</div><div class='ctx'>     }</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -921,9 +967,7 @@ rb_prepend_module(VALUE klass, VALUE module)</div><div class='ctx'>     int changed = 0;</div><div class='ctx'> </div><div class='ctx'>     rb_frozen_class_p(klass);</div><div class='del'>-</div><div class='ctx'>     Check_Type(module, T_MODULE);</div><div class='del'>-</div><div class='ctx'>     OBJ_INFECT(klass, module);</div><div class='ctx'> </div><div class='ctx'>     origin = RCLASS_ORIGIN(klass);</div><div class='hunk'>@@ -932,13 +976,12 @@ rb_prepend_module(VALUE klass, VALUE module)</div><div class='ctx'> 	OBJ_WB_UNPROTECT(origin); /* TODO: conservative shading. Need more survey. */</div><div class='ctx'> 	RCLASS_SET_SUPER(origin, RCLASS_SUPER(klass));</div><div class='ctx'> 	RCLASS_SET_SUPER(klass, origin);</div><div class='del'>-	RB_OBJ_WRITE(klass, &amp;RCLASS_ORIGIN(klass), origin);</div><div class='del'>-	RCLASS_M_TBL_WRAPPER(origin) = RCLASS_M_TBL_WRAPPER(klass);</div><div class='add'>+	RCLASS_SET_ORIGIN(klass, origin);</div><div class='add'>+	RCLASS_M_TBL(origin) = RCLASS_M_TBL(klass);</div><div class='ctx'> 	RCLASS_M_TBL_INIT(klass);</div><div class='del'>-	st_foreach(RCLASS_M_TBL(origin), move_refined_method,</div><div class='del'>-		   (st_data_t) RCLASS_M_TBL(klass));</div><div class='add'>+	rb_id_table_foreach(RCLASS_M_TBL(origin), move_refined_method, (void *)klass);</div><div class='ctx'>     }</div><div class='del'>-    changed = include_modules_at(klass, klass, module);</div><div class='add'>+    changed = include_modules_at(klass, klass, module, FALSE);</div><div class='ctx'>     if (changed &lt; 0)</div><div class='ctx'> 	rb_raise(rb_eArgError, "cyclic prepend detected");</div><div class='ctx'>     if (changed) {</div><div class='hunk'>@@ -1047,52 +1090,51 @@ rb_mod_ancestors(VALUE mod)</div><div class='ctx'>     return ary;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-#define VISI(x) ((x)&amp;NOEX_MASK)</div><div class='del'>-#define VISI_CHECK(x,f) (VISI(x) == (f))</div><div class='add'>+static void</div><div class='add'>+ins_methods_push(st_data_t name, st_data_t ary)</div><div class='add'>+{</div><div class='add'>+    rb_ary_push((VALUE)ary, ID2SYM((ID)name));</div><div class='add'>+}</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='del'>-ins_methods_push(ID name, long type, VALUE ary, long visi)</div><div class='add'>+ins_methods_i(st_data_t name, st_data_t type, st_data_t ary)</div><div class='ctx'> {</div><div class='del'>-    if (type == -1) return ST_CONTINUE;</div><div class='del'>-</div><div class='del'>-    switch (visi) {</div><div class='del'>-      case NOEX_PRIVATE:</div><div class='del'>-      case NOEX_PROTECTED:</div><div class='del'>-      case NOEX_PUBLIC:</div><div class='del'>-	visi = (type == visi);</div><div class='add'>+    switch ((rb_method_visibility_t)type) {</div><div class='add'>+      case METHOD_VISI_UNDEF:</div><div class='add'>+      case METHOD_VISI_PRIVATE:</div><div class='ctx'> 	break;</div><div class='del'>-      default:</div><div class='del'>-	visi = (type != NOEX_PRIVATE);</div><div class='add'>+      default: /* everything but private */</div><div class='add'>+	ins_methods_push(name, ary);</div><div class='ctx'> 	break;</div><div class='ctx'>     }</div><div class='del'>-    if (visi) {</div><div class='del'>-	rb_ary_push(ary, ID2SYM(name));</div><div class='del'>-    }</div><div class='ctx'>     return ST_CONTINUE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='del'>-ins_methods_i(st_data_t name, st_data_t type, st_data_t ary)</div><div class='del'>-{</div><div class='del'>-    return ins_methods_push((ID)name, (long)type, (VALUE)ary, -1); /* everything but private */</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-static int</div><div class='ctx'> ins_methods_prot_i(st_data_t name, st_data_t type, st_data_t ary)</div><div class='ctx'> {</div><div class='del'>-    return ins_methods_push((ID)name, (long)type, (VALUE)ary, NOEX_PROTECTED);</div><div class='add'>+    if ((rb_method_visibility_t)type == METHOD_VISI_PROTECTED) {</div><div class='add'>+	ins_methods_push(name, ary);</div><div class='add'>+    }</div><div class='add'>+    return ST_CONTINUE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='ctx'> ins_methods_priv_i(st_data_t name, st_data_t type, st_data_t ary)</div><div class='ctx'> {</div><div class='del'>-    return ins_methods_push((ID)name, (long)type, (VALUE)ary, NOEX_PRIVATE);</div><div class='add'>+    if ((rb_method_visibility_t)type == METHOD_VISI_PRIVATE) {</div><div class='add'>+	ins_methods_push(name, ary);</div><div class='add'>+    }</div><div class='add'>+    return ST_CONTINUE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='ctx'> ins_methods_pub_i(st_data_t name, st_data_t type, st_data_t ary)</div><div class='ctx'> {</div><div class='del'>-    return ins_methods_push((ID)name, (long)type, (VALUE)ary, NOEX_PUBLIC);</div><div class='add'>+    if ((rb_method_visibility_t)type == METHOD_VISI_PUBLIC) {</div><div class='add'>+	ins_methods_push(name, ary);</div><div class='add'>+    }</div><div class='add'>+    return ST_CONTINUE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> struct method_entry_arg {</div><div class='hunk'>@@ -1100,29 +1142,29 @@ struct method_entry_arg {</div><div class='ctx'>     int recur;</div><div class='ctx'> };</div><div class='ctx'> </div><div class='del'>-static int</div><div class='del'>-method_entry_i(st_data_t key, st_data_t value, st_data_t data)</div><div class='add'>+static enum rb_id_table_iterator_result</div><div class='add'>+method_entry_i(ID key, VALUE value, void *data)</div><div class='ctx'> {</div><div class='ctx'>     const rb_method_entry_t *me = (const rb_method_entry_t *)value;</div><div class='ctx'>     struct method_entry_arg *arg = (struct method_entry_arg *)data;</div><div class='del'>-    long type;</div><div class='add'>+    rb_method_visibility_t type;</div><div class='ctx'> </div><div class='del'>-    if (me &amp;&amp; me-&gt;def-&gt;type == VM_METHOD_TYPE_REFINED) {</div><div class='del'>-	VALUE klass = me-&gt;klass;</div><div class='del'>-	me = rb_resolve_refined_method(Qnil, me, NULL);</div><div class='del'>-	if (!me) return ST_CONTINUE;</div><div class='del'>-	if (!arg-&gt;recur &amp;&amp; me-&gt;klass != klass) return ST_CONTINUE;</div><div class='add'>+    if (me-&gt;def-&gt;type == VM_METHOD_TYPE_REFINED) {</div><div class='add'>+	VALUE owner = me-&gt;owner;</div><div class='add'>+	me = rb_resolve_refined_method(Qnil, me);</div><div class='add'>+	if (!me) return ID_TABLE_CONTINUE;</div><div class='add'>+	if (!arg-&gt;recur &amp;&amp; me-&gt;owner != owner) return ID_TABLE_CONTINUE;</div><div class='ctx'>     }</div><div class='ctx'>     if (!st_lookup(arg-&gt;list, key, 0)) {</div><div class='ctx'> 	if (UNDEFINED_METHOD_ENTRY_P(me)) {</div><div class='del'>-	    type = -1; /* none */</div><div class='add'>+	    type = METHOD_VISI_UNDEF; /* none */</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='del'>-	    type = VISI(me-&gt;flag);</div><div class='add'>+	    type = METHOD_ENTRY_VISI(me);</div><div class='ctx'> 	}</div><div class='del'>-	st_add_direct(arg-&gt;list, key, type);</div><div class='add'>+	st_add_direct(arg-&gt;list, key, (st_data_t)type);</div><div class='ctx'>     }</div><div class='del'>-    return ST_CONTINUE;</div><div class='add'>+    return ID_TABLE_CONTINUE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static VALUE</div><div class='hunk'>@@ -1149,7 +1191,7 @@ class_instance_method_list(int argc, const VALUE *argv, VALUE mod, int obj, int</div><div class='ctx'>     me_arg.list = st_init_numtable();</div><div class='ctx'>     me_arg.recur = recur;</div><div class='ctx'>     for (; mod; mod = RCLASS_SUPER(mod)) {</div><div class='del'>-	if (RCLASS_M_TBL(mod)) st_foreach(RCLASS_M_TBL(mod), method_entry_i, (st_data_t)&amp;me_arg);</div><div class='add'>+	if (RCLASS_M_TBL(mod)) rb_id_table_foreach(RCLASS_M_TBL(mod), method_entry_i, &amp;me_arg);</div><div class='ctx'> 	if (BUILTIN_TYPE(mod) == T_ICLASS &amp;&amp; !prepended) continue;</div><div class='ctx'> 	if (obj &amp;&amp; FL_TEST(mod, FL_SINGLETON)) continue;</div><div class='ctx'> 	if (!recur) break;</div><div class='hunk'>@@ -1370,7 +1412,7 @@ rb_obj_singleton_methods(int argc, const VALUE *argv, VALUE obj)</div><div class='ctx'> {</div><div class='ctx'>     VALUE recur, ary, klass, origin;</div><div class='ctx'>     struct method_entry_arg me_arg;</div><div class='del'>-    st_table *mtbl;</div><div class='add'>+    struct rb_id_table *mtbl;</div><div class='ctx'> </div><div class='ctx'>     if (argc == 0) {</div><div class='ctx'> 	recur = Qtrue;</div><div class='hunk'>@@ -1383,14 +1425,12 @@ rb_obj_singleton_methods(int argc, const VALUE *argv, VALUE obj)</div><div class='ctx'>     me_arg.list = st_init_numtable();</div><div class='ctx'>     me_arg.recur = RTEST(recur);</div><div class='ctx'>     if (klass &amp;&amp; FL_TEST(klass, FL_SINGLETON)) {</div><div class='del'>-	if ((mtbl = RCLASS_M_TBL(origin)) != 0)</div><div class='del'>-	    st_foreach(mtbl, method_entry_i, (st_data_t)&amp;me_arg);</div><div class='add'>+	if ((mtbl = RCLASS_M_TBL(origin)) != 0) rb_id_table_foreach(mtbl, method_entry_i, &amp;me_arg);</div><div class='ctx'> 	klass = RCLASS_SUPER(klass);</div><div class='ctx'>     }</div><div class='ctx'>     if (RTEST(recur)) {</div><div class='ctx'> 	while (klass &amp;&amp; (FL_TEST(klass, FL_SINGLETON) || RB_TYPE_P(klass, T_ICLASS))) {</div><div class='del'>-	    if (klass != origin &amp;&amp; (mtbl = RCLASS_M_TBL(klass)) != 0)</div><div class='del'>-		st_foreach(mtbl, method_entry_i, (st_data_t)&amp;me_arg);</div><div class='add'>+	    if (klass != origin &amp;&amp; (mtbl = RCLASS_M_TBL(klass)) != 0) rb_id_table_foreach(mtbl, method_entry_i, &amp;me_arg);</div><div class='ctx'> 	    klass = RCLASS_SUPER(klass);</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='hunk'>@@ -1461,31 +1501,31 @@ rb_obj_singleton_methods(int argc, const VALUE *argv, VALUE obj)</div><div class='ctx'> void</div><div class='ctx'> rb_define_method_id(VALUE klass, ID mid, VALUE (*func)(ANYARGS), int argc)</div><div class='ctx'> {</div><div class='del'>-    rb_add_method_cfunc(klass, mid, func, argc, NOEX_PUBLIC);</div><div class='add'>+    rb_add_method_cfunc(klass, mid, func, argc, METHOD_VISI_PUBLIC);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> void</div><div class='ctx'> rb_define_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)</div><div class='ctx'> {</div><div class='del'>-    rb_add_method_cfunc(klass, rb_intern(name), func, argc, NOEX_PUBLIC);</div><div class='add'>+    rb_add_method_cfunc(klass, rb_intern(name), func, argc, METHOD_VISI_PUBLIC);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> void</div><div class='ctx'> rb_define_protected_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)</div><div class='ctx'> {</div><div class='del'>-    rb_add_method_cfunc(klass, rb_intern(name), func, argc, NOEX_PROTECTED);</div><div class='add'>+    rb_add_method_cfunc(klass, rb_intern(name), func, argc, METHOD_VISI_PROTECTED);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> void</div><div class='ctx'> rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)</div><div class='ctx'> {</div><div class='del'>-    rb_add_method_cfunc(klass, rb_intern(name), func, argc, NOEX_PRIVATE);</div><div class='add'>+    rb_add_method_cfunc(klass, rb_intern(name), func, argc, METHOD_VISI_PRIVATE);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> void</div><div class='ctx'> rb_undef_method(VALUE klass, const char *name)</div><div class='ctx'> {</div><div class='del'>-    rb_add_method(klass, rb_intern(name), VM_METHOD_TYPE_UNDEF, 0, NOEX_UNDEF);</div><div class='add'>+    rb_add_method(klass, rb_intern(name), VM_METHOD_TYPE_UNDEF, 0, METHOD_VISI_UNDEF);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*!</div><div class='hunk'>@@ -1707,16 +1747,143 @@ rb_define_attr(VALUE klass, const char *name, int read, int write)</div><div class='ctx'> int</div><div class='ctx'> rb_obj_basic_to_s_p(VALUE obj)</div><div class='ctx'> {</div><div class='del'>-    const rb_method_entry_t *me = rb_method_entry(CLASS_OF(obj), rb_intern("to_s"), 0);</div><div class='add'>+    const rb_method_entry_t *me = rb_method_entry(CLASS_OF(obj), rb_intern("to_s"));</div><div class='ctx'>     if (me &amp;&amp; me-&gt;def &amp;&amp; me-&gt;def-&gt;type == VM_METHOD_TYPE_CFUNC &amp;&amp;</div><div class='ctx'> 	me-&gt;def-&gt;body.cfunc.func == rb_any_to_s)</div><div class='ctx'> 	return 1;</div><div class='ctx'>     return 0;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-#include &lt;stdarg.h&gt;</div><div class='add'>+VALUE</div><div class='add'>+rb_keyword_error_new(const char *error, VALUE keys)</div><div class='add'>+{</div><div class='add'>+    const char *msg = "";</div><div class='add'>+    VALUE error_message;</div><div class='add'>+</div><div class='add'>+    if (RARRAY_LEN(keys) == 1) {</div><div class='add'>+	keys = RARRAY_AREF(keys, 0);</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	keys = rb_ary_join(keys, rb_usascii_str_new2(", "));</div><div class='add'>+	msg = "s";</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    error_message = rb_sprintf("%s keyword%s: %"PRIsVALUE, error, msg, keys);</div><div class='add'>+</div><div class='add'>+    return rb_exc_new_str(rb_eArgError, error_message);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+NORETURN(static void rb_keyword_error(const char *error, VALUE keys));</div><div class='add'>+static void</div><div class='add'>+rb_keyword_error(const char *error, VALUE keys)</div><div class='add'>+{</div><div class='add'>+    rb_exc_raise(rb_keyword_error_new(error, keys));</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+NORETURN(static void unknown_keyword_error(VALUE hash, const ID *table, int keywords));</div><div class='add'>+static void</div><div class='add'>+unknown_keyword_error(VALUE hash, const ID *table, int keywords)</div><div class='add'>+{</div><div class='add'>+    st_table *tbl = rb_hash_tbl_raw(hash);</div><div class='add'>+    VALUE keys;</div><div class='add'>+    int i;</div><div class='add'>+    for (i = 0; i &lt; keywords; i++) {</div><div class='add'>+	st_data_t key = ID2SYM(table[i]);</div><div class='add'>+	st_delete(tbl, &amp;key, NULL);</div><div class='add'>+    }</div><div class='add'>+    keys = rb_funcallv(hash, rb_intern("keys"), 0, 0);</div><div class='add'>+    if (!RB_TYPE_P(keys, T_ARRAY)) rb_raise(rb_eArgError, "unknown keyword");</div><div class='add'>+    rb_keyword_error("unknown", keys);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static int</div><div class='add'>+separate_symbol(st_data_t key, st_data_t value, st_data_t arg)</div><div class='add'>+{</div><div class='add'>+    VALUE *kwdhash = (VALUE *)arg;</div><div class='add'>+</div><div class='add'>+    if (!SYMBOL_P(key)) kwdhash++;</div><div class='add'>+    if (!*kwdhash) *kwdhash = rb_hash_new();</div><div class='add'>+    rb_hash_aset(*kwdhash, (VALUE)key, (VALUE)value);</div><div class='add'>+    return ST_CONTINUE;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+VALUE</div><div class='add'>+rb_extract_keywords(VALUE *orighash)</div><div class='add'>+{</div><div class='add'>+    VALUE parthash[2] = {0, 0};</div><div class='add'>+    VALUE hash = *orighash;</div><div class='add'>+</div><div class='add'>+    if (RHASH_EMPTY_P(hash)) {</div><div class='add'>+	*orighash = 0;</div><div class='add'>+	return hash;</div><div class='add'>+    }</div><div class='add'>+    st_foreach(rb_hash_tbl_raw(hash), separate_symbol, (st_data_t)&amp;parthash);</div><div class='add'>+    *orighash = parthash[1];</div><div class='add'>+    return parthash[0];</div><div class='add'>+}</div><div class='ctx'> </div><div class='ctx'> int</div><div class='add'>+rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *values)</div><div class='add'>+{</div><div class='add'>+    int i = 0, j;</div><div class='add'>+    int rest = 0;</div><div class='add'>+    VALUE missing = Qnil;</div><div class='add'>+    st_data_t key;</div><div class='add'>+</div><div class='add'>+#define extract_kwarg(keyword, val) \</div><div class='add'>+    (key = (st_data_t)(keyword), values ? \</div><div class='add'>+     st_delete(rb_hash_tbl_raw(keyword_hash), &amp;key, (val)) : \</div><div class='add'>+     st_lookup(rb_hash_tbl_raw(keyword_hash), key, (val)))</div><div class='add'>+</div><div class='add'>+    if (NIL_P(keyword_hash)) keyword_hash = 0;</div><div class='add'>+</div><div class='add'>+    if (optional &lt; 0) {</div><div class='add'>+	rest = 1;</div><div class='add'>+	optional = -1-optional;</div><div class='add'>+    }</div><div class='add'>+    if (values) {</div><div class='add'>+	for (j = 0; j &lt; required + optional; j++) {</div><div class='add'>+	    values[j] = Qundef;</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+    if (required) {</div><div class='add'>+	for (; i &lt; required; i++) {</div><div class='add'>+	    VALUE keyword = ID2SYM(table[i]);</div><div class='add'>+	    if (keyword_hash) {</div><div class='add'>+		st_data_t val;</div><div class='add'>+		if (extract_kwarg(keyword, &amp;val)) {</div><div class='add'>+		    if (values) values[i] = (VALUE)val;</div><div class='add'>+		    continue;</div><div class='add'>+		}</div><div class='add'>+	    }</div><div class='add'>+	    if (NIL_P(missing)) missing = rb_ary_tmp_new(1);</div><div class='add'>+	    rb_ary_push(missing, keyword);</div><div class='add'>+	}</div><div class='add'>+	if (!NIL_P(missing)) {</div><div class='add'>+	    rb_keyword_error("missing", missing);</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+    j = i;</div><div class='add'>+    if (optional &amp;&amp; keyword_hash) {</div><div class='add'>+	for (i = 0; i &lt; optional; i++) {</div><div class='add'>+	    st_data_t val;</div><div class='add'>+	    if (extract_kwarg(ID2SYM(table[required+i]), &amp;val)) {</div><div class='add'>+		if (values) values[required+i] = (VALUE)val;</div><div class='add'>+		j++;</div><div class='add'>+	    }</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+    if (!rest &amp;&amp; keyword_hash) {</div><div class='add'>+	if (RHASH_SIZE(keyword_hash) &gt; (unsigned int)j) {</div><div class='add'>+	    unknown_keyword_error(keyword_hash, table, required+optional);</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+    return j;</div><div class='add'>+#undef extract_kwarg</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+#undef rb_scan_args</div><div class='add'>+int</div><div class='ctx'> rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)</div><div class='ctx'> {</div><div class='ctx'>     int i;</div><div class='hunk'>@@ -1734,22 +1901,16 @@ rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)</div><div class='ctx'> 	if (ISDIGIT(*p)) {</div><div class='ctx'> 	    n_opt = *p - '0';</div><div class='ctx'> 	    p++;</div><div class='del'>-	    if (ISDIGIT(*p)) {</div><div class='del'>-		n_trail = *p - '0';</div><div class='del'>-		p++;</div><div class='del'>-		goto block_arg;</div><div class='del'>-	    }</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'>     if (*p == '*') {</div><div class='ctx'> 	f_var = 1;</div><div class='ctx'> 	p++;</div><div class='del'>-	if (ISDIGIT(*p)) {</div><div class='del'>-	    n_trail = *p - '0';</div><div class='del'>-	    p++;</div><div class='del'>-	}</div><div class='ctx'>     }</div><div class='del'>-  block_arg:</div><div class='add'>+    if (ISDIGIT(*p)) {</div><div class='add'>+	n_trail = *p - '0';</div><div class='add'>+	p++;</div><div class='add'>+    }</div><div class='ctx'>     if (*p == ':') {</div><div class='ctx'> 	f_hash = 1;</div><div class='ctx'> 	p++;</div><div class='hunk'>@@ -1849,132 +2010,10 @@ rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)</div><div class='ctx'>     return argc;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-VALUE</div><div class='del'>-rb_keyword_error_new(const char *error, VALUE keys)</div><div class='del'>-{</div><div class='del'>-    const char *msg = "";</div><div class='del'>-    VALUE error_message;</div><div class='del'>-</div><div class='del'>-    if (RARRAY_LEN(keys) == 1) {</div><div class='del'>-	keys = RARRAY_AREF(keys, 0);</div><div class='del'>-    }</div><div class='del'>-    else {</div><div class='del'>-	keys = rb_ary_join(keys, rb_usascii_str_new2(", "));</div><div class='del'>-	msg = "s";</div><div class='del'>-    }</div><div class='del'>-</div><div class='del'>-    error_message = rb_sprintf("%s keyword%s: %"PRIsVALUE, error, msg, keys);</div><div class='del'>-</div><div class='del'>-    return rb_exc_new_str(rb_eArgError, error_message);</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-NORETURN(static void rb_keyword_error(const char *error, VALUE keys));</div><div class='del'>-static void</div><div class='del'>-rb_keyword_error(const char *error, VALUE keys)</div><div class='del'>-{</div><div class='del'>-    rb_exc_raise(rb_keyword_error_new(error, keys));</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-NORETURN(static void unknown_keyword_error(VALUE hash, const ID *table, int keywords));</div><div class='del'>-static void</div><div class='del'>-unknown_keyword_error(VALUE hash, const ID *table, int keywords)</div><div class='del'>-{</div><div class='del'>-    st_table *tbl = rb_hash_tbl_raw(hash);</div><div class='del'>-    VALUE keys;</div><div class='del'>-    int i;</div><div class='del'>-    for (i = 0; i &lt; keywords; i++) {</div><div class='del'>-	st_data_t key = ID2SYM(table[i]);</div><div class='del'>-	st_delete(tbl, &amp;key, NULL);</div><div class='del'>-    }</div><div class='del'>-    keys = rb_funcall(hash, rb_intern("keys"), 0, 0);</div><div class='del'>-    if (!RB_TYPE_P(keys, T_ARRAY)) rb_raise(rb_eArgError, "unknown keyword");</div><div class='del'>-    rb_keyword_error("unknown", keys);</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-static int</div><div class='del'>-separate_symbol(st_data_t key, st_data_t value, st_data_t arg)</div><div class='del'>-{</div><div class='del'>-    VALUE *kwdhash = (VALUE *)arg;</div><div class='del'>-</div><div class='del'>-    if (!SYMBOL_P(key)) kwdhash++;</div><div class='del'>-    if (!*kwdhash) *kwdhash = rb_hash_new();</div><div class='del'>-    rb_hash_aset(*kwdhash, (VALUE)key, (VALUE)value);</div><div class='del'>-    return ST_CONTINUE;</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-VALUE</div><div class='del'>-rb_extract_keywords(VALUE *orighash)</div><div class='del'>-{</div><div class='del'>-    VALUE parthash[2] = {0, 0};</div><div class='del'>-    VALUE hash = *orighash;</div><div class='del'>-</div><div class='del'>-    if (RHASH_EMPTY_P(hash)) {</div><div class='del'>-	*orighash = 0;</div><div class='del'>-	return hash;</div><div class='del'>-    }</div><div class='del'>-    st_foreach(rb_hash_tbl_raw(hash), separate_symbol, (st_data_t)&amp;parthash);</div><div class='del'>-    *orighash = parthash[1];</div><div class='del'>-    return parthash[0];</div><div class='del'>-}</div><div class='del'>-</div><div class='ctx'> int</div><div class='del'>-rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *values)</div><div class='add'>+rb_class_has_methods(VALUE c)</div><div class='ctx'> {</div><div class='del'>-    int i = 0, j;</div><div class='del'>-    int rest = 0;</div><div class='del'>-    VALUE missing = Qnil;</div><div class='del'>-    st_data_t key;</div><div class='del'>-</div><div class='del'>-#define extract_kwarg(keyword, val) \</div><div class='del'>-    (key = (st_data_t)(keyword), values ? \</div><div class='del'>-     st_delete(rb_hash_tbl_raw(keyword_hash), &amp;key, (val)) : \</div><div class='del'>-     st_lookup(rb_hash_tbl_raw(keyword_hash), key, (val)))</div><div class='del'>-</div><div class='del'>-    if (NIL_P(keyword_hash)) keyword_hash = 0;</div><div class='del'>-</div><div class='del'>-    if (optional &lt; 0) {</div><div class='del'>-	rest = 1;</div><div class='del'>-	optional = -1-optional;</div><div class='del'>-    }</div><div class='del'>-    if (values) {</div><div class='del'>-	for (j = 0; j &lt; required + optional; j++) {</div><div class='del'>-	    values[j] = Qundef;</div><div class='del'>-	}</div><div class='del'>-    }</div><div class='del'>-    if (required) {</div><div class='del'>-	for (; i &lt; required; i++) {</div><div class='del'>-	    VALUE keyword = ID2SYM(table[i]);</div><div class='del'>-	    if (keyword_hash) {</div><div class='del'>-		st_data_t val;</div><div class='del'>-		if (extract_kwarg(keyword, &amp;val)) {</div><div class='del'>-		    if (values) values[i] = (VALUE)val;</div><div class='del'>-		    continue;</div><div class='del'>-		}</div><div class='del'>-	    }</div><div class='del'>-	    if (NIL_P(missing)) missing = rb_ary_tmp_new(1);</div><div class='del'>-	    rb_ary_push(missing, keyword);</div><div class='del'>-	}</div><div class='del'>-	if (!NIL_P(missing)) {</div><div class='del'>-	    rb_keyword_error("missing", missing);</div><div class='del'>-	}</div><div class='del'>-    }</div><div class='del'>-    j = i;</div><div class='del'>-    if (optional &amp;&amp; keyword_hash) {</div><div class='del'>-	for (i = 0; i &lt; optional; i++) {</div><div class='del'>-	    st_data_t val;</div><div class='del'>-	    if (extract_kwarg(ID2SYM(table[required+i]), &amp;val)) {</div><div class='del'>-		if (values) values[required+i] = (VALUE)val;</div><div class='del'>-		j++;</div><div class='del'>-	    }</div><div class='del'>-	}</div><div class='del'>-    }</div><div class='del'>-    if (!rest &amp;&amp; keyword_hash) {</div><div class='del'>-	if (RHASH_SIZE(keyword_hash) &gt; (unsigned int)j) {</div><div class='del'>-	    unknown_keyword_error(keyword_hash, table, required+optional);</div><div class='del'>-	}</div><div class='del'>-    }</div><div class='del'>-    return j;</div><div class='del'>-#undef extract_kwarg</div><div class='add'>+    return rb_id_table_size(RCLASS_M_TBL(c)) == 0 ? FALSE : TRUE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*!</div><div class='head'>diff --git a/common.mk b/common.mk<br/>index c3c2b1fad0..c2a2d8fd90 100644<br/>--- a/<a href='/ruby.git/tree/common.mk?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>common.mk</a><br/>+++ b/<a href='/ruby.git/tree/common.mk?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>common.mk</a></div><div class='hunk'>@@ -11,24 +11,49 @@ Q = $(Q1:0=@)</div><div class='ctx'> ECHO0 = $(ECHO1:0=echo)</div><div class='ctx'> ECHO = @$(ECHO0)</div><div class='ctx'> </div><div class='del'>-UNICODE_VERSION = 7.0.0</div><div class='add'>+UNICODE_VERSION = 9.0.0</div><div class='ctx'> </div><div class='add'>+### set the following environment variable or uncomment the line if</div><div class='add'>+### the Unicode data files should be updated completely on every update ('make up',...).</div><div class='add'>+# ALWAYS_UPDATE_UNICODE = yes</div><div class='add'>+UNICODE_DATA_DIR = enc/unicode/data/$(UNICODE_VERSION)</div><div class='add'>+UNICODE_SRC_DATA_DIR = $(srcdir)/$(UNICODE_DATA_DIR)</div><div class='add'>+UNICODE_HDR_DIR = $(srcdir)/enc/unicode/$(UNICODE_VERSION)</div><div class='add'>+UNICODE_DATA_HEADERS = \</div><div class='add'>+	$(UNICODE_HDR_DIR)/casefold.h \</div><div class='add'>+	$(UNICODE_HDR_DIR)/name2ctype.h \</div><div class='add'>+	$(empty)</div><div class='add'>+</div><div class='add'>+RUBY_RELEASE_DATE = $(RUBY_RELEASE_YEAR)-$(RUBY_RELEASE_MONTH)-$(RUBY_RELEASE_DAY)</div><div class='ctx'> RUBYLIB       = $(PATH_SEPARATOR)</div><div class='ctx'> RUBYOPT       = -</div><div class='ctx'> RUN_OPTS      = --disable-gems</div><div class='ctx'> </div><div class='add'>+INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir) -I$(UNICODE_HDR_DIR)</div><div class='add'>+</div><div class='add'>+GEM_HOME =</div><div class='add'>+GEM_PATH =</div><div class='add'>+GEM_VENDOR =</div><div class='add'>+</div><div class='ctx'> SPEC_GIT_BASE = git://github.com/ruby</div><div class='ctx'> MSPEC_GIT_URL = $(SPEC_GIT_BASE)/mspec.git</div><div class='del'>-RUBYSPEC_GIT_URL = $(SPEC_GIT_BASE)/rubyspec.git</div><div class='add'>+RUBYSPEC_GIT_URL = $(SPEC_GIT_BASE)/spec.git</div><div class='ctx'> </div><div class='del'>-SIMPLECOV_GIT_URL = git://github.com/hsbt/simplecov.git</div><div class='add'>+SIMPLECOV_GIT_URL = git://github.com/colszowka/simplecov.git</div><div class='add'>+SIMPLECOV_GIT_REF = v0.10.0</div><div class='add'>+SIMPLECOV_HTML_GIT_URL = git://github.com/colszowka/simplecov-html.git</div><div class='add'>+SIMPLECOV_HTML_GIT_REF = v0.10.0</div><div class='add'>+DOCLIE_GIT_URL = git://github.com/ms-ati/docile.git</div><div class='add'>+DOCLIE_GIT_REF = v1.1.5</div><div class='ctx'> </div><div class='ctx'> STATIC_RUBY   = static-ruby</div><div class='ctx'> </div><div class='add'>+TIMESTAMPDIR  = $(EXTOUT)/.timestamp</div><div class='ctx'> EXTCONF       = extconf.rb</div><div class='ctx'> LIBRUBY_EXTS  = ./.libruby-with-ext.time</div><div class='ctx'> REVISION_H    = ./.revision.time</div><div class='del'>-PLATFORM_D    = ./$(PLATFORM_DIR)/.time</div><div class='add'>+PLATFORM_D    = $(TIMESTAMPDIR)/.$(PLATFORM_DIR).time</div><div class='add'>+ENC_TRANS_D   = $(TIMESTAMPDIR)/.enc-trans.time</div><div class='ctx'> RDOCOUT       = $(EXTOUT)/rdoc</div><div class='ctx'> HTMLOUT       = $(EXTOUT)/html</div><div class='ctx'> CAPIOUT       = doc/capi</div><div class='hunk'>@@ -38,14 +63,19 @@ NORMALMAINOBJ = main.$(OBJEXT)</div><div class='ctx'> MAINOBJ       = $(NORMALMAINOBJ)</div><div class='ctx'> DLDOBJS	      = $(INITOBJS)</div><div class='ctx'> EXTSOLIBS     =</div><div class='del'>-MINIOBJS      = $(ARCHMINIOBJS) miniinit.$(OBJEXT) miniprelude.$(OBJEXT)</div><div class='add'>+MINIOBJS      = $(ARCHMINIOBJS) miniinit.$(OBJEXT) dmyext.$(OBJEXT) miniprelude.$(OBJEXT)</div><div class='ctx'> ENC_MK        = enc.mk</div><div class='add'>+MAKE_ENC      = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \</div><div class='add'>+		RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(MFLAGS)</div><div class='ctx'> </div><div class='ctx'> COMMONOBJS    = array.$(OBJEXT) \</div><div class='ctx'> 		bignum.$(OBJEXT) \</div><div class='ctx'> 		class.$(OBJEXT) \</div><div class='ctx'> 		compar.$(OBJEXT) \</div><div class='add'>+		compile.$(OBJEXT) \</div><div class='ctx'> 		complex.$(OBJEXT) \</div><div class='add'>+		cont.$(OBJEXT) \</div><div class='add'>+		debug.$(OBJEXT) \</div><div class='ctx'> 		dir.$(OBJEXT) \</div><div class='ctx'> 		dln_find.$(OBJEXT) \</div><div class='ctx'> 		encoding.$(OBJEXT) \</div><div class='hunk'>@@ -53,13 +83,13 @@ COMMONOBJS    = array.$(OBJEXT) \</div><div class='ctx'> 		enumerator.$(OBJEXT) \</div><div class='ctx'> 		error.$(OBJEXT) \</div><div class='ctx'> 		eval.$(OBJEXT) \</div><div class='del'>-		load.$(OBJEXT) \</div><div class='del'>-		proc.$(OBJEXT) \</div><div class='ctx'> 		file.$(OBJEXT) \</div><div class='ctx'> 		gc.$(OBJEXT) \</div><div class='ctx'> 		hash.$(OBJEXT) \</div><div class='ctx'> 		inits.$(OBJEXT) \</div><div class='ctx'> 		io.$(OBJEXT) \</div><div class='add'>+		iseq.$(OBJEXT) \</div><div class='add'>+		load.$(OBJEXT) \</div><div class='ctx'> 		marshal.$(OBJEXT) \</div><div class='ctx'> 		math.$(OBJEXT) \</div><div class='ctx'> 		node.$(OBJEXT) \</div><div class='hunk'>@@ -67,6 +97,7 @@ COMMONOBJS    = array.$(OBJEXT) \</div><div class='ctx'> 		object.$(OBJEXT) \</div><div class='ctx'> 		pack.$(OBJEXT) \</div><div class='ctx'> 		parse.$(OBJEXT) \</div><div class='add'>+		proc.$(OBJEXT) \</div><div class='ctx'> 		process.$(OBJEXT) \</div><div class='ctx'> 		random.$(OBJEXT) \</div><div class='ctx'> 		range.$(OBJEXT) \</div><div class='hunk'>@@ -87,20 +118,16 @@ COMMONOBJS    = array.$(OBJEXT) \</div><div class='ctx'> 		string.$(OBJEXT) \</div><div class='ctx'> 		struct.$(OBJEXT) \</div><div class='ctx'> 		symbol.$(OBJEXT) \</div><div class='add'>+		thread.$(OBJEXT) \</div><div class='ctx'> 		time.$(OBJEXT) \</div><div class='ctx'> 		transcode.$(OBJEXT) \</div><div class='ctx'> 		util.$(OBJEXT) \</div><div class='ctx'> 		variable.$(OBJEXT) \</div><div class='ctx'> 		version.$(OBJEXT) \</div><div class='del'>-		compile.$(OBJEXT) \</div><div class='del'>-		debug.$(OBJEXT) \</div><div class='del'>-		iseq.$(OBJEXT) \</div><div class='ctx'> 		vm.$(OBJEXT) \</div><div class='del'>-		vm_dump.$(OBJEXT) \</div><div class='ctx'> 		vm_backtrace.$(OBJEXT) \</div><div class='add'>+		vm_dump.$(OBJEXT) \</div><div class='ctx'> 		vm_trace.$(OBJEXT) \</div><div class='del'>-		thread.$(OBJEXT) \</div><div class='del'>-		cont.$(OBJEXT) \</div><div class='ctx'> 		$(DTRACE_OBJ) \</div><div class='ctx'> 		$(BUILTIN_ENCOBJS) \</div><div class='ctx'> 		$(BUILTIN_TRANSOBJS) \</div><div class='hunk'>@@ -127,7 +154,8 @@ SCRIPT_ARGS   =	--dest-dir="$(DESTDIR)" \</div><div class='ctx'> 		--mflags="$(MFLAGS)" \</div><div class='ctx'> 		--make-flags="$(MAKEFLAGS)"</div><div class='ctx'> EXTMK_ARGS    =	$(SCRIPT_ARGS) --extension $(EXTS) --extstatic $(EXTSTATIC) \</div><div class='del'>-		--make-flags="V=$(V) MINIRUBY='$(MINIRUBY)'" --gnumake=$(gnumake) \</div><div class='add'>+		--make-flags="V=$(V) MINIRUBY='$(MINIRUBY)'" \</div><div class='add'>+		--gnumake=$(gnumake) --extflags="$(EXTLDFLAGS)" \</div><div class='ctx'> 		--</div><div class='ctx'> INSTRUBY      =	$(SUDO) $(RUNRUBY) -r./$(arch)-fake $(srcdir)/tool/rbinstall.rb</div><div class='ctx'> INSTRUBY_ARGS =	$(SCRIPT_ARGS) \</div><div class='hunk'>@@ -142,21 +170,24 @@ PRE_LIBRUBY_UPDATE = $(MINIRUBY) -e 'ARGV[1] or File.unlink(ARGV[0]) rescue nil'</div><div class='ctx'> 			$(LIBRUBY_EXTS) $(LIBRUBY_SO_UPDATE)</div><div class='ctx'> </div><div class='ctx'> TESTSDIR      = $(srcdir)/test</div><div class='add'>+TEST_EXCLUDES = --excludes-dir=$(TESTSDIR)/excludes --name=!/memory_leak/</div><div class='add'>+EXCLUDE_TESTFRAMEWORK = --exclude=/testunit/ --exclude=/minitest/</div><div class='ctx'> TESTWORKDIR   = testwork</div><div class='add'>+TESTOPTS      = $(RUBY_TESTOPTS)</div><div class='ctx'> </div><div class='ctx'> TESTRUN_SCRIPT = $(srcdir)/test.rb</div><div class='ctx'> </div><div class='del'>-BOOTSTRAPRUBY = $(BASERUBY)</div><div class='del'>-</div><div class='ctx'> COMPILE_PRELUDE = $(srcdir)/tool/generic_erb.rb $(srcdir)/template/prelude.c.tmpl</div><div class='ctx'> </div><div class='del'>-all: showflags main docs</div><div class='add'>+SHOWFLAGS = showflags</div><div class='add'>+</div><div class='add'>+all: $(SHOWFLAGS) main docs</div><div class='ctx'> </div><div class='del'>-main: showflags $(ENCSTATIC:static=lib)encs exts</div><div class='add'>+main: $(SHOWFLAGS) exts $(ENCSTATIC:static=lib)encs</div><div class='ctx'> 	@$(NULLCMD)</div><div class='ctx'> </div><div class='ctx'> .PHONY: showflags</div><div class='del'>-exts enc trans: showflags</div><div class='add'>+exts enc trans: $(SHOWFLAGS)</div><div class='ctx'> showflags:</div><div class='ctx'> 	$(MESSAGE_BEGIN) \</div><div class='ctx'> 	"	CC = $(CC)" \</div><div class='hunk'>@@ -179,7 +210,7 @@ showconfig:</div><div class='ctx'> exts: build-ext</div><div class='ctx'> </div><div class='ctx'> EXTS_MK = exts.mk</div><div class='del'>-$(EXTS_MK): $(MKFILES) all-incs $(PREP) $(RBCONFIG) $(LIBRUBY)</div><div class='add'>+$(EXTS_MK): $(MKFILES) all-incs $(PREP) $(RBCONFIG) $(LIBRUBY) $(TIMESTAMPDIR)/.$(arch).time</div><div class='ctx'> 	$(ECHO) generating makefile $@</div><div class='ctx'> 	$(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$(EXTS_MK) $(EXTMK_ARGS) configure</div><div class='ctx'> </div><div class='hunk'>@@ -187,7 +218,7 @@ configure-ext: $(EXTS_MK)</div><div class='ctx'> </div><div class='ctx'> build-ext: $(EXTS_MK)</div><div class='ctx'> 	$(Q)$(MAKE) -f $(EXTS_MK) $(MFLAGS) libdir="$(libdir)" LIBRUBY_EXTS=$(LIBRUBY_EXTS) \</div><div class='del'>-	    ENCOBJS="$(ENCOBJS)" UPDATE_LIBRARIES=no $(EXTSTATIC)</div><div class='add'>+	    EXTENCS="$(ENCOBJS)" UPDATE_LIBRARIES=no $(EXTSTATIC)</div><div class='ctx'> </div><div class='ctx'> prog: program wprogram</div><div class='ctx'> </div><div class='hunk'>@@ -213,8 +244,8 @@ Doxyfile: $(srcdir)/template/Doxyfile.tmpl $(PREP) $(srcdir)/tool/generic_erb.rb</div><div class='ctx'> 	$(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -o $@ $(srcdir)/template/Doxyfile.tmpl \</div><div class='ctx'> 	--srcdir="$(srcdir)" --miniruby="$(MINIRUBY)"</div><div class='ctx'> </div><div class='del'>-program: showflags $(PROGRAM)</div><div class='del'>-wprogram: showflags $(WPROGRAM)</div><div class='add'>+program: $(SHOWFLAGS) $(PROGRAM)</div><div class='add'>+wprogram: $(SHOWFLAGS) $(WPROGRAM)</div><div class='ctx'> mini: PHONY miniruby$(EXEEXT)</div><div class='ctx'> </div><div class='ctx'> $(PROGRAM) $(WPROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP)</div><div class='hunk'>@@ -232,7 +263,7 @@ $(STATIC_RUBY)$(EXEEXT): $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A)</div><div class='ctx'> </div><div class='ctx'> ruby.imp: $(COMMONOBJS)</div><div class='ctx'> 	$(Q)$(NM) -Pgp $(COMMONOBJS) | \</div><div class='del'>-	awk 'BEGIN{print "#!"}; $$2~/^[BDT]$$/&amp;&amp;$$1!~/^(Init_|.*_threadptr_|\.)/{print $$1}' | \</div><div class='add'>+	awk 'BEGIN{print "#!"}; $$2~/^[BDT]$$/&amp;&amp;$$1!~/^(Init_|ruby_static_id_|.*_threadptr_|\.)/{print $$1}' | \</div><div class='ctx'> 	sort -u -o $@</div><div class='ctx'> </div><div class='ctx'> install: install-$(INSTALLDOC)</div><div class='hunk'>@@ -462,12 +493,13 @@ install-prereq: $(CLEAR_INSTALLED_LIST) yes-fake sudo-precheck PHONY</div><div class='ctx'> clear-installed-list: PHONY</div><div class='ctx'> 	@&gt; $(INSTALLED_LIST) set MAKE="$(MAKE)"</div><div class='ctx'> </div><div class='del'>-clean: clean-ext clean-local clean-enc clean-golf clean-rdoc clean-capi clean-extout clean-platform</div><div class='add'>+clean: clean-ext clean-enc clean-golf clean-rdoc clean-capi clean-extout clean-local clean-platform</div><div class='ctx'> clean-local:: clean-runnable</div><div class='ctx'> 	$(Q)$(RM) $(OBJS) $(MINIOBJS) $(MAINOBJ) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY) $(LIBRUBY_ALIASES)</div><div class='ctx'> 	$(Q)$(RM) $(PROGRAM) $(WPROGRAM) miniruby$(EXEEXT) dmyext.$(OBJEXT) dmyenc.$(OBJEXT) $(ARCHFILE) .*.time</div><div class='ctx'> 	$(Q)$(RM) y.tab.c y.output encdb.h transdb.h config.log rbconfig.rb $(ruby_pc) probes.h probes.$(OBJEXT) probes.stamp ruby-glommed.$(OBJEXT)</div><div class='del'>-	$(Q)$(RM) GNUmakefile.old Makefile.old $(arch)-fake.rb</div><div class='add'>+	$(Q)$(RM) GNUmakefile.old Makefile.old $(arch)-fake.rb bisect.sh $(ENC_TRANS_D)</div><div class='add'>+	-$(Q) $(RMDIR) enc/jis enc/trans enc 2&gt; $(NULL) || exit 0</div><div class='ctx'> clean-runnable:: PHONY</div><div class='ctx'> 	$(Q)$(CHDIR) bin 2&gt;$(NULL) &amp;&amp; $(RM) $(PROGRAM) $(WPROGRAM) $(GORUBY)$(EXEEXT) bin/*.$(DLEXT) 2&gt;$(NULL) || exit 0</div><div class='ctx'> 	$(Q)$(CHDIR) lib 2&gt;$(NULL) &amp;&amp; $(RM) $(LIBRUBY_A) $(LIBRUBY) $(LIBRUBY_ALIASES) $(RUBY_BASE_NAME)/$(RUBY_PROGRAM_VERSION) $(RUBY_BASE_NAME)/vendor_ruby 2&gt;$(NULL) || exit 0</div><div class='hunk'>@@ -483,11 +515,12 @@ clean-extout: PHONY</div><div class='ctx'> 	-$(Q)$(RMDIR) $(EXTOUT)/$(arch) $(EXTOUT) 2&gt; $(NULL) || exit 0</div><div class='ctx'> clean-docs: clean-rdoc clean-html clean-capi</div><div class='ctx'> </div><div class='del'>-distclean: distclean-ext distclean-local distclean-enc distclean-golf distclean-extout distclean-platform</div><div class='add'>+distclean: distclean-ext distclean-enc distclean-golf distclean-extout distclean-local distclean-platform</div><div class='ctx'> distclean-local:: clean-local</div><div class='del'>-	$(Q)$(RM) $(MKFILES) yasmdata.rb *.inc $(arch)-fake.rb</div><div class='add'>+	$(Q)$(RM) $(MKFILES) yasmdata.rb *.inc $(PRELUDES)</div><div class='ctx'> 	$(Q)$(RM) config.cache config.status config.status.lineno</div><div class='ctx'> 	$(Q)$(RM) *~ *.bak *.stackdump core *.core gmon.out $(PREP)</div><div class='add'>+	-$(Q)$(RMALL) $(srcdir)/autom4te.cache</div><div class='ctx'> distclean-ext:: PHONY</div><div class='ctx'> distclean-golf: clean-golf</div><div class='ctx'> distclean-rdoc: PHONY</div><div class='hunk'>@@ -498,9 +531,11 @@ distclean-platform: clean-platform</div><div class='ctx'> </div><div class='ctx'> realclean:: realclean-ext realclean-local realclean-enc realclean-golf realclean-extout</div><div class='ctx'> realclean-local:: distclean-local</div><div class='del'>-	$(Q)$(RM) parse.c parse.h lex.c newline.c $(PRELUDES) revision.h</div><div class='del'>-	$(Q)$(CHDIR) $(srcdir) &amp;&amp; $(exec) $(RM) parse.c parse.h lex.c newline.c $(PRELUDES) revision.h</div><div class='del'>-	$(Q)$(CHDIR) $(srcdir) &amp;&amp; $(exec) $(RM) configure tool/config.guess tool/config.sub gems/*.gem</div><div class='add'>+	$(Q)$(RM) parse.c parse.h lex.c enc/trans/newline.c revision.h</div><div class='add'>+	$(Q)$(RM) id.c id.h probes.dmyh</div><div class='add'>+	$(Q)$(CHDIR) $(srcdir) &amp;&amp; $(exec) $(RM) parse.c parse.h lex.c enc/trans/newline.c $(PRELUDES) revision.h</div><div class='add'>+	$(Q)$(CHDIR) $(srcdir) &amp;&amp; $(exec) $(RM) id.c id.h probes.dmyh</div><div class='add'>+	$(Q)$(CHDIR) $(srcdir) &amp;&amp; $(exec) $(RM) configure aclocal.m4 tool/config.guess tool/config.sub gems/*.gem</div><div class='ctx'> realclean-ext:: PHONY</div><div class='ctx'> realclean-golf: distclean-golf</div><div class='ctx'> 	$(Q)$(RM) $(GOLFPRELUDES)</div><div class='hunk'>@@ -509,11 +544,17 @@ realclean-extout: distclean-extout</div><div class='ctx'> </div><div class='ctx'> clean-ext distclean-ext realclean-ext::</div><div class='ctx'> 	$(Q)$(RM) $(EXTS_MK)</div><div class='del'>-	$(Q)$(RM) $(EXTOUT)/.timestamp/.*.time</div><div class='del'>-	$(Q)$(RMDIR) $(EXTOUT)/.timestamp 2&gt; $(NULL) || exit 0</div><div class='add'>+	$(Q)$(RM) $(TIMESTAMPDIR)/.*.time $(TIMESTAMPDIR)/.$(arch).time $(TIMESTAMPDIR)/$(arch)/.time</div><div class='add'>+	$(Q)$(RMDIR) $(TIMESTAMPDIR)/$(arch) $(TIMESTAMPDIR) 2&gt; $(NULL) || exit 0</div><div class='ctx'> </div><div class='ctx'> clean-enc distclean-enc realclean-enc: PHONY</div><div class='ctx'> </div><div class='add'>+clean-enc: clean-enc.d</div><div class='add'>+</div><div class='add'>+clean-enc.d: PHONY</div><div class='add'>+	$(Q)$(RM) $(ENC_TRANS_D)</div><div class='add'>+	-$(Q) $(RMDIR) enc/jis enc/trans enc 2&gt; $(NULL) || exit 0</div><div class='add'>+</div><div class='ctx'> clean-rdoc distclean-rdoc realclean-rdoc:</div><div class='ctx'> 	@echo $(@:-rdoc=ing) rdoc</div><div class='ctx'> 	$(Q)$(RMALL) $(RDOCOUT)</div><div class='hunk'>@@ -530,62 +571,93 @@ clean-platform:</div><div class='ctx'> 	$(Q) $(RM) $(PLATFORM_D)</div><div class='ctx'> 	-$(Q) $(RMDIR) $(PLATFORM_DIR) 2&gt; $(NULL) || exit 0</div><div class='ctx'> </div><div class='del'>-check: main test test-all</div><div class='add'>+check: main test test-testframework test-almost</div><div class='ctx'> 	$(ECHO) check succeeded</div><div class='ctx'> check-ruby: test test-ruby</div><div class='ctx'> </div><div class='ctx'> fake: $(CROSS_COMPILING)-fake</div><div class='ctx'> yes-fake: $(arch)-fake.rb $(RBCONFIG) PHONY</div><div class='del'>-no-fake: PHONY</div><div class='add'>+no-fake -fake: PHONY</div><div class='add'>+</div><div class='add'>+# really doesn't depend on .o, just ensure newer than headers which</div><div class='add'>+# version.o depends on.</div><div class='add'>+$(arch)-fake.rb: $(srcdir)/template/fake.rb.in $(srcdir)/tool/generic_erb.rb version.$(OBJEXT) miniruby$(EXEEXT)</div><div class='add'>+	$(ECHO) generating $@</div><div class='add'>+	$(Q) $(CPP) $(warnflags) $(XCFLAGS) $(CPPFLAGS) "$(srcdir)/version.c" | \</div><div class='add'>+	$(BOOTSTRAPRUBY) "$(srcdir)/tool/generic_erb.rb" -o $@ "$(srcdir)/template/fake.rb.in" \</div><div class='add'>+		i=- srcdir="$(srcdir)" BASERUBY="$(BASERUBY)"</div><div class='ctx'> </div><div class='ctx'> btest: $(TEST_RUNNABLE)-btest</div><div class='ctx'> no-btest: PHONY</div><div class='ctx'> yes-btest: fake miniruby$(EXEEXT) PHONY</div><div class='del'>-	$(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(BTESTRUBY) $(RUN_OPTS)" $(OPTS) $(TESTOPTS)</div><div class='add'>+	$(Q)$(exec) $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(BTESTRUBY) $(RUN_OPTS)" $(OPTS) $(TESTOPTS)</div><div class='ctx'> </div><div class='ctx'> btest-ruby: $(TEST_RUNNABLE)-btest-ruby</div><div class='ctx'> no-btest-ruby: PHONY</div><div class='ctx'> yes-btest-ruby: prog PHONY</div><div class='del'>-	$(Q)$(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) -I$(srcdir)/lib $(RUN_OPTS)" -q $(OPTS) $(TESTOPTS)</div><div class='add'>+	$(Q)$(exec) $(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) -I$(srcdir)/lib $(RUN_OPTS)" -q $(OPTS) $(TESTOPTS)</div><div class='ctx'> </div><div class='del'>-test-sample: $(TEST_RUNNABLE)-test-sample</div><div class='del'>-no-test-sample: PHONY</div><div class='del'>-yes-test-sample: prog PHONY</div><div class='del'>-	$(Q)$(RUNRUBY) $(srcdir)/tool/rubytest.rb --run-opt=$(RUN_OPTS) $(OPTS) $(TESTOPTS)</div><div class='add'>+test-basic: $(TEST_RUNNABLE)-test-basic</div><div class='add'>+no-test-basic: PHONY</div><div class='add'>+yes-test-basic: prog PHONY</div><div class='add'>+	$(Q)$(exec) $(RUNRUBY) "$(srcdir)/basictest/runner.rb" --run-opt=$(RUN_OPTS) $(OPTS) $(TESTOPTS)</div><div class='ctx'> </div><div class='ctx'> test-knownbugs: test-knownbug</div><div class='ctx'> test-knownbug: $(TEST_RUNNABLE)-test-knownbug</div><div class='ctx'> no-test-knownbug: PHONY</div><div class='ctx'> yes-test-knownbug: prog PHONY</div><div class='del'>-	-$(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(srcdir)/KNOWNBUGS.rb</div><div class='add'>+	-$(exec) $(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(srcdir)/KNOWNBUGS.rb</div><div class='ctx'> </div><div class='del'>-test: test-sample btest-ruby test-knownbug</div><div class='add'>+test-testframework: $(TEST_RUNNABLE)-test-testframework</div><div class='add'>+yes-test-testframework: prog PHONY</div><div class='add'>+	$(Q)$(exec) $(RUNRUBY) "$(srcdir)/test/runner.rb" --ruby="$(RUNRUBY)" $(TESTOPTS) testunit minitest</div><div class='add'>+no-test-testframework: PHONY</div><div class='ctx'> </div><div class='add'>+test-sample: test-basic # backword compatibility for mswin-build</div><div class='add'>+test: btest-ruby test-knownbug test-basic</div><div class='add'>+</div><div class='add'>+# $ make test-all TESTOPTS="--help" displays more detail</div><div class='add'>+# for example, make test-all TESTOPTS="-j2 -v -n test-name -- test-file-name"</div><div class='ctx'> test-all: $(TEST_RUNNABLE)-test-all</div><div class='ctx'> yes-test-all: prog PHONY</div><div class='del'>-	$(RUNRUBY) "$(srcdir)/test/runner.rb" --ruby="$(RUNRUBY)" $(TESTOPTS) $(TESTS)</div><div class='add'>+	$(Q)$(exec) $(RUNRUBY) "$(srcdir)/test/runner.rb" --ruby="$(RUNRUBY)" $(TEST_EXCLUDES) $(TESTOPTS) $(TESTS)</div><div class='ctx'> TESTS_BUILD = mkmf</div><div class='ctx'> no-test-all: PHONY</div><div class='ctx'> 	$(MINIRUBY) -I"$(srcdir)/lib" "$(srcdir)/test/runner.rb" $(TESTOPTS) $(TESTS_BUILD)</div><div class='ctx'> </div><div class='add'>+test-almost: $(TEST_RUNNABLE)-test-almost</div><div class='add'>+yes-test-almost: prog PHONY</div><div class='add'>+	$(Q)$(exec) $(RUNRUBY) "$(srcdir)/test/runner.rb" --ruby="$(RUNRUBY)" $(TEST_EXCLUDES) $(TESTOPTS) $(EXCLUDE_TESTFRAMEWORK) $(TESTS)</div><div class='add'>+no-test-almost: PHONY</div><div class='add'>+</div><div class='ctx'> test-ruby: $(TEST_RUNNABLE)-test-ruby</div><div class='ctx'> no-test-ruby: PHONY</div><div class='ctx'> yes-test-ruby: prog encs PHONY</div><div class='del'>-	$(RUNRUBY) "$(srcdir)/test/runner.rb" -q $(TESTOPTS) -- ruby -ext-</div><div class='add'>+	$(RUNRUBY) "$(srcdir)/test/runner.rb" $(TEST_EXCLUDES) $(TESTOPTS) -- ruby -ext-</div><div class='ctx'> </div><div class='ctx'> extconf: $(PREP)</div><div class='ctx'> 	$(Q) $(MAKEDIRS) "$(EXTCONFDIR)"</div><div class='ctx'> 	$(RUNRUBY) -C "$(EXTCONFDIR)" $(EXTCONF) $(EXTCONFARGS)</div><div class='ctx'> </div><div class='del'>-$(RBCONFIG): $(srcdir)/tool/mkconfig.rb config.status $(srcdir)/version.h $(PREP)</div><div class='del'>-	$(Q)$(MINIRUBY) $(srcdir)/tool/mkconfig.rb -timestamp=$@ \</div><div class='add'>+$(RBCONFIG): $(srcdir)/tool/mkconfig.rb config.status $(srcdir)/version.h</div><div class='add'>+	$(Q)$(BOOTSTRAPRUBY) -n \</div><div class='add'>+	-e 'BEGIN{version=ARGV.shift;mis=ARGV.dup}' \</div><div class='add'>+	-e 'END{abort "UNICODE version mismatch: #{mis}" unless mis.empty?}' \</div><div class='add'>+	-e '(mis.delete(ARGF.path); ARGF.close) if /ONIG_UNICODE_VERSION_STRING +"#{Regexp.quote(version)}"/o' \</div><div class='add'>+	$(UNICODE_VERSION) $(UNICODE_DATA_HEADERS)</div><div class='add'>+	$(Q)$(BOOTSTRAPRUBY) $(srcdir)/tool/mkconfig.rb \</div><div class='add'>+		-cross_compiling=$(CROSS_COMPILING) \</div><div class='add'>+		-arch=$(arch) -version=$(RUBY_PROGRAM_VERSION) \</div><div class='ctx'> 		-install_name=$(RUBY_INSTALL_NAME) \</div><div class='del'>-		-so_name=$(RUBY_SO_NAME) rbconfig.rb</div><div class='add'>+		-so_name=$(RUBY_SO_NAME) \</div><div class='add'>+		-unicode_version=$(UNICODE_VERSION) \</div><div class='add'>+	&gt; rbconfig.tmp</div><div class='add'>+	$(IFCHANGE) "--timestamp=$@" rbconfig.rb rbconfig.tmp</div><div class='ctx'> </div><div class='ctx'> test-rubyspec-precheck:</div><div class='ctx'> </div><div class='del'>-test-rubyspec: test-rubyspec-precheck</div><div class='del'>-	$(RUNRUBY) $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT)</div><div class='add'>+test-rubyspec: test-rubyspec-precheck $(arch)-fake.rb</div><div class='add'>+	$(RUNRUBY) -r./$(arch)-fake $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT)</div><div class='ctx'> </div><div class='ctx'> RUNNABLE = $(LIBRUBY_RELATIVE:no=un)-runnable</div><div class='ctx'> runnable: $(RUNNABLE) prog $(srcdir)/tool/mkrunnable.rb PHONY</div><div class='hunk'>@@ -594,20 +666,18 @@ yes-runnable: PHONY</div><div class='ctx'> </div><div class='ctx'> encs: enc trans</div><div class='ctx'> libencs: libenc libtrans</div><div class='del'>-encs enc trans libencs libenc libtrans: showflags $(ENC_MK) $(LIBRUBY) $(PREP) PHONY</div><div class='add'>+encs enc trans libencs libenc libtrans: $(SHOWFLAGS) $(ENC_MK) $(LIBRUBY) $(PREP) PHONY</div><div class='ctx'> 	$(ECHO) making $@</div><div class='del'>-	$(Q) $(MAKE) -f $(ENC_MK) V="$(V)" \</div><div class='del'>-		RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" \</div><div class='del'>-		$(MFLAGS) $@</div><div class='add'>+	$(Q) $(MAKE) $(MAKE_ENC) $@</div><div class='ctx'> </div><div class='ctx'> </div><div class='ctx'> libenc enc: {$(VPATH)}encdb.h</div><div class='ctx'> libtrans trans: {$(VPATH)}transdb.h</div><div class='ctx'> </div><div class='ctx'> $(ENC_MK): $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc/depend \</div><div class='del'>-	$(srcdir)/enc/encinit.c.erb $(srcdir)/lib/mkmf.rb $(RBCONFIG)</div><div class='add'>+	$(srcdir)/enc/encinit.c.erb $(srcdir)/lib/mkmf.rb $(RBCONFIG) fake</div><div class='ctx'> 	$(ECHO) generating $@</div><div class='del'>-	$(Q) $(MINIRUBY) $(srcdir)/enc/make_encmake.rb --builtin-encs="$(BUILTIN_ENCOBJS)" --builtin-transes="$(BUILTIN_TRANSOBJS)" --module$(ENCSTATIC) $@ $(ENCS)</div><div class='add'>+	$(Q) $(MINIRUBY) $(srcdir)/enc/make_encmake.rb --builtin-encs="$(BUILTIN_ENCOBJS)" --builtin-transes="$(BUILTIN_TRANSOBJS)" --module$(ENCSTATIC) $(ENCS) $@</div><div class='ctx'> </div><div class='ctx'> .PRECIOUS: $(MKFILES)</div><div class='ctx'> </div><div class='hunk'>@@ -617,7 +687,7 @@ $(ENC_MK): $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc</div><div class='ctx'> .PHONY: clean clean-ext clean-local clean-enc clean-golf clean-rdoc clean-html clean-extout</div><div class='ctx'> .PHONY: distclean distclean-ext distclean-local distclean-enc distclean-golf distclean-extout</div><div class='ctx'> .PHONY: realclean realclean-ext realclean-local realclean-enc realclean-golf realclean-extout</div><div class='del'>-.PHONY: check test test-all btest btest-ruby test-sample test-knownbug</div><div class='add'>+.PHONY: check test test-all btest btest-ruby test-basic test-knownbug</div><div class='ctx'> .PHONY: run runruby parse benchmark benchmark-each tbench gdb gdb-ruby</div><div class='ctx'> .PHONY: update-mspec update-rubyspec test-rubyspec</div><div class='ctx'> </div><div class='hunk'>@@ -637,7 +707,17 @@ PHONY:</div><div class='ctx'> 	$(Q)$(RM) y.tab.c y.tab.h</div><div class='ctx'> </div><div class='ctx'> $(PLATFORM_D):</div><div class='del'>-	$(Q) $(MAKEDIRS) $(PLATFORM_DIR)</div><div class='add'>+	$(Q) $(MAKEDIRS) $(PLATFORM_DIR) $(@D)</div><div class='add'>+	@exit &gt; $@</div><div class='add'>+</div><div class='add'>+$(BUILTIN_ENCOBJS) $(BUILTIN_TRANSOBJS): $(ENC_TRANS_D)</div><div class='add'>+</div><div class='add'>+$(ENC_TRANS_D):</div><div class='add'>+	$(Q) $(MAKEDIRS) enc/trans $(@D)</div><div class='add'>+	@exit &gt; $@</div><div class='add'>+</div><div class='add'>+$(TIMESTAMPDIR)/.$(arch).time:</div><div class='add'>+	$(Q)$(MAKEDIRS) $(@D) $(TIMESTAMPDIR)/$(arch)</div><div class='ctx'> 	@exit &gt; $@</div><div class='ctx'> </div><div class='ctx'> ###</div><div class='hunk'>@@ -651,9 +731,10 @@ RUBY_H_INCLUDES    = {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}defines.h \</div><div class='ctx'> </div><div class='ctx'> acosh.$(OBJEXT): {$(VPATH)}acosh.c</div><div class='ctx'> alloca.$(OBJEXT): {$(VPATH)}alloca.c {$(VPATH)}config.h</div><div class='del'>-crypt.$(OBJEXT): {$(VPATH)}crypt.c</div><div class='add'>+crypt.$(OBJEXT): {$(VPATH)}crypt.c {$(VPATH)}crypt.h {$(VPATH)}missing/des_tables.c</div><div class='ctx'> dup2.$(OBJEXT): {$(VPATH)}dup2.c</div><div class='ctx'> erf.$(OBJEXT): {$(VPATH)}erf.c</div><div class='add'>+explicit_bzero.$(OBJEXT): {$(VPATH)}explicit_bzero.c</div><div class='ctx'> finite.$(OBJEXT): {$(VPATH)}finite.c</div><div class='ctx'> flock.$(OBJEXT): {$(VPATH)}flock.c</div><div class='ctx'> memcmp.$(OBJEXT): {$(VPATH)}memcmp.c</div><div class='hunk'>@@ -669,8 +750,6 @@ strstr.$(OBJEXT): {$(VPATH)}strstr.c</div><div class='ctx'> strtod.$(OBJEXT): {$(VPATH)}strtod.c</div><div class='ctx'> strtol.$(OBJEXT): {$(VPATH)}strtol.c</div><div class='ctx'> nt.$(OBJEXT): {$(VPATH)}nt.c</div><div class='del'>-os2.$(OBJEXT): {$(VPATH)}os2.c</div><div class='del'>-dl_os2.$(OBJEXT): {$(VPATH)}dl_os2.c</div><div class='ctx'> ia64.$(OBJEXT): {$(VPATH)}ia64.s</div><div class='ctx'> 	$(CC) $(CFLAGS) -c $&lt;</div><div class='ctx'> </div><div class='hunk'>@@ -684,18 +763,20 @@ prelude.$(OBJEXT): {$(VPATH)}prelude.c</div><div class='ctx'> # dependencies for optional sources.</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}opt_sc.inc {$(VPATH)}optunifs.inc</div><div class='ctx'> </div><div class='del'>-win32/win32.$(OBJEXT): {$(VPATH)}win32/win32.c {$(VPATH)}dln.h {$(VPATH)}dln_find.c \</div><div class='del'>-  {$(VPATH)}internal.h $(RUBY_H_INCLUDES) $(PLATFORM_D)</div><div class='del'>-win32/file.$(OBJEXT): {$(VPATH)}win32/file.c {$(VPATH)}thread.h \</div><div class='add'>+win32/win32.$(OBJEXT): {$(VPATH)}win32/win32.c {$(VPATH)}win32/file.h \</div><div class='add'>+  {$(VPATH)}dln.h {$(VPATH)}dln_find.c {$(VPATH)}encindex.h \</div><div class='add'>+  {$(VPATH)}internal.h {$(VPATH)}util.h $(RUBY_H_INCLUDES) $(PLATFORM_D)</div><div class='add'>+win32/file.$(OBJEXT): {$(VPATH)}win32/file.c {$(VPATH)}win32/file.h \</div><div class='ctx'>   $(RUBY_H_INCLUDES) $(PLATFORM_D)</div><div class='ctx'> </div><div class='ctx'> $(NEWLINE_C): $(srcdir)/enc/trans/newline.trans $(srcdir)/tool/transcode-tblgen.rb</div><div class='add'>+	$(Q) $(MAKEDIRS) $(@D)</div><div class='ctx'> 	$(Q) $(BASERUBY) "$(srcdir)/tool/transcode-tblgen.rb" -vo $@ $(srcdir)/enc/trans/newline.trans</div><div class='del'>-newline.$(OBJEXT): $(NEWLINE_C)</div><div class='add'>+enc/trans/newline.$(OBJEXT): $(NEWLINE_C)</div><div class='ctx'> </div><div class='ctx'> verconf.h: $(srcdir)/template/verconf.h.tmpl $(srcdir)/tool/generic_erb.rb</div><div class='ctx'> 	$(ECHO) creating $@</div><div class='del'>-	$(Q) $(MINIRUBY) "$(srcdir)/tool/generic_erb.rb" -o $@ $(srcdir)/template/verconf.h.tmpl</div><div class='add'>+	$(Q) $(BOOTSTRAPRUBY) "$(srcdir)/tool/generic_erb.rb" -o $@ $(srcdir)/template/verconf.h.tmpl</div><div class='ctx'> </div><div class='ctx'> ruby-glommed.$(OBJEXT): $(OBJS)</div><div class='ctx'> </div><div class='hunk'>@@ -719,17 +800,23 @@ INSNS2VMOPT = --srcdir="$(srcdir)"</div><div class='ctx'> </div><div class='ctx'> {$(VPATH)}vm.inc: $(srcdir)/template/vm.inc.tmpl</div><div class='ctx'> </div><div class='del'>-common-srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c {$(VPATH)}newline.c {$(VPATH)}id.c \</div><div class='add'>+common-srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c {$(VPATH)}enc/trans/newline.c {$(VPATH)}id.c \</div><div class='ctx'> 	     srcs-lib srcs-ext</div><div class='ctx'> </div><div class='del'>-srcs: common-srcs srcs-enc</div><div class='add'>+missing-srcs: $(srcdir)/missing/des_tables.c</div><div class='add'>+</div><div class='add'>+srcs: common-srcs missing-srcs srcs-enc</div><div class='ctx'> </div><div class='ctx'> EXT_SRCS = $(srcdir)/ext/ripper/ripper.c \</div><div class='del'>-	   $(srcdir)/ext/rbconfig/sizeof/sizes.c</div><div class='add'>+	   $(srcdir)/ext/rbconfig/sizeof/sizes.c \</div><div class='add'>+	   $(srcdir)/ext/socket/constdefs.c \</div><div class='add'>+	   # EXT_SRCS</div><div class='ctx'> </div><div class='ctx'> srcs-ext: $(EXT_SRCS)</div><div class='ctx'> </div><div class='del'>-srcs-extra: $(srcdir)/ext/json/parser/parser.c</div><div class='add'>+srcs-extra: $(srcdir)/ext/json/parser/parser.c \</div><div class='add'>+	    $(srcdir)/ext/date/zonetab.h \</div><div class='add'>+	    $(empty)</div><div class='ctx'> </div><div class='ctx'> LIB_SRCS = $(srcdir)/lib/unicode_normalize/tables.rb</div><div class='ctx'> </div><div class='hunk'>@@ -737,11 +824,13 @@ srcs-lib: $(LIB_SRCS)</div><div class='ctx'> </div><div class='ctx'> srcs-enc: $(ENC_MK)</div><div class='ctx'> 	$(ECHO) making srcs under enc</div><div class='del'>-	$(Q) $(MAKE) -f $(ENC_MK) RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(MFLAGS) srcs</div><div class='add'>+	$(Q) $(MAKE) $(MAKE_ENC) srcs</div><div class='ctx'> </div><div class='ctx'> all-incs: incs {$(VPATH)}encdb.h {$(VPATH)}transdb.h</div><div class='ctx'> incs: $(INSNS) {$(VPATH)}node_name.inc {$(VPATH)}known_errors.inc \</div><div class='del'>-      $(srcdir)/revision.h $(REVISION_H) enc/unicode/name2ctype.h enc/jis/props.h \</div><div class='add'>+      {$(VPATH)}vm_call_iseq_optimized.inc $(srcdir)/revision.h \</div><div class='add'>+      $(REVISION_H) \</div><div class='add'>+      $(UNICODE_DATA_HEADERS) $(srcdir)/enc/jis/props.h \</div><div class='ctx'>       {$(VPATH)}id.h {$(VPATH)}probes.dmyh</div><div class='ctx'> </div><div class='ctx'> insns: $(INSNS)</div><div class='hunk'>@@ -774,15 +863,17 @@ known_errors.inc: $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_</div><div class='ctx'> 	$(ECHO) generating $@</div><div class='ctx'> 	$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def</div><div class='ctx'> </div><div class='add'>+vm_call_iseq_optimized.inc: $(srcdir)/tool/mk_call_iseq_optimized.rb</div><div class='add'>+	$(ECHO) generating $@</div><div class='add'>+	$(Q) $(BASERUBY) $(srcdir)/tool/mk_call_iseq_optimized.rb &gt; $@</div><div class='add'>+</div><div class='ctx'> $(MINIPRELUDE_C): $(COMPILE_PRELUDE)</div><div class='ctx'> 	$(ECHO) generating $@</div><div class='ctx'> 	$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -o $@ \</div><div class='ctx'> 		$(srcdir)/template/prelude.c.tmpl</div><div class='ctx'> </div><div class='ctx'> $(PRELUDE_C): $(COMPILE_PRELUDE) \</div><div class='del'>-	   {$(srcdir)}lib/rubygems/defaults.rb \</div><div class='del'>-	   {$(srcdir)}lib/rubygems/core_ext/kernel_gem.rb \</div><div class='del'>-	   $(PRELUDE_SCRIPTS) $(LIB_SRCS)</div><div class='add'>+	   $(PRELUDE_SCRIPTS)</div><div class='ctx'> 	$(ECHO) generating $@</div><div class='ctx'> 	$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \</div><div class='ctx'> 		$(srcdir)/template/prelude.c.tmpl $(PRELUDE_SCRIPTS)</div><div class='hunk'>@@ -792,7 +883,9 @@ $(PRELUDE_C): $(COMPILE_PRELUDE) \</div><div class='ctx'> 	$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \</div><div class='ctx'> 		$(srcdir)/template/prelude.c.tmpl golf_prelude.rb</div><div class='ctx'> </div><div class='del'>-probes.dmyh: {$(srcdir)}probes.d $(srcdir)/tool/gen_dummy_probes.rb</div><div class='add'>+{$(VPATH)}probes.dmyh: {$(srcdir)}probes.d $(srcdir)/tool/gen_dummy_probes.rb</div><div class='add'>+</div><div class='add'>+probes.dmyh:</div><div class='ctx'> 	$(BASERUBY) $(srcdir)/tool/gen_dummy_probes.rb $(srcdir)/probes.d &gt; $@</div><div class='ctx'> </div><div class='ctx'> probes.h: {$(VPATH)}probes.$(DTRACE_EXT)</div><div class='hunk'>@@ -810,11 +903,12 @@ $(REVISION_H): $(srcdir)/version.h $(srcdir)/ChangeLog $(srcdir)/tool/file2lastr</div><div class='ctx'> 	-$(Q) $(BASERUBY) $(srcdir)/tool/file2lastrev.rb --revision.h "$(srcdir)" &gt; revision.tmp</div><div class='ctx'> 	$(Q)$(IFCHANGE) "--timestamp=$@" "$(srcdir)/revision.h" revision.tmp</div><div class='ctx'> </div><div class='del'>-$(srcdir)/ext/ripper/ripper.c: parse.y id.h</div><div class='add'>+$(srcdir)/ext/ripper/ripper.c: $(srcdir)/parse.y id.h</div><div class='ctx'> 	$(ECHO) generating $@</div><div class='del'>-	$(Q) $(CHDIR) $(@D) &amp;&amp; $(exec) $(MAKE) -f depend $(MFLAGS) \</div><div class='del'>-		Q=$(Q) ECHO=$(ECHO) RM="$(RM)" VPATH="$(PWD)" \</div><div class='del'>-		top_srcdir=../.. srcdir=. \</div><div class='add'>+	$(Q) $(CHDIR) $(@D) &amp;&amp; \</div><div class='add'>+	sed /AUTOGENERATED/q depend | \</div><div class='add'>+	$(exec) $(MAKE) -f - $(MFLAGS) \</div><div class='add'>+		Q=$(Q) ECHO=$(ECHO) RM="$(RM)" top_srcdir=../.. srcdir=. VPATH="$(PWD)" \</div><div class='ctx'> 		RUBY="$(BASERUBY)" PATH_SEPARATOR="$(PATH_SEPARATOR)"</div><div class='ctx'> </div><div class='ctx'> $(srcdir)/ext/json/parser/parser.c: $(srcdir)/ext/json/parser/parser.rl</div><div class='hunk'>@@ -822,12 +916,25 @@ $(srcdir)/ext/json/parser/parser.c: $(srcdir)/ext/json/parser/parser.rl</div><div class='ctx'> 	$(Q) $(CHDIR) $(@D) &amp;&amp; $(exec) $(MAKE) -f prereq.mk $(MFLAGS) \</div><div class='ctx'> 		Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=. VPATH=../../.. BASERUBY="$(BASERUBY)"</div><div class='ctx'> </div><div class='add'>+$(srcdir)/ext/date/zonetab.h: $(srcdir)/ext/date/zonetab.list</div><div class='add'>+	$(ECHO) generating $@</div><div class='add'>+	$(Q) $(CHDIR) $(@D) &amp;&amp; $(exec) $(MAKE) -f prereq.mk $(MFLAGS) \</div><div class='add'>+		Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. BASERUBY="$(BASERUBY)"</div><div class='add'>+</div><div class='ctx'> $(srcdir)/ext/rbconfig/sizeof/sizes.c: $(srcdir)/ext/rbconfig/sizeof/depend \</div><div class='ctx'> 		$(srcdir)/tool/generic_erb.rb $(srcdir)/template/sizes.c.tmpl $(srcdir)/configure.in</div><div class='ctx'> 	$(ECHO) generating $@</div><div class='del'>-	$(Q) $(CHDIR) $(@D) &amp;&amp; $(exec) $(MAKE) -f depend $(MFLAGS) \</div><div class='add'>+	$(Q) $(CHDIR) $(@D) &amp;&amp; \</div><div class='add'>+	sed '/AUTOGENERATED/q' depend | \</div><div class='add'>+	$(exec) $(MAKE) -f - $(MFLAGS) \</div><div class='ctx'> 		Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=. VPATH=../../.. RUBY="$(BASERUBY)"</div><div class='ctx'> </div><div class='add'>+$(srcdir)/ext/socket/constdefs.c: $(srcdir)/ext/socket/depend</div><div class='add'>+	$(Q) $(CHDIR) $(@D) &amp;&amp; \</div><div class='add'>+	sed '/AUTOGENERATED/q' depend | \</div><div class='add'>+	$(exec) $(MAKE) -f - $(MFLAGS) \</div><div class='add'>+		Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. RUBY="$(BASERUBY)"</div><div class='add'>+</div><div class='ctx'> ##</div><div class='ctx'> </div><div class='ctx'> run: fake miniruby$(EXEEXT) PHONY</div><div class='hunk'>@@ -849,19 +956,24 @@ COMPARE_RUBY = $(BASERUBY)</div><div class='ctx'> ITEM =</div><div class='ctx'> OPTS =</div><div class='ctx'> </div><div class='del'>-benchmark: $(PROGRAM) PHONY</div><div class='add'>+# You can pass several options through OPTS environment variable.</div><div class='add'>+# $ make benchmark OPTS="--help" displays more detail.</div><div class='add'>+# for example,</div><div class='add'>+#  $ make benchmark COMPARE_RUBY="ruby-trunk" OPTS="-e ruby-2.2.2"</div><div class='add'>+# This command compares trunk and built-ruby and 2.2.2</div><div class='add'>+benchmark: miniruby$(EXEEXT) PHONY</div><div class='ctx'> 	$(BASERUBY) $(srcdir)/benchmark/driver.rb -v \</div><div class='del'>-	            --executables="$(COMPARE_RUBY); built-ruby::$(RUNRUBY)" \</div><div class='add'>+	            --executables="$(COMPARE_RUBY) -I../../ruby/lib -I. -I.ext/common --disable-gem; built-ruby::$(MINIRUBY) --disable-gem" \</div><div class='ctx'> 	            --pattern='bm_' --directory=$(srcdir)/benchmark $(OPTS)</div><div class='ctx'> </div><div class='del'>-benchmark-each: $(PROGRAM) PHONY</div><div class='add'>+benchmark-each: miniruby$(EXEEXT) PHONY</div><div class='ctx'> 	$(BASERUBY) $(srcdir)/benchmark/driver.rb -v \</div><div class='del'>-	            --executables="$(COMPARE_RUBY); built-ruby::$(RUNRUBY)" \</div><div class='add'>+	            --executables="$(COMPARE_RUBY) -I../../ruby/lib -I. -I.ext/common --disable-gem; built-ruby::$(MINIRUBY) --disable-gem" \</div><div class='ctx'> 	            --pattern=$(ITEM) --directory=$(srcdir)/benchmark $(OPTS)</div><div class='ctx'> </div><div class='del'>-tbench: $(PROGRAM) PHONY</div><div class='add'>+tbench: miniruby$(EXEEXT) PHONY</div><div class='ctx'> 	$(BASERUBY) $(srcdir)/benchmark/driver.rb -v \</div><div class='del'>-	            --executables="$(COMPARE_RUBY); built-ruby::$(RUNRUBY)" \</div><div class='add'>+	            --executables="$(COMPARE_RUBY) -I../../ruby/lib -I. -I.ext/common --disable-gem; built-ruby::$(MINIRUBY) --disable-gem" \</div><div class='ctx'> 	            --pattern='bmx_' --directory=$(srcdir)/benchmark $(OPTS)</div><div class='ctx'> </div><div class='ctx'> run.gdb:</div><div class='hunk'>@@ -886,7 +998,12 @@ gdb-ruby: $(PROGRAM) run.gdb PHONY</div><div class='ctx'> 	$(Q) $(RUNRUBY_COMMAND) $(RUNRUBY_DEBUGGER) -- $(TESTRUN_SCRIPT)</div><div class='ctx'> </div><div class='ctx'> dist:</div><div class='del'>-	$(BASERUBY) $(srcdir)/tool/make-snapshot -srcdir=$(srcdir) tmp $(RELNAME)</div><div class='add'>+	$(BASERUBY) $(srcdir)/tool/make-snapshot \</div><div class='add'>+	-srcdir=$(srcdir) \</div><div class='add'>+	-unicode-version=$(UNICODE_VERSION) \</div><div class='add'>+	tmp $(RELNAME)</div><div class='add'>+</div><div class='add'>+up:: update-remote</div><div class='ctx'> </div><div class='ctx'> up::</div><div class='ctx'> 	-$(Q)$(MAKE) $(MFLAGS) Q=$(Q) REVISION_FORCE=PHONY "$(REVISION_H)"</div><div class='hunk'>@@ -894,7 +1011,10 @@ up::</div><div class='ctx'> up::</div><div class='ctx'> 	-$(Q)$(MAKE) $(MFLAGS) Q=$(Q) after-update</div><div class='ctx'> </div><div class='del'>-after-update:: update-unicode update-gems extract-extlibs</div><div class='add'>+after-update:: extract-extlibs</div><div class='add'>+</div><div class='add'>+update-remote:: update-src update-rubyspec update-download</div><div class='add'>+update-download:: update-unicode update-gems download-extlibs</div><div class='ctx'> </div><div class='ctx'> update-config_files: PHONY</div><div class='ctx'> 	$(Q) $(BASERUBY) -C "$(srcdir)/tool" \</div><div class='hunk'>@@ -903,7 +1023,7 @@ update-config_files: PHONY</div><div class='ctx'> </div><div class='ctx'> update-gems: PHONY</div><div class='ctx'> 	$(ECHO) Downloading bundled gem files...</div><div class='del'>-	$(Q) $(RUNRUBY) -C "$(srcdir)/gems" \</div><div class='add'>+	$(Q) $(BASERUBY) -C "$(srcdir)/gems" \</div><div class='ctx'> 	    -I../tool -rdownloader -answ \</div><div class='ctx'> 	    -e 'gem, ver = *$$F' \</div><div class='ctx'> 	    -e 'old = Dir.glob("#{gem}-*.gem")' \</div><div class='hunk'>@@ -912,45 +1032,99 @@ update-gems: PHONY</div><div class='ctx'> 	    -e 'File.unlink(*(old-[gem]))' \</div><div class='ctx'> 	    bundled_gems</div><div class='ctx'> </div><div class='del'>-UPDATE_LIBRARIES = no</div><div class='del'>-</div><div class='del'>-### set the following environment variable or uncomment the line if</div><div class='del'>-### the Unicode data files are updated every minute.</div><div class='del'>-# ALWAYS_UPDATE_UNICODE = yes</div><div class='del'>-</div><div class='del'>-UNICODE_FILES = $(srcdir)/enc/unicode/data/$(UNICODE_VERSION)/UnicodeData.txt \</div><div class='del'>-		$(srcdir)/enc/unicode/data/$(UNICODE_VERSION)/CompositionExclusions.txt \</div><div class='del'>-		$(srcdir)/enc/unicode/data/$(UNICODE_VERSION)/NormalizationTest.txt</div><div class='del'>-</div><div class='del'>-update-unicode: $(UNICODE_FILES) PHONY</div><div class='del'>-</div><div class='del'>-UNICODE_FILES_DEPS0 = $(UPDATE_LIBRARIES:yes=download-unicode-data)</div><div class='del'>-UNICODE_FILES_DEPS = $(UNICODE_FILES_DEPS0:no=)</div><div class='del'>-$(UNICODE_FILES): $(UNICODE_FILES_DEPS)</div><div class='add'>+extract-gems: PHONY</div><div class='add'>+	$(ECHO) Extracting bundled gem files...</div><div class='add'>+	$(Q) $(RUNRUBY) -C "$(srcdir)/gems" \</div><div class='add'>+	    -I../tool -rgem-unpack -answ \</div><div class='add'>+	    -e 'gem, ver = *$$F' \</div><div class='add'>+	    -e 'Gem.unpack("#{gem}-#{ver}.gem")' \</div><div class='add'>+	    bundled_gems</div><div class='ctx'> </div><div class='del'>-download-unicode-data: ./.unicode-$(UNICODE_VERSION).time</div><div class='del'>-./.unicode-$(UNICODE_VERSION).time: PHONY</div><div class='add'>+update-bundled_gems: PHONY</div><div class='add'>+	$(Q) $(RUNRUBY) -rrubygems \</div><div class='add'>+	    -pla \</div><div class='add'>+	    -e '$$_=Gem::SpecFetcher.fetcher.detect(:latest) {|s|' \</div><div class='add'>+	    -e   'break "#{s.name} #{s.version}" if s.platform=="ruby"&amp;&amp;s.name==$$F[0]' \</div><div class='add'>+	    -e '}' \</div><div class='add'>+	     "$(srcdir)/gems/bundled_gems" | \</div><div class='add'>+	"$(IFCHANGE)" "$(srcdir)/gems/bundled_gems" -</div><div class='add'>+</div><div class='add'>+UNICODE_FILES = $(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/CompositionExclusions.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/NormalizationTest.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/CaseFolding.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/SpecialCasing.txt \</div><div class='add'>+		$(empty)</div><div class='add'>+</div><div class='add'>+UNICODE_PROPERTY_FILES =  \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/Blocks.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/DerivedAge.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/DerivedCoreProperties.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/PropList.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/PropertyAliases.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/PropertyValueAliases.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/Scripts.txt \</div><div class='add'>+		$(empty)</div><div class='add'>+</div><div class='add'>+update-unicode: $(UNICODE_FILES)</div><div class='add'>+</div><div class='add'>+UNICODE_DOWNLOAD = \</div><div class='add'>+	$(BASERUBY) -C "$(srcdir)" tool/downloader.rb \</div><div class='add'>+	    -d $(UNICODE_DATA_DIR) \</div><div class='add'>+	    -p $(UNICODE_VERSION)/ucd \</div><div class='add'>+	    -e $(ALWAYS_UPDATE_UNICODE:yes=-a) unicode</div><div class='add'>+</div><div class='add'>+$(UNICODE_PROPERTY_FILES):</div><div class='add'>+	$(ECHO) Downloading Unicode $(UNICODE_VERSION) property files...</div><div class='add'>+	$(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)"</div><div class='add'>+	$(Q) $(UNICODE_DOWNLOAD) $(UNICODE_PROPERTY_FILES)</div><div class='add'>+</div><div class='add'>+$(UNICODE_FILES):</div><div class='ctx'> 	$(ECHO) Downloading Unicode $(UNICODE_VERSION) data files...</div><div class='del'>-	$(Q) $(MAKEDIRS) "$(srcdir)/enc/unicode/data/$(UNICODE_VERSION)"</div><div class='del'>-	$(Q) $(BASERUBY) -C "$(srcdir)" tool/downloader.rb \</div><div class='del'>-	    -d enc/unicode/data/$(UNICODE_VERSION) \</div><div class='del'>-	    -e $(ALWAYS_UPDATE_UNICODE:yes=-a) unicode \</div><div class='del'>-	    $(UNICODE_VERSION)/ucd/UnicodeData.txt \</div><div class='del'>-	    $(UNICODE_VERSION)/ucd/CompositionExclusions.txt \</div><div class='del'>-	    $(UNICODE_VERSION)/ucd/NormalizationTest.txt</div><div class='del'>-	@exit &gt; $@</div><div class='add'>+	$(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)"</div><div class='add'>+	$(Q) $(UNICODE_DOWNLOAD) $(UNICODE_FILES)</div><div class='ctx'> </div><div class='ctx'> $(srcdir)/$(HAVE_BASERUBY:yes=lib/unicode_normalize/tables.rb): \</div><div class='del'>-	$(UNICODE_FILES_DEPS:download-unicode-data=./.unicode-tables.time)</div><div class='add'>+	$(UNICODE_SRC_DATA_DIR)/.unicode-tables.time</div><div class='add'>+</div><div class='add'>+$(UNICODE_SRC_DATA_DIR)/$(ALWAYS_UPDATE_UNICODE:yes=.unicode-tables.time): $(UNICODE_FILES)</div><div class='ctx'> </div><div class='del'>-./.unicode-tables.time: $(srcdir)/tool/generic_erb.rb \</div><div class='del'>-		$(UNICODE_FILES) $(UNICODE_FILES_DEPS) \</div><div class='add'>+$(UNICODE_SRC_DATA_DIR)/.unicode-tables.time: $(srcdir)/tool/generic_erb.rb \</div><div class='ctx'> 		$(srcdir)/template/unicode_norm_gen.tmpl</div><div class='add'>+	$(Q) $(ALWAYS_UPDATE_UNICODE:yes=exit &amp;&amp;) $(MAKE) $(MFLAGS) Q=$(Q) UNICODE_VERSION=$(UNICODE_VERSION) update-unicode</div><div class='ctx'> 	$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb \</div><div class='ctx'> 		-c -t$@ -o $(srcdir)/lib/unicode_normalize/tables.rb \</div><div class='ctx'> 		-I $(srcdir) \</div><div class='ctx'> 		$(srcdir)/template/unicode_norm_gen.tmpl \</div><div class='del'>-		enc/unicode/data/$(UNICODE_VERSION) lib/unicode_normalize</div><div class='add'>+		$(UNICODE_DATA_DIR) lib/unicode_normalize</div><div class='add'>+</div><div class='add'>+# UPDATE_NAME2CTYPE=    : toplevel</div><div class='add'>+# UPDATE_NAME2CTYPE=yes : sub-make to update name2ctype.h</div><div class='add'>+$(UNICODE_HDR_DIR)/$(UPDATE_NAME2CTYPE:yes=.ignore.)name2ctype.h:</div><div class='add'>+	$(Q) $(MAKE) $(MFLAGS) Q=$(Q) UPDATE_NAME2CTYPE=yes UNICODE_VERSION=$(UNICODE_VERSION) $@</div><div class='add'>+</div><div class='add'>+$(UNICODE_HDR_DIR)/$(UPDATE_NAME2CTYPE:yes=name2ctype.h): \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \</div><div class='add'>+		$(UNICODE_PROPERTY_FILES)</div><div class='add'>+	$(MAKEDIRS) $(@D)</div><div class='add'>+	$(BOOTSTRAPRUBY) $(srcdir)/tool/enc-unicode.rb --header $(UNICODE_SRC_DATA_DIR) &gt; $@</div><div class='add'>+</div><div class='add'>+# the next non-comment line was:</div><div class='add'>+# $(UNICODE_HDR_DIR)/casefold.h: $(srcdir)/enc/unicode/case-folding.rb \</div><div class='add'>+# but was changed to make sure CI works on systems that don't have gperf</div><div class='add'>+unicode-up: $(UNICODE_DATA_HEADERS)</div><div class='add'>+</div><div class='add'>+$(UNICODE_HDR_DIR)/$(ALWAYS_UPDATE_UNICODE:yes=casefold.h): \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/SpecialCasing.txt \</div><div class='add'>+		$(UNICODE_SRC_DATA_DIR)/CaseFolding.txt</div><div class='add'>+</div><div class='add'>+$(UNICODE_HDR_DIR)/casefold.h: $(srcdir)/enc/unicode/case-folding.rb</div><div class='add'>+	$(Q) $(ALWAYS_UPDATE_UNICODE:yes=exit &amp;&amp;) $(MAKE) $(MFLAGS) Q=$(Q) UNICODE_VERSION=$(UNICODE_VERSION) update-unicode</div><div class='add'>+	$(MAKEDIRS) $(@D)</div><div class='add'>+	$(Q) $(BASERUBY) $(srcdir)/enc/unicode/case-folding.rb \</div><div class='add'>+		--output-file=$@ \</div><div class='add'>+		--mapping-data-directory=$(UNICODE_SRC_DATA_DIR)</div><div class='ctx'> </div><div class='ctx'> download-extlibs:</div><div class='ctx'> 	$(Q) $(BASERUBY) -C $(srcdir) -w tool/extlibs.rb --download ext</div><div class='hunk'>@@ -961,6 +1135,9 @@ extract-extlibs:</div><div class='ctx'> clean-extlibs:</div><div class='ctx'> 	$(Q) $(RMALL) $(srcdir)/.downloaded-cache</div><div class='ctx'> </div><div class='add'>+clean-gems:</div><div class='add'>+	$(Q) $(RM) gems/*.gem</div><div class='add'>+</div><div class='ctx'> CLEAN_CACHE = clean-extlibs</div><div class='ctx'> </div><div class='ctx'> info: info-program info-libruby_a info-libruby_so info-arch</div><div class='hunk'>@@ -976,7 +1153,9 @@ info-arch: PHONY</div><div class='ctx'> change: PHONY</div><div class='ctx'> 	$(BASERUBY) -C "$(srcdir)" ./tool/change_maker.rb $(CHANGES) &gt; change.log</div><div class='ctx'> </div><div class='del'>-love: sudo-precheck up all test install test-all</div><div class='add'>+exam: check test-rubyspec</div><div class='add'>+</div><div class='add'>+love: sudo-precheck up all test install check</div><div class='ctx'> 	@echo love is all you need</div><div class='ctx'> </div><div class='ctx'> yes-test-all: sudo-precheck</div><div class='hunk'>@@ -984,6 +1163,12 @@ yes-test-all: sudo-precheck</div><div class='ctx'> sudo-precheck: PHONY</div><div class='ctx'> 	@$(SUDO) echo &gt; $(NULL)</div><div class='ctx'> </div><div class='add'>+update-man-date: PHONY</div><div class='add'>+	-$(Q) $(BASERUBY) -I"$(srcdir)/tool" -rvcs -i -p \</div><div class='add'>+	-e 'BEGIN{@vcs=VCS.detect(ARGV.shift)}' \</div><div class='add'>+	-e '$$_.sub!(/^(\.Dd ).*/){$$1+@vcs.modified(ARGF.path).strftime("%B %d, %Y")}' \</div><div class='add'>+	"$(srcdir)" "$(srcdir)"/man/*.1</div><div class='add'>+</div><div class='ctx'> help: PHONY</div><div class='ctx'> 	$(MESSAGE_BEGIN) \</div><div class='ctx'> 	"                Makefile of Ruby" \</div><div class='hunk'>@@ -1000,16 +1185,18 @@ help: PHONY</div><div class='ctx'> 	"  gdb:             runs test.rb by miniruby under gdb" \</div><div class='ctx'> 	"  gdb-ruby:        runs test.rb by ruby under gdb" \</div><div class='ctx'> 	"  check:           equals make test test-all" \</div><div class='add'>+	"  exam:            equals make check test-rubyspec" \</div><div class='ctx'> 	"  test:            ruby core tests" \</div><div class='del'>-	"  test-all:        all ruby tests [TESTS=&lt;test files&gt;]" \</div><div class='del'>-	"  test-rubyspec:   run RubySpec test suite" \</div><div class='del'>-	"  update-rubyspec: update local copy of RubySpec" \</div><div class='del'>-	"  benchmark:       benchmark this ruby and COMPARE_RUBY" \</div><div class='add'>+	"  test-all:        all ruby tests [TESTOPTS=-j4 TESTS=\"&lt;test files&gt;\"]" \</div><div class='add'>+	"  test-rubyspec:   run the Ruby spec suite" \</div><div class='add'>+	"  up:              update local copy and autogenerated files" \</div><div class='add'>+	"  update-rubyspec: update local copy of the Ruby spec suite" \</div><div class='add'>+	"  benchmark:       benchmark this ruby and COMPARE_RUBY." \</div><div class='ctx'> 	"  gcbench:         gc benchmark [GCBENCH_ITEM=&lt;item_name&gt;]" \</div><div class='ctx'> 	"  gcbench-rdoc:    gc benchmark with GCBENCH_ITEM=rdoc" \</div><div class='ctx'> 	"  install:         install all ruby distributions" \</div><div class='ctx'> 	"  install-nodoc:   install without rdoc" \</div><div class='del'>-	"  install-cross:   install cross compiling staff" \</div><div class='add'>+	"  install-cross:   install cross compiling stuff" \</div><div class='ctx'> 	"  clean:           clean for tarball" \</div><div class='ctx'> 	"  distclean:       clean for repository" \</div><div class='ctx'> 	"  change:          make change log template" \</div><div class='hunk'>@@ -1036,17 +1223,12 @@ array.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> array.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> array.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> array.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+array.$(OBJEXT): {$(VPATH)}probes.dmyh</div><div class='ctx'> array.$(OBJEXT): {$(VPATH)}probes.h</div><div class='add'>+array.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> array.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> array.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> array.$(OBJEXT): {$(VPATH)}util.h</div><div class='del'>-array.$(OBJEXT): {$(VPATH)}vm_opts.h</div><div class='del'>-ascii.$(OBJEXT): {$(VPATH)}ascii.c</div><div class='del'>-ascii.$(OBJEXT): {$(VPATH)}config.h</div><div class='del'>-ascii.$(OBJEXT): {$(VPATH)}defines.h</div><div class='del'>-ascii.$(OBJEXT): {$(VPATH)}missing.h</div><div class='del'>-ascii.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='del'>-ascii.$(OBJEXT): {$(VPATH)}regenc.h</div><div class='ctx'> bignum.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> bignum.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> bignum.$(OBJEXT): {$(VPATH)}bignum.c</div><div class='hunk'>@@ -1058,6 +1240,7 @@ bignum.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> bignum.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> bignum.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> bignum.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+bignum.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> bignum.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> bignum.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> bignum.$(OBJEXT): {$(VPATH)}thread.h</div><div class='hunk'>@@ -1074,6 +1257,7 @@ class.$(OBJEXT): {$(VPATH)}constant.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}defines.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}id.h</div><div class='add'>+class.$(OBJEXT): {$(VPATH)}id_table.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}io.h</div><div class='hunk'>@@ -1081,6 +1265,7 @@ class.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+class.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> class.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1093,6 +1278,7 @@ compar.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> compar.$(OBJEXT): {$(VPATH)}compar.c</div><div class='ctx'> compar.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> compar.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+compar.$(OBJEXT): {$(VPATH)}id.h</div><div class='ctx'> compar.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> compar.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> compar.$(OBJEXT): {$(VPATH)}st.h</div><div class='hunk'>@@ -1106,8 +1292,11 @@ compile.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}compile.c</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+compile.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='add'>+compile.$(OBJEXT): {$(VPATH)}gc.h</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}id.h</div><div class='add'>+compile.$(OBJEXT): {$(VPATH)}id_table.h</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}insns.inc</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}insns_info.inc</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}intern.h</div><div class='hunk'>@@ -1118,7 +1307,12 @@ compile.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+compile.$(OBJEXT): {$(VPATH)}opt_sc.inc</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}optinsn.inc</div><div class='add'>+compile.$(OBJEXT): {$(VPATH)}optunifs.inc</div><div class='add'>+compile.$(OBJEXT): {$(VPATH)}re.h</div><div class='add'>+compile.$(OBJEXT): {$(VPATH)}regex.h</div><div class='add'>+compile.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> compile.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1138,6 +1332,7 @@ complex.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> complex.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> complex.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> complex.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+complex.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> complex.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> complex.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> cont.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h</div><div class='hunk'>@@ -1160,6 +1355,7 @@ cont.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> cont.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> cont.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> cont.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+cont.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> cont.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> cont.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> cont.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1187,6 +1383,7 @@ debug.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> debug.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> debug.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> debug.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+debug.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> debug.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> debug.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> debug.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1201,6 +1398,7 @@ dir.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> dir.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> dir.$(OBJEXT): {$(VPATH)}defines.h</div><div class='ctx'> dir.$(OBJEXT): {$(VPATH)}dir.c</div><div class='add'>+dir.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='ctx'> dir.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> dir.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> dir.$(OBJEXT): {$(VPATH)}internal.h</div><div class='hunk'>@@ -1238,10 +1436,54 @@ dmydln.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> dmydln.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> dmyenc.$(OBJEXT): {$(VPATH)}dmyenc.c</div><div class='ctx'> dmyext.$(OBJEXT): {$(VPATH)}dmyext.c</div><div class='add'>+enc/ascii.$(OBJEXT): {$(VPATH)}config.h</div><div class='add'>+enc/ascii.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+enc/ascii.$(OBJEXT): {$(VPATH)}enc/ascii.c</div><div class='add'>+enc/ascii.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='add'>+enc/ascii.$(OBJEXT): {$(VPATH)}missing.h</div><div class='add'>+enc/ascii.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+enc/ascii.$(OBJEXT): {$(VPATH)}regenc.h</div><div class='add'>+enc/trans/newline.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='add'>+enc/trans/newline.$(OBJEXT): {$(VPATH)}config.h</div><div class='add'>+enc/trans/newline.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+enc/trans/newline.$(OBJEXT): {$(VPATH)}enc/trans/newline.c</div><div class='add'>+enc/trans/newline.$(OBJEXT): {$(VPATH)}intern.h</div><div class='add'>+enc/trans/newline.$(OBJEXT): {$(VPATH)}missing.h</div><div class='add'>+enc/trans/newline.$(OBJEXT): {$(VPATH)}st.h</div><div class='add'>+enc/trans/newline.$(OBJEXT): {$(VPATH)}subst.h</div><div class='add'>+enc/trans/newline.$(OBJEXT): {$(VPATH)}transcode_data.h</div><div class='add'>+enc/unicode.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='add'>+enc/unicode.$(OBJEXT): $(UNICODE_HDR_DIR)/casefold.h</div><div class='add'>+enc/unicode.$(OBJEXT): $(UNICODE_HDR_DIR)/name2ctype.h</div><div class='add'>+enc/unicode.$(OBJEXT): {$(VPATH)}config.h</div><div class='add'>+enc/unicode.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+enc/unicode.$(OBJEXT): {$(VPATH)}enc/unicode.c</div><div class='add'>+enc/unicode.$(OBJEXT): {$(VPATH)}intern.h</div><div class='add'>+enc/unicode.$(OBJEXT): {$(VPATH)}missing.h</div><div class='add'>+enc/unicode.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+enc/unicode.$(OBJEXT): {$(VPATH)}regenc.h</div><div class='add'>+enc/unicode.$(OBJEXT): {$(VPATH)}regint.h</div><div class='add'>+enc/unicode.$(OBJEXT): {$(VPATH)}st.h</div><div class='add'>+enc/unicode.$(OBJEXT): {$(VPATH)}subst.h</div><div class='add'>+enc/us_ascii.$(OBJEXT): {$(VPATH)}config.h</div><div class='add'>+enc/us_ascii.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+enc/us_ascii.$(OBJEXT): {$(VPATH)}enc/us_ascii.c</div><div class='add'>+enc/us_ascii.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='add'>+enc/us_ascii.$(OBJEXT): {$(VPATH)}missing.h</div><div class='add'>+enc/us_ascii.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+enc/us_ascii.$(OBJEXT): {$(VPATH)}regenc.h</div><div class='add'>+enc/utf_8.$(OBJEXT): {$(VPATH)}config.h</div><div class='add'>+enc/utf_8.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+enc/utf_8.$(OBJEXT): {$(VPATH)}enc/utf_8.c</div><div class='add'>+enc/utf_8.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='add'>+enc/utf_8.$(OBJEXT): {$(VPATH)}missing.h</div><div class='add'>+enc/utf_8.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+enc/utf_8.$(OBJEXT): {$(VPATH)}regenc.h</div><div class='ctx'> encoding.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> encoding.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> encoding.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> encoding.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+encoding.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='ctx'> encoding.$(OBJEXT): {$(VPATH)}encoding.c</div><div class='ctx'> encoding.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> encoding.$(OBJEXT): {$(VPATH)}intern.h</div><div class='hunk'>@@ -1250,6 +1492,7 @@ encoding.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> encoding.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> encoding.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> encoding.$(OBJEXT): {$(VPATH)}regenc.h</div><div class='add'>+encoding.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> encoding.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> encoding.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> encoding.$(OBJEXT): {$(VPATH)}util.h</div><div class='hunk'>@@ -1264,7 +1507,6 @@ enum.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> enum.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> enum.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> enum.$(OBJEXT): {$(VPATH)}missing.h</div><div class='del'>-enum.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> enum.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> enum.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> enum.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1279,7 +1521,6 @@ enumerator.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> enumerator.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> enumerator.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> enumerator.$(OBJEXT): {$(VPATH)}missing.h</div><div class='del'>-enumerator.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> enumerator.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> enumerator.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> enumerator.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1302,6 +1543,7 @@ error.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> error.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> error.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> error.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+error.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> error.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> error.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> error.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1333,8 +1575,10 @@ eval.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> eval.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> eval.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> eval.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+eval.$(OBJEXT): {$(VPATH)}probes.dmyh</div><div class='ctx'> eval.$(OBJEXT): {$(VPATH)}probes.h</div><div class='ctx'> eval.$(OBJEXT): {$(VPATH)}probes_helper.h</div><div class='add'>+eval.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> eval.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> eval.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> eval.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1344,11 +1588,15 @@ eval.$(OBJEXT): {$(VPATH)}vm.h</div><div class='ctx'> eval.$(OBJEXT): {$(VPATH)}vm_core.h</div><div class='ctx'> eval.$(OBJEXT): {$(VPATH)}vm_debug.h</div><div class='ctx'> eval.$(OBJEXT): {$(VPATH)}vm_opts.h</div><div class='add'>+explicit_bzero.$(OBJEXT): {$(VPATH)}config.h</div><div class='add'>+explicit_bzero.$(OBJEXT): {$(VPATH)}explicit_bzero.c</div><div class='add'>+explicit_bzero.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> file.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> file.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> file.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> file.$(OBJEXT): {$(VPATH)}defines.h</div><div class='ctx'> file.$(OBJEXT): {$(VPATH)}dln.h</div><div class='add'>+file.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='ctx'> file.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> file.$(OBJEXT): {$(VPATH)}file.c</div><div class='ctx'> file.$(OBJEXT): {$(VPATH)}intern.h</div><div class='hunk'>@@ -1358,7 +1606,6 @@ file.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> file.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> file.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> file.$(OBJEXT): {$(VPATH)}subst.h</div><div class='del'>-file.$(OBJEXT): {$(VPATH)}thread.h</div><div class='ctx'> file.$(OBJEXT): {$(VPATH)}util.h</div><div class='ctx'> gc.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h</div><div class='ctx'> gc.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h</div><div class='hunk'>@@ -1375,6 +1622,7 @@ gc.$(OBJEXT): {$(VPATH)}eval_intern.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}gc.c</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}gc.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}id.h</div><div class='add'>+gc.$(OBJEXT): {$(VPATH)}id_table.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}io.h</div><div class='hunk'>@@ -1382,11 +1630,13 @@ gc.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+gc.$(OBJEXT): {$(VPATH)}probes.dmyh</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}probes.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}re.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}regenc.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}regex.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}regint.h</div><div class='add'>+gc.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> gc.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1411,10 +1661,12 @@ golf_prelude.$(OBJEXT): {$(VPATH)}id.h</div><div class='ctx'> golf_prelude.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> golf_prelude.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> golf_prelude.$(OBJEXT): {$(VPATH)}io.h</div><div class='add'>+golf_prelude.$(OBJEXT): {$(VPATH)}iseq.h</div><div class='ctx'> golf_prelude.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> golf_prelude.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> golf_prelude.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> golf_prelude.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+golf_prelude.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> golf_prelude.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> golf_prelude.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> golf_prelude.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1425,6 +1677,7 @@ golf_prelude.$(OBJEXT): {$(VPATH)}vm_debug.h</div><div class='ctx'> golf_prelude.$(OBJEXT): {$(VPATH)}vm_opts.h</div><div class='ctx'> goruby.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> goruby.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='add'>+goruby.$(OBJEXT): {$(VPATH)}backward.h</div><div class='ctx'> goruby.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> goruby.$(OBJEXT): {$(VPATH)}defines.h</div><div class='ctx'> goruby.$(OBJEXT): {$(VPATH)}goruby.c</div><div class='hunk'>@@ -1447,12 +1700,12 @@ hash.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> hash.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> hash.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> hash.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+hash.$(OBJEXT): {$(VPATH)}probes.dmyh</div><div class='ctx'> hash.$(OBJEXT): {$(VPATH)}probes.h</div><div class='ctx'> hash.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> hash.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> hash.$(OBJEXT): {$(VPATH)}symbol.h</div><div class='ctx'> hash.$(OBJEXT): {$(VPATH)}util.h</div><div class='del'>-hash.$(OBJEXT): {$(VPATH)}vm_opts.h</div><div class='ctx'> inits.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> inits.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> inits.$(OBJEXT): {$(VPATH)}config.h</div><div class='hunk'>@@ -1471,6 +1724,7 @@ io.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> io.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> io.$(OBJEXT): {$(VPATH)}defines.h</div><div class='ctx'> io.$(OBJEXT): {$(VPATH)}dln.h</div><div class='add'>+io.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='ctx'> io.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> io.$(OBJEXT): {$(VPATH)}id.h</div><div class='ctx'> io.$(OBJEXT): {$(VPATH)}intern.h</div><div class='hunk'>@@ -1496,6 +1750,7 @@ iseq.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}eval_intern.h</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}gc.h</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}id.h</div><div class='add'>+iseq.$(OBJEXT): {$(VPATH)}id_table.h</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}insns.inc</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}insns_info.inc</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}intern.h</div><div class='hunk'>@@ -1508,6 +1763,7 @@ iseq.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}node_name.inc</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+iseq.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> iseq.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1537,7 +1793,9 @@ load.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> load.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> load.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> load.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+load.$(OBJEXT): {$(VPATH)}probes.dmyh</div><div class='ctx'> load.$(OBJEXT): {$(VPATH)}probes.h</div><div class='add'>+load.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> load.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> load.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> load.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1562,6 +1820,7 @@ localeinit.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> localeinit.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> localeinit.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> localeinit.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+localeinit.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='ctx'> localeinit.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> localeinit.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> localeinit.$(OBJEXT): {$(VPATH)}internal.h</div><div class='hunk'>@@ -1573,6 +1832,7 @@ localeinit.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> localeinit.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> main.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> main.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='add'>+main.$(OBJEXT): {$(VPATH)}backward.h</div><div class='ctx'> main.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> main.$(OBJEXT): {$(VPATH)}defines.h</div><div class='ctx'> main.$(OBJEXT): {$(VPATH)}intern.h</div><div class='hunk'>@@ -1586,7 +1846,9 @@ marshal.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> marshal.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> marshal.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> marshal.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+marshal.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='ctx'> marshal.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='add'>+marshal.$(OBJEXT): {$(VPATH)}id_table.h</div><div class='ctx'> marshal.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> marshal.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> marshal.$(OBJEXT): {$(VPATH)}io.h</div><div class='hunk'>@@ -1619,16 +1881,8 @@ miniinit.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> miniinit.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> miniinit.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> miniinit.$(OBJEXT): {$(VPATH)}subst.h</div><div class='add'>+miniprelude.$(OBJEXT): {$(VPATH)}iseq.h</div><div class='ctx'> miniprelude.$(OBJEXT): {$(VPATH)}miniprelude.c</div><div class='del'>-newline.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='del'>-newline.$(OBJEXT): {$(VPATH)}config.h</div><div class='del'>-newline.$(OBJEXT): {$(VPATH)}defines.h</div><div class='del'>-newline.$(OBJEXT): {$(VPATH)}intern.h</div><div class='del'>-newline.$(OBJEXT): {$(VPATH)}missing.h</div><div class='del'>-newline.$(OBJEXT): {$(VPATH)}newline.c</div><div class='del'>-newline.$(OBJEXT): {$(VPATH)}st.h</div><div class='del'>-newline.$(OBJEXT): {$(VPATH)}subst.h</div><div class='del'>-newline.$(OBJEXT): {$(VPATH)}transcode_data.h</div><div class='ctx'> node.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h</div><div class='ctx'> node.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h</div><div class='ctx'> node.$(OBJEXT): $(CCAN_DIR)/list/list.h</div><div class='hunk'>@@ -1647,6 +1901,7 @@ node.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> node.$(OBJEXT): {$(VPATH)}node.c</div><div class='ctx'> node.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> node.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+node.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> node.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> node.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> node.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1683,11 +1938,11 @@ object.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> object.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> object.$(OBJEXT): {$(VPATH)}object.c</div><div class='ctx'> object.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+object.$(OBJEXT): {$(VPATH)}probes.dmyh</div><div class='ctx'> object.$(OBJEXT): {$(VPATH)}probes.h</div><div class='ctx'> object.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> object.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> object.$(OBJEXT): {$(VPATH)}util.h</div><div class='del'>-object.$(OBJEXT): {$(VPATH)}vm_opts.h</div><div class='ctx'> pack.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> pack.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> pack.$(OBJEXT): {$(VPATH)}config.h</div><div class='hunk'>@@ -1718,6 +1973,7 @@ parse.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> parse.$(OBJEXT): {$(VPATH)}parse.c</div><div class='ctx'> parse.$(OBJEXT): {$(VPATH)}parse.h</div><div class='ctx'> parse.$(OBJEXT): {$(VPATH)}parse.y</div><div class='add'>+parse.$(OBJEXT): {$(VPATH)}probes.dmyh</div><div class='ctx'> parse.$(OBJEXT): {$(VPATH)}probes.h</div><div class='ctx'> parse.$(OBJEXT): {$(VPATH)}regenc.h</div><div class='ctx'> parse.$(OBJEXT): {$(VPATH)}regex.h</div><div class='hunk'>@@ -1725,7 +1981,6 @@ parse.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> parse.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> parse.$(OBJEXT): {$(VPATH)}symbol.h</div><div class='ctx'> parse.$(OBJEXT): {$(VPATH)}util.h</div><div class='del'>-parse.$(OBJEXT): {$(VPATH)}vm_opts.h</div><div class='ctx'> prelude.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h</div><div class='ctx'> prelude.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h</div><div class='ctx'> prelude.$(OBJEXT): $(CCAN_DIR)/list/list.h</div><div class='hunk'>@@ -1739,11 +1994,13 @@ prelude.$(OBJEXT): {$(VPATH)}id.h</div><div class='ctx'> prelude.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> prelude.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> prelude.$(OBJEXT): {$(VPATH)}io.h</div><div class='add'>+prelude.$(OBJEXT): {$(VPATH)}iseq.h</div><div class='ctx'> prelude.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> prelude.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> prelude.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> prelude.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> prelude.$(OBJEXT): {$(VPATH)}prelude.c</div><div class='add'>+prelude.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> prelude.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> prelude.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> prelude.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1773,6 +2030,7 @@ proc.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> proc.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> proc.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> proc.$(OBJEXT): {$(VPATH)}proc.c</div><div class='add'>+proc.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> proc.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> proc.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> proc.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1800,6 +2058,7 @@ process.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> process.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> process.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> process.$(OBJEXT): {$(VPATH)}process.c</div><div class='add'>+process.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> process.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> process.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> process.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -1821,6 +2080,7 @@ random.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> random.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> random.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> random.$(OBJEXT): {$(VPATH)}random.c</div><div class='add'>+random.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> random.$(OBJEXT): {$(VPATH)}siphash.c</div><div class='ctx'> random.$(OBJEXT): {$(VPATH)}siphash.h</div><div class='ctx'> random.$(OBJEXT): {$(VPATH)}st.h</div><div class='hunk'>@@ -1850,12 +2110,14 @@ rational.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> rational.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> rational.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> rational.$(OBJEXT): {$(VPATH)}rational.c</div><div class='add'>+rational.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> rational.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> rational.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> re.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> re.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> re.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> re.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+re.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='ctx'> re.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> re.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> re.$(OBJEXT): {$(VPATH)}internal.h</div><div class='hunk'>@@ -1938,6 +2200,8 @@ regsyntax.$(OBJEXT): {$(VPATH)}regint.h</div><div class='ctx'> regsyntax.$(OBJEXT): {$(VPATH)}regsyntax.c</div><div class='ctx'> regsyntax.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> regsyntax.$(OBJEXT): {$(VPATH)}subst.h</div><div class='add'>+ruby-runner.$(OBJEXT): {$(VPATH)}ruby-runner.c</div><div class='add'>+ruby-runner.$(OBJEXT): {$(VPATH)}ruby-runner.h</div><div class='ctx'> ruby.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h</div><div class='ctx'> ruby.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h</div><div class='ctx'> ruby.$(OBJEXT): $(CCAN_DIR)/list/list.h</div><div class='hunk'>@@ -1958,9 +2222,11 @@ ruby.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> ruby.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> ruby.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> ruby.$(OBJEXT): {$(VPATH)}ruby.c</div><div class='add'>+ruby.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> ruby.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> ruby.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> ruby.$(OBJEXT): {$(VPATH)}subst.h</div><div class='add'>+ruby.$(OBJEXT): {$(VPATH)}thread.h</div><div class='ctx'> ruby.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h</div><div class='ctx'> ruby.$(OBJEXT): {$(VPATH)}thread_native.h</div><div class='ctx'> ruby.$(OBJEXT): {$(VPATH)}util.h</div><div class='hunk'>@@ -1984,6 +2250,7 @@ safe.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> safe.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> safe.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> safe.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+safe.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> safe.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> safe.$(OBJEXT): {$(VPATH)}safe.c</div><div class='ctx'> safe.$(OBJEXT): {$(VPATH)}st.h</div><div class='hunk'>@@ -2021,6 +2288,7 @@ signal.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> signal.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> signal.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> signal.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+signal.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> signal.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> signal.$(OBJEXT): {$(VPATH)}signal.c</div><div class='ctx'> signal.$(OBJEXT): {$(VPATH)}st.h</div><div class='hunk'>@@ -2047,6 +2315,10 @@ sprintf.$(OBJEXT): {$(VPATH)}sprintf.c</div><div class='ctx'> sprintf.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> sprintf.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> sprintf.$(OBJEXT): {$(VPATH)}vsnprintf.c</div><div class='add'>+st.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h</div><div class='add'>+st.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h</div><div class='add'>+st.$(OBJEXT): $(CCAN_DIR)/list/list.h</div><div class='add'>+st.$(OBJEXT): $(CCAN_DIR)/str/str.h</div><div class='ctx'> st.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> st.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> st.$(OBJEXT): {$(VPATH)}config.h</div><div class='hunk'>@@ -2061,10 +2333,13 @@ st.$(OBJEXT): {$(VPATH)}st.c</div><div class='ctx'> st.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> st.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> strftime.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='add'>+strftime.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> strftime.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> strftime.$(OBJEXT): {$(VPATH)}defines.h</div><div class='ctx'> strftime.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> strftime.$(OBJEXT): {$(VPATH)}intern.h</div><div class='add'>+strftime.$(OBJEXT): {$(VPATH)}internal.h</div><div class='add'>+strftime.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> strftime.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> strftime.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> strftime.$(OBJEXT): {$(VPATH)}st.h</div><div class='hunk'>@@ -2074,21 +2349,25 @@ strftime.$(OBJEXT): {$(VPATH)}timev.h</div><div class='ctx'> string.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> string.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}config.h</div><div class='add'>+string.$(OBJEXT): {$(VPATH)}crypt.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}defines.h</div><div class='add'>+string.$(OBJEXT): {$(VPATH)}encindex.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}gc.h</div><div class='add'>+string.$(OBJEXT): {$(VPATH)}id.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+string.$(OBJEXT): {$(VPATH)}probes.dmyh</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}probes.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}re.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}regex.h</div><div class='add'>+string.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}string.c</div><div class='ctx'> string.$(OBJEXT): {$(VPATH)}subst.h</div><div class='del'>-string.$(OBJEXT): {$(VPATH)}vm_opts.h</div><div class='ctx'> strlcat.$(OBJEXT): {$(VPATH)}config.h</div><div class='ctx'> strlcat.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> strlcat.$(OBJEXT): {$(VPATH)}strlcat.c</div><div class='hunk'>@@ -2112,6 +2391,7 @@ struct.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> struct.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> struct.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> struct.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+struct.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> struct.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> struct.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> struct.$(OBJEXT): {$(VPATH)}struct.c</div><div class='hunk'>@@ -2129,18 +2409,20 @@ symbol.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}gc.h</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}id.c</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}id.h</div><div class='add'>+symbol.$(OBJEXT): {$(VPATH)}id_table.c</div><div class='add'>+symbol.$(OBJEXT): {$(VPATH)}id_table.h</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}missing.h</div><div class='del'>-symbol.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+symbol.$(OBJEXT): {$(VPATH)}probes.dmyh</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}probes.h</div><div class='add'>+symbol.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}symbol.c</div><div class='ctx'> symbol.$(OBJEXT): {$(VPATH)}symbol.h</div><div class='del'>-symbol.$(OBJEXT): {$(VPATH)}vm_opts.h</div><div class='ctx'> thread.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h</div><div class='ctx'> thread.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h</div><div class='ctx'> thread.$(OBJEXT): $(CCAN_DIR)/list/list.h</div><div class='hunk'>@@ -2160,6 +2442,7 @@ thread.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+thread.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -2168,6 +2451,7 @@ thread.$(OBJEXT): {$(VPATH)}thread.h</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).c</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}thread_native.h</div><div class='add'>+thread.$(OBJEXT): {$(VPATH)}thread_sync.c</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}timev.h</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}vm_core.h</div><div class='ctx'> thread.$(OBJEXT): {$(VPATH)}vm_debug.h</div><div class='hunk'>@@ -2200,31 +2484,6 @@ transcode.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> transcode.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> transcode.$(OBJEXT): {$(VPATH)}transcode.c</div><div class='ctx'> transcode.$(OBJEXT): {$(VPATH)}transcode_data.h</div><div class='del'>-unicode.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}config.h</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}defines.h</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}intern.h</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}missing.h</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}regenc.h</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}regint.h</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}st.h</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}subst.h</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}unicode.c</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}unicode/casefold.h</div><div class='del'>-unicode.$(OBJEXT): {$(VPATH)}unicode/name2ctype.h</div><div class='del'>-us_ascii.$(OBJEXT): {$(VPATH)}config.h</div><div class='del'>-us_ascii.$(OBJEXT): {$(VPATH)}defines.h</div><div class='del'>-us_ascii.$(OBJEXT): {$(VPATH)}missing.h</div><div class='del'>-us_ascii.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='del'>-us_ascii.$(OBJEXT): {$(VPATH)}regenc.h</div><div class='del'>-us_ascii.$(OBJEXT): {$(VPATH)}us_ascii.c</div><div class='del'>-utf_8.$(OBJEXT): {$(VPATH)}config.h</div><div class='del'>-utf_8.$(OBJEXT): {$(VPATH)}defines.h</div><div class='del'>-utf_8.$(OBJEXT): {$(VPATH)}missing.h</div><div class='del'>-utf_8.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='del'>-utf_8.$(OBJEXT): {$(VPATH)}regenc.h</div><div class='del'>-utf_8.$(OBJEXT): {$(VPATH)}utf_8.c</div><div class='ctx'> util.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> util.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> util.$(OBJEXT): {$(VPATH)}config.h</div><div class='hunk'>@@ -2239,6 +2498,10 @@ util.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> util.$(OBJEXT): {$(VPATH)}subst.h</div><div class='ctx'> util.$(OBJEXT): {$(VPATH)}util.c</div><div class='ctx'> util.$(OBJEXT): {$(VPATH)}util.h</div><div class='add'>+variable.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h</div><div class='add'>+variable.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h</div><div class='add'>+variable.$(OBJEXT): $(CCAN_DIR)/list/list.h</div><div class='add'>+variable.$(OBJEXT): $(CCAN_DIR)/str/str.h</div><div class='ctx'> variable.$(OBJEXT): $(hdrdir)/ruby/ruby.h</div><div class='ctx'> variable.$(OBJEXT): $(top_srcdir)/include/ruby.h</div><div class='ctx'> variable.$(OBJEXT): {$(VPATH)}config.h</div><div class='hunk'>@@ -2246,11 +2509,11 @@ variable.$(OBJEXT): {$(VPATH)}constant.h</div><div class='ctx'> variable.$(OBJEXT): {$(VPATH)}defines.h</div><div class='ctx'> variable.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> variable.$(OBJEXT): {$(VPATH)}id.h</div><div class='add'>+variable.$(OBJEXT): {$(VPATH)}id_table.h</div><div class='ctx'> variable.$(OBJEXT): {$(VPATH)}intern.h</div><div class='ctx'> variable.$(OBJEXT): {$(VPATH)}internal.h</div><div class='ctx'> variable.$(OBJEXT): {$(VPATH)}io.h</div><div class='ctx'> variable.$(OBJEXT): {$(VPATH)}missing.h</div><div class='del'>-variable.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> variable.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='ctx'> variable.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> variable.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -2280,6 +2543,7 @@ vm.$(OBJEXT): {$(VPATH)}encoding.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}eval_intern.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}gc.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}id.h</div><div class='add'>+vm.$(OBJEXT): {$(VPATH)}id_table.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}insns.def</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}insns.inc</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}intern.h</div><div class='hunk'>@@ -2290,8 +2554,10 @@ vm.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+vm.$(OBJEXT): {$(VPATH)}probes.dmyh</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}probes.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}probes_helper.h</div><div class='add'>+vm.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -2301,6 +2567,7 @@ vm.$(OBJEXT): {$(VPATH)}vm.c</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}vm.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}vm.inc</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}vm_args.c</div><div class='add'>+vm.$(OBJEXT): {$(VPATH)}vm_call_iseq_optimized.inc</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}vm_core.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}vm_debug.h</div><div class='ctx'> vm.$(OBJEXT): {$(VPATH)}vm_eval.c</div><div class='hunk'>@@ -2331,6 +2598,7 @@ vm_backtrace.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> vm_backtrace.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> vm_backtrace.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> vm_backtrace.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+vm_backtrace.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> vm_backtrace.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> vm_backtrace.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> vm_backtrace.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -2359,6 +2627,7 @@ vm_dump.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> vm_dump.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> vm_dump.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> vm_dump.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+vm_dump.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> vm_dump.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> vm_dump.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> vm_dump.$(OBJEXT): {$(VPATH)}subst.h</div><div class='hunk'>@@ -2387,6 +2656,7 @@ vm_trace.$(OBJEXT): {$(VPATH)}method.h</div><div class='ctx'> vm_trace.$(OBJEXT): {$(VPATH)}missing.h</div><div class='ctx'> vm_trace.$(OBJEXT): {$(VPATH)}node.h</div><div class='ctx'> vm_trace.$(OBJEXT): {$(VPATH)}oniguruma.h</div><div class='add'>+vm_trace.$(OBJEXT): {$(VPATH)}ruby_assert.h</div><div class='ctx'> vm_trace.$(OBJEXT): {$(VPATH)}ruby_atomic.h</div><div class='ctx'> vm_trace.$(OBJEXT): {$(VPATH)}st.h</div><div class='ctx'> vm_trace.$(OBJEXT): {$(VPATH)}subst.h</div><div class='head'>diff --git a/compar.c b/compar.c<br/>index 3d0a3e81dc..02529c9960 100644<br/>--- a/<a href='/ruby.git/tree/compar.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>compar.c</a><br/>+++ b/<a href='/ruby.git/tree/compar.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>compar.c</a></div><div class='hunk'>@@ -10,10 +10,15 @@</div><div class='ctx'> **********************************************************************/</div><div class='ctx'> </div><div class='ctx'> #include "ruby/ruby.h"</div><div class='add'>+#include "id.h"</div><div class='ctx'> </div><div class='ctx'> VALUE rb_mComparable;</div><div class='ctx'> </div><div class='del'>-static ID cmp;</div><div class='add'>+static VALUE</div><div class='add'>+rb_cmp(VALUE x, VALUE y)</div><div class='add'>+{</div><div class='add'>+    return rb_funcallv(x, idCmp, 1, &amp;y);</div><div class='add'>+}</div><div class='ctx'> </div><div class='ctx'> void</div><div class='ctx'> rb_cmperr(VALUE x, VALUE y)</div><div class='hunk'>@@ -34,7 +39,7 @@ static VALUE</div><div class='ctx'> invcmp_recursive(VALUE x, VALUE y, int recursive)</div><div class='ctx'> {</div><div class='ctx'>     if (recursive) return Qnil;</div><div class='del'>-    return rb_check_funcall(y, cmp, 1, &amp;x);</div><div class='add'>+    return rb_cmp(y, x);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> VALUE</div><div class='hunk'>@@ -54,25 +59,7 @@ static VALUE</div><div class='ctx'> cmp_eq_recursive(VALUE arg1, VALUE arg2, int recursive)</div><div class='ctx'> {</div><div class='ctx'>     if (recursive) return Qnil;</div><div class='del'>-    return rb_funcallv(arg1, cmp, 1, &amp;arg2);</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='del'>-cmp_eq(VALUE *a)</div><div class='del'>-{</div><div class='del'>-    VALUE c = rb_exec_recursive_paired_outer(cmp_eq_recursive, a[0], a[1], a[1]);</div><div class='del'>-</div><div class='del'>-    if (NIL_P(c)) return Qfalse;</div><div class='del'>-    if (rb_cmpint(c, a[0], a[1]) == 0) return Qtrue;</div><div class='del'>-    return Qfalse;</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-static VALUE</div><div class='del'>-cmp_failed(void)</div><div class='del'>-{</div><div class='del'>-    rb_warn("Comparable#== will no more rescue exceptions of #&lt;=&gt; in the next release.");</div><div class='del'>-    rb_warn("Return nil in #&lt;=&gt; if the comparison is inappropriate or avoid such comparison.");</div><div class='del'>-    return Qfalse;</div><div class='add'>+    return rb_cmp(arg1, arg2);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='hunk'>@@ -82,20 +69,25 @@ cmp_failed(void)</div><div class='ctx'>  *  Compares two objects based on the receiver's &lt;code&gt;&lt;=&gt;&lt;/code&gt;</div><div class='ctx'>  *  method, returning true if it returns 0. Also returns true if</div><div class='ctx'>  *  _obj_ and _other_ are the same object.</div><div class='del'>- *</div><div class='del'>- *  Even if _obj_ &lt;=&gt; _other_ raised an exception, the exception</div><div class='del'>- *  is ignored and returns false.</div><div class='ctx'>  */</div><div class='ctx'> </div><div class='ctx'> static VALUE</div><div class='ctx'> cmp_equal(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='del'>-    VALUE a[2];</div><div class='del'>-</div><div class='add'>+    VALUE c;</div><div class='ctx'>     if (x == y) return Qtrue;</div><div class='ctx'> </div><div class='del'>-    a[0] = x; a[1] = y;</div><div class='del'>-    return rb_rescue(cmp_eq, (VALUE)a, cmp_failed, 0);</div><div class='add'>+    c = rb_exec_recursive_paired_outer(cmp_eq_recursive, x, y, y);</div><div class='add'>+</div><div class='add'>+    if (NIL_P(c)) return Qfalse;</div><div class='add'>+    if (rb_cmpint(c, x, y) == 0) return Qtrue;</div><div class='add'>+    return Qfalse;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static int</div><div class='add'>+cmpint(VALUE x, VALUE y)</div><div class='add'>+{</div><div class='add'>+    return rb_cmpint(rb_cmp(x, y), x, y);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='hunk'>@@ -109,9 +101,7 @@ cmp_equal(VALUE x, VALUE y)</div><div class='ctx'> static VALUE</div><div class='ctx'> cmp_gt(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='del'>-    VALUE c = rb_funcall(x, cmp, 1, y);</div><div class='del'>-</div><div class='del'>-    if (rb_cmpint(c, x, y) &gt; 0) return Qtrue;</div><div class='add'>+    if (cmpint(x, y) &gt; 0) return Qtrue;</div><div class='ctx'>     return Qfalse;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -126,9 +116,7 @@ cmp_gt(VALUE x, VALUE y)</div><div class='ctx'> static VALUE</div><div class='ctx'> cmp_ge(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='del'>-    VALUE c = rb_funcall(x, cmp, 1, y);</div><div class='del'>-</div><div class='del'>-    if (rb_cmpint(c, x, y) &gt;= 0) return Qtrue;</div><div class='add'>+    if (cmpint(x, y) &gt;= 0) return Qtrue;</div><div class='ctx'>     return Qfalse;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -143,9 +131,7 @@ cmp_ge(VALUE x, VALUE y)</div><div class='ctx'> static VALUE</div><div class='ctx'> cmp_lt(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='del'>-    VALUE c = rb_funcall(x, cmp, 1, y);</div><div class='del'>-</div><div class='del'>-    if (rb_cmpint(c, x, y) &lt; 0) return Qtrue;</div><div class='add'>+    if (cmpint(x, y) &lt; 0) return Qtrue;</div><div class='ctx'>     return Qfalse;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -160,9 +146,7 @@ cmp_lt(VALUE x, VALUE y)</div><div class='ctx'> static VALUE</div><div class='ctx'> cmp_le(VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='del'>-    VALUE c = rb_funcall(x, cmp, 1, y);</div><div class='del'>-</div><div class='del'>-    if (rb_cmpint(c, x, y) &lt;= 0) return Qtrue;</div><div class='add'>+    if (cmpint(x, y) &lt;= 0) return Qtrue;</div><div class='ctx'>     return Qfalse;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -184,12 +168,45 @@ cmp_le(VALUE x, VALUE y)</div><div class='ctx'> static VALUE</div><div class='ctx'> cmp_between(VALUE x, VALUE min, VALUE max)</div><div class='ctx'> {</div><div class='del'>-    if (RTEST(cmp_lt(x, min))) return Qfalse;</div><div class='del'>-    if (RTEST(cmp_gt(x, max))) return Qfalse;</div><div class='add'>+    if (cmpint(x, min) &lt; 0) return Qfalse;</div><div class='add'>+    if (cmpint(x, max) &gt; 0) return Qfalse;</div><div class='ctx'>     return Qtrue;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='add'>+ *  call-seq:</div><div class='add'>+ *     obj.clamp(min, max) -&gt;  obj</div><div class='add'>+ *</div><div class='add'>+ * Returns &lt;i&gt;min&lt;/i&gt; if &lt;i&gt;obj&lt;/i&gt; &lt;code&gt;&lt;=&gt;&lt;/code&gt; &lt;i&gt;min&lt;/i&gt; is less</div><div class='add'>+ * than zero, &lt;i&gt;max&lt;/i&gt; if &lt;i&gt;obj&lt;/i&gt; &lt;code&gt;&lt;=&gt;&lt;/code&gt; &lt;i&gt;max&lt;/i&gt; is</div><div class='add'>+ * greater than zero and &lt;i&gt;obj&lt;/i&gt; otherwise.</div><div class='add'>+ *</div><div class='add'>+ *     12.clamp(0, 100)         #=&gt; 12</div><div class='add'>+ *     523.clamp(0, 100)        #=&gt; 100</div><div class='add'>+ *     -3.123.clamp(0, 100)     #=&gt; 0</div><div class='add'>+ *</div><div class='add'>+ *     'd'.clamp('a', 'f')      #=&gt; 'd'</div><div class='add'>+ *     'z'.clamp('a', 'f')      #=&gt; 'f'</div><div class='add'>+ */</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+cmp_clamp(VALUE x, VALUE min, VALUE max)</div><div class='add'>+{</div><div class='add'>+    int c;</div><div class='add'>+</div><div class='add'>+    if (cmpint(min, max) &gt; 0) {</div><div class='add'>+	rb_raise(rb_eArgError, "min argument must be smaller than max argument");</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    c = cmpint(x, min);</div><div class='add'>+    if (c == 0) return x;</div><div class='add'>+    if (c &lt; 0) return min;</div><div class='add'>+    c = cmpint(x, max);</div><div class='add'>+    if (c &gt; 0) return max;</div><div class='add'>+    return x;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/*</div><div class='ctx'>  *  The &lt;code&gt;Comparable&lt;/code&gt; mixin is used by classes whose objects</div><div class='ctx'>  *  may be ordered. The class must define the &lt;code&gt;&lt;=&gt;&lt;/code&gt; operator,</div><div class='ctx'>  *  which compares the receiver against another object, returning -1, 0,</div><div class='hunk'>@@ -204,8 +221,8 @@ cmp_between(VALUE x, VALUE min, VALUE max)</div><div class='ctx'>  *     class SizeMatters</div><div class='ctx'>  *       include Comparable</div><div class='ctx'>  *       attr :str</div><div class='del'>- *       def &lt;=&gt;(anOther)</div><div class='del'>- *         str.size &lt;=&gt; anOther.str.size</div><div class='add'>+ *       def &lt;=&gt;(other)</div><div class='add'>+ *         str.size &lt;=&gt; other.str.size</div><div class='ctx'>  *       end</div><div class='ctx'>  *       def initialize(str)</div><div class='ctx'>  *         @str = str</div><div class='hunk'>@@ -241,6 +258,5 @@ Init_Comparable(void)</div><div class='ctx'>     rb_define_method(rb_mComparable, "&lt;", cmp_lt, 1);</div><div class='ctx'>     rb_define_method(rb_mComparable, "&lt;=", cmp_le, 1);</div><div class='ctx'>     rb_define_method(rb_mComparable, "between?", cmp_between, 2);</div><div class='del'>-</div><div class='del'>-    cmp = rb_intern("&lt;=&gt;");</div><div class='add'>+    rb_define_method(rb_mComparable, "clamp", cmp_clamp, 2);</div><div class='ctx'> }</div><div class='head'>diff --git a/compile.c b/compile.c<br/>index 218afcfcd2..dac26c6ce0 100644<br/>--- a/<a href='/ruby.git/tree/compile.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>compile.c</a><br/>+++ b/<a href='/ruby.git/tree/compile.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>compile.c</a></div><div class='hunk'>@@ -10,6 +10,8 @@</div><div class='ctx'> **********************************************************************/</div><div class='ctx'> </div><div class='ctx'> #include "internal.h"</div><div class='add'>+#include "ruby/re.h"</div><div class='add'>+#include "encindex.h"</div><div class='ctx'> #include &lt;math.h&gt;</div><div class='ctx'> </div><div class='ctx'> #define USE_INSN_STACK_INCREASE 1</div><div class='hunk'>@@ -17,11 +19,16 @@</div><div class='ctx'> #include "iseq.h"</div><div class='ctx'> #include "insns.inc"</div><div class='ctx'> #include "insns_info.inc"</div><div class='add'>+#include "id_table.h"</div><div class='add'>+#include "gc.h"</div><div class='ctx'> </div><div class='ctx'> #ifdef HAVE_DLADDR</div><div class='ctx'> # include &lt;dlfcn.h&gt;</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='add'>+#undef RUBY_UNTYPED_DATA_WARNING</div><div class='add'>+#define RUBY_UNTYPED_DATA_WARNING 0</div><div class='add'>+</div><div class='ctx'> #define FIXNUM_INC(n, i) ((n)+(INT2FIX(i)&amp;~FIXNUM_FLAG))</div><div class='ctx'> #define FIXNUM_OR(n, i) ((n)|INT2FIX(i))</div><div class='ctx'> </div><div class='hunk'>@@ -41,13 +48,22 @@ typedef struct iseq_link_anchor {</div><div class='ctx'>     LINK_ELEMENT *last;</div><div class='ctx'> } LINK_ANCHOR;</div><div class='ctx'> </div><div class='add'>+typedef enum {</div><div class='add'>+    LABEL_RESCUE_NONE,</div><div class='add'>+    LABEL_RESCUE_BEG,</div><div class='add'>+    LABEL_RESCUE_END,</div><div class='add'>+    LABEL_RESCUE_TYPE_MAX</div><div class='add'>+} LABEL_RESCUE_TYPE;</div><div class='add'>+</div><div class='ctx'> typedef struct iseq_label_data {</div><div class='ctx'>     LINK_ELEMENT link;</div><div class='ctx'>     int label_no;</div><div class='ctx'>     int position;</div><div class='ctx'>     int sc_state;</div><div class='del'>-    int set;</div><div class='ctx'>     int sp;</div><div class='add'>+    int refcnt;</div><div class='add'>+    unsigned int set: 1;</div><div class='add'>+    unsigned int rescued: 2;</div><div class='ctx'> } LABEL;</div><div class='ctx'> </div><div class='ctx'> typedef struct iseq_insn_data {</div><div class='hunk'>@@ -97,7 +113,7 @@ struct iseq_compile_data_ensure_node_stack {</div><div class='ctx'> #if CPDEBUG &gt;= 0</div><div class='ctx'> #define compile_debug CPDEBUG</div><div class='ctx'> #else</div><div class='del'>-#define compile_debug iseq-&gt;compile_data-&gt;option-&gt;debug_level</div><div class='add'>+#define compile_debug ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;debug_level</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='ctx'> #if CPDEBUG</div><div class='hunk'>@@ -156,6 +172,7 @@ r_value(VALUE value)</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='ctx'> #if CPDEBUG &gt; 1 || CPDEBUG &lt; 0</div><div class='add'>+#define printf ruby_debug_printf</div><div class='ctx'> #define debugs if (compile_debug_print_indent(1)) ruby_debug_printf</div><div class='ctx'> #define debug_compile(msg, v) ((void)(compile_debug_print_indent(1) &amp;&amp; fputs((msg), stderr)), (v))</div><div class='ctx'> #else</div><div class='hunk'>@@ -163,21 +180,19 @@ r_value(VALUE value)</div><div class='ctx'> #define debug_compile(msg, v) (v)</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='add'>+#define LVAR_ERRINFO (1)</div><div class='ctx'> </div><div class='ctx'> /* create new label */</div><div class='ctx'> #define NEW_LABEL(l) new_label_body(iseq, (l))</div><div class='ctx'> </div><div class='del'>-#define iseq_path(iseq) \</div><div class='del'>-  (((rb_iseq_t*)DATA_PTR(iseq))-&gt;location.path)</div><div class='add'>+#define iseq_path(iseq) ((iseq)-&gt;body-&gt;location.path)</div><div class='add'>+#define iseq_absolute_path(iseq) ((iseq)-&gt;body-&gt;location.absolute_path)</div><div class='ctx'> </div><div class='del'>-#define iseq_absolute_path(iseq) \</div><div class='del'>-  (((rb_iseq_t*)DATA_PTR(iseq))-&gt;location.absolute_path)</div><div class='del'>-</div><div class='del'>-#define NEW_ISEQVAL(node, name, type, line_no)       \</div><div class='add'>+#define NEW_ISEQ(node, name, type, line_no) \</div><div class='ctx'>   new_child_iseq(iseq, (node), rb_fstring(name), 0, (type), (line_no))</div><div class='ctx'> </div><div class='del'>-#define NEW_CHILD_ISEQVAL(node, name, type, line_no)       \</div><div class='del'>-  new_child_iseq(iseq, (node), rb_fstring(name), iseq-&gt;self, (type), (line_no))</div><div class='add'>+#define NEW_CHILD_ISEQ(node, name, type, line_no) \</div><div class='add'>+  new_child_iseq(iseq, (node), rb_fstring(name), iseq, (type), (line_no))</div><div class='ctx'> </div><div class='ctx'> /* add instructions */</div><div class='ctx'> #define ADD_SEQ(seq1, seq2) \</div><div class='hunk'>@@ -187,13 +202,24 @@ r_value(VALUE value)</div><div class='ctx'> #define ADD_INSN(seq, line, insn) \</div><div class='ctx'>   ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0))</div><div class='ctx'> </div><div class='add'>+/* insert an instruction before prev */</div><div class='add'>+#define INSERT_BEFORE_INSN(prev, line, insn) \</div><div class='add'>+  INSERT_ELEM_PREV(&amp;(prev)-&gt;link, (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0))</div><div class='add'>+</div><div class='ctx'> /* add an instruction with some operands (1, 2, 3, 5) */</div><div class='ctx'> #define ADD_INSN1(seq, line, insn, op1) \</div><div class='ctx'>   ADD_ELEM((seq), (LINK_ELEMENT *) \</div><div class='ctx'>            new_insn_body(iseq, (line), BIN(insn), 1, (VALUE)(op1)))</div><div class='ctx'> </div><div class='add'>+/* insert an instruction with some operands (1, 2, 3, 5) before prev */</div><div class='add'>+#define INSERT_BEFORE_INSN1(prev, line, insn, op1) \</div><div class='add'>+  INSERT_ELEM_PREV(&amp;(prev)-&gt;link, (LINK_ELEMENT *) \</div><div class='add'>+           new_insn_body(iseq, (line), BIN(insn), 1, (VALUE)(op1)))</div><div class='add'>+</div><div class='add'>+#define LABEL_REF(label) ((label)-&gt;refcnt++)</div><div class='add'>+</div><div class='ctx'> /* add an instruction with label operand (alias of ADD_INSN1) */</div><div class='del'>-#define ADD_INSNL(seq, line, insn, label) ADD_INSN1(seq, line, insn, label)</div><div class='add'>+#define ADD_INSNL(seq, line, insn, label) (ADD_INSN1(seq, line, insn, label), LABEL_REF(label))</div><div class='ctx'> </div><div class='ctx'> #define ADD_INSN2(seq, line, insn, op1, op2) \</div><div class='ctx'>   ADD_ELEM((seq), (LINK_ELEMENT *) \</div><div class='hunk'>@@ -205,39 +231,50 @@ r_value(VALUE value)</div><div class='ctx'> </div><div class='ctx'> /* Specific Insn factory */</div><div class='ctx'> #define ADD_SEND(seq, line, id, argc) \</div><div class='del'>-  ADD_SEND_R((seq), (line), (id), (argc), (VALUE)Qfalse, (VALUE)INT2FIX(0), NULL)</div><div class='add'>+  ADD_SEND_R((seq), (line), (id), (argc), NULL, (VALUE)INT2FIX(0), NULL)</div><div class='ctx'> </div><div class='ctx'> #define ADD_SEND_WITH_FLAG(seq, line, id, argc, flag) \</div><div class='del'>-  ADD_SEND_R((seq), (line), (id), (argc), (VALUE)Qfalse, (VALUE)(flag), NULL)</div><div class='add'>+  ADD_SEND_R((seq), (line), (id), (argc), NULL, (VALUE)(flag), NULL)</div><div class='ctx'> </div><div class='ctx'> #define ADD_SEND_WITH_BLOCK(seq, line, id, argc, block) \</div><div class='del'>-  ADD_SEND_R((seq), (line), (id), (argc), (VALUE)(block), (VALUE)INT2FIX(0), NULL)</div><div class='add'>+  ADD_SEND_R((seq), (line), (id), (argc), (block), (VALUE)INT2FIX(0), NULL)</div><div class='ctx'> </div><div class='ctx'> #define ADD_CALL_RECEIVER(seq, line) \</div><div class='ctx'>   ADD_INSN((seq), (line), putself)</div><div class='ctx'> </div><div class='ctx'> #define ADD_CALL(seq, line, id, argc) \</div><div class='del'>-  ADD_SEND_R((seq), (line), (id), (argc), (VALUE)Qfalse, (VALUE)INT2FIX(VM_CALL_FCALL), NULL)</div><div class='add'>+  ADD_SEND_R((seq), (line), (id), (argc), NULL, (VALUE)INT2FIX(VM_CALL_FCALL), NULL)</div><div class='ctx'> </div><div class='ctx'> #define ADD_CALL_WITH_BLOCK(seq, line, id, argc, block) \</div><div class='ctx'>   ADD_SEND_R((seq), (line), (id), (argc), (block), (VALUE)INT2FIX(VM_CALL_FCALL), NULL)</div><div class='ctx'> </div><div class='ctx'> #define ADD_SEND_R(seq, line, id, argc, block, flag, keywords) \</div><div class='del'>-  ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_send(iseq, (line), (id), (VALUE)(argc), (VALUE)(block), (VALUE)(flag), (keywords)))</div><div class='add'>+  ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_send(iseq, (line), (id), (VALUE)(argc), (block), (VALUE)(flag), (keywords)))</div><div class='ctx'> </div><div class='ctx'> #define ADD_TRACE(seq, line, event) \</div><div class='ctx'>   do { \</div><div class='del'>-      if ((event) == RUBY_EVENT_LINE &amp;&amp; iseq-&gt;coverage &amp;&amp; \</div><div class='del'>-	  (line) != iseq-&gt;compile_data-&gt;last_coverable_line) { \</div><div class='del'>-	  RARRAY_ASET(iseq-&gt;coverage, (line) - 1, INT2FIX(0)); \</div><div class='del'>-	  iseq-&gt;compile_data-&gt;last_coverable_line = (line); \</div><div class='add'>+      if ((event) == RUBY_EVENT_LINE &amp;&amp; ISEQ_COVERAGE(iseq) &amp;&amp; \</div><div class='add'>+	  (line) &gt; 0 &amp;&amp; \</div><div class='add'>+	  (line) != ISEQ_COMPILE_DATA(iseq)-&gt;last_coverable_line) { \</div><div class='add'>+	  RARRAY_ASET(ISEQ_COVERAGE(iseq), (line) - 1, INT2FIX(0)); \</div><div class='add'>+	  ISEQ_COMPILE_DATA(iseq)-&gt;last_coverable_line = (line); \</div><div class='ctx'> 	  ADD_INSN1((seq), (line), trace, INT2FIX(RUBY_EVENT_COVERAGE)); \</div><div class='ctx'>       } \</div><div class='del'>-      if (iseq-&gt;compile_data-&gt;option-&gt;trace_instruction) { \</div><div class='add'>+      if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;trace_instruction) { \</div><div class='ctx'> 	  ADD_INSN1((seq), (line), trace, INT2FIX(event)); \</div><div class='ctx'>       } \</div><div class='ctx'>   } while (0)</div><div class='ctx'> </div><div class='add'>+#define ADD_GETLOCAL(seq, line, idx, level) \</div><div class='add'>+  do { \</div><div class='add'>+      ADD_INSN2((seq), (line), getlocal, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level)); \</div><div class='add'>+  } while (0)</div><div class='add'>+</div><div class='add'>+#define ADD_SETLOCAL(seq, line, idx, level) \</div><div class='add'>+  do { \</div><div class='add'>+      ADD_INSN2((seq), (line), setlocal, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level)); \</div><div class='add'>+  } while (0)</div><div class='add'>+</div><div class='ctx'> /* add label */</div><div class='ctx'> #define ADD_LABEL(seq, label) \</div><div class='ctx'>   ADD_ELEM((seq), (LINK_ELEMENT *) (label))</div><div class='hunk'>@@ -251,11 +288,15 @@ r_value(VALUE value)</div><div class='ctx'> #define ADD_ADJUST_RESTORE(seq, label) \</div><div class='ctx'>   ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), -1))</div><div class='ctx'> </div><div class='del'>-#define ADD_CATCH_ENTRY(type, ls, le, iseqv, lc)		\</div><div class='del'>-    (rb_ary_push(iseq-&gt;compile_data-&gt;catch_table_ary,		\</div><div class='del'>-		 rb_ary_new3(5, (type),				\</div><div class='del'>-			     (VALUE)(ls) | 1, (VALUE)(le) | 1,	\</div><div class='del'>-			     (VALUE)(iseqv), (VALUE)(lc) | 1)))</div><div class='add'>+#define ADD_CATCH_ENTRY(type, ls, le, iseqv, lc) do {				\</div><div class='add'>+    VALUE _e = rb_ary_new3(5, (type),						\</div><div class='add'>+			   (VALUE)(ls) | 1, (VALUE)(le) | 1,			\</div><div class='add'>+			   (VALUE)(iseqv), (VALUE)(lc) | 1);			\</div><div class='add'>+    if (ls) LABEL_REF(ls);							\</div><div class='add'>+    if (le) LABEL_REF(le);							\</div><div class='add'>+    if (lc) LABEL_REF(lc);							\</div><div class='add'>+    rb_ary_push(ISEQ_COMPILE_DATA(iseq)-&gt;catch_table_ary, freeze_hide_obj(_e));	\</div><div class='add'>+} while (0)</div><div class='ctx'> </div><div class='ctx'> /* compile node */</div><div class='ctx'> #define COMPILE(anchor, desc, node) \</div><div class='hunk'>@@ -283,21 +324,78 @@ r_value(VALUE value)</div><div class='ctx'> #define INSN_OF(insn) \</div><div class='ctx'>   (((INSN*)(insn))-&gt;insn_id)</div><div class='ctx'> </div><div class='add'>+#define IS_INSN(link) ((link)-&gt;type == ISEQ_ELEMENT_INSN)</div><div class='add'>+#define IS_LABEL(link) ((link)-&gt;type == ISEQ_ELEMENT_LABEL)</div><div class='add'>+#define IS_ADJUST(link) ((link)-&gt;type == ISEQ_ELEMENT_ADJUST)</div><div class='add'>+#define IS_INSN_ID(iobj, insn) (INSN_OF(iobj) == BIN(insn))</div><div class='add'>+</div><div class='ctx'> /* error */</div><div class='del'>-#define COMPILE_ERROR(strs)                        \</div><div class='del'>-{                                                  \</div><div class='del'>-  VALUE tmp = GET_THREAD()-&gt;errinfo;               \</div><div class='del'>-  if (compile_debug) rb_compile_bug strs;          \</div><div class='del'>-  GET_THREAD()-&gt;errinfo = iseq-&gt;compile_data-&gt;err_info;  \</div><div class='del'>-  rb_compile_error strs;                           \</div><div class='del'>-  RB_OBJ_WRITE(iseq-&gt;self, &amp;iseq-&gt;compile_data-&gt;err_info, GET_THREAD()-&gt;errinfo); \</div><div class='del'>-  GET_THREAD()-&gt;errinfo = tmp;                     \</div><div class='del'>-  ret = 0;                                         \</div><div class='del'>-  break;                                           \</div><div class='add'>+typedef void (*compile_error_func)(rb_iseq_t *, int, const char *, ...);</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+append_compile_error(rb_iseq_t *iseq, int line, const char *fmt, ...)</div><div class='add'>+{</div><div class='add'>+    VALUE err_info = ISEQ_COMPILE_DATA(iseq)-&gt;err_info;</div><div class='add'>+    VALUE file = iseq-&gt;body-&gt;location.path;</div><div class='add'>+    VALUE err = err_info;</div><div class='add'>+    va_list args;</div><div class='add'>+</div><div class='add'>+    va_start(args, fmt);</div><div class='add'>+    err = rb_syntax_error_append(err, file, line, -1, NULL, fmt, args);</div><div class='add'>+    va_end(args);</div><div class='add'>+    if (NIL_P(err_info)) {</div><div class='add'>+	RB_OBJ_WRITE(iseq, &amp;ISEQ_COMPILE_DATA(iseq)-&gt;err_info, err);</div><div class='add'>+	rb_set_errinfo(err);</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+compile_bug(rb_iseq_t *iseq, int line, const char *fmt, ...)</div><div class='add'>+{</div><div class='add'>+    va_list args;</div><div class='add'>+    va_start(args, fmt);</div><div class='add'>+    rb_report_bug_valist(iseq-&gt;body-&gt;location.path, line, fmt, args);</div><div class='add'>+    va_end(args);</div><div class='add'>+    abort();</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-#define ERROR_ARGS ruby_sourcefile, nd_line(node),</div><div class='add'>+NOINLINE(static compile_error_func prepare_compile_error(rb_iseq_t *iseq));</div><div class='add'>+</div><div class='add'>+static compile_error_func</div><div class='add'>+prepare_compile_error(rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    if (compile_debug) return &amp;compile_bug;</div><div class='add'>+    return &amp;append_compile_error;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+#define COMPILE_ERROR prepare_compile_error(iseq)</div><div class='add'>+</div><div class='add'>+#define ERROR_ARGS_AT(n) iseq, nd_line(n),</div><div class='add'>+#define ERROR_ARGS ERROR_ARGS_AT(node)</div><div class='add'>+</div><div class='add'>+#define EXPECT_NODE(prefix, node, ndtype) \</div><div class='add'>+do { \</div><div class='add'>+    NODE *error_node = (node); \</div><div class='add'>+    enum node_type error_type = nd_type(error_node); \</div><div class='add'>+    if (error_type != (ndtype)) { \</div><div class='add'>+	compile_bug(ERROR_ARGS_AT(error_node) \</div><div class='add'>+		    prefix ": " #ndtype " is expected, but %s", \</div><div class='add'>+		    ruby_node_name(error_type)); \</div><div class='add'>+    } \</div><div class='add'>+} while (0)</div><div class='add'>+</div><div class='add'>+#define EXPECT_NODE_NONULL(prefix, parent, ndtype) \</div><div class='add'>+do { \</div><div class='add'>+    compile_bug(ERROR_ARGS_AT(parent) \</div><div class='add'>+		prefix ": must be " #ndtype ", but 0"); \</div><div class='add'>+} while (0)</div><div class='ctx'> </div><div class='add'>+#define UNKNOWN_NODE(prefix, node) \</div><div class='add'>+do { \</div><div class='add'>+    NODE *error_node = (node); \</div><div class='add'>+    compile_bug(ERROR_ARGS_AT(error_node) prefix ": unknown node (%s)", \</div><div class='add'>+		ruby_node_name(nd_type(error_node))); \</div><div class='add'>+} while (0)</div><div class='ctx'> </div><div class='ctx'> #define COMPILE_OK 1</div><div class='ctx'> #define COMPILE_NG 0</div><div class='hunk'>@@ -310,7 +408,13 @@ r_value(VALUE value)</div><div class='ctx'> #define INIT_ANCHOR(name) \</div><div class='ctx'>   (name##_body__.last = &amp;name##_body__.anchor, name = &amp;name##_body__)</div><div class='ctx'> </div><div class='del'>-#define hide_obj(obj) do {OBJ_FREEZE(obj); RBASIC_CLEAR_CLASS(obj);} while (0)</div><div class='add'>+static inline VALUE</div><div class='add'>+freeze_hide_obj(VALUE obj)</div><div class='add'>+{</div><div class='add'>+    OBJ_FREEZE(obj);</div><div class='add'>+    RBASIC_CLEAR_CLASS(obj);</div><div class='add'>+    return obj;</div><div class='add'>+}</div><div class='ctx'> </div><div class='ctx'> #include "optinsn.inc"</div><div class='ctx'> #if OPT_INSTRUCTIONS_UNIFICATION</div><div class='hunk'>@@ -327,7 +431,7 @@ r_value(VALUE value)</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='ctx'> #if CPDEBUG</div><div class='del'>-#define gl_node_level iseq-&gt;compile_data-&gt;node_level</div><div class='add'>+#define gl_node_level ISEQ_COMPILE_DATA(iseq)-&gt;node_level</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='ctx'> static void dump_disasm_list(LINK_ELEMENT *elem);</div><div class='hunk'>@@ -416,11 +520,11 @@ APPEND_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor, LINK_ELEMENT *before, LINK_ELE</div><div class='ctx'> }</div><div class='ctx'> #if CPDEBUG &lt; 0</div><div class='ctx'> #define ADD_ELEM(anchor, elem) ADD_ELEM(iseq, (anchor), (elem))</div><div class='del'>-#define APPEND_ELEM(anchor, before, elem) ADD_ELEM(iseq, (anchor), (before), (elem))</div><div class='add'>+#define APPEND_ELEM(anchor, before, elem) APPEND_ELEM(iseq, (anchor), (before), (elem))</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='del'>-iseq_add_mark_object(rb_iseq_t *iseq, VALUE v)</div><div class='add'>+iseq_add_mark_object(const rb_iseq_t *iseq, VALUE v)</div><div class='ctx'> {</div><div class='ctx'>     if (!SPECIAL_CONST_P(v)) {</div><div class='ctx'> 	rb_iseq_add_mark_object(iseq, v);</div><div class='hunk'>@@ -428,13 +532,13 @@ iseq_add_mark_object(rb_iseq_t *iseq, VALUE v)</div><div class='ctx'>     return COMPILE_OK;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-#define ruby_sourcefile		RSTRING_PTR(iseq-&gt;location.path)</div><div class='add'>+#define ruby_sourcefile		RSTRING_PTR(iseq-&gt;body-&gt;location.path)</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='del'>-iseq_add_mark_object_compile_time(rb_iseq_t *iseq, VALUE v)</div><div class='add'>+iseq_add_mark_object_compile_time(const rb_iseq_t *iseq, VALUE v)</div><div class='ctx'> {</div><div class='ctx'>     if (!SPECIAL_CONST_P(v)) {</div><div class='del'>-	rb_ary_push(iseq-&gt;compile_data-&gt;mark_ary, v);</div><div class='add'>+	rb_ary_push(ISEQ_COMPILE_DATA(iseq)-&gt;mark_ary, v);</div><div class='ctx'>     }</div><div class='ctx'>     return COMPILE_OK;</div><div class='ctx'> }</div><div class='hunk'>@@ -446,11 +550,9 @@ validate_label(st_data_t name, st_data_t label, st_data_t arg)</div><div class='ctx'>     LABEL *lobj = (LABEL *)label;</div><div class='ctx'>     if (!lobj-&gt;link.next) {</div><div class='ctx'> 	do {</div><div class='del'>-	    int ret;</div><div class='del'>-	    COMPILE_ERROR((ruby_sourcefile, lobj-&gt;position,</div><div class='del'>-			   "%"PRIsVALUE": undefined label",</div><div class='del'>-			   rb_id2str((ID)name)));</div><div class='del'>-	    if (ret) break;</div><div class='add'>+	    COMPILE_ERROR(iseq, lobj-&gt;position,</div><div class='add'>+			  "%"PRIsVALUE": undefined label",</div><div class='add'>+			  rb_id2str((ID)name));</div><div class='ctx'> 	} while (0);</div><div class='ctx'>     }</div><div class='ctx'>     return ST_CONTINUE;</div><div class='hunk'>@@ -460,18 +562,17 @@ static void</div><div class='ctx'> validate_labels(rb_iseq_t *iseq, st_table *labels_table)</div><div class='ctx'> {</div><div class='ctx'>     st_foreach(labels_table, validate_label, (st_data_t)iseq);</div><div class='del'>-    if (!NIL_P(iseq-&gt;compile_data-&gt;err_info)) {</div><div class='del'>-	rb_exc_raise(iseq-&gt;compile_data-&gt;err_info);</div><div class='add'>+    st_free_table(labels_table);</div><div class='add'>+    if (!NIL_P(ISEQ_COMPILE_DATA(iseq)-&gt;err_info)) {</div><div class='add'>+	rb_exc_raise(ISEQ_COMPILE_DATA(iseq)-&gt;err_info);</div><div class='ctx'>     }</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> VALUE</div><div class='del'>-rb_iseq_compile_node(VALUE self, NODE *node)</div><div class='add'>+rb_iseq_compile_node(rb_iseq_t *iseq, NODE *node)</div><div class='ctx'> {</div><div class='ctx'>     DECL_ANCHOR(ret);</div><div class='del'>-    rb_iseq_t *iseq;</div><div class='ctx'>     INIT_ANCHOR(ret);</div><div class='del'>-    GetISeqPtr(self, iseq);</div><div class='ctx'> </div><div class='ctx'>     if (node == 0) {</div><div class='ctx'> 	COMPILE(ret, "nil", node);</div><div class='hunk'>@@ -482,13 +583,16 @@ rb_iseq_compile_node(VALUE self, NODE *node)</div><div class='ctx'> 	iseq_set_local_table(iseq, node-&gt;nd_tbl);</div><div class='ctx'> 	iseq_set_arguments(iseq, ret, node-&gt;nd_args);</div><div class='ctx'> </div><div class='del'>-	switch (iseq-&gt;type) {</div><div class='add'>+	switch (iseq-&gt;body-&gt;type) {</div><div class='ctx'> 	  case ISEQ_TYPE_BLOCK:</div><div class='ctx'> 	    {</div><div class='del'>-		LABEL *start = iseq-&gt;compile_data-&gt;start_label = NEW_LABEL(0);</div><div class='del'>-		LABEL *end = iseq-&gt;compile_data-&gt;end_label = NEW_LABEL(0);</div><div class='add'>+		LABEL *start = ISEQ_COMPILE_DATA(iseq)-&gt;start_label = NEW_LABEL(0);</div><div class='add'>+		LABEL *end = ISEQ_COMPILE_DATA(iseq)-&gt;end_label = NEW_LABEL(0);</div><div class='add'>+</div><div class='add'>+		start-&gt;rescued = LABEL_RESCUE_BEG;</div><div class='add'>+		end-&gt;rescued = LABEL_RESCUE_END;</div><div class='ctx'> </div><div class='del'>-		ADD_TRACE(ret, FIX2INT(iseq-&gt;location.first_lineno), RUBY_EVENT_B_CALL);</div><div class='add'>+		ADD_TRACE(ret, FIX2INT(iseq-&gt;body-&gt;location.first_lineno), RUBY_EVENT_B_CALL);</div><div class='ctx'> 		ADD_LABEL(ret, start);</div><div class='ctx'> 		COMPILE(ret, "block body", node-&gt;nd_body);</div><div class='ctx'> 		ADD_LABEL(ret, end);</div><div class='hunk'>@@ -501,14 +605,14 @@ rb_iseq_compile_node(VALUE self, NODE *node)</div><div class='ctx'> 	    }</div><div class='ctx'> 	  case ISEQ_TYPE_CLASS:</div><div class='ctx'> 	    {</div><div class='del'>-		ADD_TRACE(ret, FIX2INT(iseq-&gt;location.first_lineno), RUBY_EVENT_CLASS);</div><div class='add'>+		ADD_TRACE(ret, FIX2INT(iseq-&gt;body-&gt;location.first_lineno), RUBY_EVENT_CLASS);</div><div class='ctx'> 		COMPILE(ret, "scoped node", node-&gt;nd_body);</div><div class='ctx'> 		ADD_TRACE(ret, nd_line(node), RUBY_EVENT_END);</div><div class='ctx'> 		break;</div><div class='ctx'> 	    }</div><div class='ctx'> 	  case ISEQ_TYPE_METHOD:</div><div class='ctx'> 	    {</div><div class='del'>-		ADD_TRACE(ret, FIX2INT(iseq-&gt;location.first_lineno), RUBY_EVENT_CALL);</div><div class='add'>+		ADD_TRACE(ret, FIX2INT(iseq-&gt;body-&gt;location.first_lineno), RUBY_EVENT_CALL);</div><div class='ctx'> 		COMPILE(ret, "scoped node", node-&gt;nd_body);</div><div class='ctx'> 		ADD_TRACE(ret, nd_line(node), RUBY_EVENT_RETURN);</div><div class='ctx'> 		break;</div><div class='hunk'>@@ -519,21 +623,22 @@ rb_iseq_compile_node(VALUE self, NODE *node)</div><div class='ctx'> 	  }</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='del'>-    else if (nd_type(node) == NODE_IFUNC) {</div><div class='add'>+    else if (RB_TYPE_P((VALUE)node, T_IMEMO)) {</div><div class='add'>+	const struct vm_ifunc *ifunc = (struct vm_ifunc *)node;</div><div class='ctx'> 	/* user callback */</div><div class='del'>-	(*node-&gt;nd_cfnc)(iseq, ret, node-&gt;nd_tval);</div><div class='add'>+	(*ifunc-&gt;func)(iseq, ret, ifunc-&gt;data);</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-	switch (iseq-&gt;type) {</div><div class='add'>+	switch (iseq-&gt;body-&gt;type) {</div><div class='ctx'> 	  case ISEQ_TYPE_METHOD:</div><div class='ctx'> 	  case ISEQ_TYPE_CLASS:</div><div class='ctx'> 	  case ISEQ_TYPE_BLOCK:</div><div class='ctx'> 	  case ISEQ_TYPE_EVAL:</div><div class='ctx'> 	  case ISEQ_TYPE_MAIN:</div><div class='ctx'> 	  case ISEQ_TYPE_TOP:</div><div class='del'>-	    rb_compile_error(ERROR_ARGS "compile/should not be reached: %s:%d",</div><div class='del'>-			     __FILE__, __LINE__);</div><div class='del'>-	    break;</div><div class='add'>+	    COMPILE_ERROR(ERROR_ARGS "compile/should not be reached: %s:%d",</div><div class='add'>+			  __FILE__, __LINE__);</div><div class='add'>+	    return COMPILE_NG;</div><div class='ctx'> 	  case ISEQ_TYPE_RESCUE:</div><div class='ctx'> 	    iseq_set_exception_local_table(iseq);</div><div class='ctx'> 	    COMPILE(ret, "rescue", node);</div><div class='hunk'>@@ -543,25 +648,27 @@ rb_iseq_compile_node(VALUE self, NODE *node)</div><div class='ctx'> 	    COMPILE_POPED(ret, "ensure", node);</div><div class='ctx'> 	    break;</div><div class='ctx'> 	  case ISEQ_TYPE_DEFINED_GUARD:</div><div class='del'>-	    iseq_set_local_table(iseq, 0);</div><div class='add'>+	    iseq_set_exception_local_table(iseq);</div><div class='ctx'> 	    COMPILE(ret, "defined guard", node);</div><div class='ctx'> 	    break;</div><div class='ctx'> 	  default:</div><div class='del'>-	    rb_bug("unknown scope");</div><div class='add'>+	    compile_bug(ERROR_ARGS "unknown scope");</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    if (iseq-&gt;type == ISEQ_TYPE_RESCUE || iseq-&gt;type == ISEQ_TYPE_ENSURE) {</div><div class='del'>-	ADD_INSN2(ret, 0, getlocal, INT2FIX(2), INT2FIX(0));</div><div class='add'>+    if (iseq-&gt;body-&gt;type == ISEQ_TYPE_RESCUE || iseq-&gt;body-&gt;type == ISEQ_TYPE_ENSURE) {</div><div class='add'>+	ADD_GETLOCAL(ret, 0, LVAR_ERRINFO, 0);</div><div class='ctx'> 	ADD_INSN1(ret, 0, throw, INT2FIX(0) /* continue throw */ );</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-	ADD_INSN(ret, iseq-&gt;compile_data-&gt;last_line, leave);</div><div class='add'>+	ADD_INSN(ret, ISEQ_COMPILE_DATA(iseq)-&gt;last_line, leave);</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'> #if SUPPORT_JOKE</div><div class='del'>-    if (iseq-&gt;compile_data-&gt;labels_table) {</div><div class='del'>-	validate_labels(iseq, iseq-&gt;compile_data-&gt;labels_table);</div><div class='add'>+    if (ISEQ_COMPILE_DATA(iseq)-&gt;labels_table) {</div><div class='add'>+	st_table *labels_table = ISEQ_COMPILE_DATA(iseq)-&gt;labels_table;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;labels_table = 0;</div><div class='add'>+	validate_labels(iseq, labels_table);</div><div class='ctx'>     }</div><div class='ctx'> #endif</div><div class='ctx'>     return iseq_setup(iseq, ret);</div><div class='hunk'>@@ -573,11 +680,12 @@ rb_iseq_translate_threaded_code(rb_iseq_t *iseq)</div><div class='ctx'> #if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE</div><div class='ctx'>     const void * const *table = rb_vm_get_insns_address_table();</div><div class='ctx'>     unsigned int i;</div><div class='add'>+    VALUE *encoded = (VALUE *)iseq-&gt;body-&gt;iseq_encoded;</div><div class='ctx'> </div><div class='del'>-    for (i = 0; i &lt; iseq-&gt;iseq_size; /* */ ) {</div><div class='del'>-	int insn = (int)iseq-&gt;iseq_encoded[i];</div><div class='add'>+    for (i = 0; i &lt; iseq-&gt;body-&gt;iseq_size; /* */ ) {</div><div class='add'>+	int insn = (int)iseq-&gt;body-&gt;iseq_encoded[i];</div><div class='ctx'> 	int len = insn_len(insn);</div><div class='del'>-	iseq-&gt;iseq_encoded[i] = (VALUE)table[insn];</div><div class='add'>+	encoded[i] = (VALUE)table[insn];</div><div class='ctx'> 	i += len;</div><div class='ctx'>     }</div><div class='ctx'> #endif</div><div class='hunk'>@@ -601,28 +709,28 @@ rb_vm_insn_addr2insn(const void *addr) /* cold path */</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='ctx'> VALUE *</div><div class='del'>-rb_iseq_original_iseq(rb_iseq_t *iseq) /* cold path */</div><div class='add'>+rb_iseq_original_iseq(const rb_iseq_t *iseq) /* cold path */</div><div class='ctx'> {</div><div class='del'>-    if (iseq-&gt;iseq) return iseq-&gt;iseq;</div><div class='del'>-</div><div class='del'>-    iseq-&gt;iseq = ALLOC_N(VALUE, iseq-&gt;iseq_size);</div><div class='add'>+    VALUE *original_code;</div><div class='ctx'> </div><div class='del'>-    MEMCPY(iseq-&gt;iseq, iseq-&gt;iseq_encoded, VALUE, iseq-&gt;iseq_size);</div><div class='add'>+    if (ISEQ_ORIGINAL_ISEQ(iseq)) return ISEQ_ORIGINAL_ISEQ(iseq);</div><div class='add'>+    original_code = ISEQ_ORIGINAL_ISEQ_ALLOC(iseq, iseq-&gt;body-&gt;iseq_size);</div><div class='add'>+    MEMCPY(original_code, iseq-&gt;body-&gt;iseq_encoded, VALUE, iseq-&gt;body-&gt;iseq_size);</div><div class='ctx'> </div><div class='ctx'> #if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE</div><div class='ctx'>     {</div><div class='ctx'> 	unsigned int i;</div><div class='ctx'> </div><div class='del'>-	for (i = 0; i &lt; iseq-&gt;iseq_size; /* */ ) {</div><div class='del'>-	    const void *addr = (const void *)iseq-&gt;iseq[i];</div><div class='add'>+	for (i = 0; i &lt; iseq-&gt;body-&gt;iseq_size; /* */ ) {</div><div class='add'>+	    const void *addr = (const void *)original_code[i];</div><div class='ctx'> 	    const int insn = rb_vm_insn_addr2insn(addr);</div><div class='ctx'> </div><div class='del'>-	    iseq-&gt;iseq[i] = insn;</div><div class='add'>+	    original_code[i] = insn;</div><div class='ctx'> 	    i += insn_len(insn);</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'> #endif</div><div class='del'>-    return iseq-&gt;iseq;</div><div class='add'>+    return original_code;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*********************************************/</div><div class='hunk'>@@ -632,7 +740,7 @@ rb_iseq_original_iseq(rb_iseq_t *iseq) /* cold path */</div><div class='ctx'> /*</div><div class='ctx'>  * On 32-bit SPARC, GCC by default generates SPARC V7 code that may require</div><div class='ctx'>  * 8-byte word alignment. On the other hand, Oracle Solaris Studio seems to</div><div class='del'>- * generate SPARCV8PLUS code with unaligned memory accesss instructions.</div><div class='add'>+ * generate SPARCV8PLUS code with unaligned memory access instructions.</div><div class='ctx'>  * That is why the STRICT_ALIGNMENT is defined only with GCC.</div><div class='ctx'>  */</div><div class='ctx'> #if defined(__sparc) &amp;&amp; SIZEOF_VOIDP == 4 &amp;&amp; defined(__GNUC__)</div><div class='hunk'>@@ -683,7 +791,7 @@ compile_data_alloc(rb_iseq_t *iseq, size_t size)</div><div class='ctx'> {</div><div class='ctx'>     void *ptr = 0;</div><div class='ctx'>     struct iseq_compile_data_storage *storage =</div><div class='del'>-	iseq-&gt;compile_data-&gt;storage_current;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;storage_current;</div><div class='ctx'> #ifdef STRICT_ALIGNMENT</div><div class='ctx'>     size_t padding = calc_padding((void *)&amp;storage-&gt;buff[storage-&gt;pos], size);</div><div class='ctx'> #else</div><div class='hunk'>@@ -700,7 +808,7 @@ compile_data_alloc(rb_iseq_t *iseq, size_t size)</div><div class='ctx'> 	}</div><div class='ctx'> 	storage-&gt;next = (void *)ALLOC_N(char, alloc_size +</div><div class='ctx'> 					SIZEOF_ISEQ_COMPILE_DATA_STORAGE);</div><div class='del'>-	storage = iseq-&gt;compile_data-&gt;storage_current = storage-&gt;next;</div><div class='add'>+	storage = ISEQ_COMPILE_DATA(iseq)-&gt;storage_current = storage-&gt;next;</div><div class='ctx'> 	storage-&gt;next = 0;</div><div class='ctx'> 	storage-&gt;pos = 0;</div><div class='ctx'> 	storage-&gt;size = alloc_size;</div><div class='hunk'>@@ -751,6 +859,21 @@ INSERT_ELEM_NEXT(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='add'>+ * elem1, elemX =&gt; elemX, elem2, elem1</div><div class='add'>+ */</div><div class='add'>+static void</div><div class='add'>+INSERT_ELEM_PREV(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)</div><div class='add'>+{</div><div class='add'>+    elem2-&gt;prev = elem1-&gt;prev;</div><div class='add'>+    elem2-&gt;next = elem1;</div><div class='add'>+    elem1-&gt;prev = elem2;</div><div class='add'>+    if (elem2-&gt;prev) {</div><div class='add'>+	elem2-&gt;prev-&gt;next = elem2;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+#if 0</div><div class='add'>+/*</div><div class='ctx'>  * elemX, elem1, elemY =&gt; elemX, elem2, elemY</div><div class='ctx'>  */</div><div class='ctx'> static void</div><div class='hunk'>@@ -765,6 +888,7 @@ REPLACE_ELEM(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)</div><div class='ctx'> 	elem1-&gt;next-&gt;prev = elem2;</div><div class='ctx'>     }</div><div class='ctx'> }</div><div class='add'>+#endif</div><div class='ctx'> </div><div class='ctx'> static void</div><div class='ctx'> REMOVE_ELEM(LINK_ELEMENT *elem)</div><div class='hunk'>@@ -782,6 +906,12 @@ FIRST_ELEMENT(LINK_ANCHOR *anchor)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static LINK_ELEMENT *</div><div class='add'>+LAST_ELEMENT(LINK_ANCHOR *anchor)</div><div class='add'>+{</div><div class='add'>+    return anchor-&gt;last;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static LINK_ELEMENT *</div><div class='ctx'> POP_ELEMENT(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor)</div><div class='ctx'> {</div><div class='ctx'>     LINK_ELEMENT *elem = anchor-&gt;last;</div><div class='hunk'>@@ -886,9 +1016,12 @@ new_label_body(rb_iseq_t *iseq, long line)</div><div class='ctx'>     labelobj-&gt;link.type = ISEQ_ELEMENT_LABEL;</div><div class='ctx'>     labelobj-&gt;link.next = 0;</div><div class='ctx'> </div><div class='del'>-    labelobj-&gt;label_no = iseq-&gt;compile_data-&gt;label_no++;</div><div class='add'>+    labelobj-&gt;label_no = ISEQ_COMPILE_DATA(iseq)-&gt;label_no++;</div><div class='ctx'>     labelobj-&gt;sc_state = 0;</div><div class='ctx'>     labelobj-&gt;sp = -1;</div><div class='add'>+    labelobj-&gt;refcnt = 0;</div><div class='add'>+    labelobj-&gt;set = 0;</div><div class='add'>+    labelobj-&gt;rescued = LABEL_RESCUE_NONE;</div><div class='ctx'>     return labelobj;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -900,6 +1033,7 @@ new_adjust_body(rb_iseq_t *iseq, LABEL *label, int line)</div><div class='ctx'>     adjust-&gt;link.next = 0;</div><div class='ctx'>     adjust-&gt;label = label;</div><div class='ctx'>     adjust-&gt;line_no = line;</div><div class='add'>+    if (label) LABEL_REF(label);</div><div class='ctx'>     return adjust;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -938,66 +1072,57 @@ new_insn_body(rb_iseq_t *iseq, int line_no, enum ruby_vminsn_type insn_id, int a</div><div class='ctx'>     return new_insn_core(iseq, line_no, insn_id, argc, operands);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-static rb_call_info_t *</div><div class='del'>-new_callinfo(rb_iseq_t *iseq, ID mid, int argc, VALUE block, unsigned int flag, rb_call_info_kw_arg_t *kw_arg)</div><div class='add'>+static struct rb_call_info *</div><div class='add'>+new_callinfo(rb_iseq_t *iseq, ID mid, int argc, unsigned int flag, struct rb_call_info_kw_arg *kw_arg, int has_blockiseq)</div><div class='ctx'> {</div><div class='del'>-    rb_call_info_t *ci = (rb_call_info_t *)compile_data_alloc(iseq, sizeof(rb_call_info_t));</div><div class='add'>+    size_t size = kw_arg != NULL ? sizeof(struct rb_call_info_with_kwarg) : sizeof(struct rb_call_info);</div><div class='add'>+    struct rb_call_info *ci = (struct rb_call_info *)compile_data_alloc(iseq, size);</div><div class='add'>+    struct rb_call_info_with_kwarg *ci_kw = (struct rb_call_info_with_kwarg *)ci;</div><div class='ctx'> </div><div class='ctx'>     ci-&gt;mid = mid;</div><div class='ctx'>     ci-&gt;flag = flag;</div><div class='ctx'>     ci-&gt;orig_argc = argc;</div><div class='del'>-    ci-&gt;argc = argc;</div><div class='del'>-    ci-&gt;kw_arg = kw_arg;</div><div class='ctx'> </div><div class='ctx'>     if (kw_arg) {</div><div class='del'>-	ci-&gt;argc += kw_arg-&gt;keyword_len;</div><div class='add'>+	ci-&gt;flag |= VM_CALL_KWARG;</div><div class='add'>+	ci_kw-&gt;kw_arg = kw_arg;</div><div class='ctx'> 	ci-&gt;orig_argc += kw_arg-&gt;keyword_len;</div><div class='del'>-    }</div><div class='del'>-</div><div class='del'>-    if (block) {</div><div class='del'>-	GetISeqPtr(block, ci-&gt;blockiseq);</div><div class='add'>+	iseq-&gt;body-&gt;ci_kw_size++;</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-	ci-&gt;blockiseq = 0;</div><div class='add'>+	iseq-&gt;body-&gt;ci_size++;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     if (!(ci-&gt;flag &amp; (VM_CALL_ARGS_SPLAT | VM_CALL_ARGS_BLOCKARG)) &amp;&amp;</div><div class='del'>-	ci-&gt;blockiseq == NULL &amp;&amp; ci-&gt;kw_arg == NULL) {</div><div class='add'>+	kw_arg == NULL &amp;&amp; !has_blockiseq) {</div><div class='ctx'> 	ci-&gt;flag |= VM_CALL_ARGS_SIMPLE;</div><div class='ctx'>     }</div><div class='del'>-</div><div class='del'>-    ci-&gt;method_state = 0;</div><div class='del'>-    ci-&gt;class_serial = 0;</div><div class='del'>-    ci-&gt;blockptr = 0;</div><div class='del'>-    ci-&gt;recv = Qundef;</div><div class='del'>-    ci-&gt;call = 0; /* TODO: should set default function? */</div><div class='del'>-</div><div class='del'>-    ci-&gt;aux.index = iseq-&gt;callinfo_size++;</div><div class='del'>-</div><div class='ctx'>     return ci;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static INSN *</div><div class='del'>-new_insn_send(rb_iseq_t *iseq, int line_no, ID id, VALUE argc, VALUE block, VALUE flag, rb_call_info_kw_arg_t *keywords)</div><div class='add'>+new_insn_send(rb_iseq_t *iseq, int line_no, ID id, VALUE argc, const rb_iseq_t *blockiseq, VALUE flag, struct rb_call_info_kw_arg *keywords)</div><div class='ctx'> {</div><div class='del'>-    VALUE *operands = (VALUE *)compile_data_alloc(iseq, sizeof(VALUE) * 1);</div><div class='del'>-    operands[0] = (VALUE)new_callinfo(iseq, id, FIX2INT(argc), block, FIX2INT(flag), keywords);</div><div class='del'>-    return new_insn_core(iseq, line_no, BIN(send), 1, operands);</div><div class='add'>+    VALUE *operands = (VALUE *)compile_data_alloc(iseq, sizeof(VALUE) * 3);</div><div class='add'>+    operands[0] = (VALUE)new_callinfo(iseq, id, FIX2INT(argc), FIX2INT(flag), keywords, blockiseq != NULL);</div><div class='add'>+    operands[1] = Qfalse; /* cache */</div><div class='add'>+    operands[2] = (VALUE)blockiseq;</div><div class='add'>+    return new_insn_core(iseq, line_no, BIN(send), 3, operands);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-static VALUE</div><div class='add'>+static rb_iseq_t *</div><div class='ctx'> new_child_iseq(rb_iseq_t *iseq, NODE *node,</div><div class='del'>-	       VALUE name, VALUE parent, enum iseq_type type, int line_no)</div><div class='add'>+	       VALUE name, const rb_iseq_t *parent, enum iseq_type type, int line_no)</div><div class='ctx'> {</div><div class='del'>-    VALUE ret;</div><div class='add'>+    rb_iseq_t *ret_iseq;</div><div class='ctx'> </div><div class='ctx'>     debugs("[new_child_iseq]&gt; ---------------------------------------\n");</div><div class='del'>-    ret = rb_iseq_new_with_opt(node, name,</div><div class='del'>-			       iseq_path(iseq-&gt;self), iseq_absolute_path(iseq-&gt;self),</div><div class='del'>-			       INT2FIX(line_no), parent, type, iseq-&gt;compile_data-&gt;option);</div><div class='add'>+    ret_iseq = rb_iseq_new_with_opt(node, name,</div><div class='add'>+				    iseq_path(iseq), iseq_absolute_path(iseq),</div><div class='add'>+				    INT2FIX(line_no), parent, type, ISEQ_COMPILE_DATA(iseq)-&gt;option);</div><div class='ctx'>     debugs("[new_child_iseq]&lt; ---------------------------------------\n");</div><div class='del'>-    iseq_add_mark_object(iseq, ret);</div><div class='del'>-    return ret;</div><div class='add'>+    iseq_add_mark_object(iseq, (VALUE)ret_iseq);</div><div class='add'>+    return ret_iseq;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='hunk'>@@ -1014,14 +1139,14 @@ iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'>     if (compile_debug &gt; 5)</div><div class='ctx'> 	dump_disasm_list(FIRST_ELEMENT(anchor));</div><div class='ctx'> </div><div class='del'>-    if (iseq-&gt;compile_data-&gt;option-&gt;instructions_unification) {</div><div class='add'>+    if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;instructions_unification) {</div><div class='ctx'> 	debugs("[compile step 3.2 (iseq_insns_unification)]\n");</div><div class='ctx'> 	iseq_insns_unification(iseq, anchor);</div><div class='ctx'> 	if (compile_debug &gt; 5)</div><div class='ctx'> 	    dump_disasm_list(FIRST_ELEMENT(anchor));</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    if (iseq-&gt;compile_data-&gt;option-&gt;stack_caching) {</div><div class='add'>+    if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;stack_caching) {</div><div class='ctx'> 	debugs("[compile step 3.3 (iseq_set_sequence_stackcaching)]\n");</div><div class='ctx'> 	iseq_set_sequence_stackcaching(iseq, anchor);</div><div class='ctx'> 	if (compile_debug &gt; 5)</div><div class='hunk'>@@ -1029,70 +1154,72 @@ iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     debugs("[compile step 4.1 (iseq_set_sequence)]\n");</div><div class='del'>-    iseq_set_sequence(iseq, anchor);</div><div class='add'>+    if (!iseq_set_sequence(iseq, anchor)) return COMPILE_NG;</div><div class='ctx'>     if (compile_debug &gt; 5)</div><div class='ctx'> 	dump_disasm_list(FIRST_ELEMENT(anchor));</div><div class='ctx'> </div><div class='ctx'>     debugs("[compile step 4.2 (iseq_set_exception_table)]\n");</div><div class='del'>-    iseq_set_exception_table(iseq);</div><div class='add'>+    if (!iseq_set_exception_table(iseq)) return COMPILE_NG;</div><div class='ctx'> </div><div class='ctx'>     debugs("[compile step 4.3 (set_optargs_table)] \n");</div><div class='del'>-    iseq_set_optargs_table(iseq);</div><div class='add'>+    if (!iseq_set_optargs_table(iseq)) return COMPILE_NG;</div><div class='ctx'> </div><div class='ctx'>     debugs("[compile step 5 (iseq_translate_threaded_code)] \n");</div><div class='del'>-    rb_iseq_translate_threaded_code(iseq);</div><div class='add'>+    if (!rb_iseq_translate_threaded_code(iseq)) return COMPILE_NG;</div><div class='ctx'> </div><div class='ctx'>     if (compile_debug &gt; 1) {</div><div class='del'>-	VALUE str = rb_iseq_disasm(iseq-&gt;self);</div><div class='add'>+	VALUE str = rb_iseq_disasm(iseq);</div><div class='ctx'> 	printf("%s\n", StringValueCStr(str));</div><div class='del'>-	fflush(stdout);</div><div class='ctx'>     }</div><div class='ctx'>     debugs("[compile step: finish]\n");</div><div class='ctx'> </div><div class='del'>-    return 0;</div><div class='add'>+    return COMPILE_OK;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='ctx'> iseq_set_exception_local_table(rb_iseq_t *iseq)</div><div class='ctx'> {</div><div class='add'>+    /* TODO: every id table is same -&gt; share it.</div><div class='add'>+     * Current problem is iseq_free().</div><div class='add'>+     */</div><div class='ctx'>     ID id_dollar_bang;</div><div class='add'>+    ID *ids = (ID *)ALLOC_N(ID, 1);</div><div class='ctx'> </div><div class='ctx'>     CONST_ID(id_dollar_bang, "#$!");</div><div class='del'>-    iseq-&gt;local_table = (ID *)ALLOC_N(ID, 1);</div><div class='del'>-    iseq-&gt;local_table_size = 1;</div><div class='del'>-    iseq-&gt;local_size = iseq-&gt;local_table_size + 1;</div><div class='del'>-    iseq-&gt;local_table[0] = id_dollar_bang;</div><div class='add'>+    iseq-&gt;body-&gt;local_table_size = 1;</div><div class='add'>+    ids[0] = id_dollar_bang;</div><div class='add'>+    iseq-&gt;body-&gt;local_table = ids;</div><div class='ctx'>     return COMPILE_OK;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='del'>-get_lvar_level(rb_iseq_t *iseq)</div><div class='add'>+get_lvar_level(const rb_iseq_t *iseq)</div><div class='ctx'> {</div><div class='ctx'>     int lev = 0;</div><div class='del'>-    while (iseq != iseq-&gt;local_iseq) {</div><div class='add'>+    while (iseq != iseq-&gt;body-&gt;local_iseq) {</div><div class='ctx'> 	lev++;</div><div class='del'>-	iseq = iseq-&gt;parent_iseq;</div><div class='add'>+	iseq = iseq-&gt;body-&gt;parent_iseq;</div><div class='ctx'>     }</div><div class='ctx'>     return lev;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='del'>-get_dyna_var_idx_at_raw(rb_iseq_t *iseq, ID id)</div><div class='add'>+get_dyna_var_idx_at_raw(const rb_iseq_t *iseq, ID id)</div><div class='ctx'> {</div><div class='del'>-    int i;</div><div class='add'>+    unsigned int i;</div><div class='ctx'> </div><div class='del'>-    for (i = 0; i &lt; iseq-&gt;local_table_size; i++) {</div><div class='del'>-	if (iseq-&gt;local_table[i] == id) {</div><div class='del'>-	    return i;</div><div class='add'>+    for (i = 0; i &lt; iseq-&gt;body-&gt;local_table_size; i++) {</div><div class='add'>+	if (iseq-&gt;body-&gt;local_table[i] == id) {</div><div class='add'>+	    return (int)i;</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'>     return -1;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='del'>-get_local_var_idx(rb_iseq_t *iseq, ID id)</div><div class='add'>+get_local_var_idx(const rb_iseq_t *iseq, ID id)</div><div class='ctx'> {</div><div class='del'>-    int idx = get_dyna_var_idx_at_raw(iseq-&gt;local_iseq, id);</div><div class='add'>+    int idx = get_dyna_var_idx_at_raw(iseq-&gt;body-&gt;local_iseq, id);</div><div class='ctx'> </div><div class='ctx'>     if (idx &lt; 0) {</div><div class='ctx'> 	rb_bug("get_local_var_idx: %d", idx);</div><div class='hunk'>@@ -1102,7 +1229,7 @@ get_local_var_idx(rb_iseq_t *iseq, ID id)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='del'>-get_dyna_var_idx(rb_iseq_t *iseq, ID id, int *level, int *ls)</div><div class='add'>+get_dyna_var_idx(const rb_iseq_t *iseq, ID id, int *level, int *ls)</div><div class='ctx'> {</div><div class='ctx'>     int lv = 0, idx = -1;</div><div class='ctx'> </div><div class='hunk'>@@ -1111,7 +1238,7 @@ get_dyna_var_idx(rb_iseq_t *iseq, ID id, int *level, int *ls)</div><div class='ctx'> 	if (idx &gt;= 0) {</div><div class='ctx'> 	    break;</div><div class='ctx'> 	}</div><div class='del'>-	iseq = iseq-&gt;parent_iseq;</div><div class='add'>+	iseq = iseq-&gt;body-&gt;parent_iseq;</div><div class='ctx'> 	lv++;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='hunk'>@@ -1120,44 +1247,114 @@ get_dyna_var_idx(rb_iseq_t *iseq, ID id, int *level, int *ls)</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     *level = lv;</div><div class='del'>-    *ls = iseq-&gt;local_size;</div><div class='add'>+    *ls = iseq-&gt;body-&gt;local_table_size;</div><div class='ctx'>     return idx;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static void</div><div class='ctx'> iseq_calc_param_size(rb_iseq_t *iseq)</div><div class='ctx'> {</div><div class='del'>-    if (iseq-&gt;param.flags.has_opt ||</div><div class='del'>-	iseq-&gt;param.flags.has_post ||</div><div class='del'>-	iseq-&gt;param.flags.has_rest ||</div><div class='del'>-	iseq-&gt;param.flags.has_block ||</div><div class='del'>-	iseq-&gt;param.flags.has_kw ||</div><div class='del'>-	iseq-&gt;param.flags.has_kwrest) {</div><div class='add'>+    if (iseq-&gt;body-&gt;param.flags.has_opt ||</div><div class='add'>+	iseq-&gt;body-&gt;param.flags.has_post ||</div><div class='add'>+	iseq-&gt;body-&gt;param.flags.has_rest ||</div><div class='add'>+	iseq-&gt;body-&gt;param.flags.has_block ||</div><div class='add'>+	iseq-&gt;body-&gt;param.flags.has_kw ||</div><div class='add'>+	iseq-&gt;body-&gt;param.flags.has_kwrest) {</div><div class='ctx'> </div><div class='del'>-	if (iseq-&gt;param.flags.has_block) {</div><div class='del'>-	    iseq-&gt;param.size = iseq-&gt;param.block_start + 1;</div><div class='add'>+	if (iseq-&gt;body-&gt;param.flags.has_block) {</div><div class='add'>+	    iseq-&gt;body-&gt;param.size = iseq-&gt;body-&gt;param.block_start + 1;</div><div class='ctx'> 	}</div><div class='del'>-	else if (iseq-&gt;param.flags.has_kwrest) {</div><div class='del'>-	    iseq-&gt;param.size = iseq-&gt;param.keyword-&gt;rest_start + 1;</div><div class='add'>+	else if (iseq-&gt;body-&gt;param.flags.has_kwrest) {</div><div class='add'>+	    iseq-&gt;body-&gt;param.size = iseq-&gt;body-&gt;param.keyword-&gt;rest_start + 1;</div><div class='ctx'> 	}</div><div class='del'>-	else if (iseq-&gt;param.flags.has_kw) {</div><div class='del'>-	    iseq-&gt;param.size = iseq-&gt;param.keyword-&gt;bits_start + 1;</div><div class='add'>+	else if (iseq-&gt;body-&gt;param.flags.has_kw) {</div><div class='add'>+	    iseq-&gt;body-&gt;param.size = iseq-&gt;body-&gt;param.keyword-&gt;bits_start + 1;</div><div class='ctx'> 	}</div><div class='del'>-	else if (iseq-&gt;param.flags.has_post) {</div><div class='del'>-	    iseq-&gt;param.size = iseq-&gt;param.post_start + iseq-&gt;param.post_num;</div><div class='add'>+	else if (iseq-&gt;body-&gt;param.flags.has_post) {</div><div class='add'>+	    iseq-&gt;body-&gt;param.size = iseq-&gt;body-&gt;param.post_start + iseq-&gt;body-&gt;param.post_num;</div><div class='ctx'> 	}</div><div class='del'>-	else if (iseq-&gt;param.flags.has_rest) {</div><div class='del'>-	    iseq-&gt;param.size = iseq-&gt;param.rest_start + 1;</div><div class='add'>+	else if (iseq-&gt;body-&gt;param.flags.has_rest) {</div><div class='add'>+	    iseq-&gt;body-&gt;param.size = iseq-&gt;body-&gt;param.rest_start + 1;</div><div class='ctx'> 	}</div><div class='del'>-	else if (iseq-&gt;param.flags.has_opt) {</div><div class='del'>-	    iseq-&gt;param.size = iseq-&gt;param.lead_num + iseq-&gt;param.opt_num;</div><div class='add'>+	else if (iseq-&gt;body-&gt;param.flags.has_opt) {</div><div class='add'>+	    iseq-&gt;body-&gt;param.size = iseq-&gt;body-&gt;param.lead_num + iseq-&gt;body-&gt;param.opt_num;</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='ctx'> 	    rb_bug("unreachable");</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-	iseq-&gt;param.size = iseq-&gt;param.lead_num;</div><div class='add'>+	iseq-&gt;body-&gt;param.size = iseq-&gt;body-&gt;param.lead_num;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+iseq_set_arguments_keywords(rb_iseq_t *iseq, LINK_ANCHOR *optargs, const struct rb_args_info *args)</div><div class='add'>+{</div><div class='add'>+    NODE *node = args-&gt;kw_args;</div><div class='add'>+    struct rb_iseq_param_keyword *keyword;</div><div class='add'>+    const VALUE default_values = rb_ary_tmp_new(1);</div><div class='add'>+    const VALUE complex_mark = rb_str_tmp_new(0);</div><div class='add'>+    int kw = 0, rkw = 0, di = 0, i;</div><div class='add'>+</div><div class='add'>+    iseq-&gt;body-&gt;param.flags.has_kw = TRUE;</div><div class='add'>+    iseq-&gt;body-&gt;param.keyword = keyword = ZALLOC_N(struct rb_iseq_param_keyword, 1);</div><div class='add'>+    keyword-&gt;bits_start = get_dyna_var_idx_at_raw(iseq, args-&gt;kw_rest_arg-&gt;nd_vid);</div><div class='add'>+</div><div class='add'>+    while (node) {</div><div class='add'>+	NODE *val_node = node-&gt;nd_body-&gt;nd_value;</div><div class='add'>+	VALUE dv;</div><div class='add'>+</div><div class='add'>+	if (val_node == (NODE *)-1) {</div><div class='add'>+	    ++rkw;</div><div class='add'>+	}</div><div class='add'>+	else {</div><div class='add'>+	    switch (nd_type(val_node)) {</div><div class='add'>+	      case NODE_LIT:</div><div class='add'>+		dv = val_node-&gt;nd_lit;</div><div class='add'>+		iseq_add_mark_object(iseq, dv);</div><div class='add'>+		break;</div><div class='add'>+	      case NODE_NIL:</div><div class='add'>+		dv = Qnil;</div><div class='add'>+		break;</div><div class='add'>+	      case NODE_TRUE:</div><div class='add'>+		dv = Qtrue;</div><div class='add'>+		break;</div><div class='add'>+	      case NODE_FALSE:</div><div class='add'>+		dv = Qfalse;</div><div class='add'>+		break;</div><div class='add'>+	      default:</div><div class='add'>+		COMPILE_POPED(optargs, "kwarg", node); /* nd_type(node) == NODE_KW_ARG */</div><div class='add'>+		dv = complex_mark;</div><div class='add'>+	    }</div><div class='add'>+</div><div class='add'>+	    keyword-&gt;num = ++di;</div><div class='add'>+	    rb_ary_push(default_values, dv);</div><div class='add'>+	}</div><div class='add'>+</div><div class='add'>+	kw++;</div><div class='add'>+	node = node-&gt;nd_next;</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    keyword-&gt;num = kw;</div><div class='add'>+</div><div class='add'>+    if (args-&gt;kw_rest_arg-&gt;nd_cflag != 0) {</div><div class='add'>+	keyword-&gt;rest_start =  get_dyna_var_idx_at_raw(iseq, args-&gt;kw_rest_arg-&gt;nd_cflag);</div><div class='add'>+	iseq-&gt;body-&gt;param.flags.has_kwrest = TRUE;</div><div class='add'>+    }</div><div class='add'>+    keyword-&gt;required_num = rkw;</div><div class='add'>+    keyword-&gt;table = &amp;iseq-&gt;body-&gt;local_table[keyword-&gt;bits_start - keyword-&gt;num];</div><div class='add'>+</div><div class='add'>+    {</div><div class='add'>+	VALUE *dvs = ALLOC_N(VALUE, RARRAY_LEN(default_values));</div><div class='add'>+</div><div class='add'>+	for (i = 0; i &lt; RARRAY_LEN(default_values); i++) {</div><div class='add'>+	    VALUE dv = RARRAY_AREF(default_values, i);</div><div class='add'>+	    if (dv == complex_mark) dv = Qundef;</div><div class='add'>+	    dvs[i] = dv;</div><div class='add'>+	}</div><div class='add'>+</div><div class='add'>+	keyword-&gt;default_values = dvs;</div><div class='ctx'>     }</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -1172,15 +1369,11 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args)</div><div class='ctx'> 	int last_comma = 0;</div><div class='ctx'> 	ID block_id = 0;</div><div class='ctx'> </div><div class='del'>-	if (nd_type(node_args) != NODE_ARGS) {</div><div class='del'>-	    rb_bug("iseq_set_arguments: NODE_ARGS is expected, but %s",</div><div class='del'>-		   ruby_node_name(nd_type(node_args)));</div><div class='del'>-	}</div><div class='del'>-</div><div class='add'>+	EXPECT_NODE("iseq_set_arguments", node_args, NODE_ARGS);</div><div class='ctx'> </div><div class='del'>-	iseq-&gt;param.lead_num = (int)args-&gt;pre_args_num;</div><div class='del'>-	if (iseq-&gt;param.lead_num &gt; 0) iseq-&gt;param.flags.has_lead = TRUE;</div><div class='del'>-	debugs("  - argc: %d\n", iseq-&gt;param.lead_num);</div><div class='add'>+	iseq-&gt;body-&gt;param.lead_num = (int)args-&gt;pre_args_num;</div><div class='add'>+	if (iseq-&gt;body-&gt;param.lead_num &gt; 0) iseq-&gt;body-&gt;param.flags.has_lead = TRUE;</div><div class='add'>+	debugs("  - argc: %d\n", iseq-&gt;body-&gt;param.lead_num);</div><div class='ctx'> </div><div class='ctx'> 	rest_id = args-&gt;rest_arg;</div><div class='ctx'> 	if (rest_id == 1) {</div><div class='hunk'>@@ -1190,15 +1383,16 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args)</div><div class='ctx'> 	block_id = args-&gt;block_arg;</div><div class='ctx'> </div><div class='ctx'> 	if (args-&gt;first_post_arg) {</div><div class='del'>-	    iseq-&gt;param.post_start = get_dyna_var_idx_at_raw(iseq, args-&gt;first_post_arg);</div><div class='del'>-	    iseq-&gt;param.post_num = args-&gt;post_args_num;</div><div class='del'>-	    iseq-&gt;param.flags.has_post = TRUE;</div><div class='add'>+	    iseq-&gt;body-&gt;param.post_start = get_dyna_var_idx_at_raw(iseq, args-&gt;first_post_arg);</div><div class='add'>+	    iseq-&gt;body-&gt;param.post_num = args-&gt;post_args_num;</div><div class='add'>+	    iseq-&gt;body-&gt;param.flags.has_post = TRUE;</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	if (args-&gt;opt_args) {</div><div class='ctx'> 	    NODE *node = args-&gt;opt_args;</div><div class='ctx'> 	    LABEL *label;</div><div class='ctx'> 	    VALUE labels = rb_ary_tmp_new(1);</div><div class='add'>+	    VALUE *opt_table;</div><div class='ctx'> 	    int i = 0, j;</div><div class='ctx'> </div><div class='ctx'> 	    while (node) {</div><div class='hunk'>@@ -1215,82 +1409,27 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args)</div><div class='ctx'> 	    rb_ary_push(labels, (VALUE)label | 1);</div><div class='ctx'> 	    ADD_LABEL(optargs, label);</div><div class='ctx'> </div><div class='del'>-	    iseq-&gt;param.opt_num = i;</div><div class='del'>-	    iseq-&gt;param.opt_table = ALLOC_N(VALUE, i+1);</div><div class='del'>-	    MEMCPY(iseq-&gt;param.opt_table, RARRAY_CONST_PTR(labels), VALUE, i+1);</div><div class='add'>+	    opt_table = ALLOC_N(VALUE, i+1);</div><div class='add'>+</div><div class='add'>+	    MEMCPY(opt_table, RARRAY_CONST_PTR(labels), VALUE, i+1);</div><div class='ctx'> 	    for (j = 0; j &lt; i+1; j++) {</div><div class='del'>-		iseq-&gt;param.opt_table[j] &amp;= ~1;</div><div class='add'>+		opt_table[j] &amp;= ~1;</div><div class='ctx'> 	    }</div><div class='ctx'> 	    rb_ary_clear(labels);</div><div class='ctx'> </div><div class='del'>-	    iseq-&gt;param.flags.has_opt = TRUE;</div><div class='add'>+	    iseq-&gt;body-&gt;param.flags.has_opt = TRUE;</div><div class='add'>+	    iseq-&gt;body-&gt;param.opt_num = i;</div><div class='add'>+	    iseq-&gt;body-&gt;param.opt_table = opt_table;</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	if (args-&gt;kw_args) {</div><div class='del'>-	    NODE *node = args-&gt;kw_args;</div><div class='del'>-	    const VALUE default_values = rb_ary_tmp_new(1);</div><div class='del'>-	    const VALUE complex_mark = rb_str_tmp_new(0);</div><div class='del'>-	    int kw = 0, rkw = 0, di = 0, i;</div><div class='del'>-</div><div class='del'>-	    iseq-&gt;param.flags.has_kw = TRUE;</div><div class='del'>-	    iseq-&gt;param.keyword = ZALLOC_N(struct rb_iseq_param_keyword, 1);</div><div class='del'>-	    iseq-&gt;param.keyword-&gt;bits_start = get_dyna_var_idx_at_raw(iseq, args-&gt;kw_rest_arg-&gt;nd_vid);</div><div class='del'>-</div><div class='del'>-	    while (node) {</div><div class='del'>-		NODE *val_node = node-&gt;nd_body-&gt;nd_value;</div><div class='del'>-		VALUE dv;</div><div class='del'>-</div><div class='del'>-		if (val_node == (NODE *)-1) {</div><div class='del'>-		    ++rkw;</div><div class='del'>-		}</div><div class='del'>-		else {</div><div class='del'>-		    switch (nd_type(val_node)) {</div><div class='del'>-		      case NODE_LIT:</div><div class='del'>-			dv = val_node-&gt;nd_lit;</div><div class='del'>-			iseq_add_mark_object(iseq, dv);</div><div class='del'>-			break;</div><div class='del'>-		      case NODE_NIL:</div><div class='del'>-			dv = Qnil;</div><div class='del'>-			break;</div><div class='del'>-		      case NODE_TRUE:</div><div class='del'>-			dv = Qtrue;</div><div class='del'>-			break;</div><div class='del'>-		      case NODE_FALSE:</div><div class='del'>-			dv = Qfalse;</div><div class='del'>-			break;</div><div class='del'>-		      default:</div><div class='del'>-			COMPILE_POPED(optargs, "kwarg", node); /* nd_type(node) == NODE_KW_ARG */</div><div class='del'>-			dv = complex_mark;</div><div class='del'>-		    }</div><div class='del'>-</div><div class='del'>-		    iseq-&gt;param.keyword-&gt;num = ++di;</div><div class='del'>-		    rb_ary_push(default_values, dv);</div><div class='del'>-		}</div><div class='del'>-</div><div class='del'>-		kw++;</div><div class='del'>-		node = node-&gt;nd_next;</div><div class='del'>-	    }</div><div class='del'>-</div><div class='del'>-	    iseq-&gt;param.keyword-&gt;num = kw;</div><div class='del'>-</div><div class='del'>-	    if (args-&gt;kw_rest_arg-&gt;nd_cflag != 0) {</div><div class='del'>-		iseq-&gt;param.keyword-&gt;rest_start =  get_dyna_var_idx_at_raw(iseq, args-&gt;kw_rest_arg-&gt;nd_cflag);</div><div class='del'>-		iseq-&gt;param.flags.has_kwrest = TRUE;</div><div class='del'>-	    }</div><div class='del'>-	    iseq-&gt;param.keyword-&gt;required_num = rkw;</div><div class='del'>-	    iseq-&gt;param.keyword-&gt;table = &amp;iseq-&gt;local_table[iseq-&gt;param.keyword-&gt;bits_start - iseq-&gt;param.keyword-&gt;num];</div><div class='del'>-	    iseq-&gt;param.keyword-&gt;default_values = ALLOC_N(VALUE, RARRAY_LEN(default_values));</div><div class='del'>-</div><div class='del'>-	    for (i = 0; i &lt; RARRAY_LEN(default_values); i++) {</div><div class='del'>-		VALUE dv = RARRAY_AREF(default_values, i);</div><div class='del'>-		if (dv == complex_mark) dv = Qundef;</div><div class='del'>-		iseq-&gt;param.keyword-&gt;default_values[i] = dv;</div><div class='del'>-	    }</div><div class='add'>+	    iseq_set_arguments_keywords(iseq, optargs, args);</div><div class='ctx'> 	}</div><div class='ctx'> 	else if (args-&gt;kw_rest_arg) {</div><div class='del'>-	    iseq-&gt;param.flags.has_kwrest = TRUE;</div><div class='del'>-	    iseq-&gt;param.keyword = ZALLOC_N(struct rb_iseq_param_keyword, 1);</div><div class='del'>-	    iseq-&gt;param.keyword-&gt;rest_start = get_dyna_var_idx_at_raw(iseq, args-&gt;kw_rest_arg-&gt;nd_vid);</div><div class='add'>+	    struct rb_iseq_param_keyword *keyword = ZALLOC_N(struct rb_iseq_param_keyword, 1);</div><div class='add'>+	    keyword-&gt;rest_start = get_dyna_var_idx_at_raw(iseq, args-&gt;kw_rest_arg-&gt;nd_vid);</div><div class='add'>+	    iseq-&gt;body-&gt;param.keyword = keyword;</div><div class='add'>+	    iseq-&gt;body-&gt;param.flags.has_kwrest = TRUE;</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	if (args-&gt;pre_init) { /* m_init */</div><div class='hunk'>@@ -1301,32 +1440,32 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args)</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	if (rest_id) {</div><div class='del'>-	    iseq-&gt;param.rest_start = get_dyna_var_idx_at_raw(iseq, rest_id);</div><div class='del'>-	    iseq-&gt;param.flags.has_rest = TRUE;</div><div class='del'>-	    assert(iseq-&gt;param.rest_start != -1);</div><div class='add'>+	    iseq-&gt;body-&gt;param.rest_start = get_dyna_var_idx_at_raw(iseq, rest_id);</div><div class='add'>+	    iseq-&gt;body-&gt;param.flags.has_rest = TRUE;</div><div class='add'>+	    assert(iseq-&gt;body-&gt;param.rest_start != -1);</div><div class='ctx'> </div><div class='del'>-	    if (iseq-&gt;param.post_start == 0) { /* TODO: why that? */</div><div class='del'>-		iseq-&gt;param.post_start = iseq-&gt;param.rest_start + 1;</div><div class='add'>+	    if (iseq-&gt;body-&gt;param.post_start == 0) { /* TODO: why that? */</div><div class='add'>+		iseq-&gt;body-&gt;param.post_start = iseq-&gt;body-&gt;param.rest_start + 1;</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	if (block_id) {</div><div class='del'>-	    iseq-&gt;param.block_start = get_dyna_var_idx_at_raw(iseq, block_id);</div><div class='del'>-	    iseq-&gt;param.flags.has_block = TRUE;</div><div class='add'>+	    iseq-&gt;body-&gt;param.block_start = get_dyna_var_idx_at_raw(iseq, block_id);</div><div class='add'>+	    iseq-&gt;body-&gt;param.flags.has_block = TRUE;</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	iseq_calc_param_size(iseq);</div><div class='ctx'> </div><div class='del'>-	if (iseq-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='del'>-	    if (iseq-&gt;param.flags.has_opt    == FALSE &amp;&amp;</div><div class='del'>-		iseq-&gt;param.flags.has_post   == FALSE &amp;&amp;</div><div class='del'>-		iseq-&gt;param.flags.has_rest   == FALSE &amp;&amp;</div><div class='del'>-		iseq-&gt;param.flags.has_kw     == FALSE &amp;&amp;</div><div class='del'>-		iseq-&gt;param.flags.has_kwrest == FALSE) {</div><div class='add'>+	if (iseq-&gt;body-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='add'>+	    if (iseq-&gt;body-&gt;param.flags.has_opt    == FALSE &amp;&amp;</div><div class='add'>+		iseq-&gt;body-&gt;param.flags.has_post   == FALSE &amp;&amp;</div><div class='add'>+		iseq-&gt;body-&gt;param.flags.has_rest   == FALSE &amp;&amp;</div><div class='add'>+		iseq-&gt;body-&gt;param.flags.has_kw     == FALSE &amp;&amp;</div><div class='add'>+		iseq-&gt;body-&gt;param.flags.has_kwrest == FALSE) {</div><div class='ctx'> </div><div class='del'>-		if (iseq-&gt;param.lead_num == 1 &amp;&amp; last_comma == 0) {</div><div class='add'>+		if (iseq-&gt;body-&gt;param.lead_num == 1 &amp;&amp; last_comma == 0) {</div><div class='ctx'> 		    /* {|a|} */</div><div class='del'>-		    iseq-&gt;param.flags.ambiguous_param0 = TRUE;</div><div class='add'>+		    iseq-&gt;body-&gt;param.flags.ambiguous_param0 = TRUE;</div><div class='ctx'> 		}</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='hunk'>@@ -1338,10 +1477,10 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args)</div><div class='ctx'> static int</div><div class='ctx'> iseq_set_local_table(rb_iseq_t *iseq, const ID *tbl)</div><div class='ctx'> {</div><div class='del'>-    int size;</div><div class='add'>+    unsigned int size;</div><div class='ctx'> </div><div class='ctx'>     if (tbl) {</div><div class='del'>-	size = (int)*tbl;</div><div class='add'>+	size = (unsigned int)*tbl;</div><div class='ctx'> 	tbl++;</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='hunk'>@@ -1349,21 +1488,13 @@ iseq_set_local_table(rb_iseq_t *iseq, const ID *tbl)</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     if (size &gt; 0) {</div><div class='del'>-	iseq-&gt;local_table = (ID *)ALLOC_N(ID, size);</div><div class='del'>-	MEMCPY(iseq-&gt;local_table, tbl, ID, size);</div><div class='add'>+	ID *ids = (ID *)ALLOC_N(ID, size);</div><div class='add'>+	MEMCPY(ids, tbl, ID, size);</div><div class='add'>+	iseq-&gt;body-&gt;local_table = ids;</div><div class='ctx'>     }</div><div class='add'>+    iseq-&gt;body-&gt;local_table_size = size;</div><div class='ctx'> </div><div class='del'>-    iseq-&gt;local_size = iseq-&gt;local_table_size = size;</div><div class='del'>-    iseq-&gt;local_size += 1;</div><div class='del'>-    /*</div><div class='del'>-      if (lfp == dfp ) { // top, class, method</div><div class='del'>-	  dfp[-1]: svar</div><div class='del'>-      else {             // block</div><div class='del'>-          dfp[-1]: cref</div><div class='del'>-      }</div><div class='del'>-     */</div><div class='del'>-</div><div class='del'>-    debugs("iseq_set_local_table: %d, %d\n", iseq-&gt;local_size, iseq-&gt;local_table_size);</div><div class='add'>+    debugs("iseq_set_local_table: %u\n", iseq-&gt;body-&gt;local_table_size);</div><div class='ctx'>     return COMPILE_OK;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -1414,38 +1545,56 @@ cdhash_set_label_i(VALUE key, VALUE val, void *ptr)</div><div class='ctx'>     return ST_CONTINUE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+</div><div class='add'>+static inline VALUE</div><div class='add'>+get_ivar_ic_value(rb_iseq_t *iseq,ID id)</div><div class='add'>+{</div><div class='add'>+    VALUE val;</div><div class='add'>+    struct rb_id_table *tbl = ISEQ_COMPILE_DATA(iseq)-&gt;ivar_cache_table;</div><div class='add'>+    if (tbl) {</div><div class='add'>+	if (rb_id_table_lookup(tbl,id,&amp;val)) {</div><div class='add'>+	    return val;</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	tbl = rb_id_table_create(1);</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;ivar_cache_table = tbl;</div><div class='add'>+    }</div><div class='add'>+    val = INT2FIX(iseq-&gt;body-&gt;is_size++);</div><div class='add'>+    rb_id_table_insert(tbl,id,val);</div><div class='add'>+    return val;</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> /**</div><div class='ctx'>   ruby insn object list -&gt; raw instruction sequence</div><div class='ctx'>  */</div><div class='ctx'> static int</div><div class='ctx'> iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> {</div><div class='del'>-    LABEL *lobj;</div><div class='del'>-    INSN *iobj;</div><div class='ctx'>     struct iseq_line_info_entry *line_info_table;</div><div class='ctx'>     unsigned int last_line = 0;</div><div class='ctx'>     LINK_ELEMENT *list;</div><div class='ctx'>     VALUE *generated_iseq;</div><div class='ctx'> </div><div class='del'>-    int k, pos, sp, stack_max = 0, line = 0;</div><div class='add'>+    int insn_num, code_index, line_info_index, sp, stack_max = 0, line = 0;</div><div class='ctx'> </div><div class='del'>-    /* set label position */</div><div class='add'>+    /* fix label position */</div><div class='ctx'>     list = FIRST_ELEMENT(anchor);</div><div class='del'>-    k = pos = 0;</div><div class='add'>+    insn_num = code_index = 0;</div><div class='ctx'>     while (list) {</div><div class='ctx'> 	switch (list-&gt;type) {</div><div class='ctx'> 	  case ISEQ_ELEMENT_INSN:</div><div class='ctx'> 	    {</div><div class='del'>-		iobj = (INSN *)list;</div><div class='add'>+		INSN *iobj = (INSN *)list;</div><div class='ctx'> 		line = iobj-&gt;line_no;</div><div class='del'>-		pos += insn_data_length(iobj);</div><div class='del'>-		k++;</div><div class='add'>+		code_index += insn_data_length(iobj);</div><div class='add'>+		insn_num++;</div><div class='ctx'> 		break;</div><div class='ctx'> 	    }</div><div class='ctx'> 	  case ISEQ_ELEMENT_LABEL:</div><div class='ctx'> 	    {</div><div class='del'>-		lobj = (LABEL *)list;</div><div class='del'>-		lobj-&gt;position = pos;</div><div class='add'>+		LABEL *lobj = (LABEL *)list;</div><div class='add'>+		lobj-&gt;position = code_index;</div><div class='ctx'> 		lobj-&gt;set = TRUE;</div><div class='ctx'> 		break;</div><div class='ctx'> 	    }</div><div class='hunk'>@@ -1458,30 +1607,32 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> 	    {</div><div class='ctx'> 		ADJUST *adjust = (ADJUST *)list;</div><div class='ctx'> 		if (adjust-&gt;line_no != -1) {</div><div class='del'>-		    pos += 2 /* insn + 1 operand */;</div><div class='del'>-		    k++;</div><div class='add'>+		    code_index += 2 /* insn + 1 operand */;</div><div class='add'>+		    insn_num++;</div><div class='ctx'> 		}</div><div class='ctx'> 		break;</div><div class='ctx'> 	    }</div><div class='ctx'> 	  default:</div><div class='ctx'> 	    dump_disasm_list(FIRST_ELEMENT(anchor));</div><div class='ctx'> 	    dump_disasm_list(list);</div><div class='del'>-	    rb_compile_error(RSTRING_PTR(iseq-&gt;location.path), line,</div><div class='del'>-			     "error: set_sequence");</div><div class='del'>-	    break;</div><div class='add'>+	    COMPILE_ERROR(iseq, line, "error: set_sequence");</div><div class='add'>+	    return COMPILE_NG;</div><div class='ctx'> 	}</div><div class='ctx'> 	list = list-&gt;next;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     /* make instruction sequence */</div><div class='del'>-    generated_iseq = ALLOC_N(VALUE, pos);</div><div class='del'>-    line_info_table = ALLOC_N(struct iseq_line_info_entry, k);</div><div class='del'>-    iseq-&gt;is_entries = ZALLOC_N(union iseq_inline_storage_entry, iseq-&gt;is_size);</div><div class='del'>-    iseq-&gt;callinfo_entries = ALLOC_N(rb_call_info_t, iseq-&gt;callinfo_size);</div><div class='del'>-    /* MEMZERO(iseq-&gt;callinfo_entries, rb_call_info_t, iseq-&gt;callinfo_size); */</div><div class='add'>+    generated_iseq = ALLOC_N(VALUE, code_index);</div><div class='add'>+    line_info_table = ALLOC_N(struct iseq_line_info_entry, insn_num);</div><div class='add'>+    iseq-&gt;body-&gt;is_entries = ZALLOC_N(union iseq_inline_storage_entry, iseq-&gt;body-&gt;is_size);</div><div class='add'>+    iseq-&gt;body-&gt;ci_entries = (struct rb_call_info *)ruby_xmalloc(sizeof(struct rb_call_info) * iseq-&gt;body-&gt;ci_size +</div><div class='add'>+								 sizeof(struct rb_call_info_with_kwarg) * iseq-&gt;body-&gt;ci_kw_size);</div><div class='add'>+    iseq-&gt;body-&gt;cc_entries = ZALLOC_N(struct rb_call_cache, iseq-&gt;body-&gt;ci_size + iseq-&gt;body-&gt;ci_kw_size);</div><div class='add'>+</div><div class='add'>+    ISEQ_COMPILE_DATA(iseq)-&gt;ci_index = ISEQ_COMPILE_DATA(iseq)-&gt;ci_kw_index = 0;</div><div class='ctx'> </div><div class='ctx'>     list = FIRST_ELEMENT(anchor);</div><div class='del'>-    k = pos = sp = 0;</div><div class='add'>+    line_info_index = code_index = sp = 0;</div><div class='ctx'> </div><div class='ctx'>     while (list) {</div><div class='ctx'> 	switch (list-&gt;type) {</div><div class='hunk'>@@ -1490,8 +1641,7 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> 		int j, len, insn;</div><div class='ctx'> 		const char *types;</div><div class='ctx'> 		VALUE *operands;</div><div class='del'>-</div><div class='del'>-		iobj = (INSN *)list;</div><div class='add'>+		INSN *iobj = (INSN *)list;</div><div class='ctx'> </div><div class='ctx'> 		/* update sp */</div><div class='ctx'> 		sp = calc_sp_depth(sp, iobj);</div><div class='hunk'>@@ -1502,7 +1652,7 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> 		/* fprintf(stderr, "insn: %-16s, sp: %d\n", insn_name(iobj-&gt;insn_id), sp); */</div><div class='ctx'> 		operands = iobj-&gt;operands;</div><div class='ctx'> 		insn = iobj-&gt;insn_id;</div><div class='del'>-		generated_iseq[pos] = insn;</div><div class='add'>+		generated_iseq[code_index] = insn;</div><div class='ctx'> 		types = insn_op_types(insn);</div><div class='ctx'> 		len = insn_len(insn);</div><div class='ctx'> </div><div class='hunk'>@@ -1510,12 +1660,12 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> 		if (iobj-&gt;operand_size != len - 1) {</div><div class='ctx'> 		    /* printf("operand size miss! (%d, %d)\n", iobj-&gt;operand_size, len); */</div><div class='ctx'> 		    dump_disasm_list(list);</div><div class='del'>-		    rb_compile_error(RSTRING_PTR(iseq-&gt;location.path), iobj-&gt;line_no,</div><div class='del'>-				     "operand size miss! (%d for %d)",</div><div class='del'>-				     iobj-&gt;operand_size, len - 1);</div><div class='ctx'> 		    xfree(generated_iseq);</div><div class='ctx'> 		    xfree(line_info_table);</div><div class='del'>-		    return 0;</div><div class='add'>+		    COMPILE_ERROR(iseq, iobj-&gt;line_no,</div><div class='add'>+				  "operand size miss! (%d for %d)",</div><div class='add'>+				  iobj-&gt;operand_size, len - 1);</div><div class='add'>+		    return COMPILE_NG;</div><div class='ctx'> 		}</div><div class='ctx'> </div><div class='ctx'> 		for (j = 0; types[j]; j++) {</div><div class='hunk'>@@ -1525,15 +1675,16 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> 		      case TS_OFFSET:</div><div class='ctx'> 			{</div><div class='ctx'> 			    /* label(destination position) */</div><div class='del'>-			    lobj = (LABEL *)operands[j];</div><div class='add'>+			    LABEL *lobj = (LABEL *)operands[j];</div><div class='ctx'> 			    if (!lobj-&gt;set) {</div><div class='del'>-				rb_compile_error(RSTRING_PTR(iseq-&gt;location.path), iobj-&gt;line_no,</div><div class='del'>-						 "unknown label");</div><div class='add'>+				COMPILE_ERROR(iseq, iobj-&gt;line_no,</div><div class='add'>+					      "unknown label");</div><div class='add'>+				return COMPILE_NG;</div><div class='ctx'> 			    }</div><div class='ctx'> 			    if (lobj-&gt;sp == -1) {</div><div class='ctx'> 				lobj-&gt;sp = sp;</div><div class='ctx'> 			    }</div><div class='del'>-			    generated_iseq[pos + 1 + j] = lobj-&gt;position - (pos + len);</div><div class='add'>+			    generated_iseq[code_index + 1 + j] = lobj-&gt;position - (code_index + len);</div><div class='ctx'> 			    break;</div><div class='ctx'> 			}</div><div class='ctx'> 		      case TS_CDHASH:</div><div class='hunk'>@@ -1541,90 +1692,102 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> 			    VALUE map = operands[j];</div><div class='ctx'> 			    struct cdhash_set_label_struct data;</div><div class='ctx'>                             data.hash = map;</div><div class='del'>-                            data.pos = pos;</div><div class='add'>+                            data.pos = code_index;</div><div class='ctx'>                             data.len = len;</div><div class='ctx'> 			    rb_hash_foreach(map, cdhash_set_label_i, (VALUE)&amp;data);</div><div class='ctx'> </div><div class='del'>-			    hide_obj(map);</div><div class='del'>-			    generated_iseq[pos + 1 + j] = map;</div><div class='add'>+			    rb_hash_rehash(map);</div><div class='add'>+			    freeze_hide_obj(map);</div><div class='add'>+			    generated_iseq[code_index + 1 + j] = map;</div><div class='ctx'> 			    break;</div><div class='ctx'> 			}</div><div class='ctx'> 		      case TS_LINDEX:</div><div class='ctx'> 		      case TS_NUM:	/* ulong */</div><div class='del'>-			generated_iseq[pos + 1 + j] = FIX2INT(operands[j]);</div><div class='add'>+			generated_iseq[code_index + 1 + j] = FIX2INT(operands[j]);</div><div class='ctx'> 			break;</div><div class='ctx'> 		      case TS_ISEQ:	/* iseq */</div><div class='ctx'> 			{</div><div class='ctx'> 			    VALUE v = operands[j];</div><div class='del'>-			    rb_iseq_t *block = 0;</div><div class='del'>-			    if (v) {</div><div class='del'>-				GetISeqPtr(v, block);</div><div class='del'>-			    }</div><div class='del'>-			    generated_iseq[pos + 1 + j] = (VALUE)block;</div><div class='add'>+			    generated_iseq[code_index + 1 + j] = v;</div><div class='ctx'> 			    break;</div><div class='ctx'> 			}</div><div class='ctx'> 		      case TS_VALUE:	/* VALUE */</div><div class='ctx'> 			{</div><div class='ctx'> 			    VALUE v = operands[j];</div><div class='del'>-			    generated_iseq[pos + 1 + j] = v;</div><div class='add'>+			    generated_iseq[code_index + 1 + j] = v;</div><div class='ctx'> 			    /* to mark ruby object */</div><div class='ctx'> 			    iseq_add_mark_object(iseq, v);</div><div class='ctx'> 			    break;</div><div class='ctx'> 			}</div><div class='ctx'> 		      case TS_IC: /* inline cache */</div><div class='ctx'> 			{</div><div class='del'>-			    int ic_index = FIX2INT(operands[j]);</div><div class='del'>-			    IC ic = (IC)&amp;iseq-&gt;is_entries[ic_index];</div><div class='del'>-			    if (UNLIKELY(ic_index &gt;= iseq-&gt;is_size)) {</div><div class='del'>-				rb_bug("iseq_set_sequence: ic_index overflow: index: %d, size: %d", ic_index, iseq-&gt;is_size);</div><div class='add'>+			    unsigned int ic_index = FIX2UINT(operands[j]);</div><div class='add'>+			    IC ic = (IC)&amp;iseq-&gt;body-&gt;is_entries[ic_index];</div><div class='add'>+			    if (UNLIKELY(ic_index &gt;= iseq-&gt;body-&gt;is_size)) {</div><div class='add'>+				rb_bug("iseq_set_sequence: ic_index overflow: index: %d, size: %d", ic_index, iseq-&gt;body-&gt;is_size);</div><div class='ctx'> 			    }</div><div class='del'>-			    generated_iseq[pos + 1 + j] = (VALUE)ic;</div><div class='add'>+			    generated_iseq[code_index + 1 + j] = (VALUE)ic;</div><div class='ctx'> 			    break;</div><div class='ctx'> 			}</div><div class='ctx'> 		      case TS_CALLINFO: /* call info */</div><div class='ctx'> 			{</div><div class='del'>-			    rb_call_info_t *base_ci = (rb_call_info_t *)operands[j];</div><div class='del'>-			    rb_call_info_t *ci = &amp;iseq-&gt;callinfo_entries[base_ci-&gt;aux.index];</div><div class='del'>-			    *ci = *base_ci;</div><div class='del'>-</div><div class='del'>-			    if (UNLIKELY(base_ci-&gt;aux.index &gt;= iseq-&gt;callinfo_size)) {</div><div class='del'>-				rb_bug("iseq_set_sequence: ci_index overflow: index: %d, size: %d", base_ci-&gt;argc, iseq-&gt;callinfo_size);</div><div class='add'>+			    struct rb_call_info *base_ci = (struct rb_call_info *)operands[j];</div><div class='add'>+			    struct rb_call_info *ci;</div><div class='add'>+</div><div class='add'>+			    if (base_ci-&gt;flag &amp; VM_CALL_KWARG) {</div><div class='add'>+				struct rb_call_info_with_kwarg *ci_kw_entries = (struct rb_call_info_with_kwarg *)&amp;iseq-&gt;body-&gt;ci_entries[iseq-&gt;body-&gt;ci_size];</div><div class='add'>+				struct rb_call_info_with_kwarg *ci_kw = &amp;ci_kw_entries[ISEQ_COMPILE_DATA(iseq)-&gt;ci_kw_index++];</div><div class='add'>+				*ci_kw = *((struct rb_call_info_with_kwarg *)base_ci);</div><div class='add'>+				ci = (struct rb_call_info *)ci_kw;</div><div class='add'>+				assert(ISEQ_COMPILE_DATA(iseq)-&gt;ci_kw_index &lt;= iseq-&gt;body-&gt;ci_kw_size);</div><div class='add'>+			    }</div><div class='add'>+			    else {</div><div class='add'>+				ci = &amp;iseq-&gt;body-&gt;ci_entries[ISEQ_COMPILE_DATA(iseq)-&gt;ci_index++];</div><div class='add'>+				*ci = *base_ci;</div><div class='add'>+				assert(ISEQ_COMPILE_DATA(iseq)-&gt;ci_index &lt;= iseq-&gt;body-&gt;ci_size);</div><div class='ctx'> 			    }</div><div class='del'>-			    generated_iseq[pos + 1 + j] = (VALUE)ci;</div><div class='add'>+</div><div class='add'>+			    generated_iseq[code_index + 1 + j] = (VALUE)ci;</div><div class='add'>+			    break;</div><div class='add'>+			}</div><div class='add'>+		      case TS_CALLCACHE:</div><div class='add'>+			{</div><div class='add'>+			    struct rb_call_cache *cc = &amp;iseq-&gt;body-&gt;cc_entries[ISEQ_COMPILE_DATA(iseq)-&gt;ci_index + ISEQ_COMPILE_DATA(iseq)-&gt;ci_kw_index - 1];</div><div class='add'>+			    generated_iseq[code_index + 1 + j] = (VALUE)cc;</div><div class='ctx'> 			    break;</div><div class='ctx'> 			}</div><div class='ctx'> 		      case TS_ID: /* ID */</div><div class='del'>-			generated_iseq[pos + 1 + j] = SYM2ID(operands[j]);</div><div class='add'>+			generated_iseq[code_index + 1 + j] = SYM2ID(operands[j]);</div><div class='ctx'> 			break;</div><div class='ctx'> 		      case TS_GENTRY:</div><div class='ctx'> 			{</div><div class='ctx'> 			    struct rb_global_entry *entry =</div><div class='ctx'> 				(struct rb_global_entry *)(operands[j] &amp; (~1));</div><div class='del'>-			    generated_iseq[pos + 1 + j] = (VALUE)entry;</div><div class='add'>+			    generated_iseq[code_index + 1 + j] = (VALUE)entry;</div><div class='ctx'> 			}</div><div class='ctx'> 			break;</div><div class='ctx'> 		      case TS_FUNCPTR:</div><div class='del'>-			generated_iseq[pos + 1 + j] = operands[j];</div><div class='add'>+			generated_iseq[code_index + 1 + j] = operands[j];</div><div class='ctx'> 			break;</div><div class='ctx'> 		      default:</div><div class='del'>-			rb_compile_error(RSTRING_PTR(iseq-&gt;location.path), iobj-&gt;line_no,</div><div class='del'>-					 "unknown operand type: %c", type);</div><div class='ctx'> 			xfree(generated_iseq);</div><div class='ctx'> 			xfree(line_info_table);</div><div class='del'>-			return 0;</div><div class='add'>+			COMPILE_ERROR(iseq, iobj-&gt;line_no,</div><div class='add'>+				      "unknown operand type: %c", type);</div><div class='add'>+			return COMPILE_NG;</div><div class='ctx'> 		    }</div><div class='ctx'> 		}</div><div class='ctx'> 		if (last_line != iobj-&gt;line_no) {</div><div class='del'>-		    line_info_table[k].line_no = last_line = iobj-&gt;line_no;</div><div class='del'>-		    line_info_table[k].position = pos;</div><div class='del'>-		    k++;</div><div class='add'>+		    line_info_table[line_info_index].line_no = last_line = iobj-&gt;line_no;</div><div class='add'>+		    line_info_table[line_info_index].position = code_index;</div><div class='add'>+		    line_info_index++;</div><div class='ctx'> 		}</div><div class='del'>-		pos += len;</div><div class='add'>+		code_index += len;</div><div class='ctx'> 		break;</div><div class='ctx'> 	    }</div><div class='ctx'> 	  case ISEQ_ELEMENT_LABEL:</div><div class='ctx'> 	    {</div><div class='del'>-		lobj = (LABEL *)list;</div><div class='add'>+		LABEL *lobj = (LABEL *)list;</div><div class='ctx'> 		if (lobj-&gt;sp == -1) {</div><div class='ctx'> 		    lobj-&gt;sp = sp;</div><div class='ctx'> 		}</div><div class='hunk'>@@ -1648,25 +1811,27 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> 		if (adjust-&gt;line_no != -1) {</div><div class='ctx'> 		    if (orig_sp - sp &gt; 0) {</div><div class='ctx'> 			if (last_line != (unsigned int)adjust-&gt;line_no) {</div><div class='del'>-			    line_info_table[k].line_no = last_line = adjust-&gt;line_no;</div><div class='del'>-			    line_info_table[k].position = pos;</div><div class='del'>-			    k++;</div><div class='add'>+			    line_info_table[line_info_index].line_no = last_line = adjust-&gt;line_no;</div><div class='add'>+			    line_info_table[line_info_index].position = code_index;</div><div class='add'>+			    line_info_index++;</div><div class='ctx'> 			}</div><div class='del'>-			generated_iseq[pos++] = BIN(adjuststack);</div><div class='del'>-			generated_iseq[pos++] = orig_sp - sp;</div><div class='add'>+			generated_iseq[code_index++] = BIN(adjuststack);</div><div class='add'>+			generated_iseq[code_index++] = orig_sp - sp;</div><div class='ctx'> 		    }</div><div class='ctx'> 		    else if (orig_sp - sp == 0) {</div><div class='ctx'> 			/* jump to next insn */</div><div class='ctx'> 			if (last_line != (unsigned int)adjust-&gt;line_no) {</div><div class='del'>-			    line_info_table[k].line_no = last_line = adjust-&gt;line_no;</div><div class='del'>-			    line_info_table[k].position = pos;</div><div class='del'>-			    k++;</div><div class='add'>+			    line_info_table[line_info_index].line_no = last_line = adjust-&gt;line_no;</div><div class='add'>+			    line_info_table[line_info_index].position = code_index;</div><div class='add'>+			    line_info_index++;</div><div class='ctx'> 			}</div><div class='del'>-			generated_iseq[pos++] = BIN(nop);</div><div class='del'>-			generated_iseq[pos++] = BIN(nop);</div><div class='add'>+			generated_iseq[code_index++] = BIN(nop);</div><div class='add'>+			generated_iseq[code_index++] = BIN(nop);</div><div class='ctx'> 		    }</div><div class='ctx'> 		    else {</div><div class='del'>-			rb_bug("iseq_set_sequence: adjust bug");</div><div class='add'>+			compile_bug(iseq, adjust-&gt;line_no,</div><div class='add'>+				    "iseq_set_sequence: adjust bug %d &lt; %d",</div><div class='add'>+				    orig_sp, sp);</div><div class='ctx'> 		    }</div><div class='ctx'> 		}</div><div class='ctx'> 		break;</div><div class='hunk'>@@ -1678,13 +1843,13 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> 	list = list-&gt;next;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    iseq-&gt;iseq_encoded = (void *)generated_iseq;</div><div class='del'>-    iseq-&gt;iseq_size = pos;</div><div class='del'>-    iseq-&gt;stack_max = stack_max;</div><div class='add'>+    iseq-&gt;body-&gt;iseq_encoded = (void *)generated_iseq;</div><div class='add'>+    iseq-&gt;body-&gt;iseq_size = code_index;</div><div class='add'>+    iseq-&gt;body-&gt;stack_max = stack_max;</div><div class='ctx'> </div><div class='del'>-    REALLOC_N(line_info_table, struct iseq_line_info_entry, k);</div><div class='del'>-    iseq-&gt;line_info_table = line_info_table;</div><div class='del'>-    iseq-&gt;line_info_size = k;</div><div class='add'>+    REALLOC_N(line_info_table, struct iseq_line_info_entry, line_info_index);</div><div class='add'>+    iseq-&gt;body-&gt;line_info_table = line_info_table;</div><div class='add'>+    iseq-&gt;body-&gt;line_info_size = line_info_index;</div><div class='ctx'> </div><div class='ctx'>     return COMPILE_OK;</div><div class='ctx'> }</div><div class='hunk'>@@ -1705,50 +1870,53 @@ static int</div><div class='ctx'> iseq_set_exception_table(rb_iseq_t *iseq)</div><div class='ctx'> {</div><div class='ctx'>     const VALUE *tptr, *ptr;</div><div class='del'>-    int tlen, i;</div><div class='add'>+    unsigned int tlen, i;</div><div class='ctx'>     struct iseq_catch_table_entry *entry;</div><div class='ctx'> </div><div class='del'>-    tlen = (int)RARRAY_LEN(iseq-&gt;compile_data-&gt;catch_table_ary);</div><div class='del'>-    tptr = RARRAY_CONST_PTR(iseq-&gt;compile_data-&gt;catch_table_ary);</div><div class='add'>+    tlen = (int)RARRAY_LEN(ISEQ_COMPILE_DATA(iseq)-&gt;catch_table_ary);</div><div class='add'>+    tptr = RARRAY_CONST_PTR(ISEQ_COMPILE_DATA(iseq)-&gt;catch_table_ary);</div><div class='ctx'> </div><div class='del'>-    iseq-&gt;catch_table = 0;</div><div class='ctx'>     if (tlen &gt; 0) {</div><div class='del'>-	iseq-&gt;catch_table = xmalloc(iseq_catch_table_bytes(tlen));</div><div class='del'>-	iseq-&gt;catch_table-&gt;size = tlen;</div><div class='del'>-    }</div><div class='del'>-</div><div class='del'>-    if (iseq-&gt;catch_table) for (i = 0; i &lt; iseq-&gt;catch_table-&gt;size; i++) {</div><div class='del'>-	ptr = RARRAY_CONST_PTR(tptr[i]);</div><div class='del'>-	entry = &amp;iseq-&gt;catch_table-&gt;entries[i];</div><div class='del'>-	entry-&gt;type = (enum catch_type)(ptr[0] &amp; 0xffff);</div><div class='del'>-	entry-&gt;start = label_get_position((LABEL *)(ptr[1] &amp; ~1));</div><div class='del'>-	entry-&gt;end = label_get_position((LABEL *)(ptr[2] &amp; ~1));</div><div class='del'>-	entry-&gt;iseq = ptr[3];</div><div class='del'>-</div><div class='del'>-	/* register iseq as mark object */</div><div class='del'>-	if (entry-&gt;iseq != 0) {</div><div class='del'>-	    iseq_add_mark_object(iseq, entry-&gt;iseq);</div><div class='del'>-	}</div><div class='del'>-</div><div class='del'>-	/* stack depth */</div><div class='del'>-	if (ptr[4]) {</div><div class='del'>-	    LABEL *lobj = (LABEL *)(ptr[4] &amp; ~1);</div><div class='del'>-	    entry-&gt;cont = label_get_position(lobj);</div><div class='del'>-	    entry-&gt;sp = label_get_sp(lobj);</div><div class='del'>-</div><div class='del'>-	    /* TODO: Dirty Hack!  Fix me */</div><div class='del'>-	    if (entry-&gt;type == CATCH_TYPE_RESCUE ||</div><div class='del'>-		entry-&gt;type == CATCH_TYPE_BREAK ||</div><div class='del'>-		entry-&gt;type == CATCH_TYPE_NEXT) {</div><div class='del'>-		entry-&gt;sp--;</div><div class='add'>+	struct iseq_catch_table *table = xmalloc(iseq_catch_table_bytes(tlen));</div><div class='add'>+	table-&gt;size = tlen;</div><div class='add'>+</div><div class='add'>+	for (i = 0; i &lt; table-&gt;size; i++) {</div><div class='add'>+	    ptr = RARRAY_CONST_PTR(tptr[i]);</div><div class='add'>+	    entry = &amp;table-&gt;entries[i];</div><div class='add'>+	    entry-&gt;type = (enum catch_type)(ptr[0] &amp; 0xffff);</div><div class='add'>+	    entry-&gt;start = label_get_position((LABEL *)(ptr[1] &amp; ~1));</div><div class='add'>+	    entry-&gt;end = label_get_position((LABEL *)(ptr[2] &amp; ~1));</div><div class='add'>+	    entry-&gt;iseq = (rb_iseq_t *)ptr[3];</div><div class='add'>+</div><div class='add'>+	    /* register iseq as mark object */</div><div class='add'>+	    if (entry-&gt;iseq != 0) {</div><div class='add'>+		iseq_add_mark_object(iseq, (VALUE)entry-&gt;iseq);</div><div class='add'>+	    }</div><div class='add'>+</div><div class='add'>+	    /* stack depth */</div><div class='add'>+	    if (ptr[4]) {</div><div class='add'>+		LABEL *lobj = (LABEL *)(ptr[4] &amp; ~1);</div><div class='add'>+		entry-&gt;cont = label_get_position(lobj);</div><div class='add'>+		entry-&gt;sp = label_get_sp(lobj);</div><div class='add'>+</div><div class='add'>+		/* TODO: Dirty Hack!  Fix me */</div><div class='add'>+		if (entry-&gt;type == CATCH_TYPE_RESCUE ||</div><div class='add'>+		    entry-&gt;type == CATCH_TYPE_BREAK ||</div><div class='add'>+		    entry-&gt;type == CATCH_TYPE_NEXT) {</div><div class='add'>+		    entry-&gt;sp--;</div><div class='add'>+		}</div><div class='add'>+	    }</div><div class='add'>+	    else {</div><div class='add'>+		entry-&gt;cont = 0;</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='del'>-	else {</div><div class='del'>-	    entry-&gt;cont = 0;</div><div class='del'>-	}</div><div class='add'>+	iseq-&gt;body-&gt;catch_table = table;</div><div class='add'>+	RB_OBJ_WRITE(iseq, &amp;ISEQ_COMPILE_DATA(iseq)-&gt;catch_table_ary, 0); /* free */</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	iseq-&gt;body-&gt;catch_table = NULL;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    RB_OBJ_WRITE(iseq-&gt;self, &amp;iseq-&gt;compile_data-&gt;catch_table_ary, 0); /* free */</div><div class='ctx'>     return COMPILE_OK;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -1765,10 +1933,11 @@ static int</div><div class='ctx'> iseq_set_optargs_table(rb_iseq_t *iseq)</div><div class='ctx'> {</div><div class='ctx'>     int i;</div><div class='add'>+    VALUE *opt_table = (VALUE *)iseq-&gt;body-&gt;param.opt_table;</div><div class='ctx'> </div><div class='del'>-    if (iseq-&gt;param.flags.has_opt) {</div><div class='del'>-	for (i = 0; i &lt; iseq-&gt;param.opt_num + 1; i++) {</div><div class='del'>-	    iseq-&gt;param.opt_table[i] = label_get_position((LABEL *)iseq-&gt;param.opt_table[i]);</div><div class='add'>+    if (iseq-&gt;body-&gt;param.flags.has_opt) {</div><div class='add'>+	for (i = 0; i &lt; iseq-&gt;body-&gt;param.opt_num + 1; i++) {</div><div class='add'>+	    opt_table[i] = label_get_position((LABEL *)opt_table[i]);</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'>     return COMPILE_OK;</div><div class='hunk'>@@ -1782,7 +1951,7 @@ get_destination_insn(INSN *iobj)</div><div class='ctx'> </div><div class='ctx'>     list = lobj-&gt;link.next;</div><div class='ctx'>     while (list) {</div><div class='del'>-	if (list-&gt;type == ISEQ_ELEMENT_INSN || list-&gt;type == ISEQ_ELEMENT_ADJUST) {</div><div class='add'>+	if (IS_INSN(list) || IS_ADJUST(list)) {</div><div class='ctx'> 	    break;</div><div class='ctx'> 	}</div><div class='ctx'> 	list = list-&gt;next;</div><div class='hunk'>@@ -1796,7 +1965,7 @@ get_next_insn(INSN *iobj)</div><div class='ctx'>     LINK_ELEMENT *list = iobj-&gt;link.next;</div><div class='ctx'> </div><div class='ctx'>     while (list) {</div><div class='del'>-	if (list-&gt;type == ISEQ_ELEMENT_INSN || list-&gt;type == ISEQ_ELEMENT_ADJUST) {</div><div class='add'>+	if (IS_INSN(list) || IS_ADJUST(list)) {</div><div class='ctx'> 	    return list;</div><div class='ctx'> 	}</div><div class='ctx'> 	list = list-&gt;next;</div><div class='hunk'>@@ -1810,7 +1979,7 @@ get_prev_insn(INSN *iobj)</div><div class='ctx'>     LINK_ELEMENT *list = iobj-&gt;link.prev;</div><div class='ctx'> </div><div class='ctx'>     while (list) {</div><div class='del'>-	if (list-&gt;type == ISEQ_ELEMENT_INSN || list-&gt;type == ISEQ_ELEMENT_ADJUST) {</div><div class='add'>+	if (IS_INSN(list) || IS_ADJUST(list)) {</div><div class='ctx'> 	    return list;</div><div class='ctx'> 	}</div><div class='ctx'> 	list = list-&gt;prev;</div><div class='hunk'>@@ -1818,12 +1987,66 @@ get_prev_insn(INSN *iobj)</div><div class='ctx'>     return 0;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+static void</div><div class='add'>+unref_destination(INSN *iobj, int pos)</div><div class='add'>+{</div><div class='add'>+    LABEL *lobj = (LABEL *)OPERAND_AT(iobj, pos);</div><div class='add'>+    --lobj-&gt;refcnt;</div><div class='add'>+    if (!lobj-&gt;refcnt) REMOVE_ELEM(&amp;lobj-&gt;link);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+replace_destination(INSN *dobj, INSN *nobj)</div><div class='add'>+{</div><div class='add'>+    VALUE n = OPERAND_AT(nobj, 0);</div><div class='add'>+    LABEL *dl = (LABEL *)OPERAND_AT(dobj, 0);</div><div class='add'>+    LABEL *nl = (LABEL *)n;</div><div class='add'>+    --dl-&gt;refcnt;</div><div class='add'>+    ++nl-&gt;refcnt;</div><div class='add'>+    OPERAND_AT(dobj, 0) = n;</div><div class='add'>+    if (!dl-&gt;refcnt) REMOVE_ELEM(&amp;dl-&gt;link);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static int</div><div class='add'>+remove_unreachable_chunk(rb_iseq_t *iseq, LINK_ELEMENT *i)</div><div class='add'>+{</div><div class='add'>+    int removed = 0;</div><div class='add'>+    while (i) {</div><div class='add'>+	if (IS_INSN(i)) {</div><div class='add'>+	    struct rb_iseq_constant_body *body = iseq-&gt;body;</div><div class='add'>+	    VALUE insn = INSN_OF(i);</div><div class='add'>+	    int pos, len = insn_len(insn);</div><div class='add'>+	    for (pos = 0; pos &lt; len; ++pos) {</div><div class='add'>+		switch (insn_op_types(insn)[pos]) {</div><div class='add'>+		  case TS_OFFSET:</div><div class='add'>+		    unref_destination((INSN *)i, pos);</div><div class='add'>+		    break;</div><div class='add'>+		  case TS_CALLINFO:</div><div class='add'>+		    if (((struct rb_call_info *)OPERAND_AT(i, pos))-&gt;flag &amp; VM_CALL_KWARG)</div><div class='add'>+			--(body-&gt;ci_kw_size);</div><div class='add'>+		    else</div><div class='add'>+			--(body-&gt;ci_size);</div><div class='add'>+		    break;</div><div class='add'>+		}</div><div class='add'>+	    }</div><div class='add'>+	}</div><div class='add'>+	else if (IS_LABEL(i)) {</div><div class='add'>+	    if (((LABEL *)i)-&gt;refcnt &gt; 0) break;</div><div class='add'>+	}</div><div class='add'>+	else break;</div><div class='add'>+	REMOVE_ELEM(i);</div><div class='add'>+	removed = 1;</div><div class='add'>+	i = i-&gt;next;</div><div class='add'>+    }</div><div class='add'>+    return removed;</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> static int</div><div class='ctx'> iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcallopt)</div><div class='ctx'> {</div><div class='ctx'>     INSN *iobj = (INSN *)list;</div><div class='ctx'>   again:</div><div class='del'>-    if (iobj-&gt;insn_id == BIN(jump)) {</div><div class='add'>+    if (IS_INSN_ID(iobj, jump)) {</div><div class='ctx'> 	INSN *niobj, *diobj, *piobj;</div><div class='ctx'> 	/*</div><div class='ctx'> 	 *  useless jump elimination:</div><div class='hunk'>@@ -1845,15 +2068,16 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal</div><div class='ctx'> 	     * =&gt;</div><div class='ctx'> 	     *   LABEL:</div><div class='ctx'> 	     */</div><div class='add'>+	    unref_destination(iobj, 0);</div><div class='ctx'> 	    REMOVE_ELEM(&amp;iobj-&gt;link);</div><div class='ctx'> 	}</div><div class='del'>-	else if (iobj != diobj &amp;&amp; diobj-&gt;insn_id == BIN(jump)) {</div><div class='del'>-	    if (OPERAND_AT(iobj, 0) != OPERAND_AT(diobj, 0)) {</div><div class='del'>-		OPERAND_AT(iobj, 0) = OPERAND_AT(diobj, 0);</div><div class='del'>-		goto again;</div><div class='del'>-	    }</div><div class='add'>+	else if (iobj != diobj &amp;&amp; IS_INSN_ID(diobj, jump) &amp;&amp;</div><div class='add'>+		 OPERAND_AT(iobj, 0) != OPERAND_AT(diobj, 0)) {</div><div class='add'>+	    replace_destination(iobj, diobj);</div><div class='add'>+	    remove_unreachable_chunk(iseq, iobj-&gt;link.next);</div><div class='add'>+	    goto again;</div><div class='ctx'> 	}</div><div class='del'>-	else if (diobj-&gt;insn_id == BIN(leave)) {</div><div class='add'>+	else if (IS_INSN_ID(diobj, leave)) {</div><div class='ctx'> 	    /*</div><div class='ctx'> 	     *  jump LABEL</div><div class='ctx'> 	     *  ...</div><div class='hunk'>@@ -1865,14 +2089,14 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal</div><div class='ctx'> 	     * LABEL:</div><div class='ctx'> 	     *  leave</div><div class='ctx'> 	     */</div><div class='del'>-	    INSN *eiobj = new_insn_core(iseq, iobj-&gt;line_no, BIN(leave),</div><div class='del'>-					diobj-&gt;operand_size, diobj-&gt;operands);</div><div class='ctx'> 	    INSN *popiobj = new_insn_core(iseq, iobj-&gt;line_no,</div><div class='ctx'> 					  BIN(pop), 0, 0);</div><div class='ctx'> 	    /* replace */</div><div class='del'>-	    REPLACE_ELEM((LINK_ELEMENT *)iobj, (LINK_ELEMENT *)eiobj);</div><div class='del'>-	    INSERT_ELEM_NEXT((LINK_ELEMENT *)eiobj, (LINK_ELEMENT *)popiobj);</div><div class='del'>-	    iobj = popiobj;</div><div class='add'>+	    unref_destination(iobj, 0);</div><div class='add'>+	    iobj-&gt;insn_id = BIN(leave);</div><div class='add'>+	    iobj-&gt;operand_size = 0;</div><div class='add'>+	    INSERT_ELEM_NEXT(&amp;iobj-&gt;link, &amp;popiobj-&gt;link);</div><div class='add'>+	    goto again;</div><div class='ctx'> 	}</div><div class='ctx'> 	/*</div><div class='ctx'> 	 * useless jump elimination (if/unless destination):</div><div class='hunk'>@@ -1889,19 +2113,27 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal</div><div class='ctx'> 	 * L2:</div><div class='ctx'> 	 */</div><div class='ctx'> 	else if ((piobj = (INSN *)get_prev_insn(iobj)) != 0 &amp;&amp;</div><div class='del'>-		 (piobj-&gt;insn_id == BIN(branchif) ||</div><div class='del'>-		  piobj-&gt;insn_id == BIN(branchunless))) {</div><div class='add'>+		 (IS_INSN_ID(piobj, branchif) ||</div><div class='add'>+		  IS_INSN_ID(piobj, branchunless))) {</div><div class='ctx'> 	    if (niobj == (INSN *)get_destination_insn(piobj)) {</div><div class='del'>-		piobj-&gt;insn_id = (piobj-&gt;insn_id == BIN(branchif))</div><div class='add'>+		piobj-&gt;insn_id = (IS_INSN_ID(piobj, branchif))</div><div class='ctx'> 		  ? BIN(branchunless) : BIN(branchif);</div><div class='del'>-		OPERAND_AT(piobj, 0) = OPERAND_AT(iobj, 0);</div><div class='add'>+		replace_destination(piobj, iobj);</div><div class='ctx'> 		REMOVE_ELEM(&amp;iobj-&gt;link);</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='add'>+	else if (remove_unreachable_chunk(iseq, iobj-&gt;link.next)) {</div><div class='add'>+	    goto again;</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    if (IS_INSN_ID(iobj, leave)) {</div><div class='add'>+	remove_unreachable_chunk(iseq, iobj-&gt;link.next);</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    if (iobj-&gt;insn_id == BIN(branchif) ||</div><div class='del'>-	iobj-&gt;insn_id == BIN(branchunless)) {</div><div class='add'>+    if (IS_INSN_ID(iobj, branchif) ||</div><div class='add'>+	IS_INSN_ID(iobj, branchnil) ||</div><div class='add'>+	IS_INSN_ID(iobj, branchunless)) {</div><div class='ctx'> 	/*</div><div class='ctx'> 	 *   if L1</div><div class='ctx'> 	 *   ...</div><div class='hunk'>@@ -1911,12 +2143,124 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal</div><div class='ctx'> 	 *   if L2</div><div class='ctx'> 	 */</div><div class='ctx'> 	INSN *nobj = (INSN *)get_destination_insn(iobj);</div><div class='del'>-	if (nobj-&gt;insn_id == BIN(jump)) {</div><div class='del'>-	    OPERAND_AT(iobj, 0) = OPERAND_AT(nobj, 0);</div><div class='add'>+	INSN *pobj = (INSN *)iobj-&gt;link.prev;</div><div class='add'>+	int prev_dup = 0;</div><div class='add'>+	if (pobj) {</div><div class='add'>+	    if (!IS_INSN(&amp;pobj-&gt;link))</div><div class='add'>+		pobj = 0;</div><div class='add'>+	    else if (IS_INSN_ID(pobj, dup))</div><div class='add'>+		prev_dup = 1;</div><div class='add'>+	}</div><div class='add'>+</div><div class='add'>+	for (;;) {</div><div class='add'>+	    if (IS_INSN_ID(nobj, jump)) {</div><div class='add'>+		replace_destination(iobj, nobj);</div><div class='add'>+	    }</div><div class='add'>+	    else if (prev_dup &amp;&amp; IS_INSN_ID(nobj, dup) &amp;&amp;</div><div class='add'>+		     !!(nobj = (INSN *)nobj-&gt;link.next) &amp;&amp;</div><div class='add'>+		     /* basic blocks, with no labels in the middle */</div><div class='add'>+		     nobj-&gt;insn_id == iobj-&gt;insn_id) {</div><div class='add'>+		/*</div><div class='add'>+		 *   dup</div><div class='add'>+		 *   if L1</div><div class='add'>+		 *   ...</div><div class='add'>+		 * L1:</div><div class='add'>+		 *   dup</div><div class='add'>+		 *   if L2</div><div class='add'>+		 * =&gt;</div><div class='add'>+		 *   dup</div><div class='add'>+		 *   if L2</div><div class='add'>+		 *   ...</div><div class='add'>+		 * L1:</div><div class='add'>+		 *   dup</div><div class='add'>+		 *   if L2</div><div class='add'>+		 */</div><div class='add'>+		replace_destination(iobj, nobj);</div><div class='add'>+	    }</div><div class='add'>+	    else if (pobj) {</div><div class='add'>+		/*</div><div class='add'>+		 *   putnil</div><div class='add'>+		 *   if L1</div><div class='add'>+		 * =&gt;</div><div class='add'>+		 *   # nothing</div><div class='add'>+		 *</div><div class='add'>+		 *   putobject true</div><div class='add'>+		 *   if L1</div><div class='add'>+		 * =&gt;</div><div class='add'>+		 *   jump L1</div><div class='add'>+		 *</div><div class='add'>+		 *   putstring ".."</div><div class='add'>+		 *   if L1</div><div class='add'>+		 * =&gt;</div><div class='add'>+		 *   jump L1</div><div class='add'>+		 *</div><div class='add'>+		 *   putstring ".."</div><div class='add'>+		 *   dup</div><div class='add'>+		 *   if L1</div><div class='add'>+		 * =&gt;</div><div class='add'>+		 *   putstring ".."</div><div class='add'>+		 *   jump L1</div><div class='add'>+		 *</div><div class='add'>+		 */</div><div class='add'>+		int cond;</div><div class='add'>+		if (prev_dup &amp;&amp; IS_INSN(pobj-&gt;link.prev)) {</div><div class='add'>+		    pobj = (INSN *)pobj-&gt;link.prev;</div><div class='add'>+		}</div><div class='add'>+		if (IS_INSN_ID(pobj, putobject)) {</div><div class='add'>+		    cond = (IS_INSN_ID(iobj, branchif) ?</div><div class='add'>+			    OPERAND_AT(pobj, 0) != Qfalse :</div><div class='add'>+			    IS_INSN_ID(iobj, branchunless) ?</div><div class='add'>+			    OPERAND_AT(pobj, 0) == Qfalse :</div><div class='add'>+			    FALSE);</div><div class='add'>+		}</div><div class='add'>+		else if (IS_INSN_ID(pobj, putstring)) {</div><div class='add'>+		    cond = IS_INSN_ID(iobj, branchif);</div><div class='add'>+		}</div><div class='add'>+		else if (IS_INSN_ID(pobj, putnil)) {</div><div class='add'>+		    cond = !IS_INSN_ID(iobj, branchif);</div><div class='add'>+		}</div><div class='add'>+		else break;</div><div class='add'>+		REMOVE_ELEM(iobj-&gt;link.prev);</div><div class='add'>+		if (cond) {</div><div class='add'>+		    iobj-&gt;insn_id = BIN(jump);</div><div class='add'>+		    goto again;</div><div class='add'>+		}</div><div class='add'>+		else {</div><div class='add'>+		    unref_destination(iobj, 0);</div><div class='add'>+		    REMOVE_ELEM(&amp;iobj-&gt;link);</div><div class='add'>+		}</div><div class='add'>+		break;</div><div class='add'>+	    }</div><div class='add'>+	    else break;</div><div class='add'>+	    nobj = (INSN *)get_destination_insn(nobj);</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    if (do_tailcallopt &amp;&amp; iobj-&gt;insn_id == BIN(leave)) {</div><div class='add'>+    if (IS_INSN_ID(iobj, pop)) {</div><div class='add'>+	/*</div><div class='add'>+	 *  putself / putnil / putobject obj / putstring "..."</div><div class='add'>+	 *  pop</div><div class='add'>+	 * =&gt;</div><div class='add'>+	 *  # do nothing</div><div class='add'>+	 */</div><div class='add'>+	LINK_ELEMENT *prev = iobj-&gt;link.prev;</div><div class='add'>+	if (IS_INSN(prev)) {</div><div class='add'>+	    enum ruby_vminsn_type previ = ((INSN *)prev)-&gt;insn_id;</div><div class='add'>+	    if (previ == BIN(putobject) || previ == BIN(putnil) ||</div><div class='add'>+		previ == BIN(putself) || previ == BIN(putstring)) {</div><div class='add'>+		/* just push operand or static value and pop soon, no</div><div class='add'>+		 * side effects */</div><div class='add'>+		REMOVE_ELEM(prev);</div><div class='add'>+		REMOVE_ELEM(&amp;iobj-&gt;link);</div><div class='add'>+	    }</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    if (do_tailcallopt &amp;&amp;</div><div class='add'>+	(IS_INSN_ID(iobj, send) ||</div><div class='add'>+	 IS_INSN_ID(iobj, opt_aref_with) ||</div><div class='add'>+	 IS_INSN_ID(iobj, opt_aset_with) ||</div><div class='add'>+	 IS_INSN_ID(iobj, invokesuper))) {</div><div class='ctx'> 	/*</div><div class='ctx'> 	 *  send ...</div><div class='ctx'> 	 *  leave</div><div class='hunk'>@@ -1924,34 +2268,68 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal</div><div class='ctx'> 	 *  send ..., ... | VM_CALL_TAILCALL, ...</div><div class='ctx'> 	 *  leave # unreachable</div><div class='ctx'> 	 */</div><div class='del'>-	INSN *piobj = (INSN *)get_prev_insn((INSN *)list);</div><div class='del'>-	enum ruby_vminsn_type previ = piobj-&gt;insn_id;</div><div class='add'>+	INSN *piobj = NULL;</div><div class='add'>+	if (iobj-&gt;link.next) {</div><div class='add'>+	    LINK_ELEMENT *next = iobj-&gt;link.next;</div><div class='add'>+	    do {</div><div class='add'>+		if (!IS_INSN(next)) {</div><div class='add'>+		    next = next-&gt;next;</div><div class='add'>+		    continue;</div><div class='add'>+		}</div><div class='add'>+		switch (INSN_OF(next)) {</div><div class='add'>+		  case BIN(nop):</div><div class='add'>+		  /*case BIN(trace):*/</div><div class='add'>+		    next = next-&gt;next;</div><div class='add'>+		    break;</div><div class='add'>+		  case BIN(leave):</div><div class='add'>+		    piobj = iobj;</div><div class='add'>+		  default:</div><div class='add'>+		    next = NULL;</div><div class='add'>+		    break;</div><div class='add'>+		}</div><div class='add'>+	    } while (next);</div><div class='add'>+	}</div><div class='ctx'> </div><div class='del'>-	if (previ == BIN(send) || previ == BIN(opt_send_without_block) || previ == BIN(invokesuper)) {</div><div class='del'>-	    rb_call_info_t *ci = (rb_call_info_t *)piobj-&gt;operands[0];</div><div class='del'>-	    if (ci-&gt;blockiseq == 0) {</div><div class='add'>+	if (piobj) {</div><div class='add'>+	    struct rb_call_info *ci = (struct rb_call_info *)piobj-&gt;operands[0];</div><div class='add'>+	    if (IS_INSN_ID(piobj, send) || IS_INSN_ID(piobj, invokesuper)) {</div><div class='add'>+		if (piobj-&gt;operands[2] == 0) { /* no blockiseq */</div><div class='add'>+		    ci-&gt;flag |= VM_CALL_TAILCALL;</div><div class='add'>+		}</div><div class='add'>+	    }</div><div class='add'>+	    else {</div><div class='ctx'> 		ci-&gt;flag |= VM_CALL_TAILCALL;</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='add'>+</div><div class='add'>+    #define IS_TRACE_LINE(insn) \</div><div class='add'>+	(IS_INSN_ID(insn, trace) &amp;&amp; \</div><div class='add'>+	 OPERAND_AT(insn, 0) == INT2FIX(RUBY_EVENT_LINE))</div><div class='add'>+    if (IS_TRACE_LINE(iobj) &amp;&amp; iobj-&gt;link.prev &amp;&amp; IS_INSN(iobj-&gt;link.prev)) {</div><div class='add'>+	INSN *piobj = (INSN *)iobj-&gt;link.prev;</div><div class='add'>+	if (IS_TRACE_LINE(piobj)) {</div><div class='add'>+	    REMOVE_ELEM(iobj-&gt;link.prev);</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+</div><div class='ctx'>     return COMPILE_OK;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='ctx'> insn_set_specialized_instruction(rb_iseq_t *iseq, INSN *iobj, int insn_id)</div><div class='ctx'> {</div><div class='del'>-    int old_opsize = iobj-&gt;operand_size;</div><div class='ctx'>     iobj-&gt;insn_id = insn_id;</div><div class='ctx'>     iobj-&gt;operand_size = insn_len(insn_id) - 1;</div><div class='ctx'> </div><div class='del'>-    if (iobj-&gt;operand_size &gt; old_opsize) {</div><div class='add'>+    if (insn_id == BIN(opt_neq)) {</div><div class='ctx'> 	VALUE *old_operands = iobj-&gt;operands;</div><div class='del'>-	if (insn_id != BIN(opt_neq)) {</div><div class='del'>-	    rb_bug("insn_set_specialized_instruction: unknown insn: %d", insn_id);</div><div class='del'>-	}</div><div class='add'>+	iobj-&gt;operand_size = 4;</div><div class='ctx'> 	iobj-&gt;operands = (VALUE *)compile_data_alloc(iseq, iobj-&gt;operand_size * sizeof(VALUE));</div><div class='ctx'> 	iobj-&gt;operands[0] = old_operands[0];</div><div class='del'>-	iobj-&gt;operands[1] = (VALUE)new_callinfo(iseq, idEq, 1, 0, 0, NULL);</div><div class='add'>+	iobj-&gt;operands[1] = Qfalse; /* CALL_CACHE */</div><div class='add'>+	iobj-&gt;operands[2] = (VALUE)new_callinfo(iseq, idEq, 1, 0, NULL, FALSE);</div><div class='add'>+	iobj-&gt;operands[3] = Qfalse; /* CALL_CACHE */</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     return COMPILE_OK;</div><div class='hunk'>@@ -1960,8 +2338,32 @@ insn_set_specialized_instruction(rb_iseq_t *iseq, INSN *iobj, int insn_id)</div><div class='ctx'> static int</div><div class='ctx'> iseq_specialized_instruction(rb_iseq_t *iseq, INSN *iobj)</div><div class='ctx'> {</div><div class='del'>-    if (iobj-&gt;insn_id == BIN(send)) {</div><div class='del'>-	rb_call_info_t *ci = (rb_call_info_t *)OPERAND_AT(iobj, 0);</div><div class='add'>+    if (IS_INSN_ID(iobj, newarray) &amp;&amp; iobj-&gt;link.next &amp;&amp;</div><div class='add'>+	IS_INSN(iobj-&gt;link.next)) {</div><div class='add'>+	/*</div><div class='add'>+	 *   [a, b, ...].max/min -&gt; a, b, c, opt_newarray_max/min</div><div class='add'>+	 */</div><div class='add'>+	INSN *niobj = (INSN *)iobj-&gt;link.next;</div><div class='add'>+	if (IS_INSN_ID(niobj, send)) {</div><div class='add'>+	    struct rb_call_info *ci = (struct rb_call_info *)OPERAND_AT(niobj, 0);</div><div class='add'>+	    if ((ci-&gt;flag &amp; VM_CALL_ARGS_SIMPLE) &amp;&amp; ci-&gt;orig_argc == 0) {</div><div class='add'>+		switch (ci-&gt;mid) {</div><div class='add'>+		  case idMax:</div><div class='add'>+		    iobj-&gt;insn_id = BIN(opt_newarray_max);</div><div class='add'>+		    REMOVE_ELEM(&amp;niobj-&gt;link);</div><div class='add'>+		    return COMPILE_OK;</div><div class='add'>+		  case idMin:</div><div class='add'>+		    iobj-&gt;insn_id = BIN(opt_newarray_min);</div><div class='add'>+		    REMOVE_ELEM(&amp;niobj-&gt;link);</div><div class='add'>+		    return COMPILE_OK;</div><div class='add'>+		}</div><div class='add'>+	    }</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    if (IS_INSN_ID(iobj, send)) {</div><div class='add'>+	struct rb_call_info *ci = (struct rb_call_info *)OPERAND_AT(iobj, 0);</div><div class='add'>+	const rb_iseq_t *blockiseq = (rb_iseq_t *)OPERAND_AT(iobj, 2);</div><div class='ctx'> </div><div class='ctx'> #define SP_INSN(opt) insn_set_specialized_instruction(iseq, iobj, BIN(opt_##opt))</div><div class='ctx'> 	if (ci-&gt;flag &amp; VM_CALL_ARGS_SIMPLE) {</div><div class='hunk'>@@ -2000,8 +2402,9 @@ iseq_specialized_instruction(rb_iseq_t *iseq, INSN *iobj)</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='del'>-	if ((ci-&gt;flag &amp; VM_CALL_ARGS_BLOCKARG) == 0 &amp;&amp; ci-&gt;blockiseq == NULL) {</div><div class='add'>+	if ((ci-&gt;flag &amp; VM_CALL_ARGS_BLOCKARG) == 0 &amp;&amp; blockiseq == NULL) {</div><div class='ctx'> 	    iobj-&gt;insn_id = BIN(opt_send_without_block);</div><div class='add'>+	    iobj-&gt;operand_size = insn_len(iobj-&gt;insn_id) - 1;</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'> #undef SP_INSN</div><div class='hunk'>@@ -2009,20 +2412,37 @@ iseq_specialized_instruction(rb_iseq_t *iseq, INSN *iobj)</div><div class='ctx'>     return COMPILE_OK;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+static inline int</div><div class='add'>+tailcallable_p(rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    switch (iseq-&gt;body-&gt;type) {</div><div class='add'>+      case ISEQ_TYPE_RESCUE:</div><div class='add'>+      case ISEQ_TYPE_ENSURE:</div><div class='add'>+	/* rescue block can't tail call because of errinfo */</div><div class='add'>+	return FALSE;</div><div class='add'>+      default:</div><div class='add'>+	return TRUE;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> static int</div><div class='ctx'> iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> {</div><div class='ctx'>     LINK_ELEMENT *list;</div><div class='del'>-    const int do_peepholeopt = iseq-&gt;compile_data-&gt;option-&gt;peephole_optimization;</div><div class='del'>-    const int do_tailcallopt = iseq-&gt;compile_data-&gt;option-&gt;tailcall_optimization;</div><div class='del'>-    const int do_si = iseq-&gt;compile_data-&gt;option-&gt;specialized_instruction;</div><div class='del'>-    const int do_ou = iseq-&gt;compile_data-&gt;option-&gt;operands_unification;</div><div class='add'>+    const int do_peepholeopt = ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;peephole_optimization;</div><div class='add'>+    const int do_tailcallopt = tailcallable_p(iseq) &amp;&amp;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;tailcall_optimization;</div><div class='add'>+    const int do_si = ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;specialized_instruction;</div><div class='add'>+    const int do_ou = ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;operands_unification;</div><div class='add'>+    int rescue_level = 0;</div><div class='add'>+    int tailcallopt = do_tailcallopt;</div><div class='add'>+</div><div class='ctx'>     list = FIRST_ELEMENT(anchor);</div><div class='ctx'> </div><div class='ctx'>     while (list) {</div><div class='del'>-	if (list-&gt;type == ISEQ_ELEMENT_INSN) {</div><div class='add'>+	if (IS_INSN(list)) {</div><div class='ctx'> 	    if (do_peepholeopt) {</div><div class='del'>-		iseq_peephole_optimize(iseq, list, do_tailcallopt);</div><div class='add'>+		iseq_peephole_optimize(iseq, list, tailcallopt);</div><div class='ctx'> 	    }</div><div class='ctx'> 	    if (do_si) {</div><div class='ctx'> 		iseq_specialized_instruction(iseq, (INSN *)list);</div><div class='hunk'>@@ -2031,6 +2451,17 @@ iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> 		insn_operands_unification((INSN *)list);</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='add'>+	if (IS_LABEL(list)) {</div><div class='add'>+	    switch (((LABEL *)list)-&gt;rescued) {</div><div class='add'>+	      case LABEL_RESCUE_BEG:</div><div class='add'>+		rescue_level++;</div><div class='add'>+		tailcallopt = FALSE;</div><div class='add'>+		break;</div><div class='add'>+	      case LABEL_RESCUE_END:</div><div class='add'>+		if (!--rescue_level) tailcallopt = do_tailcallopt;</div><div class='add'>+		break;</div><div class='add'>+	    }</div><div class='add'>+	}</div><div class='ctx'> 	list = list-&gt;next;</div><div class='ctx'>     }</div><div class='ctx'>     return COMPILE_OK;</div><div class='hunk'>@@ -2088,7 +2519,7 @@ iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> </div><div class='ctx'>     list = FIRST_ELEMENT(anchor);</div><div class='ctx'>     while (list) {</div><div class='del'>-	if (list-&gt;type == ISEQ_ELEMENT_INSN) {</div><div class='add'>+	if (IS_INSN(list)) {</div><div class='ctx'> 	    iobj = (INSN *)list;</div><div class='ctx'> 	    id = iobj-&gt;insn_id;</div><div class='ctx'> 	    if (unified_insns_data[id] != 0) {</div><div class='hunk'>@@ -2097,7 +2528,7 @@ iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> 		    const int *unified = entry[j];</div><div class='ctx'> 		    LINK_ELEMENT *li = list-&gt;next;</div><div class='ctx'> 		    for (k = 2; k &lt; unified[1]; k++) {</div><div class='del'>-			if (li-&gt;type != ISEQ_ELEMENT_INSN ||</div><div class='add'>+			if (!IS_INSN(li) ||</div><div class='ctx'> 			    ((INSN *)li)-&gt;insn_id != unified[k]) {</div><div class='ctx'> 			    goto miss;</div><div class='ctx'> 			}</div><div class='hunk'>@@ -2154,9 +2585,9 @@ insn_set_sc_state(rb_iseq_t *iseq, INSN *iobj, int state)</div><div class='ctx'> 		dump_disasm_list((LINK_ELEMENT *)iobj);</div><div class='ctx'> 		dump_disasm_list((LINK_ELEMENT *)lobj);</div><div class='ctx'> 		printf("\n-- %d, %d\n", lobj-&gt;sc_state, nstate);</div><div class='del'>-		rb_compile_error(RSTRING_PTR(iseq-&gt;location.path), iobj-&gt;line_no,</div><div class='del'>-				 "insn_set_sc_state error\n");</div><div class='del'>-		return 0;</div><div class='add'>+		COMPILE_ERROR(iseq, iobj-&gt;line_no,</div><div class='add'>+			      "insn_set_sc_state error\n");</div><div class='add'>+		return COMPILE_NG;</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='hunk'>@@ -2256,8 +2687,9 @@ iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *anchor)</div><div class='ctx'> 			  case SCS_XX:</div><div class='ctx'> 			    goto normal_insn;</div><div class='ctx'> 			  default:</div><div class='del'>-			    rb_compile_error(RSTRING_PTR(iseq-&gt;location.path), iobj-&gt;line_no,</div><div class='del'>-					     "unreachable");</div><div class='add'>+			    COMPILE_ERROR(iseq, iobj-&gt;line_no,</div><div class='add'>+					  "unreachable");</div><div class='add'>+			    return COMPILE_NG;</div><div class='ctx'> 			}</div><div class='ctx'> 			/* remove useless pop */</div><div class='ctx'> 			REMOVE_ELEM(list);</div><div class='hunk'>@@ -2292,14 +2724,19 @@ compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int *cntp)</div><div class='ctx'> {</div><div class='ctx'>     NODE *list = node-&gt;nd_next;</div><div class='ctx'>     VALUE lit = node-&gt;nd_lit;</div><div class='add'>+    LINK_ELEMENT *first_lit = 0;</div><div class='ctx'>     int cnt = 0;</div><div class='ctx'> </div><div class='ctx'>     debugp_param("nd_lit", lit);</div><div class='ctx'>     if (!NIL_P(lit)) {</div><div class='ctx'> 	cnt++;</div><div class='del'>-	if (RB_TYPE_P(lit, T_STRING))</div><div class='del'>-	    lit = node-&gt;nd_lit = rb_fstring(node-&gt;nd_lit);</div><div class='add'>+	if (!RB_TYPE_P(lit, T_STRING)) {</div><div class='add'>+	    compile_bug(ERROR_ARGS "dstr: must be string: %s",</div><div class='add'>+			rb_builtin_type_name(TYPE(lit)));</div><div class='add'>+	}</div><div class='add'>+	lit = node-&gt;nd_lit = rb_fstring(lit);</div><div class='ctx'> 	ADD_INSN1(ret, nd_line(node), putobject, lit);</div><div class='add'>+	if (RSTRING_LEN(lit) == 0) first_lit = LAST_ELEMENT(ret);</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     while (list) {</div><div class='hunk'>@@ -2307,6 +2744,7 @@ compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int *cntp)</div><div class='ctx'> 	if (nd_type(node) == NODE_STR) {</div><div class='ctx'> 	    node-&gt;nd_lit = rb_fstring(node-&gt;nd_lit);</div><div class='ctx'> 	    ADD_INSN1(ret, nd_line(node), putobject, node-&gt;nd_lit);</div><div class='add'>+	    lit = Qnil;</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='ctx'> 	    COMPILE(ret, "each string", node);</div><div class='hunk'>@@ -2314,6 +2752,10 @@ compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int *cntp)</div><div class='ctx'> 	cnt++;</div><div class='ctx'> 	list = list-&gt;nd_next;</div><div class='ctx'>     }</div><div class='add'>+    if (NIL_P(lit) &amp;&amp; first_lit) {</div><div class='add'>+	REMOVE_ELEM(first_lit);</div><div class='add'>+	--cnt;</div><div class='add'>+    }</div><div class='ctx'>     *cntp = cnt;</div><div class='ctx'> </div><div class='ctx'>     return COMPILE_OK;</div><div class='hunk'>@@ -2365,6 +2807,18 @@ compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * cond,</div><div class='ctx'>       case NODE_LIT:		/* NODE_LIT is always not true */</div><div class='ctx'>       case NODE_TRUE:</div><div class='ctx'>       case NODE_STR:</div><div class='add'>+      case NODE_DSTR:</div><div class='add'>+      case NODE_XSTR:</div><div class='add'>+      case NODE_DXSTR:</div><div class='add'>+      case NODE_DREGX:</div><div class='add'>+      case NODE_DREGX_ONCE:</div><div class='add'>+      case NODE_DSYM:</div><div class='add'>+      case NODE_ARRAY:</div><div class='add'>+      case NODE_ZARRAY:</div><div class='add'>+      case NODE_HASH:</div><div class='add'>+      case NODE_LAMBDA:</div><div class='add'>+      case NODE_DEFN:</div><div class='add'>+      case NODE_DEFS:</div><div class='ctx'> 	/* printf("useless condition eliminate (%s)\n",  ruby_node_name(nd_type(cond))); */</div><div class='ctx'> 	ADD_INSNL(ret, nd_line(cond), jump, then_label);</div><div class='ctx'> 	break;</div><div class='hunk'>@@ -2383,7 +2837,7 @@ compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * cond,</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='del'>-compile_array_keyword_arg(rb_iseq_t *iseq, LINK_ANCHOR *ret, const NODE * const root_node, rb_call_info_kw_arg_t ** const kw_arg_ptr)</div><div class='add'>+compile_array_keyword_arg(rb_iseq_t *iseq, LINK_ANCHOR *ret, const NODE * const root_node, struct rb_call_info_kw_arg ** const kw_arg_ptr)</div><div class='ctx'> {</div><div class='ctx'>     if (kw_arg_ptr == NULL) return FALSE;</div><div class='ctx'> </div><div class='hunk'>@@ -2408,7 +2862,7 @@ compile_array_keyword_arg(rb_iseq_t *iseq, LINK_ANCHOR *ret, const NODE * const</div><div class='ctx'> 	node = root_node-&gt;nd_head;</div><div class='ctx'> 	{</div><div class='ctx'> 	    int len = (int)node-&gt;nd_alen / 2;</div><div class='del'>-	    rb_call_info_kw_arg_t *kw_arg  = (rb_call_info_kw_arg_t *)ruby_xmalloc(sizeof(rb_call_info_kw_arg_t) + sizeof(VALUE) * (len - 1));</div><div class='add'>+	    struct rb_call_info_kw_arg *kw_arg  = (struct rb_call_info_kw_arg *)ruby_xmalloc(sizeof(struct rb_call_info_kw_arg) + sizeof(VALUE) * (len - 1));</div><div class='ctx'> 	    VALUE *keywords = kw_arg-&gt;keywords;</div><div class='ctx'> 	    int i = 0;</div><div class='ctx'> 	    kw_arg-&gt;keyword_len = len;</div><div class='hunk'>@@ -2436,7 +2890,7 @@ enum compile_array_type_t {</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='ctx'> compile_array_(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE* node_root,</div><div class='del'>-	       enum compile_array_type_t type, rb_call_info_kw_arg_t **keywords_ptr, int poped)</div><div class='add'>+	       enum compile_array_type_t type, struct rb_call_info_kw_arg **keywords_ptr, int poped)</div><div class='ctx'> {</div><div class='ctx'>     NODE *node = node_root;</div><div class='ctx'>     int line = (int)nd_line(node);</div><div class='hunk'>@@ -2463,8 +2917,8 @@ compile_array_(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE* node_root,</div><div class='ctx'> 	    INIT_ANCHOR(anchor);</div><div class='ctx'> </div><div class='ctx'> 	    for (i=0; i&lt;max &amp;&amp; node; i++, len++, node = node-&gt;nd_next) {</div><div class='del'>-		if (CPDEBUG &gt; 0 &amp;&amp; nd_type(node) != NODE_ARRAY) {</div><div class='del'>-		    rb_bug("compile_array: This node is not NODE_ARRAY, but %s", ruby_node_name(nd_type(node)));</div><div class='add'>+		if (CPDEBUG &gt; 0) {</div><div class='add'>+		    EXPECT_NODE("compile_array", node, NODE_ARRAY);</div><div class='ctx'> 		}</div><div class='ctx'> </div><div class='ctx'> 		if (type != COMPILE_ARRAY_TYPE_ARRAY &amp;&amp; !node-&gt;nd_head) {</div><div class='hunk'>@@ -2612,6 +3066,12 @@ case_when_optimizable_literal(NODE * node)</div><div class='ctx'> 	}</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='add'>+      case NODE_NIL:</div><div class='add'>+	return Qnil;</div><div class='add'>+      case NODE_TRUE:</div><div class='add'>+	return Qtrue;</div><div class='add'>+      case NODE_FALSE:</div><div class='add'>+	return Qfalse;</div><div class='ctx'>       case NODE_STR:</div><div class='ctx'> 	return node-&gt;nd_lit = rb_fstring(node-&gt;nd_lit);</div><div class='ctx'>     }</div><div class='hunk'>@@ -2630,7 +3090,8 @@ when_vals(rb_iseq_t *iseq, LINK_ANCHOR *cond_seq, NODE *vals, LABEL *l1, int onl</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='ctx'> 	    if (rb_hash_lookup(literals, lit) != Qnil) {</div><div class='del'>-		rb_compile_warning(RSTRING_PTR(iseq-&gt;location.path), nd_line(val), "duplicated when clause is ignored");</div><div class='add'>+		rb_compile_warning(ruby_sourcefile, nd_line(val),</div><div class='add'>+				   "duplicated when clause is ignored");</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else {</div><div class='ctx'> 		rb_hash_aset(literals, lit, (VALUE)(l1) | 1);</div><div class='hunk'>@@ -2661,21 +3122,24 @@ compile_massign_lhs(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node)</div><div class='ctx'>     switch (nd_type(node)) {</div><div class='ctx'>       case NODE_ATTRASGN: {</div><div class='ctx'> 	INSN *iobj;</div><div class='del'>-	rb_call_info_t *ci;</div><div class='add'>+	struct rb_call_info *ci;</div><div class='ctx'> 	VALUE dupidx;</div><div class='add'>+	int line = nd_line(node);</div><div class='ctx'> </div><div class='ctx'> 	COMPILE_POPED(ret, "masgn lhs (NODE_ATTRASGN)", node);</div><div class='ctx'> </div><div class='del'>-	POP_ELEMENT(ret);        /* pop pop insn */</div><div class='del'>-	iobj = (INSN *)POP_ELEMENT(ret); /* pop send insn */</div><div class='del'>-	ci = (rb_call_info_t *)iobj-&gt;operands[0];</div><div class='del'>-	ci-&gt;orig_argc += 1; ci-&gt;argc = ci-&gt;orig_argc;</div><div class='add'>+	iobj = (INSN *)get_prev_insn((INSN *)LAST_ELEMENT(ret)); /* send insn */</div><div class='add'>+	ci = (struct rb_call_info *)iobj-&gt;operands[0];</div><div class='add'>+	ci-&gt;orig_argc += 1;</div><div class='ctx'> 	dupidx = INT2FIX(ci-&gt;orig_argc);</div><div class='ctx'> </div><div class='del'>-	ADD_INSN1(ret, nd_line(node), topn, dupidx);</div><div class='del'>-	ADD_ELEM(ret, (LINK_ELEMENT *)iobj);</div><div class='del'>-	ADD_INSN(ret, nd_line(node), pop);	/* result */</div><div class='del'>-	ADD_INSN(ret, nd_line(node), pop);	/* rhs    */</div><div class='add'>+	INSERT_BEFORE_INSN1(iobj, line, topn, dupidx);</div><div class='add'>+	if (ci-&gt;flag &amp; VM_CALL_ARGS_SPLAT) {</div><div class='add'>+	    --ci-&gt;orig_argc;</div><div class='add'>+	    INSERT_BEFORE_INSN1(iobj, line, newarray, INT2FIX(1));</div><div class='add'>+	    INSERT_BEFORE_INSN(iobj, line, concatarray);</div><div class='add'>+	}</div><div class='add'>+	ADD_INSN(ret, line, pop);	/* result */</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_MASGN: {</div><div class='hunk'>@@ -2772,6 +3236,17 @@ compile_massign_opt(rb_iseq_t *iseq, LINK_ANCHOR *ret,</div><div class='ctx'>     return 1;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+static void</div><div class='add'>+adjust_stack(rb_iseq_t *iseq, LINK_ANCHOR *ret, int line, int rlen, int llen)</div><div class='add'>+{</div><div class='add'>+    if (rlen &lt; llen) {</div><div class='add'>+	do {ADD_INSN(ret, line, putnil);} while (++rlen &lt; llen);</div><div class='add'>+    }</div><div class='add'>+    else if (rlen &gt; llen) {</div><div class='add'>+	do {ADD_INSN(ret, line, pop);} while (--rlen &gt; llen);</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> static int</div><div class='ctx'> compile_massign(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int poped)</div><div class='ctx'> {</div><div class='hunk'>@@ -2782,6 +3257,7 @@ compile_massign(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int poped)</div><div class='ctx'> </div><div class='ctx'>     if (!poped || splatn || !compile_massign_opt(iseq, ret, rhsn, lhsn)) {</div><div class='ctx'> 	int llen = 0;</div><div class='add'>+	int expand = 1;</div><div class='ctx'> 	DECL_ANCHOR(lhsseq);</div><div class='ctx'> </div><div class='ctx'> 	INIT_ANCHOR(lhsseq);</div><div class='hunk'>@@ -2797,9 +3273,35 @@ compile_massign(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int poped)</div><div class='ctx'> 	if (!poped) {</div><div class='ctx'> 	    ADD_INSN(ret, nd_line(node), dup);</div><div class='ctx'> 	}</div><div class='del'>-</div><div class='del'>-	ADD_INSN2(ret, nd_line(node), expandarray,</div><div class='del'>-		  INT2FIX(llen), INT2FIX(lhs_splat));</div><div class='add'>+	else if (!lhs_splat) {</div><div class='add'>+	    INSN *last = (INSN*)ret-&gt;last;</div><div class='add'>+	    if (IS_INSN(&amp;last-&gt;link) &amp;&amp;</div><div class='add'>+		IS_INSN_ID(last, newarray) &amp;&amp;</div><div class='add'>+		last-&gt;operand_size == 1) {</div><div class='add'>+		int rlen = FIX2INT(OPERAND_AT(last, 0));</div><div class='add'>+		/* special case: assign to aset or attrset */</div><div class='add'>+		if (llen == 2) {</div><div class='add'>+		    POP_ELEMENT(ret);</div><div class='add'>+		    adjust_stack(iseq, ret, nd_line(node), rlen, llen);</div><div class='add'>+		    ADD_INSN(ret, nd_line(node), swap);</div><div class='add'>+		    expand = 0;</div><div class='add'>+		}</div><div class='add'>+		else if (llen &gt; 2 &amp;&amp; llen != rlen) {</div><div class='add'>+		    POP_ELEMENT(ret);</div><div class='add'>+		    adjust_stack(iseq, ret, nd_line(node), rlen, llen);</div><div class='add'>+		    ADD_INSN1(ret, nd_line(node), reverse, INT2FIX(llen));</div><div class='add'>+		    expand = 0;</div><div class='add'>+		}</div><div class='add'>+		else if (llen &gt; 2) {</div><div class='add'>+		    last-&gt;insn_id = BIN(reverse);</div><div class='add'>+		    expand = 0;</div><div class='add'>+		}</div><div class='add'>+	    }</div><div class='add'>+	}</div><div class='add'>+	if (expand) {</div><div class='add'>+	    ADD_INSN2(ret, nd_line(node), expandarray,</div><div class='add'>+		      INT2FIX(llen), INT2FIX(lhs_splat));</div><div class='add'>+	}</div><div class='ctx'> 	ADD_SEQ(ret, lhsseq);</div><div class='ctx'> </div><div class='ctx'> 	if (lhs_splat) {</div><div class='hunk'>@@ -3071,11 +3573,13 @@ defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret,</div><div class='ctx'> 	int line = nd_line(node);</div><div class='ctx'> 	LABEL *lstart = NEW_LABEL(line);</div><div class='ctx'> 	LABEL *lend = NEW_LABEL(line);</div><div class='del'>-	VALUE rescue = NEW_CHILD_ISEQVAL(NEW_NIL(),</div><div class='del'>-					 rb_str_concat(rb_str_new2</div><div class='del'>-						       ("defined guard in "),</div><div class='del'>-						       iseq-&gt;location.label),</div><div class='del'>-					 ISEQ_TYPE_DEFINED_GUARD, 0);</div><div class='add'>+	const rb_iseq_t *rescue = NEW_CHILD_ISEQ(NEW_NIL(),</div><div class='add'>+						 rb_str_concat(rb_str_new2</div><div class='add'>+							       ("defined guard in "),</div><div class='add'>+							       iseq-&gt;body-&gt;location.label),</div><div class='add'>+						 ISEQ_TYPE_DEFINED_GUARD, 0);</div><div class='add'>+	lstart-&gt;rescued = LABEL_RESCUE_BEG;</div><div class='add'>+	lend-&gt;rescued = LABEL_RESCUE_END;</div><div class='ctx'> 	APPEND_LABEL(ret, lcur, lstart);</div><div class='ctx'> 	ADD_LABEL(ret, lend);</div><div class='ctx'> 	ADD_CATCH_ENTRY(CATCH_TYPE_RESCUE, lstart, lend, rescue, lfinish[1]);</div><div class='hunk'>@@ -3084,25 +3588,25 @@ defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret,</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static VALUE</div><div class='del'>-make_name_for_block(rb_iseq_t *iseq)</div><div class='add'>+make_name_for_block(const rb_iseq_t *orig_iseq)</div><div class='ctx'> {</div><div class='ctx'>     int level = 1;</div><div class='del'>-    rb_iseq_t *ip = iseq;</div><div class='add'>+    const rb_iseq_t *iseq = orig_iseq;</div><div class='ctx'> </div><div class='del'>-    if (iseq-&gt;parent_iseq != 0) {</div><div class='del'>-	while (ip-&gt;local_iseq != ip) {</div><div class='del'>-	    if (ip-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='add'>+    if (orig_iseq-&gt;body-&gt;parent_iseq != 0) {</div><div class='add'>+	while (orig_iseq-&gt;body-&gt;local_iseq != iseq) {</div><div class='add'>+	    if (iseq-&gt;body-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='ctx'> 		level++;</div><div class='ctx'> 	    }</div><div class='del'>-	    ip = ip-&gt;parent_iseq;</div><div class='add'>+	    iseq = iseq-&gt;body-&gt;parent_iseq;</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     if (level == 1) {</div><div class='del'>-	return rb_sprintf("block in %"PRIsVALUE, ip-&gt;location.label);</div><div class='add'>+	return rb_sprintf("block in %"PRIsVALUE, iseq-&gt;body-&gt;location.label);</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-	return rb_sprintf("block (%d levels) in %"PRIsVALUE, level, ip-&gt;location.label);</div><div class='add'>+	return rb_sprintf("block (%d levels) in %"PRIsVALUE, level, iseq-&gt;body-&gt;location.label);</div><div class='ctx'>     }</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -3112,9 +3616,9 @@ push_ensure_entry(rb_iseq_t *iseq,</div><div class='ctx'> 		  struct ensure_range *er, NODE *node)</div><div class='ctx'> {</div><div class='ctx'>     enl-&gt;ensure_node = node;</div><div class='del'>-    enl-&gt;prev = iseq-&gt;compile_data-&gt;ensure_node_stack;	/* prev */</div><div class='add'>+    enl-&gt;prev = ISEQ_COMPILE_DATA(iseq)-&gt;ensure_node_stack;	/* prev */</div><div class='ctx'>     enl-&gt;erange = er;</div><div class='del'>-    iseq-&gt;compile_data-&gt;ensure_node_stack = enl;</div><div class='add'>+    ISEQ_COMPILE_DATA(iseq)-&gt;ensure_node_stack = enl;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static void</div><div class='hunk'>@@ -3139,7 +3643,7 @@ static void</div><div class='ctx'> add_ensure_iseq(LINK_ANCHOR *ret, rb_iseq_t *iseq, int is_return)</div><div class='ctx'> {</div><div class='ctx'>     struct iseq_compile_data_ensure_node_stack *enlp =</div><div class='del'>-	iseq-&gt;compile_data-&gt;ensure_node_stack;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;ensure_node_stack;</div><div class='ctx'>     struct iseq_compile_data_ensure_node_stack *prev_enlp = enlp;</div><div class='ctx'>     DECL_ANCHOR(ensure);</div><div class='ctx'> </div><div class='hunk'>@@ -3153,7 +3657,7 @@ add_ensure_iseq(LINK_ANCHOR *ret, rb_iseq_t *iseq, int is_return)</div><div class='ctx'> </div><div class='ctx'> 	    add_ensure_range(iseq, enlp-&gt;erange, lstart, lend);</div><div class='ctx'> </div><div class='del'>-	    iseq-&gt;compile_data-&gt;ensure_node_stack = enlp-&gt;prev;</div><div class='add'>+	    ISEQ_COMPILE_DATA(iseq)-&gt;ensure_node_stack = enlp-&gt;prev;</div><div class='ctx'> 	    ADD_LABEL(ensure_part, lstart);</div><div class='ctx'> 	    COMPILE_POPED(ensure_part, "ensure part", enlp-&gt;ensure_node);</div><div class='ctx'> 	    ADD_LABEL(ensure_part, lend);</div><div class='hunk'>@@ -3166,12 +3670,12 @@ add_ensure_iseq(LINK_ANCHOR *ret, rb_iseq_t *iseq, int is_return)</div><div class='ctx'> 	}</div><div class='ctx'> 	enlp = enlp-&gt;prev;</div><div class='ctx'>     }</div><div class='del'>-    iseq-&gt;compile_data-&gt;ensure_node_stack = prev_enlp;</div><div class='add'>+    ISEQ_COMPILE_DATA(iseq)-&gt;ensure_node_stack = prev_enlp;</div><div class='ctx'>     ADD_SEQ(ret, ensure);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static VALUE</div><div class='del'>-setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, unsigned int *flag, rb_call_info_kw_arg_t **keywords)</div><div class='add'>+setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, unsigned int *flag, struct rb_call_info_kw_arg **keywords)</div><div class='ctx'> {</div><div class='ctx'>     VALUE argc = INT2FIX(0);</div><div class='ctx'>     int nsplat = 0;</div><div class='hunk'>@@ -3229,7 +3733,7 @@ setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, unsigned int *flag, r</div><div class='ctx'> 		break;</div><div class='ctx'> 	    }</div><div class='ctx'> 	  default: {</div><div class='del'>-	    rb_bug("setup_arg: unknown node: %s\n", ruby_node_name(nd_type(argn)));</div><div class='add'>+	    UNKNOWN_NODE("setup_arg", argn);</div><div class='ctx'> 	  }</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='hunk'>@@ -3256,13 +3760,73 @@ build_postexe_iseq(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *body)</div><div class='ctx'> {</div><div class='ctx'>     int line = nd_line(body);</div><div class='ctx'>     VALUE argc = INT2FIX(0);</div><div class='del'>-    VALUE block = NEW_CHILD_ISEQVAL(body, make_name_for_block(iseq-&gt;parent_iseq), ISEQ_TYPE_BLOCK, line);</div><div class='add'>+    const rb_iseq_t *block = NEW_CHILD_ISEQ(body, make_name_for_block(iseq-&gt;body-&gt;parent_iseq), ISEQ_TYPE_BLOCK, line);</div><div class='add'>+</div><div class='ctx'>     ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));</div><div class='ctx'>     ADD_CALL_WITH_BLOCK(ret, line, id_core_set_postexe, argc, block);</div><div class='ctx'>     iseq_set_local_table(iseq, 0);</div><div class='ctx'>     return Qnil;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+static void</div><div class='add'>+compile_named_capture_assign(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node)</div><div class='add'>+{</div><div class='add'>+    NODE *vars;</div><div class='add'>+    LINK_ELEMENT *last;</div><div class='add'>+    int line = nd_line(node);</div><div class='add'>+    LABEL *fail_label = NEW_LABEL(line), *end_label = NEW_LABEL(line);</div><div class='add'>+</div><div class='add'>+#if !(defined(NAMED_CAPTURE_BY_SVAR) &amp;&amp; NAMED_CAPTURE_BY_SVAR-0)</div><div class='add'>+    ADD_INSN1(ret, line, getglobal, ((VALUE)rb_global_entry(idBACKREF) | 1));</div><div class='add'>+#else</div><div class='add'>+    ADD_INSN2(ret, line, getspecial, INT2FIX(1) /* '~' */, INT2FIX(0));</div><div class='add'>+#endif</div><div class='add'>+    ADD_INSN(ret, line, dup);</div><div class='add'>+    ADD_INSNL(ret, line, branchunless, fail_label);</div><div class='add'>+</div><div class='add'>+    for (vars = node; vars; vars = vars-&gt;nd_next) {</div><div class='add'>+	INSN *cap;</div><div class='add'>+	if (vars-&gt;nd_next) {</div><div class='add'>+	    ADD_INSN(ret, line, dup);</div><div class='add'>+	}</div><div class='add'>+	last = ret-&gt;last;</div><div class='add'>+	COMPILE_POPED(ret, "capture", vars-&gt;nd_head);</div><div class='add'>+	last = last-&gt;next; /* putobject :var */</div><div class='add'>+	cap = new_insn_send(iseq, line, idAREF, INT2FIX(1),</div><div class='add'>+			    NULL, INT2FIX(0), NULL);</div><div class='add'>+	INSERT_ELEM_PREV(last-&gt;next, (LINK_ELEMENT *)cap);</div><div class='add'>+#if !defined(NAMED_CAPTURE_SINGLE_OPT) || NAMED_CAPTURE_SINGLE_OPT-0</div><div class='add'>+	if (!vars-&gt;nd_next &amp;&amp; vars == node) {</div><div class='add'>+	    /* only one name */</div><div class='add'>+	    DECL_ANCHOR(nom);</div><div class='add'>+</div><div class='add'>+	    INIT_ANCHOR(nom);</div><div class='add'>+	    ADD_INSNL(nom, line, jump, end_label);</div><div class='add'>+	    ADD_LABEL(nom, fail_label);</div><div class='add'>+# if 0				/* $~ must be MatchData or nil */</div><div class='add'>+	    ADD_INSN(nom, line, pop);</div><div class='add'>+	    ADD_INSN(nom, line, putnil);</div><div class='add'>+# endif</div><div class='add'>+	    ADD_LABEL(nom, end_label);</div><div class='add'>+	    (nom-&gt;last-&gt;next = cap-&gt;link.next)-&gt;prev = nom-&gt;last;</div><div class='add'>+	    (cap-&gt;link.next = nom-&gt;anchor.next)-&gt;prev = &amp;cap-&gt;link;</div><div class='add'>+	    return;</div><div class='add'>+	}</div><div class='add'>+#endif</div><div class='add'>+    }</div><div class='add'>+    ADD_INSNL(ret, line, jump, end_label);</div><div class='add'>+    ADD_LABEL(ret, fail_label);</div><div class='add'>+    ADD_INSN(ret, line, pop);</div><div class='add'>+    for (vars = node; vars; vars = vars-&gt;nd_next) {</div><div class='add'>+	last = ret-&gt;last;</div><div class='add'>+	COMPILE_POPED(ret, "capture", vars-&gt;nd_head);</div><div class='add'>+	last = last-&gt;next; /* putobject :var */</div><div class='add'>+	((INSN*)last)-&gt;insn_id = BIN(putnil);</div><div class='add'>+	((INSN*)last)-&gt;operand_size = 0;</div><div class='add'>+    }</div><div class='add'>+    ADD_LABEL(ret, end_label);</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> /**</div><div class='ctx'>   compile each node</div><div class='ctx'> </div><div class='hunk'>@@ -3280,19 +3844,19 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'>     if (node == 0) {</div><div class='ctx'> 	if (!poped) {</div><div class='ctx'> 	    debugs("node: NODE_NIL(implicit)\n");</div><div class='del'>-	    ADD_INSN(ret, iseq-&gt;compile_data-&gt;last_line, putnil);</div><div class='add'>+	    ADD_INSN(ret, ISEQ_COMPILE_DATA(iseq)-&gt;last_line, putnil);</div><div class='ctx'> 	}</div><div class='ctx'> 	return COMPILE_OK;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     line = (int)nd_line(node);</div><div class='ctx'> </div><div class='del'>-    if (iseq-&gt;compile_data-&gt;last_line == line) {</div><div class='add'>+    if (ISEQ_COMPILE_DATA(iseq)-&gt;last_line == line) {</div><div class='ctx'> 	/* ignore */</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='ctx'> 	if (node-&gt;flags &amp; NODE_FL_NEWLINE) {</div><div class='del'>-	    iseq-&gt;compile_data-&gt;last_line = line;</div><div class='add'>+	    ISEQ_COMPILE_DATA(iseq)-&gt;last_line = line;</div><div class='ctx'> 	    ADD_TRACE(ret, line, RUBY_EVENT_LINE);</div><div class='ctx'> 	    saved_last_element = ret-&gt;last;</div><div class='ctx'> 	}</div><div class='hunk'>@@ -3372,7 +3936,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	line = nd_line(node);</div><div class='ctx'> </div><div class='ctx'> 	if (type != NODE_WHEN) {</div><div class='del'>-	    COMPILE_ERROR((ERROR_ARGS "NODE_CASE: unexpected node. must be NODE_WHEN, but %s", ruby_node_name(type)));</div><div class='add'>+	    COMPILE_ERROR(ERROR_ARGS "NODE_CASE: unexpected node. must be NODE_WHEN, but %s", ruby_node_name(type));</div><div class='add'>+	    debug_node_end();</div><div class='add'>+	    return COMPILE_NG;</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	endlabel = NEW_LABEL(line);</div><div class='hunk'>@@ -3405,12 +3971,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 		    ADD_INSNL(cond_seq, nd_line(vals), branchif, l1);</div><div class='ctx'> 		    break;</div><div class='ctx'> 		  default:</div><div class='del'>-		    rb_bug("NODE_CASE: unknown node (%s)",</div><div class='del'>-			   ruby_node_name(nd_type(vals)));</div><div class='add'>+		    UNKNOWN_NODE("NODE_CASE", vals);</div><div class='ctx'> 		}</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else {</div><div class='del'>-		rb_bug("NODE_CASE: must be NODE_ARRAY, but 0");</div><div class='add'>+		EXPECT_NODE_NONULL("NODE_CASE", node, NODE_ARRAY);</div><div class='ctx'> 	    }</div><div class='ctx'> </div><div class='ctx'> 	    node = node-&gt;nd_next;</div><div class='hunk'>@@ -3442,6 +4007,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> </div><div class='ctx'> 	    ADD_INSN(ret, nd_line(tempnode), dup);</div><div class='ctx'> 	    ADD_INSN2(ret, nd_line(tempnode), opt_case_dispatch, literals, elselabel);</div><div class='add'>+	    LABEL_REF(elselabel);</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	ADD_SEQ(ret, cond_seq);</div><div class='hunk'>@@ -3467,7 +4033,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> </div><div class='ctx'> 	    vals = node-&gt;nd_head;</div><div class='ctx'> 	    if (!vals) {</div><div class='del'>-		rb_bug("NODE_WHEN: must be NODE_ARRAY, but 0");</div><div class='add'>+		compile_bug(ERROR_ARGS "NODE_WHEN: must be NODE_ARRAY, but 0");</div><div class='ctx'> 	    }</div><div class='ctx'> 	    switch (nd_type(vals)) {</div><div class='ctx'> 	      case NODE_ARRAY:</div><div class='hunk'>@@ -3487,8 +4053,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 		ADD_INSNL(ret, nd_line(vals), branchif, l1);</div><div class='ctx'> 		break;</div><div class='ctx'> 	      default:</div><div class='del'>-		rb_bug("NODE_WHEN: unknown node (%s)",</div><div class='del'>-		       ruby_node_name(nd_type(vals)));</div><div class='add'>+		UNKNOWN_NODE("NODE_WHEN", vals);</div><div class='ctx'> 	    }</div><div class='ctx'> 	    node = node-&gt;nd_next;</div><div class='ctx'> 	}</div><div class='hunk'>@@ -3504,22 +4069,23 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'>       case NODE_OPT_N:</div><div class='ctx'>       case NODE_WHILE:</div><div class='ctx'>       case NODE_UNTIL:{</div><div class='del'>-	LABEL *prev_start_label = iseq-&gt;compile_data-&gt;start_label;</div><div class='del'>-	LABEL *prev_end_label = iseq-&gt;compile_data-&gt;end_label;</div><div class='del'>-	LABEL *prev_redo_label = iseq-&gt;compile_data-&gt;redo_label;</div><div class='del'>-	int prev_loopval_popped = iseq-&gt;compile_data-&gt;loopval_popped;</div><div class='add'>+	LABEL *prev_start_label = ISEQ_COMPILE_DATA(iseq)-&gt;start_label;</div><div class='add'>+	LABEL *prev_end_label = ISEQ_COMPILE_DATA(iseq)-&gt;end_label;</div><div class='add'>+	LABEL *prev_redo_label = ISEQ_COMPILE_DATA(iseq)-&gt;redo_label;</div><div class='add'>+	int prev_loopval_popped = ISEQ_COMPILE_DATA(iseq)-&gt;loopval_popped;</div><div class='ctx'> </div><div class='ctx'> 	struct iseq_compile_data_ensure_node_stack enl;</div><div class='ctx'> </div><div class='del'>-	LABEL *next_label = iseq-&gt;compile_data-&gt;start_label = NEW_LABEL(line);	/* next  */</div><div class='del'>-	LABEL *redo_label = iseq-&gt;compile_data-&gt;redo_label = NEW_LABEL(line);	/* redo  */</div><div class='del'>-	LABEL *break_label = iseq-&gt;compile_data-&gt;end_label = NEW_LABEL(line);	/* break */</div><div class='add'>+	LABEL *next_label = ISEQ_COMPILE_DATA(iseq)-&gt;start_label = NEW_LABEL(line);	/* next  */</div><div class='add'>+	LABEL *redo_label = ISEQ_COMPILE_DATA(iseq)-&gt;redo_label = NEW_LABEL(line);	/* redo  */</div><div class='add'>+	LABEL *break_label = ISEQ_COMPILE_DATA(iseq)-&gt;end_label = NEW_LABEL(line);	/* break */</div><div class='ctx'> 	LABEL *end_label = NEW_LABEL(line);</div><div class='add'>+	LABEL *adjust_label = NEW_LABEL(line);</div><div class='ctx'> </div><div class='ctx'> 	LABEL *next_catch_label = NEW_LABEL(line);</div><div class='ctx'> 	LABEL *tmp_label = NULL;</div><div class='ctx'> </div><div class='del'>-	iseq-&gt;compile_data-&gt;loopval_popped = 0;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;loopval_popped = 0;</div><div class='ctx'> 	push_ensure_entry(iseq, &amp;enl, 0, 0);</div><div class='ctx'> </div><div class='ctx'> 	if (type == NODE_OPT_N || node-&gt;nd_state == 1) {</div><div class='hunk'>@@ -3529,6 +4095,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    tmp_label = NEW_LABEL(line);</div><div class='ctx'> 	    ADD_INSNL(ret, line, jump, tmp_label);</div><div class='ctx'> 	}</div><div class='add'>+	ADD_LABEL(ret, adjust_label);</div><div class='ctx'> 	ADD_INSN(ret, line, putnil);</div><div class='ctx'> 	ADD_LABEL(ret, next_catch_label);</div><div class='ctx'> 	ADD_INSN(ret, line, pop);</div><div class='hunk'>@@ -3556,10 +4123,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	ADD_LABEL(ret, end_label);</div><div class='add'>+	ADD_ADJUST_RESTORE(ret, adjust_label);</div><div class='ctx'> </div><div class='ctx'> 	if (node-&gt;nd_state == Qundef) {</div><div class='ctx'> 	    /* ADD_INSN(ret, line, putundef); */</div><div class='del'>-	    rb_bug("unsupported: putundef");</div><div class='add'>+	    compile_bug(ERROR_ARGS "unsupported: putundef");</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='ctx'> 	    ADD_INSN(ret, line, putnil);</div><div class='hunk'>@@ -3576,18 +4144,44 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	ADD_CATCH_ENTRY(CATCH_TYPE_NEXT, redo_label, break_label, 0,</div><div class='ctx'> 			next_catch_label);</div><div class='ctx'> 	ADD_CATCH_ENTRY(CATCH_TYPE_REDO, redo_label, break_label, 0,</div><div class='del'>-			iseq-&gt;compile_data-&gt;redo_label);</div><div class='add'>+			ISEQ_COMPILE_DATA(iseq)-&gt;redo_label);</div><div class='ctx'> </div><div class='del'>-	iseq-&gt;compile_data-&gt;start_label = prev_start_label;</div><div class='del'>-	iseq-&gt;compile_data-&gt;end_label = prev_end_label;</div><div class='del'>-	iseq-&gt;compile_data-&gt;redo_label = prev_redo_label;</div><div class='del'>-	iseq-&gt;compile_data-&gt;loopval_popped = prev_loopval_popped;</div><div class='del'>-	iseq-&gt;compile_data-&gt;ensure_node_stack = iseq-&gt;compile_data-&gt;ensure_node_stack-&gt;prev;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;start_label = prev_start_label;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;end_label = prev_end_label;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;redo_label = prev_redo_label;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;loopval_popped = prev_loopval_popped;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;ensure_node_stack = ISEQ_COMPILE_DATA(iseq)-&gt;ensure_node_stack-&gt;prev;</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='del'>-      case NODE_ITER:</div><div class='del'>-      case NODE_FOR:{</div><div class='del'>-	VALUE prevblock = iseq-&gt;compile_data-&gt;current_block;</div><div class='add'>+      case NODE_FOR:</div><div class='add'>+	if (node-&gt;nd_var) {</div><div class='add'>+	    /* massign to var in "for"</div><div class='add'>+	     * args.length == 1 &amp;&amp; Array === (tmp = args[0]) ? tmp : args</div><div class='add'>+	     */</div><div class='add'>+	    NODE *var = node-&gt;nd_var;</div><div class='add'>+	    LABEL *not_single = NEW_LABEL(nd_line(var));</div><div class='add'>+	    LABEL *not_ary = NEW_LABEL(nd_line(var));</div><div class='add'>+	    COMPILE(ret, "for var", var);</div><div class='add'>+	    ADD_INSN(ret, line, dup);</div><div class='add'>+	    ADD_CALL(ret, line, idLength, INT2FIX(0));</div><div class='add'>+	    ADD_INSN1(ret, line, putobject, INT2FIX(1));</div><div class='add'>+	    ADD_CALL(ret, line, idEq, INT2FIX(1));</div><div class='add'>+	    ADD_INSNL(ret, line, branchunless, not_single);</div><div class='add'>+	    ADD_INSN(ret, line, dup);</div><div class='add'>+	    ADD_INSN1(ret, line, putobject, INT2FIX(0));</div><div class='add'>+	    ADD_CALL(ret, line, idAREF, INT2FIX(1));</div><div class='add'>+	    ADD_INSN1(ret, line, putobject, rb_cArray);</div><div class='add'>+	    ADD_INSN1(ret, line, topn, INT2FIX(1));</div><div class='add'>+	    ADD_CALL(ret, line, idEqq, INT2FIX(1));</div><div class='add'>+	    ADD_INSNL(ret, line, branchunless, not_ary);</div><div class='add'>+	    ADD_INSN(ret, line, swap);</div><div class='add'>+	    ADD_LABEL(ret, not_ary);</div><div class='add'>+	    ADD_INSN(ret, line, pop);</div><div class='add'>+	    ADD_LABEL(ret, not_single);</div><div class='add'>+	    break;</div><div class='add'>+	}</div><div class='add'>+      case NODE_ITER:{</div><div class='add'>+	const rb_iseq_t *prevblock = ISEQ_COMPILE_DATA(iseq)-&gt;current_block;</div><div class='ctx'> 	LABEL *retry_label = NEW_LABEL(line);</div><div class='ctx'> 	LABEL *retry_end_l = NEW_LABEL(line);</div><div class='ctx'> </div><div class='hunk'>@@ -3595,16 +4189,13 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	if (nd_type(node) == NODE_FOR) {</div><div class='ctx'> 	    COMPILE(ret, "iter caller (for)", node-&gt;nd_iter);</div><div class='ctx'> </div><div class='del'>-	    iseq-&gt;compile_data-&gt;current_block =</div><div class='del'>-		NEW_CHILD_ISEQVAL(node-&gt;nd_body, make_name_for_block(iseq),</div><div class='del'>-				  ISEQ_TYPE_BLOCK, line);</div><div class='del'>-</div><div class='del'>-	    ADD_SEND_WITH_BLOCK(ret, line, idEach, INT2FIX(0), iseq-&gt;compile_data-&gt;current_block);</div><div class='add'>+	    ISEQ_COMPILE_DATA(iseq)-&gt;current_block = NEW_CHILD_ISEQ(node-&gt;nd_body, make_name_for_block(iseq),</div><div class='add'>+							       ISEQ_TYPE_BLOCK, line);</div><div class='add'>+	    ADD_SEND_WITH_BLOCK(ret, line, idEach, INT2FIX(0), ISEQ_COMPILE_DATA(iseq)-&gt;current_block);</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='del'>-	    iseq-&gt;compile_data-&gt;current_block =</div><div class='del'>-		NEW_CHILD_ISEQVAL(node-&gt;nd_body, make_name_for_block(iseq),</div><div class='del'>-				  ISEQ_TYPE_BLOCK, line);</div><div class='add'>+	    ISEQ_COMPILE_DATA(iseq)-&gt;current_block = NEW_CHILD_ISEQ(node-&gt;nd_body, make_name_for_block(iseq),</div><div class='add'>+							       ISEQ_TYPE_BLOCK, line);</div><div class='ctx'> 	    COMPILE(ret, "iter caller", node-&gt;nd_iter);</div><div class='ctx'> 	}</div><div class='ctx'> 	ADD_LABEL(ret, retry_end_l);</div><div class='hunk'>@@ -3613,7 +4204,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='del'>-	iseq-&gt;compile_data-&gt;current_block = prevblock;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;current_block = prevblock;</div><div class='ctx'> </div><div class='ctx'> 	ADD_CATCH_ENTRY(CATCH_TYPE_BREAK, retry_label, retry_end_l, 0, retry_end_l);</div><div class='ctx'> </div><div class='hunk'>@@ -3622,160 +4213,161 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'>       case NODE_BREAK:{</div><div class='ctx'> 	unsigned long level = 0;</div><div class='ctx'> </div><div class='del'>-	if (iseq-&gt;compile_data-&gt;redo_label != 0) {</div><div class='add'>+	if (ISEQ_COMPILE_DATA(iseq)-&gt;redo_label != 0) {</div><div class='ctx'> 	    /* while/until */</div><div class='ctx'> 	    LABEL *splabel = NEW_LABEL(0);</div><div class='ctx'> 	    ADD_LABEL(ret, splabel);</div><div class='del'>-	    ADD_ADJUST(ret, line, iseq-&gt;compile_data-&gt;redo_label);</div><div class='del'>-	    COMPILE_(ret, "break val (while/until)", node-&gt;nd_stts, iseq-&gt;compile_data-&gt;loopval_popped);</div><div class='add'>+	    ADD_ADJUST(ret, line, ISEQ_COMPILE_DATA(iseq)-&gt;redo_label);</div><div class='add'>+	    COMPILE_(ret, "break val (while/until)", node-&gt;nd_stts, ISEQ_COMPILE_DATA(iseq)-&gt;loopval_popped);</div><div class='ctx'> 	    add_ensure_iseq(ret, iseq, 0);</div><div class='del'>-	    ADD_INSNL(ret, line, jump, iseq-&gt;compile_data-&gt;end_label);</div><div class='add'>+	    ADD_INSNL(ret, line, jump, ISEQ_COMPILE_DATA(iseq)-&gt;end_label);</div><div class='ctx'> 	    ADD_ADJUST_RESTORE(ret, splabel);</div><div class='ctx'> </div><div class='ctx'> 	    if (!poped) {</div><div class='ctx'> 		ADD_INSN(ret, line, putnil);</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='del'>-	else if (iseq-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='add'>+	else if (iseq-&gt;body-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='ctx'> 	  break_by_insn:</div><div class='ctx'> 	    /* escape from block */</div><div class='ctx'> 	    COMPILE(ret, "break val (block)", node-&gt;nd_stts);</div><div class='del'>-	    ADD_INSN1(ret, line, throw, INT2FIX(level | 0x02) /* TAG_BREAK */ );</div><div class='add'>+	    ADD_INSN1(ret, line, throw, INT2FIX(level | TAG_BREAK));</div><div class='ctx'> 	    if (poped) {</div><div class='ctx'> 		ADD_INSN(ret, line, pop);</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='del'>-	else if (iseq-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='add'>+	else if (iseq-&gt;body-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='ctx'> 	  break_in_eval:</div><div class='del'>-	    COMPILE_ERROR((ERROR_ARGS "Can't escape from eval with break"));</div><div class='add'>+	    COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with break");</div><div class='add'>+	    debug_node_end();</div><div class='add'>+	    return COMPILE_NG;</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='del'>-	    rb_iseq_t *ip = iseq-&gt;parent_iseq;</div><div class='add'>+	    const rb_iseq_t *ip = iseq-&gt;body-&gt;parent_iseq;</div><div class='add'>+</div><div class='ctx'> 	    while (ip) {</div><div class='del'>-		if (!ip-&gt;compile_data) {</div><div class='add'>+		if (!ISEQ_COMPILE_DATA(ip)) {</div><div class='ctx'> 		    ip = 0;</div><div class='ctx'> 		    break;</div><div class='ctx'> 		}</div><div class='ctx'> </div><div class='ctx'> 		level++;</div><div class='del'>-		if (ip-&gt;compile_data-&gt;redo_label != 0) {</div><div class='del'>-		    level = 0x8000;</div><div class='del'>-		    if (ip-&gt;compile_data-&gt;loopval_popped == 0) {</div><div class='del'>-			/* need value */</div><div class='del'>-			level |= 0x4000;</div><div class='del'>-		    }</div><div class='add'>+		if (ISEQ_COMPILE_DATA(ip)-&gt;redo_label != 0) {</div><div class='add'>+		    level = VM_THROW_NO_ESCAPE_FLAG;</div><div class='ctx'> 		    goto break_by_insn;</div><div class='ctx'> 		}</div><div class='del'>-		else if (ip-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='del'>-		    level &lt;&lt;= 16;</div><div class='add'>+		else if (ip-&gt;body-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='add'>+		    level &lt;&lt;= VM_THROW_LEVEL_SHIFT;</div><div class='ctx'> 		    goto break_by_insn;</div><div class='ctx'> 		}</div><div class='del'>-		else if (ip-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='add'>+		else if (ip-&gt;body-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='ctx'> 		    goto break_in_eval;</div><div class='ctx'> 		}</div><div class='ctx'> </div><div class='del'>-		ip = ip-&gt;parent_iseq;</div><div class='add'>+		ip = ip-&gt;body-&gt;parent_iseq;</div><div class='ctx'> 	    }</div><div class='del'>-	    COMPILE_ERROR((ERROR_ARGS "Invalid break"));</div><div class='add'>+	    COMPILE_ERROR(ERROR_ARGS "Invalid break");</div><div class='add'>+	    debug_node_end();</div><div class='add'>+	    return COMPILE_NG;</div><div class='ctx'> 	}</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_NEXT:{</div><div class='ctx'> 	unsigned long level = 0;</div><div class='ctx'> </div><div class='del'>-	if (iseq-&gt;compile_data-&gt;redo_label != 0) {</div><div class='add'>+	if (ISEQ_COMPILE_DATA(iseq)-&gt;redo_label != 0) {</div><div class='ctx'> 	    LABEL *splabel = NEW_LABEL(0);</div><div class='ctx'> 	    debugs("next in while loop\n");</div><div class='ctx'> 	    ADD_LABEL(ret, splabel);</div><div class='ctx'> 	    COMPILE(ret, "next val/valid syntax?", node-&gt;nd_stts);</div><div class='ctx'> 	    add_ensure_iseq(ret, iseq, 0);</div><div class='del'>-	    ADD_ADJUST(ret, line, iseq-&gt;compile_data-&gt;redo_label);</div><div class='del'>-	    ADD_INSNL(ret, line, jump, iseq-&gt;compile_data-&gt;start_label);</div><div class='add'>+	    ADD_ADJUST(ret, line, ISEQ_COMPILE_DATA(iseq)-&gt;redo_label);</div><div class='add'>+	    ADD_INSNL(ret, line, jump, ISEQ_COMPILE_DATA(iseq)-&gt;start_label);</div><div class='ctx'> 	    ADD_ADJUST_RESTORE(ret, splabel);</div><div class='ctx'> 	    if (!poped) {</div><div class='ctx'> 		ADD_INSN(ret, line, putnil);</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='del'>-	else if (iseq-&gt;compile_data-&gt;end_label) {</div><div class='add'>+	else if (ISEQ_COMPILE_DATA(iseq)-&gt;end_label) {</div><div class='ctx'> 	    LABEL *splabel = NEW_LABEL(0);</div><div class='ctx'> 	    debugs("next in block\n");</div><div class='ctx'> 	    ADD_LABEL(ret, splabel);</div><div class='del'>-	    ADD_ADJUST(ret, line, iseq-&gt;compile_data-&gt;start_label);</div><div class='add'>+	    ADD_ADJUST(ret, line, ISEQ_COMPILE_DATA(iseq)-&gt;start_label);</div><div class='ctx'> 	    COMPILE(ret, "next val", node-&gt;nd_stts);</div><div class='ctx'> 	    add_ensure_iseq(ret, iseq, 0);</div><div class='del'>-	    ADD_INSNL(ret, line, jump, iseq-&gt;compile_data-&gt;end_label);</div><div class='add'>+	    ADD_INSNL(ret, line, jump, ISEQ_COMPILE_DATA(iseq)-&gt;end_label);</div><div class='ctx'> 	    ADD_ADJUST_RESTORE(ret, splabel);</div><div class='ctx'> </div><div class='ctx'> 	    if (!poped) {</div><div class='ctx'> 		ADD_INSN(ret, line, putnil);</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='del'>-	else if (iseq-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='add'>+	else if (iseq-&gt;body-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='ctx'> 	  next_in_eval:</div><div class='del'>-	    COMPILE_ERROR((ERROR_ARGS "Can't escape from eval with next"));</div><div class='add'>+	    COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with next");</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='del'>-	    rb_iseq_t *ip;</div><div class='del'>-	    ip = iseq;</div><div class='add'>+	    const rb_iseq_t *ip = iseq;</div><div class='add'>+</div><div class='ctx'> 	    while (ip) {</div><div class='del'>-		if (!ip-&gt;compile_data) {</div><div class='add'>+		if (!ISEQ_COMPILE_DATA(ip)) {</div><div class='ctx'> 		    ip = 0;</div><div class='ctx'> 		    break;</div><div class='ctx'> 		}</div><div class='ctx'> </div><div class='del'>-		level = 0x8000 | 0x4000;</div><div class='del'>-		if (ip-&gt;compile_data-&gt;redo_label != 0) {</div><div class='add'>+		level = VM_THROW_NO_ESCAPE_FLAG;</div><div class='add'>+		if (ISEQ_COMPILE_DATA(ip)-&gt;redo_label != 0) {</div><div class='ctx'> 		    /* while loop */</div><div class='ctx'> 		    break;</div><div class='ctx'> 		}</div><div class='del'>-		else if (ip-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='add'>+		else if (ip-&gt;body-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='ctx'> 		    break;</div><div class='ctx'> 		}</div><div class='del'>-		else if (ip-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='add'>+		else if (ip-&gt;body-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='ctx'> 		    goto next_in_eval;</div><div class='ctx'> 		}</div><div class='ctx'> </div><div class='del'>-		ip = ip-&gt;parent_iseq;</div><div class='add'>+		ip = ip-&gt;body-&gt;parent_iseq;</div><div class='ctx'> 	    }</div><div class='ctx'> 	    if (ip != 0) {</div><div class='ctx'> 		COMPILE(ret, "next val", node-&gt;nd_stts);</div><div class='del'>-		ADD_INSN1(ret, line, throw, INT2FIX(level | 0x03) /* TAG_NEXT */ );</div><div class='add'>+		ADD_INSN1(ret, line, throw, INT2FIX(level | TAG_NEXT));</div><div class='ctx'> </div><div class='ctx'> 		if (poped) {</div><div class='ctx'> 		    ADD_INSN(ret, line, pop);</div><div class='ctx'> 		}</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else {</div><div class='del'>-		COMPILE_ERROR((ERROR_ARGS "Invalid next"));</div><div class='add'>+		COMPILE_ERROR(ERROR_ARGS "Invalid next");</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_REDO:{</div><div class='del'>-	if (iseq-&gt;compile_data-&gt;redo_label) {</div><div class='add'>+	if (ISEQ_COMPILE_DATA(iseq)-&gt;redo_label) {</div><div class='ctx'> 	    LABEL *splabel = NEW_LABEL(0);</div><div class='ctx'> 	    debugs("redo in while");</div><div class='ctx'> 	    ADD_LABEL(ret, splabel);</div><div class='del'>-	    ADD_ADJUST(ret, line, iseq-&gt;compile_data-&gt;redo_label);</div><div class='add'>+	    ADD_ADJUST(ret, line, ISEQ_COMPILE_DATA(iseq)-&gt;redo_label);</div><div class='ctx'> 	    add_ensure_iseq(ret, iseq, 0);</div><div class='del'>-	    ADD_INSNL(ret, line, jump, iseq-&gt;compile_data-&gt;redo_label);</div><div class='add'>+	    ADD_INSNL(ret, line, jump, ISEQ_COMPILE_DATA(iseq)-&gt;redo_label);</div><div class='ctx'> 	    ADD_ADJUST_RESTORE(ret, splabel);</div><div class='ctx'> 	    if (!poped) {</div><div class='ctx'> 		ADD_INSN(ret, line, putnil);</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='del'>-	else if (iseq-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='add'>+	else if (iseq-&gt;body-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='ctx'> 	  redo_in_eval:</div><div class='del'>-	    COMPILE_ERROR((ERROR_ARGS "Can't escape from eval with redo"));</div><div class='add'>+	    COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with redo");</div><div class='ctx'> 	}</div><div class='del'>-	else if (iseq-&gt;compile_data-&gt;start_label) {</div><div class='add'>+	else if (ISEQ_COMPILE_DATA(iseq)-&gt;start_label) {</div><div class='ctx'> 	    LABEL *splabel = NEW_LABEL(0);</div><div class='ctx'> </div><div class='ctx'> 	    debugs("redo in block");</div><div class='ctx'> 	    ADD_LABEL(ret, splabel);</div><div class='ctx'> 	    add_ensure_iseq(ret, iseq, 0);</div><div class='del'>-	    ADD_ADJUST(ret, line, iseq-&gt;compile_data-&gt;start_label);</div><div class='del'>-	    ADD_INSNL(ret, line, jump, iseq-&gt;compile_data-&gt;start_label);</div><div class='add'>+	    ADD_ADJUST(ret, line, ISEQ_COMPILE_DATA(iseq)-&gt;start_label);</div><div class='add'>+	    ADD_INSNL(ret, line, jump, ISEQ_COMPILE_DATA(iseq)-&gt;start_label);</div><div class='ctx'> 	    ADD_ADJUST_RESTORE(ret, splabel);</div><div class='ctx'> </div><div class='ctx'> 	    if (!poped) {</div><div class='hunk'>@@ -3783,53 +4375,52 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='del'>-	    rb_iseq_t *ip;</div><div class='del'>-	    unsigned long level;</div><div class='del'>-	    level = 0x8000 | 0x4000;</div><div class='del'>-	    ip = iseq;</div><div class='add'>+	    const rb_iseq_t *ip = iseq;</div><div class='add'>+	    const unsigned long level = VM_THROW_NO_ESCAPE_FLAG;</div><div class='add'>+</div><div class='ctx'> 	    while (ip) {</div><div class='del'>-		if (!ip-&gt;compile_data) {</div><div class='add'>+		if (!ISEQ_COMPILE_DATA(ip)) {</div><div class='ctx'> 		    ip = 0;</div><div class='ctx'> 		    break;</div><div class='ctx'> 		}</div><div class='ctx'> </div><div class='del'>-		if (ip-&gt;compile_data-&gt;redo_label != 0) {</div><div class='add'>+		if (ISEQ_COMPILE_DATA(ip)-&gt;redo_label != 0) {</div><div class='ctx'> 		    break;</div><div class='ctx'> 		}</div><div class='del'>-		else if (ip-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='add'>+		else if (ip-&gt;body-&gt;type == ISEQ_TYPE_BLOCK) {</div><div class='ctx'> 		    break;</div><div class='ctx'> 		}</div><div class='del'>-		else if (ip-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='add'>+		else if (ip-&gt;body-&gt;type == ISEQ_TYPE_EVAL) {</div><div class='ctx'> 		    goto redo_in_eval;</div><div class='ctx'> 		}</div><div class='ctx'> </div><div class='del'>-		ip = ip-&gt;parent_iseq;</div><div class='add'>+		ip = ip-&gt;body-&gt;parent_iseq;</div><div class='ctx'> 	    }</div><div class='ctx'> 	    if (ip != 0) {</div><div class='ctx'> 		ADD_INSN(ret, line, putnil);</div><div class='del'>-		ADD_INSN1(ret, line, throw, INT2FIX(level | 0x05) /* TAG_REDO */ );</div><div class='add'>+		ADD_INSN1(ret, line, throw, INT2FIX(level | TAG_REDO));</div><div class='ctx'> </div><div class='ctx'> 		if (poped) {</div><div class='ctx'> 		    ADD_INSN(ret, line, pop);</div><div class='ctx'> 		}</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else {</div><div class='del'>-		COMPILE_ERROR((ERROR_ARGS "Invalid redo"));</div><div class='add'>+		COMPILE_ERROR(ERROR_ARGS "Invalid redo");</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_RETRY:{</div><div class='del'>-	if (iseq-&gt;type == ISEQ_TYPE_RESCUE) {</div><div class='add'>+	if (iseq-&gt;body-&gt;type == ISEQ_TYPE_RESCUE) {</div><div class='ctx'> 	    ADD_INSN(ret, line, putnil);</div><div class='del'>-	    ADD_INSN1(ret, line, throw, INT2FIX(0x04) /* TAG_RETRY */ );</div><div class='add'>+	    ADD_INSN1(ret, line, throw, INT2FIX(TAG_RETRY));</div><div class='ctx'> </div><div class='ctx'> 	    if (poped) {</div><div class='ctx'> 		ADD_INSN(ret, line, pop);</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='del'>-	    COMPILE_ERROR((ERROR_ARGS "Invalid retry"));</div><div class='add'>+	    COMPILE_ERROR(ERROR_ARGS "Invalid retry");</div><div class='ctx'> 	}</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='hunk'>@@ -3841,11 +4432,12 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	LABEL *lstart = NEW_LABEL(line);</div><div class='ctx'> 	LABEL *lend = NEW_LABEL(line);</div><div class='ctx'> 	LABEL *lcont = NEW_LABEL(line);</div><div class='del'>-	VALUE rescue = NEW_CHILD_ISEQVAL(</div><div class='del'>-	    node-&gt;nd_resq,</div><div class='del'>-	    rb_str_concat(rb_str_new2("rescue in "), iseq-&gt;location.label),</div><div class='del'>-	    ISEQ_TYPE_RESCUE, line);</div><div class='add'>+	const rb_iseq_t *rescue = NEW_CHILD_ISEQ(node-&gt;nd_resq,</div><div class='add'>+						 rb_str_concat(rb_str_new2("rescue in "), iseq-&gt;body-&gt;location.label),</div><div class='add'>+						 ISEQ_TYPE_RESCUE, line);</div><div class='ctx'> </div><div class='add'>+	lstart-&gt;rescued = LABEL_RESCUE_BEG;</div><div class='add'>+	lend-&gt;rescued = LABEL_RESCUE_END;</div><div class='ctx'> 	ADD_LABEL(ret, lstart);</div><div class='ctx'> 	COMPILE(ret, "rescue head", node-&gt;nd_head);</div><div class='ctx'> 	ADD_LABEL(ret, lend);</div><div class='hunk'>@@ -3879,7 +4471,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 		switch (nd_type(narg)) {</div><div class='ctx'> 		  case NODE_ARRAY:</div><div class='ctx'> 		    while (narg) {</div><div class='del'>-			ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));</div><div class='add'>+			ADD_GETLOCAL(ret, line, LVAR_ERRINFO, 0);</div><div class='ctx'> 			COMPILE(ret, "rescue arg", narg-&gt;nd_head);</div><div class='ctx'> 			ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));</div><div class='ctx'> 			ADD_INSNL(ret, line, branchif, label_hit);</div><div class='hunk'>@@ -3889,18 +4481,17 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 		  case NODE_SPLAT:</div><div class='ctx'> 		  case NODE_ARGSCAT:</div><div class='ctx'> 		  case NODE_ARGSPUSH:</div><div class='del'>-		    ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));</div><div class='add'>+		    ADD_GETLOCAL(ret, line, LVAR_ERRINFO, 0);</div><div class='ctx'> 		    COMPILE(ret, "rescue/cond splat", narg);</div><div class='ctx'> 		    ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE | VM_CHECKMATCH_ARRAY));</div><div class='ctx'> 		    ADD_INSNL(ret, line, branchif, label_hit);</div><div class='ctx'> 		    break;</div><div class='ctx'> 		  default:</div><div class='del'>-		    rb_bug("NODE_RESBODY: unknown node (%s)",</div><div class='del'>-			   ruby_node_name(nd_type(narg)));</div><div class='add'>+		    UNKNOWN_NODE("NODE_RESBODY", narg);</div><div class='ctx'> 		}</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else {</div><div class='del'>-		ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));</div><div class='add'>+		ADD_GETLOCAL(ret, line, LVAR_ERRINFO, 0);</div><div class='ctx'> 		ADD_INSN1(ret, line, putobject, rb_eStandardError);</div><div class='ctx'> 		ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));</div><div class='ctx'> 		ADD_INSNL(ret, line, branchif, label_hit);</div><div class='hunk'>@@ -3908,7 +4499,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    ADD_INSNL(ret, line, jump, label_miss);</div><div class='ctx'> 	    ADD_LABEL(ret, label_hit);</div><div class='ctx'> 	    COMPILE(ret, "resbody body", resq-&gt;nd_body);</div><div class='del'>-	    if (iseq-&gt;compile_data-&gt;option-&gt;tailcall_optimization) {</div><div class='add'>+	    if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;tailcall_optimization) {</div><div class='ctx'> 		ADD_INSN(ret, line, nop);</div><div class='ctx'> 	    }</div><div class='ctx'> 	    ADD_INSN(ret, line, leave);</div><div class='hunk'>@@ -3919,11 +4510,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_ENSURE:{</div><div class='ctx'> 	DECL_ANCHOR(ensr);</div><div class='del'>-	VALUE ensure = NEW_CHILD_ISEQVAL(node-&gt;nd_ensr,</div><div class='del'>-					 rb_str_concat(rb_str_new2</div><div class='del'>-						       ("ensure in "),</div><div class='del'>-						       iseq-&gt;location.label),</div><div class='del'>-					 ISEQ_TYPE_ENSURE, line);</div><div class='add'>+	const rb_iseq_t *ensure = NEW_CHILD_ISEQ(node-&gt;nd_ensr,</div><div class='add'>+						 rb_str_concat(rb_str_new2 ("ensure in "), iseq-&gt;body-&gt;location.label),</div><div class='add'>+						 ISEQ_TYPE_ENSURE, line);</div><div class='ctx'> 	LABEL *lstart = NEW_LABEL(line);</div><div class='ctx'> 	LABEL *lend = NEW_LABEL(line);</div><div class='ctx'> 	LABEL *lcont = NEW_LABEL(line);</div><div class='hunk'>@@ -3950,14 +4539,14 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	}</div><div class='ctx'> 	ADD_LABEL(ret, lcont);</div><div class='ctx'> </div><div class='del'>-	erange = iseq-&gt;compile_data-&gt;ensure_node_stack-&gt;erange;</div><div class='add'>+	erange = ISEQ_COMPILE_DATA(iseq)-&gt;ensure_node_stack-&gt;erange;</div><div class='ctx'> 	while (erange) {</div><div class='ctx'> 	    ADD_CATCH_ENTRY(CATCH_TYPE_ENSURE, erange-&gt;begin, erange-&gt;end,</div><div class='ctx'> 			    ensure, lcont);</div><div class='ctx'> 	    erange = erange-&gt;next;</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='del'>-	iseq-&gt;compile_data-&gt;ensure_node_stack = enl.prev;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;ensure_node_stack = enl.prev;</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'> </div><div class='hunk'>@@ -3989,7 +4578,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> </div><div class='ctx'>       case NODE_LASGN:{</div><div class='ctx'> 	ID id = node-&gt;nd_vid;</div><div class='del'>-	int idx = iseq-&gt;local_iseq-&gt;local_size - get_local_var_idx(iseq, id);</div><div class='add'>+	int idx = iseq-&gt;body-&gt;local_iseq-&gt;body-&gt;local_table_size - get_local_var_idx(iseq, id);</div><div class='ctx'> </div><div class='ctx'> 	debugs("lvar: %"PRIsVALUE" idx: %d\n", rb_id2str(id), idx);</div><div class='ctx'> 	COMPILE(ret, "rvalue", node-&gt;nd_value);</div><div class='hunk'>@@ -3997,8 +4586,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	if (!poped) {</div><div class='ctx'> 	    ADD_INSN(ret, line, dup);</div><div class='ctx'> 	}</div><div class='del'>-	ADD_INSN2(ret, line, setlocal, INT2FIX(idx), INT2FIX(get_lvar_level(iseq)));</div><div class='del'>-</div><div class='add'>+	ADD_SETLOCAL(ret, line, idx, get_lvar_level(iseq));</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_DASGN:</div><div class='hunk'>@@ -4014,10 +4602,10 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	idx = get_dyna_var_idx(iseq, node-&gt;nd_vid, &amp;lv, &amp;ls);</div><div class='ctx'> </div><div class='ctx'> 	if (idx &lt; 0) {</div><div class='del'>-	    rb_bug("NODE_DASGN(_CURR): unknown id (%"PRIsVALUE")", rb_id2str(node-&gt;nd_vid));</div><div class='add'>+	    compile_bug(ERROR_ARGS "NODE_DASGN(_CURR): unknown id (%"PRIsVALUE")",</div><div class='add'>+			rb_id2str(node-&gt;nd_vid));</div><div class='ctx'> 	}</div><div class='del'>-</div><div class='del'>-	ADD_INSN2(ret, line, setlocal, INT2FIX(ls - idx), INT2FIX(lv));</div><div class='add'>+	ADD_SETLOCAL(ret, line, ls - idx, lv);</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_GASGN:{</div><div class='hunk'>@@ -4037,7 +4625,8 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    ADD_INSN(ret, line, dup);</div><div class='ctx'> 	}</div><div class='ctx'> 	ADD_INSN2(ret, line, setinstancevariable,</div><div class='del'>-		  ID2SYM(node-&gt;nd_vid), INT2FIX(iseq-&gt;is_size++));</div><div class='add'>+		  ID2SYM(node-&gt;nd_vid),</div><div class='add'>+		  get_ivar_ic_value(iseq,node-&gt;nd_vid));</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_CDECL:{</div><div class='hunk'>@@ -4114,8 +4703,8 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    ADD_SEQ(ret, args);</div><div class='ctx'> 	}</div><div class='ctx'> 	ADD_INSN1(ret, line, dupn, FIXNUM_INC(argc, 1 + boff));</div><div class='del'>-	flag |= asgnflag;</div><div class='ctx'> 	ADD_SEND_WITH_FLAG(ret, line, idAREF, argc, INT2FIX(flag));</div><div class='add'>+	flag |= asgnflag;</div><div class='ctx'> </div><div class='ctx'> 	if (id == 0 || id == 1) {</div><div class='ctx'> 	    /* 0: or, 1: and</div><div class='hunk'>@@ -4207,9 +4796,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_OP_ASGN2:{</div><div class='ctx'> 	ID atype = node-&gt;nd_next-&gt;nd_mid;</div><div class='add'>+	ID vid = node-&gt;nd_next-&gt;nd_vid, aid = rb_id_attrset(vid);</div><div class='ctx'> 	VALUE asgnflag;</div><div class='ctx'> 	LABEL *lfin = NEW_LABEL(line);</div><div class='ctx'> 	LABEL *lcfin = NEW_LABEL(line);</div><div class='add'>+	LABEL *lskip = 0;</div><div class='ctx'> 	/*</div><div class='ctx'> 	  class C; attr_accessor :c; end</div><div class='ctx'> 	  r = C.new</div><div class='hunk'>@@ -4253,8 +4844,13 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	*/</div><div class='ctx'> </div><div class='ctx'> 	asgnflag = COMPILE_RECV(ret, "NODE_OP_ASGN2#recv", node);</div><div class='add'>+	if (node-&gt;nd_next-&gt;nd_aid) {</div><div class='add'>+	    lskip = NEW_LABEL(line);</div><div class='add'>+	    ADD_INSN(ret, line, dup);</div><div class='add'>+	    ADD_INSNL(ret, line, branchnil, lskip);</div><div class='add'>+	}</div><div class='ctx'> 	ADD_INSN(ret, line, dup);</div><div class='del'>-	ADD_SEND_WITH_FLAG(ret, line, node-&gt;nd_next-&gt;nd_vid, INT2FIX(0), INT2FIX(asgnflag));</div><div class='add'>+	ADD_SEND(ret, line, vid, INT2FIX(0));</div><div class='ctx'> </div><div class='ctx'> 	if (atype == 0 || atype == 1) {	/* 0: OR or 1: AND */</div><div class='ctx'> 	    ADD_INSN(ret, line, dup);</div><div class='hunk'>@@ -4268,7 +4864,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    COMPILE(ret, "NODE_OP_ASGN2 val", node-&gt;nd_value);</div><div class='ctx'> 	    ADD_INSN(ret, line, swap);</div><div class='ctx'> 	    ADD_INSN1(ret, line, topn, INT2FIX(1));</div><div class='del'>-	    ADD_SEND_WITH_FLAG(ret, line, node-&gt;nd_next-&gt;nd_aid, INT2FIX(1), INT2FIX(asgnflag));</div><div class='add'>+	    ADD_SEND_WITH_FLAG(ret, line, aid, INT2FIX(1), INT2FIX(asgnflag));</div><div class='ctx'> 	    ADD_INSNL(ret, line, jump, lfin);</div><div class='ctx'> </div><div class='ctx'> 	    ADD_LABEL(ret, lcfin);</div><div class='hunk'>@@ -4276,6 +4872,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> </div><div class='ctx'> 	    ADD_LABEL(ret, lfin);</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='add'>+	    if (lskip) {</div><div class='add'>+		ADD_LABEL(ret, lskip);</div><div class='add'>+	    }</div><div class='ctx'> 	    if (poped) {</div><div class='ctx'> 		/* we can apply more optimize */</div><div class='ctx'> 		ADD_INSN(ret, line, pop);</div><div class='hunk'>@@ -4283,14 +4882,16 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='ctx'> 	    COMPILE(ret, "NODE_OP_ASGN2 val", node-&gt;nd_value);</div><div class='del'>-	    ADD_SEND(ret, line, node-&gt;nd_next-&gt;nd_mid,</div><div class='del'>-		     INT2FIX(1));</div><div class='add'>+	    ADD_SEND(ret, line, atype, INT2FIX(1));</div><div class='ctx'> 	    if (!poped) {</div><div class='ctx'> 		ADD_INSN(ret, line, swap);</div><div class='ctx'> 		ADD_INSN1(ret, line, topn, INT2FIX(1));</div><div class='ctx'> 	    }</div><div class='del'>-	    ADD_SEND_WITH_FLAG(ret, line, node-&gt;nd_next-&gt;nd_aid, INT2FIX(1), INT2FIX(asgnflag));</div><div class='add'>+	    ADD_SEND_WITH_FLAG(ret, line, aid, INT2FIX(1), INT2FIX(asgnflag));</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='add'>+	    if (lskip) {</div><div class='add'>+		ADD_LABEL(ret, lskip);</div><div class='add'>+	    }</div><div class='ctx'> 	}</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='hunk'>@@ -4307,10 +4908,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    COMPILE(ret, "NODE_OP_CDECL/colon2#nd_head", node-&gt;nd_head-&gt;nd_head);</div><div class='ctx'> 	    break;</div><div class='ctx'> 	  default:</div><div class='del'>-	    do {</div><div class='del'>-		COMPILE_ERROR((ERROR_ARGS "%s: invalid node in NODE_OP_CDECL",</div><div class='del'>-			       ruby_node_name(nd_type(node-&gt;nd_head))));</div><div class='del'>-	    } while (0);</div><div class='add'>+	    COMPILE_ERROR(ERROR_ARGS "%s: invalid node in NODE_OP_CDECL",</div><div class='add'>+			  ruby_node_name(nd_type(node-&gt;nd_head)));</div><div class='add'>+	    debug_node_end();</div><div class='ctx'> 	    return COMPILE_NG;</div><div class='ctx'> 	}</div><div class='ctx'> 	mid = node-&gt;nd_head-&gt;nd_mid;</div><div class='hunk'>@@ -4409,8 +5009,8 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	 */</div><div class='ctx'> 	if (node-&gt;nd_recv &amp;&amp; nd_type(node-&gt;nd_recv) == NODE_STR &amp;&amp;</div><div class='ctx'> 	    node-&gt;nd_mid == idFreeze &amp;&amp; node-&gt;nd_args == NULL &amp;&amp;</div><div class='del'>-	    iseq-&gt;compile_data-&gt;current_block == Qfalse &amp;&amp;</div><div class='del'>-	    iseq-&gt;compile_data-&gt;option-&gt;specialized_instruction) {</div><div class='add'>+	    ISEQ_COMPILE_DATA(iseq)-&gt;current_block == NULL &amp;&amp;</div><div class='add'>+	    ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;specialized_instruction) {</div><div class='ctx'> 	    VALUE str = rb_fstring(node-&gt;nd_recv-&gt;nd_lit);</div><div class='ctx'> 	    iseq_add_mark_object(iseq, str);</div><div class='ctx'> 	    ADD_INSN1(ret, line, opt_str_freeze, str);</div><div class='hunk'>@@ -4425,18 +5025,20 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	if (node-&gt;nd_mid == idAREF &amp;&amp; !private_recv_p(node) &amp;&amp; node-&gt;nd_args &amp;&amp;</div><div class='ctx'> 	    nd_type(node-&gt;nd_args) == NODE_ARRAY &amp;&amp; node-&gt;nd_args-&gt;nd_alen == 1 &amp;&amp;</div><div class='ctx'> 	    nd_type(node-&gt;nd_args-&gt;nd_head) == NODE_STR &amp;&amp;</div><div class='del'>-	    iseq-&gt;compile_data-&gt;current_block == Qfalse &amp;&amp;</div><div class='del'>-	    iseq-&gt;compile_data-&gt;option-&gt;specialized_instruction) {</div><div class='add'>+	    ISEQ_COMPILE_DATA(iseq)-&gt;current_block == NULL &amp;&amp;</div><div class='add'>+	    ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;specialized_instruction) {</div><div class='ctx'> 	    VALUE str = rb_fstring(node-&gt;nd_args-&gt;nd_head-&gt;nd_lit);</div><div class='ctx'> 	    node-&gt;nd_args-&gt;nd_head-&gt;nd_lit = str;</div><div class='ctx'> 	    COMPILE(ret, "recv", node-&gt;nd_recv);</div><div class='del'>-	    ADD_INSN2(ret, line, opt_aref_with,</div><div class='del'>-		      new_callinfo(iseq, idAREF, 1, 0, 0, NULL), str);</div><div class='add'>+	    ADD_INSN3(ret, line, opt_aref_with,</div><div class='add'>+		      new_callinfo(iseq, idAREF, 1, 0, NULL, FALSE),</div><div class='add'>+		      NULL/* CALL_CACHE */, str);</div><div class='ctx'> 	    if (poped) {</div><div class='ctx'> 		ADD_INSN(ret, line, pop);</div><div class='ctx'> 	    }</div><div class='ctx'> 	    break;</div><div class='ctx'> 	}</div><div class='add'>+      case NODE_QCALL:</div><div class='ctx'>       case NODE_FCALL:</div><div class='ctx'>       case NODE_VCALL:{		/* VCALL: variable or call */</div><div class='ctx'> 	/*</div><div class='hunk'>@@ -4446,12 +5048,13 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	*/</div><div class='ctx'> 	DECL_ANCHOR(recv);</div><div class='ctx'> 	DECL_ANCHOR(args);</div><div class='add'>+	LABEL *lskip = 0;</div><div class='ctx'> 	ID mid = node-&gt;nd_mid;</div><div class='ctx'> 	VALUE argc;</div><div class='ctx'> 	unsigned int flag = 0;</div><div class='del'>-	rb_call_info_kw_arg_t *keywords = NULL;</div><div class='del'>-	VALUE parent_block = iseq-&gt;compile_data-&gt;current_block;</div><div class='del'>-	iseq-&gt;compile_data-&gt;current_block = Qfalse;</div><div class='add'>+	struct rb_call_info_kw_arg *keywords = NULL;</div><div class='add'>+	const rb_iseq_t *parent_block = ISEQ_COMPILE_DATA(iseq)-&gt;current_block;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;current_block = NULL;</div><div class='ctx'> </div><div class='ctx'> 	INIT_ANCHOR(recv);</div><div class='ctx'> 	INIT_ANCHOR(args);</div><div class='hunk'>@@ -4484,12 +5087,12 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 		(mid == goto_id || mid == label_id)) {</div><div class='ctx'> 		LABEL *label;</div><div class='ctx'> 		st_data_t data;</div><div class='del'>-		st_table *labels_table = iseq-&gt;compile_data-&gt;labels_table;</div><div class='add'>+		st_table *labels_table = ISEQ_COMPILE_DATA(iseq)-&gt;labels_table;</div><div class='ctx'> 		ID label_name;</div><div class='ctx'> </div><div class='ctx'> 		if (!labels_table) {</div><div class='ctx'> 		    labels_table = st_init_numtable();</div><div class='del'>-		    iseq-&gt;compile_data-&gt;labels_table = labels_table;</div><div class='add'>+		    ISEQ_COMPILE_DATA(iseq)-&gt;labels_table = labels_table;</div><div class='ctx'> 		}</div><div class='ctx'> 		if (nd_type(node-&gt;nd_args-&gt;nd_head) == NODE_LIT &amp;&amp;</div><div class='ctx'> 		    SYMBOL_P(node-&gt;nd_args-&gt;nd_head-&gt;nd_lit)) {</div><div class='hunk'>@@ -4505,7 +5108,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 		    }</div><div class='ctx'> 		}</div><div class='ctx'> 		else {</div><div class='del'>-		    COMPILE_ERROR((ERROR_ARGS "invalid goto/label format"));</div><div class='add'>+		    COMPILE_ERROR(ERROR_ARGS "invalid goto/label format");</div><div class='ctx'> 		}</div><div class='ctx'> </div><div class='ctx'> </div><div class='hunk'>@@ -4520,8 +5123,13 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	}</div><div class='ctx'> #endif</div><div class='ctx'> 	/* receiver */</div><div class='del'>-	if (type == NODE_CALL) {</div><div class='add'>+	if (type == NODE_CALL || type == NODE_QCALL) {</div><div class='ctx'> 	    COMPILE(recv, "recv", node-&gt;nd_recv);</div><div class='add'>+	    if (type == NODE_QCALL) {</div><div class='add'>+		lskip = NEW_LABEL(line);</div><div class='add'>+		ADD_INSN(recv, line, dup);</div><div class='add'>+		ADD_INSNL(recv, line, branchnil, lskip);</div><div class='add'>+	    }</div><div class='ctx'> 	}</div><div class='ctx'> 	else if (type == NODE_FCALL || type == NODE_VCALL) {</div><div class='ctx'> 	    ADD_CALL_RECEIVER(recv, line);</div><div class='hunk'>@@ -4551,6 +5159,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> </div><div class='ctx'> 	ADD_SEND_R(ret, line, mid, argc, parent_block, INT2FIX(flag), keywords);</div><div class='ctx'> </div><div class='add'>+	if (lskip) {</div><div class='add'>+	    ADD_LABEL(ret, lskip);</div><div class='add'>+	}</div><div class='ctx'> 	if (poped) {</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='ctx'> 	}</div><div class='hunk'>@@ -4561,11 +5172,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	DECL_ANCHOR(args);</div><div class='ctx'> 	int argc;</div><div class='ctx'> 	unsigned int flag = 0;</div><div class='del'>-	rb_call_info_kw_arg_t *keywords = NULL;</div><div class='del'>-	VALUE parent_block = iseq-&gt;compile_data-&gt;current_block;</div><div class='add'>+	struct rb_call_info_kw_arg *keywords = NULL;</div><div class='add'>+	const rb_iseq_t *parent_block = ISEQ_COMPILE_DATA(iseq)-&gt;current_block;</div><div class='ctx'> </div><div class='ctx'> 	INIT_ANCHOR(args);</div><div class='del'>-	iseq-&gt;compile_data-&gt;current_block = Qfalse;</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;current_block = NULL;</div><div class='ctx'> 	if (nd_type(node) == NODE_SUPER) {</div><div class='ctx'> 	    VALUE vargc = setup_args(iseq, args, node-&gt;nd_args, &amp;flag, &amp;keywords);</div><div class='ctx'> 	    argc = FIX2INT(vargc);</div><div class='hunk'>@@ -4573,44 +5184,45 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	else {</div><div class='ctx'> 	    /* NODE_ZSUPER */</div><div class='ctx'> 	    int i;</div><div class='del'>-	    rb_iseq_t *liseq = iseq-&gt;local_iseq;</div><div class='add'>+	    const rb_iseq_t *liseq = iseq-&gt;body-&gt;local_iseq;</div><div class='ctx'> 	    int lvar_level = get_lvar_level(iseq);</div><div class='ctx'> </div><div class='del'>-	    argc = liseq-&gt;param.lead_num;</div><div class='add'>+	    argc = liseq-&gt;body-&gt;param.lead_num;</div><div class='ctx'> </div><div class='ctx'> 	    /* normal arguments */</div><div class='del'>-	    for (i = 0; i &lt; liseq-&gt;param.lead_num; i++) {</div><div class='del'>-		int idx = liseq-&gt;local_size - i;</div><div class='del'>-		ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));</div><div class='add'>+	    for (i = 0; i &lt; liseq-&gt;body-&gt;param.lead_num; i++) {</div><div class='add'>+		int idx = liseq-&gt;body-&gt;local_table_size - i;</div><div class='add'>+		ADD_GETLOCAL(args, line, idx, lvar_level);</div><div class='ctx'> 	    }</div><div class='ctx'> </div><div class='del'>-	    if (liseq-&gt;param.flags.has_opt) {</div><div class='add'>+	    if (liseq-&gt;body-&gt;param.flags.has_opt) {</div><div class='ctx'> 		/* optional arguments */</div><div class='ctx'> 		int j;</div><div class='del'>-		for (j = 0; j &lt; liseq-&gt;param.opt_num; j++) {</div><div class='del'>-		    int idx = liseq-&gt;local_size - (i + j);</div><div class='del'>-		    ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));</div><div class='add'>+		for (j = 0; j &lt; liseq-&gt;body-&gt;param.opt_num; j++) {</div><div class='add'>+		    int idx = liseq-&gt;body-&gt;local_table_size - (i + j);</div><div class='add'>+		    ADD_GETLOCAL(args, line, idx, lvar_level);</div><div class='ctx'> 		}</div><div class='ctx'> 		i += j;</div><div class='ctx'> 		argc = i;</div><div class='ctx'> 	    }</div><div class='del'>-	    if (liseq-&gt;param.flags.has_rest) {</div><div class='add'>+	    if (liseq-&gt;body-&gt;param.flags.has_rest) {</div><div class='ctx'> 		/* rest argument */</div><div class='del'>-		int idx = liseq-&gt;local_size - liseq-&gt;param.rest_start;</div><div class='del'>-		ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));</div><div class='del'>-		argc = liseq-&gt;param.rest_start + 1;</div><div class='add'>+		int idx = liseq-&gt;body-&gt;local_table_size - liseq-&gt;body-&gt;param.rest_start;</div><div class='add'>+		ADD_GETLOCAL(args, line, idx, lvar_level);</div><div class='add'>+</div><div class='add'>+		argc = liseq-&gt;body-&gt;param.rest_start + 1;</div><div class='ctx'> 		flag |= VM_CALL_ARGS_SPLAT;</div><div class='ctx'> 	    }</div><div class='del'>-	    if (liseq-&gt;param.flags.has_post) {</div><div class='add'>+	    if (liseq-&gt;body-&gt;param.flags.has_post) {</div><div class='ctx'> 		/* post arguments */</div><div class='del'>-		int post_len = liseq-&gt;param.post_num;</div><div class='del'>-		int post_start = liseq-&gt;param.post_start;</div><div class='add'>+		int post_len = liseq-&gt;body-&gt;param.post_num;</div><div class='add'>+		int post_start = liseq-&gt;body-&gt;param.post_start;</div><div class='ctx'> </div><div class='del'>-		if (liseq-&gt;param.flags.has_rest) {</div><div class='add'>+		if (liseq-&gt;body-&gt;param.flags.has_rest) {</div><div class='ctx'> 		    int j;</div><div class='ctx'> 		    for (j=0; j&lt;post_len; j++) {</div><div class='del'>-			int idx = liseq-&gt;local_size - (post_start + j);</div><div class='del'>-			ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));</div><div class='add'>+			int idx = liseq-&gt;body-&gt;local_table_size - (post_start + j);</div><div class='add'>+			ADD_GETLOCAL(args, line, idx, lvar_level);</div><div class='ctx'> 		    }</div><div class='ctx'> 		    ADD_INSN1(args, line, newarray, INT2FIX(j));</div><div class='ctx'> 		    ADD_INSN (args, line, concatarray);</div><div class='hunk'>@@ -4619,43 +5231,46 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 		else {</div><div class='ctx'> 		    int j;</div><div class='ctx'> 		    for (j=0; j&lt;post_len; j++) {</div><div class='del'>-			int idx = liseq-&gt;local_size - (post_start + j);</div><div class='del'>-			ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));</div><div class='add'>+			int idx = liseq-&gt;body-&gt;local_table_size - (post_start + j);</div><div class='add'>+			ADD_GETLOCAL(args, line, idx, lvar_level);</div><div class='ctx'> 		    }</div><div class='ctx'> 		    argc = post_len + post_start;</div><div class='ctx'> 		}</div><div class='ctx'> 	    }</div><div class='ctx'> </div><div class='del'>-	    if (liseq-&gt;param.flags.has_kw) { /* TODO: support keywords */</div><div class='del'>-		int local_size = liseq-&gt;local_size;</div><div class='add'>+	    if (liseq-&gt;body-&gt;param.flags.has_kw) { /* TODO: support keywords */</div><div class='add'>+		int local_size = liseq-&gt;body-&gt;local_table_size;</div><div class='ctx'> 		argc++;</div><div class='ctx'> </div><div class='ctx'> 		ADD_INSN1(args, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));</div><div class='ctx'> </div><div class='del'>-		if (liseq-&gt;param.flags.has_kwrest) {</div><div class='del'>-		    ADD_INSN2(args, line, getlocal, INT2FIX(liseq-&gt;local_size - liseq-&gt;param.keyword-&gt;rest_start), INT2FIX(lvar_level));</div><div class='add'>+		if (liseq-&gt;body-&gt;param.flags.has_kwrest) {</div><div class='add'>+		    int idx = liseq-&gt;body-&gt;local_table_size - liseq-&gt;body-&gt;param.keyword-&gt;rest_start;</div><div class='add'>+		    ADD_GETLOCAL(args, line, idx, lvar_level);</div><div class='ctx'> 		    ADD_SEND (args, line, rb_intern("dup"), INT2FIX(0));</div><div class='ctx'> 		}</div><div class='ctx'> 		else {</div><div class='ctx'> 		    ADD_INSN1(args, line, newhash, INT2FIX(0));</div><div class='ctx'> 		}</div><div class='del'>-		for (i = 0; i &lt; liseq-&gt;param.keyword-&gt;num; ++i) {</div><div class='del'>-		    ID id = liseq-&gt;param.keyword-&gt;table[i];</div><div class='add'>+		for (i = 0; i &lt; liseq-&gt;body-&gt;param.keyword-&gt;num; ++i) {</div><div class='add'>+		    ID id = liseq-&gt;body-&gt;param.keyword-&gt;table[i];</div><div class='ctx'> 		    int idx = local_size - get_local_var_idx(liseq, id);</div><div class='ctx'> 		    ADD_INSN1(args, line, putobject, ID2SYM(id));</div><div class='del'>-		    ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));</div><div class='add'>+		    ADD_GETLOCAL(args, line, idx, lvar_level);</div><div class='ctx'> 		}</div><div class='ctx'> 		ADD_SEND(args, line, id_core_hash_merge_ptr, INT2FIX(i * 2 + 1));</div><div class='del'>-		if (liseq-&gt;param.flags.has_rest) {</div><div class='add'>+		if (liseq-&gt;body-&gt;param.flags.has_rest) {</div><div class='ctx'> 		    ADD_INSN1(args, line, newarray, INT2FIX(1));</div><div class='ctx'> 		    ADD_INSN (args, line, concatarray);</div><div class='ctx'> 		    --argc;</div><div class='ctx'> 		}</div><div class='ctx'> 	    }</div><div class='del'>-	    else if (liseq-&gt;param.flags.has_kwrest) {</div><div class='del'>-		ADD_INSN2(args, line, getlocal, INT2FIX(liseq-&gt;local_size - liseq-&gt;param.keyword-&gt;rest_start), INT2FIX(lvar_level));</div><div class='add'>+	    else if (liseq-&gt;body-&gt;param.flags.has_kwrest) {</div><div class='add'>+		int idx = liseq-&gt;body-&gt;local_table_size - liseq-&gt;body-&gt;param.keyword-&gt;rest_start;</div><div class='add'>+		ADD_GETLOCAL(args, line, idx, lvar_level);</div><div class='add'>+</div><div class='ctx'> 		ADD_SEND (args, line, rb_intern("dup"), INT2FIX(0));</div><div class='del'>-		if (liseq-&gt;param.flags.has_rest) {</div><div class='add'>+		if (liseq-&gt;body-&gt;param.flags.has_rest) {</div><div class='ctx'> 		    ADD_INSN1(args, line, newarray, INT2FIX(1));</div><div class='ctx'> 		    ADD_INSN (args, line, concatarray);</div><div class='ctx'> 		}</div><div class='hunk'>@@ -4668,8 +5283,10 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	/* dummy receiver */</div><div class='ctx'> 	ADD_INSN1(ret, line, putobject, nd_type(node) == NODE_ZSUPER ? Qfalse : Qtrue);</div><div class='ctx'> 	ADD_SEQ(ret, args);</div><div class='del'>-	ADD_INSN1(ret, line, invokesuper, new_callinfo(iseq, 0, argc, parent_block,</div><div class='del'>-						       flag | VM_CALL_SUPER | VM_CALL_FCALL, keywords));</div><div class='add'>+	ADD_INSN3(ret, line, invokesuper,</div><div class='add'>+		  new_callinfo(iseq, 0, argc, flag | VM_CALL_SUPER | VM_CALL_FCALL, keywords, parent_block != NULL),</div><div class='add'>+		  Qnil, /* CALL_CACHE */</div><div class='add'>+		  parent_block);</div><div class='ctx'> </div><div class='ctx'> 	if (poped) {</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='hunk'>@@ -4714,7 +5331,8 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    break;</div><div class='ctx'> </div><div class='ctx'> 	  default:</div><div class='del'>-	    rb_bug("can't make hash with this node: %s", ruby_node_name(type));</div><div class='add'>+	    compile_bug(ERROR_ARGS_AT(node-&gt;nd_head) "can't make hash with this node: %s",</div><div class='add'>+			ruby_node_name(type));</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	if (poped) {</div><div class='hunk'>@@ -4726,13 +5344,13 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	rb_iseq_t *is = iseq;</div><div class='ctx'> </div><div class='ctx'> 	if (is) {</div><div class='del'>-	    if (is-&gt;type == ISEQ_TYPE_TOP) {</div><div class='del'>-		COMPILE_ERROR((ERROR_ARGS "Invalid return"));</div><div class='add'>+	    if (is-&gt;body-&gt;type == ISEQ_TYPE_TOP) {</div><div class='add'>+		COMPILE_ERROR(ERROR_ARGS "Invalid return");</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else {</div><div class='ctx'> 		LABEL *splabel = 0;</div><div class='ctx'> </div><div class='del'>-		if (is-&gt;type == ISEQ_TYPE_METHOD) {</div><div class='add'>+		if (is-&gt;body-&gt;type == ISEQ_TYPE_METHOD) {</div><div class='ctx'> 		    splabel = NEW_LABEL(0);</div><div class='ctx'> 		    ADD_LABEL(ret, splabel);</div><div class='ctx'> 		    ADD_ADJUST(ret, line, 0);</div><div class='hunk'>@@ -4740,7 +5358,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> </div><div class='ctx'> 		COMPILE(ret, "return nd_stts (return val)", node-&gt;nd_stts);</div><div class='ctx'> </div><div class='del'>-		if (is-&gt;type == ISEQ_TYPE_METHOD) {</div><div class='add'>+		if (is-&gt;body-&gt;type == ISEQ_TYPE_METHOD) {</div><div class='ctx'> 		    add_ensure_iseq(ret, iseq, 1);</div><div class='ctx'> 		    ADD_TRACE(ret, line, RUBY_EVENT_RETURN);</div><div class='ctx'> 		    ADD_INSN(ret, line, leave);</div><div class='hunk'>@@ -4751,7 +5369,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 		    }</div><div class='ctx'> 		}</div><div class='ctx'> 		else {</div><div class='del'>-		    ADD_INSN1(ret, line, throw, INT2FIX(0x01) /* TAG_RETURN */ );</div><div class='add'>+		    ADD_INSN1(ret, line, throw, INT2FIX(TAG_RETURN));</div><div class='ctx'> 		    if (poped) {</div><div class='ctx'> 			ADD_INSN(ret, line, pop);</div><div class='ctx'> 		    }</div><div class='hunk'>@@ -4764,11 +5382,13 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	DECL_ANCHOR(args);</div><div class='ctx'> 	VALUE argc;</div><div class='ctx'> 	unsigned int flag = 0;</div><div class='del'>-	rb_call_info_kw_arg_t *keywords = NULL;</div><div class='add'>+	struct rb_call_info_kw_arg *keywords = NULL;</div><div class='ctx'> </div><div class='ctx'> 	INIT_ANCHOR(args);</div><div class='del'>-	if (iseq-&gt;type == ISEQ_TYPE_TOP) {</div><div class='del'>-	    COMPILE_ERROR((ERROR_ARGS "Invalid yield"));</div><div class='add'>+	if (iseq-&gt;body-&gt;type == ISEQ_TYPE_TOP) {</div><div class='add'>+	    COMPILE_ERROR(ERROR_ARGS "Invalid yield");</div><div class='add'>+	    debug_node_end();</div><div class='add'>+	    return COMPILE_NG;</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	if (node-&gt;nd_head) {</div><div class='hunk'>@@ -4779,7 +5399,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	ADD_SEQ(ret, args);</div><div class='del'>-	ADD_INSN1(ret, line, invokeblock, new_callinfo(iseq, 0, FIX2INT(argc), 0, flag, keywords));</div><div class='add'>+	ADD_INSN1(ret, line, invokeblock, new_callinfo(iseq, 0, FIX2INT(argc), flag, keywords, FALSE));</div><div class='ctx'> </div><div class='ctx'> 	if (poped) {</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='hunk'>@@ -4789,10 +5409,10 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'>       case NODE_LVAR:{</div><div class='ctx'> 	if (!poped) {</div><div class='ctx'> 	    ID id = node-&gt;nd_vid;</div><div class='del'>-	    int idx = iseq-&gt;local_iseq-&gt;local_size - get_local_var_idx(iseq, id);</div><div class='add'>+	    int idx = iseq-&gt;body-&gt;local_iseq-&gt;body-&gt;local_table_size - get_local_var_idx(iseq, id);</div><div class='ctx'> </div><div class='ctx'> 	    debugs("id: %"PRIsVALUE" idx: %d\n", rb_id2str(id), idx);</div><div class='del'>-	    ADD_INSN2(ret, line, getlocal, INT2FIX(idx), INT2FIX(get_lvar_level(iseq)));</div><div class='add'>+	    ADD_GETLOCAL(ret, line, idx, get_lvar_level(iseq));</div><div class='ctx'> 	}</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='hunk'>@@ -4802,9 +5422,10 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	if (!poped) {</div><div class='ctx'> 	    idx = get_dyna_var_idx(iseq, node-&gt;nd_vid, &amp;lv, &amp;ls);</div><div class='ctx'> 	    if (idx &lt; 0) {</div><div class='del'>-		rb_bug("unknown dvar (%"PRIsVALUE")", rb_id2str(node-&gt;nd_vid));</div><div class='add'>+		compile_bug(ERROR_ARGS "unknown dvar (%"PRIsVALUE")",</div><div class='add'>+			    rb_id2str(node-&gt;nd_vid));</div><div class='ctx'> 	    }</div><div class='del'>-	    ADD_INSN2(ret, line, getlocal, INT2FIX(ls - idx), INT2FIX(lv));</div><div class='add'>+	    ADD_GETLOCAL(ret, line, ls - idx, lv);</div><div class='ctx'> 	}</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='hunk'>@@ -4820,16 +5441,17 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	debugi("nd_vid", node-&gt;nd_vid);</div><div class='ctx'> 	if (!poped) {</div><div class='ctx'> 	    ADD_INSN2(ret, line, getinstancevariable,</div><div class='del'>-		      ID2SYM(node-&gt;nd_vid), INT2FIX(iseq-&gt;is_size++));</div><div class='add'>+		      ID2SYM(node-&gt;nd_vid),</div><div class='add'>+		      get_ivar_ic_value(iseq,node-&gt;nd_vid));</div><div class='ctx'> 	}</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_CONST:{</div><div class='ctx'> 	debugi("nd_vid", node-&gt;nd_vid);</div><div class='ctx'> </div><div class='del'>-	if (iseq-&gt;compile_data-&gt;option-&gt;inline_const_cache) {</div><div class='add'>+	if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;inline_const_cache) {</div><div class='ctx'> 	    LABEL *lend = NEW_LABEL(line);</div><div class='del'>-	    int ic_index = iseq-&gt;is_size++;</div><div class='add'>+	    int ic_index = iseq-&gt;body-&gt;is_size++;</div><div class='ctx'> </div><div class='ctx'> 	    ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));</div><div class='ctx'> 	    ADD_INSN1(ret, line, getconstant, ID2SYM(node-&gt;nd_vid));</div><div class='hunk'>@@ -4895,7 +5517,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    break;</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='del'>-	if (iseq-&gt;compile_data-&gt;option-&gt;specialized_instruction) {</div><div class='add'>+	if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;specialized_instruction) {</div><div class='ctx'> 	    /* TODO: detect by node */</div><div class='ctx'> 	    if (recv-&gt;last == recv-&gt;anchor.next &amp;&amp;</div><div class='ctx'> 		INSN_OF(recv-&gt;last) == BIN(putobject) &amp;&amp;</div><div class='hunk'>@@ -4907,7 +5529,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    else {</div><div class='ctx'> 		ADD_SEQ(ret, recv);</div><div class='ctx'> 		ADD_SEQ(ret, val);</div><div class='del'>-		ADD_INSN1(ret, line, opt_regexpmatch2, new_callinfo(iseq, idEqTilde, 1, 0, 0, NULL));</div><div class='add'>+		ADD_INSN2(ret, line, opt_regexpmatch2, new_callinfo(iseq, idEqTilde, 1, 0, NULL, FALSE), Qnil);</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='hunk'>@@ -4916,6 +5538,10 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    ADD_SEND(ret, line, idEqTilde, INT2FIX(1));</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='add'>+	if (node-&gt;nd_args) {</div><div class='add'>+	    compile_named_capture_assign(iseq, ret, node-&gt;nd_args);</div><div class='add'>+	}</div><div class='add'>+</div><div class='ctx'> 	if (poped) {</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='ctx'> 	}</div><div class='hunk'>@@ -4929,10 +5555,24 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_STR:{</div><div class='del'>-	node-&gt;nd_lit = rb_fstring(node-&gt;nd_lit);</div><div class='ctx'> 	debugp_param("nd_lit", node-&gt;nd_lit);</div><div class='ctx'> 	if (!poped) {</div><div class='del'>-	    ADD_INSN1(ret, line, putstring, node-&gt;nd_lit);</div><div class='add'>+	    node-&gt;nd_lit = rb_fstring(node-&gt;nd_lit);</div><div class='add'>+	    if (!ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;frozen_string_literal) {</div><div class='add'>+		ADD_INSN1(ret, line, putstring, node-&gt;nd_lit);</div><div class='add'>+	    }</div><div class='add'>+	    else {</div><div class='add'>+		if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;debug_frozen_string_literal || RTEST(ruby_debug)) {</div><div class='add'>+		    VALUE debug_info = rb_ary_new_from_args(2, iseq-&gt;body-&gt;location.path, INT2FIX(line));</div><div class='add'>+		    VALUE str = rb_str_dup(node-&gt;nd_lit);</div><div class='add'>+		    rb_ivar_set(str, id_debug_created_info, rb_obj_freeze(debug_info));</div><div class='add'>+		    ADD_INSN1(ret, line, putobject, rb_obj_freeze(str));</div><div class='add'>+		    iseq_add_mark_object_compile_time(iseq, str);</div><div class='add'>+		}</div><div class='add'>+		else {</div><div class='add'>+		    ADD_INSN1(ret, line, putobject, node-&gt;nd_lit);</div><div class='add'>+		}</div><div class='add'>+	    }</div><div class='ctx'> 	}</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='hunk'>@@ -4942,6 +5582,16 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	if (poped) {</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='ctx'> 	}</div><div class='add'>+	else {</div><div class='add'>+	    if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;frozen_string_literal) {</div><div class='add'>+		VALUE debug_info = Qnil;</div><div class='add'>+		if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;debug_frozen_string_literal || RTEST(ruby_debug)) {</div><div class='add'>+		    debug_info = rb_ary_new_from_args(2, iseq-&gt;body-&gt;location.path, INT2FIX(line));</div><div class='add'>+		    iseq_add_mark_object_compile_time(iseq, rb_obj_freeze(debug_info));</div><div class='add'>+		}</div><div class='add'>+		ADD_INSN1(ret, line, freezestring, debug_info);</div><div class='add'>+	    }</div><div class='add'>+	}</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_XSTR:{</div><div class='hunk'>@@ -4985,10 +5635,10 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_DREGX_ONCE:{</div><div class='del'>-	int ic_index = iseq-&gt;is_size++;</div><div class='add'>+	int ic_index = iseq-&gt;body-&gt;is_size++;</div><div class='ctx'> 	NODE *dregx_node = NEW_NODE(NODE_DREGX, node-&gt;u1.value, node-&gt;u2.value, node-&gt;u3.value);</div><div class='ctx'> 	NODE *block_node = NEW_NODE(NODE_SCOPE, 0, dregx_node, 0);</div><div class='del'>-	VALUE block_iseq = NEW_CHILD_ISEQVAL(block_node, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);</div><div class='add'>+	const rb_iseq_t * block_iseq = NEW_CHILD_ISEQ(block_node, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);</div><div class='ctx'> </div><div class='ctx'> 	ADD_INSN2(ret, line, once, block_iseq, INT2FIX(ic_index));</div><div class='ctx'> </div><div class='hunk'>@@ -5038,36 +5688,34 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_DEFN:{</div><div class='del'>-	VALUE iseqval = NEW_ISEQVAL(node-&gt;nd_defn,</div><div class='del'>-				    rb_id2str(node-&gt;nd_mid),</div><div class='del'>-				    ISEQ_TYPE_METHOD, line);</div><div class='add'>+	const rb_iseq_t *method_iseq = NEW_ISEQ(node-&gt;nd_defn,</div><div class='add'>+						rb_id2str(node-&gt;nd_mid),</div><div class='add'>+						ISEQ_TYPE_METHOD, line);</div><div class='ctx'> </div><div class='del'>-	debugp_param("defn/iseq", iseqval);</div><div class='add'>+	debugp_param("defn/iseq", rb_iseqw_new(method_iseq));</div><div class='ctx'> </div><div class='ctx'> 	ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));</div><div class='del'>-	ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));</div><div class='ctx'> 	ADD_INSN1(ret, line, putobject, ID2SYM(node-&gt;nd_mid));</div><div class='del'>-	ADD_INSN1(ret, line, putiseq, iseqval);</div><div class='del'>-	ADD_SEND (ret, line, id_core_define_method, INT2FIX(3));</div><div class='add'>+	ADD_INSN1(ret, line, putiseq, method_iseq);</div><div class='add'>+	ADD_SEND (ret, line, id_core_define_method, INT2FIX(2));</div><div class='ctx'> </div><div class='ctx'> 	if (poped) {</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='del'>-	debugp_param("defn", iseqval);</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_DEFS:{</div><div class='del'>-	VALUE iseqval = NEW_ISEQVAL(node-&gt;nd_defn,</div><div class='del'>-				    rb_id2str(node-&gt;nd_mid),</div><div class='del'>-				    ISEQ_TYPE_METHOD, line);</div><div class='add'>+	const rb_iseq_t * singleton_method = NEW_ISEQ(node-&gt;nd_defn,</div><div class='add'>+						      rb_id2str(node-&gt;nd_mid),</div><div class='add'>+						      ISEQ_TYPE_METHOD, line);</div><div class='ctx'> </div><div class='del'>-	debugp_param("defs/iseq", iseqval);</div><div class='add'>+	debugp_param("defs/iseq", rb_iseqw_new(singleton_method));</div><div class='ctx'> </div><div class='ctx'> 	ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));</div><div class='ctx'> 	COMPILE(ret, "defs: recv", node-&gt;nd_recv);</div><div class='ctx'> 	ADD_INSN1(ret, line, putobject, ID2SYM(node-&gt;nd_mid));</div><div class='del'>-	ADD_INSN1(ret, line, putiseq, iseqval);</div><div class='add'>+	ADD_INSN1(ret, line, putiseq, singleton_method);</div><div class='ctx'> 	ADD_SEND (ret, line, id_core_define_singleton_method, INT2FIX(3));</div><div class='ctx'> </div><div class='ctx'> 	if (poped) {</div><div class='hunk'>@@ -5110,18 +5758,16 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_CLASS:{</div><div class='del'>-	VALUE iseqval =</div><div class='del'>-	    NEW_CHILD_ISEQVAL(</div><div class='del'>-		node-&gt;nd_body,</div><div class='del'>-		rb_sprintf("&lt;class:%"PRIsVALUE"&gt;", rb_id2str(node-&gt;nd_cpath-&gt;nd_mid)),</div><div class='del'>-		ISEQ_TYPE_CLASS, line);</div><div class='add'>+	const rb_iseq_t *class_iseq = NEW_CHILD_ISEQ(node-&gt;nd_body,</div><div class='add'>+						     rb_sprintf("&lt;class:%"PRIsVALUE"&gt;", rb_id2str(node-&gt;nd_cpath-&gt;nd_mid)),</div><div class='add'>+						     ISEQ_TYPE_CLASS, line);</div><div class='ctx'> 	VALUE noscope = compile_cpath(ret, iseq, node-&gt;nd_cpath);</div><div class='ctx'> 	int flags = VM_DEFINECLASS_TYPE_CLASS;</div><div class='add'>+</div><div class='ctx'> 	if (!noscope) flags |= VM_DEFINECLASS_FLAG_SCOPED;</div><div class='ctx'> 	if (node-&gt;nd_super) flags |= VM_DEFINECLASS_FLAG_HAS_SUPERCLASS;</div><div class='ctx'> 	COMPILE(ret, "super", node-&gt;nd_super);</div><div class='del'>-	ADD_INSN3(ret, line, defineclass,</div><div class='del'>-		  ID2SYM(node-&gt;nd_cpath-&gt;nd_mid), iseqval, INT2FIX(flags));</div><div class='add'>+	ADD_INSN3(ret, line, defineclass, ID2SYM(node-&gt;nd_cpath-&gt;nd_mid), class_iseq, INT2FIX(flags));</div><div class='ctx'> </div><div class='ctx'> 	if (poped) {</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='hunk'>@@ -5129,17 +5775,16 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_MODULE:{</div><div class='del'>-	VALUE iseqval = NEW_CHILD_ISEQVAL(</div><div class='del'>-	    node-&gt;nd_body,</div><div class='del'>-	    rb_sprintf("&lt;module:%"PRIsVALUE"&gt;", rb_id2str(node-&gt;nd_cpath-&gt;nd_mid)),</div><div class='del'>-	    ISEQ_TYPE_CLASS, line);</div><div class='del'>-</div><div class='add'>+        const rb_iseq_t *module_iseq = NEW_CHILD_ISEQ(node-&gt;nd_body,</div><div class='add'>+						      rb_sprintf("&lt;module:%"PRIsVALUE"&gt;", rb_id2str(node-&gt;nd_cpath-&gt;nd_mid)),</div><div class='add'>+						      ISEQ_TYPE_CLASS, line);</div><div class='ctx'> 	VALUE noscope = compile_cpath(ret, iseq, node-&gt;nd_cpath);</div><div class='ctx'> 	int flags = VM_DEFINECLASS_TYPE_MODULE;</div><div class='add'>+</div><div class='ctx'> 	if (!noscope) flags |= VM_DEFINECLASS_FLAG_SCOPED;</div><div class='ctx'> 	ADD_INSN (ret, line, putnil); /* dummy */</div><div class='del'>-	ADD_INSN3(ret, line, defineclass,</div><div class='del'>-		  ID2SYM(node-&gt;nd_cpath-&gt;nd_mid), iseqval, INT2FIX(flags));</div><div class='add'>+	ADD_INSN3(ret, line, defineclass, ID2SYM(node-&gt;nd_cpath-&gt;nd_mid), module_iseq, INT2FIX(flags));</div><div class='add'>+</div><div class='ctx'> 	if (poped) {</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='ctx'> 	}</div><div class='hunk'>@@ -5147,15 +5792,14 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_SCLASS:{</div><div class='ctx'> 	ID singletonclass;</div><div class='del'>-	VALUE iseqval =</div><div class='del'>-	    NEW_ISEQVAL(node-&gt;nd_body, rb_str_new2("singleton class"),</div><div class='del'>-			ISEQ_TYPE_CLASS, line);</div><div class='add'>+	const rb_iseq_t *singleton_class = NEW_ISEQ(node-&gt;nd_body, rb_str_new2("singleton class"),</div><div class='add'>+						    ISEQ_TYPE_CLASS, line);</div><div class='ctx'> </div><div class='ctx'> 	COMPILE(ret, "sclass#recv", node-&gt;nd_recv);</div><div class='ctx'> 	ADD_INSN (ret, line, putnil);</div><div class='ctx'> 	CONST_ID(singletonclass, "singletonclass");</div><div class='ctx'> 	ADD_INSN3(ret, line, defineclass,</div><div class='del'>-		  ID2SYM(singletonclass), iseqval,</div><div class='add'>+		  ID2SYM(singletonclass), singleton_class,</div><div class='ctx'> 		  INT2FIX(VM_DEFINECLASS_TYPE_SINGLETON_CLASS));</div><div class='ctx'> </div><div class='ctx'> 	if (poped) {</div><div class='hunk'>@@ -5167,7 +5811,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	if (rb_is_const_id(node-&gt;nd_mid)) {</div><div class='ctx'> 	    /* constant */</div><div class='ctx'> 	    LABEL *lend = NEW_LABEL(line);</div><div class='del'>-	    int ic_index = iseq-&gt;is_size++;</div><div class='add'>+	    int ic_index = iseq-&gt;body-&gt;is_size++;</div><div class='ctx'> </div><div class='ctx'> 	    DECL_ANCHOR(pref);</div><div class='ctx'> 	    DECL_ANCHOR(body);</div><div class='hunk'>@@ -5176,7 +5820,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    INIT_ANCHOR(body);</div><div class='ctx'> 	    compile_colon2(iseq, node, pref, body);</div><div class='ctx'> 	    if (LIST_SIZE_ZERO(pref)) {</div><div class='del'>-		if (iseq-&gt;compile_data-&gt;option-&gt;inline_const_cache) {</div><div class='add'>+		if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;inline_const_cache) {</div><div class='ctx'> 		    ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));</div><div class='ctx'> 		}</div><div class='ctx'> 		else {</div><div class='hunk'>@@ -5185,7 +5829,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> </div><div class='ctx'> 		ADD_SEQ(ret, body);</div><div class='ctx'> </div><div class='del'>-		if (iseq-&gt;compile_data-&gt;option-&gt;inline_const_cache) {</div><div class='add'>+		if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;inline_const_cache) {</div><div class='ctx'> 		    ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));</div><div class='ctx'> 		    ADD_LABEL(ret, lend);</div><div class='ctx'> 		}</div><div class='hunk'>@@ -5208,12 +5852,12 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_COLON3:{</div><div class='ctx'> 	LABEL *lend = NEW_LABEL(line);</div><div class='del'>-	int ic_index = iseq-&gt;is_size++;</div><div class='add'>+	int ic_index = iseq-&gt;body-&gt;is_size++;</div><div class='ctx'> </div><div class='ctx'> 	debugi("colon3#nd_mid", node-&gt;nd_mid);</div><div class='ctx'> </div><div class='ctx'> 	/* add cache insn */</div><div class='del'>-	if (iseq-&gt;compile_data-&gt;option-&gt;inline_const_cache) {</div><div class='add'>+	if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;inline_const_cache) {</div><div class='ctx'> 	    ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='ctx'> 	}</div><div class='hunk'>@@ -5221,7 +5865,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	ADD_INSN1(ret, line, putobject, rb_cObject);</div><div class='ctx'> 	ADD_INSN1(ret, line, getconstant, ID2SYM(node-&gt;nd_mid));</div><div class='ctx'> </div><div class='del'>-	if (iseq-&gt;compile_data-&gt;option-&gt;inline_const_cache) {</div><div class='add'>+	if (ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;inline_const_cache) {</div><div class='ctx'> 	    ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));</div><div class='ctx'> 	    ADD_LABEL(ret, lend);</div><div class='ctx'> 	}</div><div class='hunk'>@@ -5250,11 +5894,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	LABEL *lend = NEW_LABEL(line);</div><div class='ctx'> 	LABEL *lfin = NEW_LABEL(line);</div><div class='ctx'> 	LABEL *ltrue = NEW_LABEL(line);</div><div class='del'>-	rb_iseq_t *local_iseq = iseq-&gt;local_iseq;</div><div class='add'>+	rb_iseq_t *local_iseq = iseq-&gt;body-&gt;local_iseq;</div><div class='ctx'> 	rb_num_t cnt;</div><div class='ctx'> 	VALUE key;</div><div class='ctx'> </div><div class='del'>-	cnt = local_iseq-&gt;flip_cnt++ + DEFAULT_SPECIAL_VAR_COUNT;</div><div class='add'>+	cnt = ISEQ_FLIP_CNT_INCREMENT(local_iseq) + VM_SVAR_FLIPFLOP_START;</div><div class='ctx'> 	key = INT2FIX(cnt);</div><div class='ctx'> </div><div class='ctx'> 	ADD_INSN2(ret, line, getspecial, key, INT2FIX(0));</div><div class='hunk'>@@ -5312,21 +5956,21 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_ERRINFO:{</div><div class='ctx'> 	if (!poped) {</div><div class='del'>-	    if (iseq-&gt;type == ISEQ_TYPE_RESCUE) {</div><div class='del'>-		ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));</div><div class='add'>+	    if (iseq-&gt;body-&gt;type == ISEQ_TYPE_RESCUE) {</div><div class='add'>+		ADD_GETLOCAL(ret, line, LVAR_ERRINFO, 0);</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else {</div><div class='del'>-		rb_iseq_t *ip = iseq;</div><div class='add'>+		const rb_iseq_t *ip = iseq;</div><div class='ctx'> 		int level = 0;</div><div class='ctx'> 		while (ip) {</div><div class='del'>-		    if (ip-&gt;type == ISEQ_TYPE_RESCUE) {</div><div class='add'>+		    if (ip-&gt;body-&gt;type == ISEQ_TYPE_RESCUE) {</div><div class='ctx'> 			break;</div><div class='ctx'> 		    }</div><div class='del'>-		    ip = ip-&gt;parent_iseq;</div><div class='add'>+		    ip = ip-&gt;body-&gt;parent_iseq;</div><div class='ctx'> 		    level++;</div><div class='ctx'> 		}</div><div class='ctx'> 		if (ip) {</div><div class='del'>-		    ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(level));</div><div class='add'>+		    ADD_GETLOCAL(ret, line, LVAR_ERRINFO, level);</div><div class='ctx'> 		}</div><div class='ctx'> 		else {</div><div class='ctx'> 		    ADD_INSN(ret, line, putnil);</div><div class='hunk'>@@ -5360,10 +6004,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	/* compiled to:</div><div class='ctx'> 	 *   ONCE{ rb_mRubyVMFrozenCore::core#set_postexe{ ... } }</div><div class='ctx'> 	 */</div><div class='del'>-	int is_index = iseq-&gt;is_size++;</div><div class='del'>-	VALUE once_iseq = NEW_CHILD_ISEQVAL(</div><div class='del'>-	    NEW_IFUNC(build_postexe_iseq, node-&gt;nd_body),</div><div class='del'>-	    make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);</div><div class='add'>+	int is_index = iseq-&gt;body-&gt;is_size++;</div><div class='add'>+	const rb_iseq_t *once_iseq = NEW_CHILD_ISEQ((NODE *)IFUNC_NEW(build_postexe_iseq, node-&gt;nd_body, 0),</div><div class='add'>+						    make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);</div><div class='ctx'> </div><div class='ctx'> 	ADD_INSN2(ret, line, once, once_iseq, INT2FIX(is_index));</div><div class='ctx'> </div><div class='hunk'>@@ -5379,23 +6022,23 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> </div><div class='ctx'> 	    if (default_value == (NODE *)-1) {</div><div class='ctx'> 		/* required argument. do nothing */</div><div class='del'>-		rb_bug("unreachable");</div><div class='add'>+		compile_bug(ERROR_ARGS "unreachable");</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else if (nd_type(default_value) == NODE_LIT ||</div><div class='ctx'> 		     nd_type(default_value) == NODE_NIL ||</div><div class='ctx'> 		     nd_type(default_value) == NODE_TRUE ||</div><div class='ctx'> 		     nd_type(default_value) == NODE_FALSE) {</div><div class='del'>-		rb_bug("unreachable");</div><div class='add'>+		compile_bug(ERROR_ARGS "unreachable");</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else {</div><div class='ctx'> 		/* if keywordcheck(_kw_bits, nth_keyword)</div><div class='ctx'> 		 *   kw = default_value</div><div class='ctx'> 		 * end</div><div class='ctx'> 		 */</div><div class='del'>-		int kw_bits_idx = iseq-&gt;local_size - iseq-&gt;param.keyword-&gt;bits_start;</div><div class='del'>-		int keyword_idx = iseq-&gt;param.keyword-&gt;num;</div><div class='add'>+		int kw_bits_idx = iseq-&gt;body-&gt;local_table_size - iseq-&gt;body-&gt;param.keyword-&gt;bits_start;</div><div class='add'>+		int keyword_idx = iseq-&gt;body-&gt;param.keyword-&gt;num;</div><div class='ctx'> </div><div class='del'>-		ADD_INSN2(ret, line, checkkeyword, INT2FIX(kw_bits_idx), INT2FIX(keyword_idx));</div><div class='add'>+		ADD_INSN2(ret, line, checkkeyword, INT2FIX(kw_bits_idx + VM_ENV_DATA_SIZE - 1), INT2FIX(keyword_idx));</div><div class='ctx'> 		ADD_INSNL(ret, line, branchif, end_label);</div><div class='ctx'> 		COMPILE_POPED(ret, "keyword default argument", node-&gt;nd_body);</div><div class='ctx'> 		ADD_LABEL(ret, end_label);</div><div class='hunk'>@@ -5417,17 +6060,18 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	DECL_ANCHOR(recv);</div><div class='ctx'> 	DECL_ANCHOR(args);</div><div class='ctx'> 	unsigned int flag = 0;</div><div class='add'>+	ID mid = node-&gt;nd_mid;</div><div class='add'>+	LABEL *lskip = 0;</div><div class='ctx'> 	VALUE argc;</div><div class='del'>-	int asgnflag;</div><div class='ctx'> </div><div class='ctx'> 	/* optimization shortcut</div><div class='ctx'> 	 *   obj["literal"] = value -&gt; opt_aset_with(obj, "literal", value)</div><div class='ctx'> 	 */</div><div class='del'>-	if (node-&gt;nd_mid == idASET &amp;&amp; !private_recv_p(node) &amp;&amp; node-&gt;nd_args &amp;&amp;</div><div class='add'>+	if (mid == idASET &amp;&amp; !private_recv_p(node) &amp;&amp; node-&gt;nd_args &amp;&amp;</div><div class='ctx'> 	    nd_type(node-&gt;nd_args) == NODE_ARRAY &amp;&amp; node-&gt;nd_args-&gt;nd_alen == 2 &amp;&amp;</div><div class='ctx'> 	    nd_type(node-&gt;nd_args-&gt;nd_head) == NODE_STR &amp;&amp;</div><div class='del'>-	    iseq-&gt;compile_data-&gt;current_block == Qfalse &amp;&amp;</div><div class='del'>-	    iseq-&gt;compile_data-&gt;option-&gt;specialized_instruction)</div><div class='add'>+	    ISEQ_COMPILE_DATA(iseq)-&gt;current_block == NULL &amp;&amp;</div><div class='add'>+	    ISEQ_COMPILE_DATA(iseq)-&gt;option-&gt;specialized_instruction)</div><div class='ctx'> 	{</div><div class='ctx'> 	    VALUE str = rb_fstring(node-&gt;nd_args-&gt;nd_head-&gt;nd_lit);</div><div class='ctx'> 	    node-&gt;nd_args-&gt;nd_head-&gt;nd_lit = str;</div><div class='hunk'>@@ -5438,8 +6082,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 		ADD_INSN(ret, line, swap);</div><div class='ctx'> 		ADD_INSN1(ret, line, topn, INT2FIX(1));</div><div class='ctx'> 	    }</div><div class='del'>-	    ADD_INSN2(ret, line, opt_aset_with,</div><div class='del'>-		      new_callinfo(iseq, idASET, 2, 0, 0, NULL), str);</div><div class='add'>+	    ADD_INSN3(ret, line, opt_aset_with,</div><div class='add'>+		      new_callinfo(iseq, idASET, 2, 0, NULL, FALSE),</div><div class='add'>+		      NULL/* CALL_CACHE */, str);</div><div class='ctx'> 	    ADD_INSN(ret, line, pop);</div><div class='ctx'> 	    break;</div><div class='ctx'> 	}</div><div class='hunk'>@@ -5448,11 +6093,18 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	INIT_ANCHOR(args);</div><div class='ctx'> 	argc = setup_args(iseq, args, node-&gt;nd_args, &amp;flag, NULL);</div><div class='ctx'> </div><div class='del'>-	flag |= (asgnflag = COMPILE_RECV(recv, "recv", node));</div><div class='add'>+	flag |= COMPILE_RECV(recv, "recv", node);</div><div class='ctx'> </div><div class='ctx'> 	debugp_param("argc", argc);</div><div class='del'>-	debugp_param("nd_mid", ID2SYM(node-&gt;nd_mid));</div><div class='add'>+	debugp_param("nd_mid", ID2SYM(mid));</div><div class='ctx'> </div><div class='add'>+	if (!rb_is_attrset_id(mid)) {</div><div class='add'>+	    /* safe nav attr */</div><div class='add'>+	    mid = rb_id_attrset(mid);</div><div class='add'>+	    ADD_INSN(recv, line, dup);</div><div class='add'>+	    lskip = NEW_LABEL(line);</div><div class='add'>+	    ADD_INSNL(recv, line, branchnil, lskip);</div><div class='add'>+	}</div><div class='ctx'> 	if (!poped) {</div><div class='ctx'> 	    ADD_INSN(ret, line, putnil);</div><div class='ctx'> 	    ADD_SEQ(ret, recv);</div><div class='hunk'>@@ -5462,7 +6114,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 		ADD_INSN1(ret, line, topn, INT2FIX(1));</div><div class='ctx'> 		if (flag &amp; VM_CALL_ARGS_SPLAT) {</div><div class='ctx'> 		    ADD_INSN1(ret, line, putobject, INT2FIX(-1));</div><div class='del'>-		    ADD_SEND_WITH_FLAG(ret, line, idAREF, INT2FIX(1), INT2FIX(asgnflag));</div><div class='add'>+		    ADD_SEND(ret, line, idAREF, INT2FIX(1));</div><div class='ctx'> 		}</div><div class='ctx'> 		ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 3));</div><div class='ctx'> 		ADD_INSN (ret, line, pop);</div><div class='hunk'>@@ -5470,7 +6122,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    else if (flag &amp; VM_CALL_ARGS_SPLAT) {</div><div class='ctx'> 		ADD_INSN(ret, line, dup);</div><div class='ctx'> 		ADD_INSN1(ret, line, putobject, INT2FIX(-1));</div><div class='del'>-		ADD_SEND_WITH_FLAG(ret, line, idAREF, INT2FIX(1), INT2FIX(asgnflag));</div><div class='add'>+		ADD_SEND(ret, line, idAREF, INT2FIX(1));</div><div class='ctx'> 		ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2));</div><div class='ctx'> 		ADD_INSN (ret, line, pop);</div><div class='ctx'> 	    }</div><div class='hunk'>@@ -5482,20 +6134,29 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	    ADD_SEQ(ret, recv);</div><div class='ctx'> 	    ADD_SEQ(ret, args);</div><div class='ctx'> 	}</div><div class='del'>-	ADD_SEND_WITH_FLAG(ret, line, node-&gt;nd_mid, argc, INT2FIX(flag));</div><div class='add'>+	ADD_SEND_WITH_FLAG(ret, line, mid, argc, INT2FIX(flag));</div><div class='add'>+	if (lskip) ADD_LABEL(ret, lskip);</div><div class='ctx'> 	ADD_INSN(ret, line, pop);</div><div class='ctx'> </div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_PRELUDE:{</div><div class='add'>+	const rb_compile_option_t *orig_opt = ISEQ_COMPILE_DATA(iseq)-&gt;option;</div><div class='add'>+	if (node-&gt;nd_orig) {</div><div class='add'>+	    rb_compile_option_t new_opt = *orig_opt;</div><div class='add'>+	    rb_iseq_make_compile_option(&amp;new_opt, node-&gt;nd_orig);</div><div class='add'>+	    ISEQ_COMPILE_DATA(iseq)-&gt;option = &amp;new_opt;</div><div class='add'>+	}</div><div class='ctx'> 	COMPILE_POPED(ret, "prelude", node-&gt;nd_head);</div><div class='ctx'> 	COMPILE_(ret, "body", node-&gt;nd_body, poped);</div><div class='add'>+	ISEQ_COMPILE_DATA(iseq)-&gt;option = orig_opt;</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       case NODE_LAMBDA:{</div><div class='ctx'> 	/* compile same as lambda{...} */</div><div class='del'>-	VALUE block = NEW_CHILD_ISEQVAL(node-&gt;nd_body, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);</div><div class='add'>+	const rb_iseq_t *block = NEW_CHILD_ISEQ(node-&gt;nd_body, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);</div><div class='ctx'> 	VALUE argc = INT2FIX(0);</div><div class='add'>+</div><div class='ctx'> 	ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));</div><div class='ctx'> 	ADD_CALL_WITH_BLOCK(ret, line, idLambda, argc, block);</div><div class='ctx'> </div><div class='hunk'>@@ -5505,7 +6166,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)</div><div class='ctx'> 	break;</div><div class='ctx'>       }</div><div class='ctx'>       default:</div><div class='del'>-	rb_bug("iseq_compile_each: unknown node: %s", ruby_node_name(type));</div><div class='add'>+	UNKNOWN_NODE("iseq_compile_each", node);</div><div class='ctx'> 	return COMPILE_NG;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='hunk'>@@ -5580,7 +6241,7 @@ insn_data_to_s_detail(INSN *iobj)</div><div class='ctx'> 		    rb_iseq_t *iseq = (rb_iseq_t *)OPERAND_AT(iobj, j);</div><div class='ctx'> 		    VALUE val = Qnil;</div><div class='ctx'> 		    if (0 &amp;&amp; iseq) { /* TODO: invalidate now */</div><div class='del'>-			val = iseq-&gt;self;</div><div class='add'>+			val = (VALUE)iseq;</div><div class='ctx'> 		    }</div><div class='ctx'> 		    rb_str_concat(str, opobj_inspect(val));</div><div class='ctx'> 		}</div><div class='hunk'>@@ -5608,13 +6269,17 @@ insn_data_to_s_detail(INSN *iobj)</div><div class='ctx'> 		break;</div><div class='ctx'> 	      case TS_CALLINFO: /* call info */</div><div class='ctx'> 		{</div><div class='del'>-		    rb_call_info_t *ci = (rb_call_info_t *)OPERAND_AT(iobj, j);</div><div class='add'>+		    struct rb_call_info *ci = (struct rb_call_info *)OPERAND_AT(iobj, j);</div><div class='ctx'> 		    rb_str_cat2(str, "&lt;callinfo:");</div><div class='del'>-		    if (ci-&gt;mid)</div><div class='del'>-			rb_str_catf(str, "%"PRIsVALUE, rb_id2str(ci-&gt;mid));</div><div class='add'>+		    if (ci-&gt;mid) rb_str_catf(str, "%"PRIsVALUE, rb_id2str(ci-&gt;mid));</div><div class='ctx'> 		    rb_str_catf(str, ", %d&gt;", ci-&gt;orig_argc);</div><div class='ctx'> 		    break;</div><div class='ctx'> 		}</div><div class='add'>+	      case TS_CALLCACHE: /* call cache */</div><div class='add'>+		{</div><div class='add'>+		    rb_str_catf(str, "&lt;call cache&gt;");</div><div class='add'>+		    break;</div><div class='add'>+		}</div><div class='ctx'> 	      case TS_CDHASH:	/* case/when condition cache */</div><div class='ctx'> 		rb_str_cat2(str, "&lt;ch&gt;");</div><div class='ctx'> 		break;</div><div class='hunk'>@@ -5659,7 +6324,7 @@ dump_disasm_list(struct iseq_link_element *link)</div><div class='ctx'> 	    {</div><div class='ctx'> 		iobj = (INSN *)link;</div><div class='ctx'> 		str = insn_data_to_s_detail(iobj);</div><div class='del'>-		printf("%04d %-65s(%4d)\n", pos, StringValueCStr(str), iobj-&gt;line_no);</div><div class='add'>+		printf("%04d %-65s(%4u)\n", pos, StringValueCStr(str), iobj-&gt;line_no);</div><div class='ctx'> 		pos += insn_data_length(iobj);</div><div class='ctx'> 		break;</div><div class='ctx'> 	    }</div><div class='hunk'>@@ -5687,6 +6352,7 @@ dump_disasm_list(struct iseq_link_element *link)</div><div class='ctx'> 	link = link-&gt;next;</div><div class='ctx'>     }</div><div class='ctx'>     printf("---------------------\n");</div><div class='add'>+    fflush(stdout);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> const char *</div><div class='hunk'>@@ -5720,6 +6386,7 @@ register_label(rb_iseq_t *iseq, struct st_table *labels_table, VALUE obj)</div><div class='ctx'>     else {</div><div class='ctx'> 	label = (LABEL *)tmp;</div><div class='ctx'>     }</div><div class='add'>+    LABEL_REF(label);</div><div class='ctx'>     return label;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -5728,7 +6395,6 @@ get_exception_sym2type(VALUE sym)</div><div class='ctx'> {</div><div class='ctx'> #undef rb_intern</div><div class='ctx'> #define rb_intern(str) rb_intern_const(str)</div><div class='del'>-    VALUE sym_inspect;</div><div class='ctx'>     static VALUE symRescue, symEnsure, symRetry;</div><div class='ctx'>     static VALUE symBreak, symRedo, symNext;</div><div class='ctx'> </div><div class='hunk'>@@ -5747,9 +6413,7 @@ get_exception_sym2type(VALUE sym)</div><div class='ctx'>     if (sym == symBreak)  return CATCH_TYPE_BREAK;</div><div class='ctx'>     if (sym == symRedo)   return CATCH_TYPE_REDO;</div><div class='ctx'>     if (sym == symNext)   return CATCH_TYPE_NEXT;</div><div class='del'>-    sym_inspect = rb_inspect(sym);</div><div class='del'>-    rb_raise(rb_eSyntaxError, "invalid exception symbol: %s",</div><div class='del'>-	     StringValuePtr(sym_inspect));</div><div class='add'>+    rb_raise(rb_eSyntaxError, "invalid exception symbol: %+"PRIsVALUE, sym);</div><div class='ctx'>     return 0;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -5760,7 +6424,8 @@ iseq_build_from_ary_exception(rb_iseq_t *iseq, struct st_table *labels_table,</div><div class='ctx'>     int i;</div><div class='ctx'> </div><div class='ctx'>     for (i=0; i&lt;RARRAY_LEN(exception); i++) {</div><div class='del'>-	VALUE v, type, eiseqval;</div><div class='add'>+	const rb_iseq_t *eiseq;</div><div class='add'>+	VALUE v, type;</div><div class='ctx'> 	const VALUE *ptr;</div><div class='ctx'> 	LABEL *lstart, *lend, *lcont;</div><div class='ctx'> 	unsigned int sp;</div><div class='hunk'>@@ -5773,10 +6438,10 @@ iseq_build_from_ary_exception(rb_iseq_t *iseq, struct st_table *labels_table,</div><div class='ctx'> 	ptr  = RARRAY_CONST_PTR(v);</div><div class='ctx'> 	type = get_exception_sym2type(ptr[0]);</div><div class='ctx'> 	if (ptr[1] == Qnil) {</div><div class='del'>-	    eiseqval = 0;</div><div class='add'>+	    eiseq = NULL;</div><div class='ctx'> 	}</div><div class='ctx'> 	else {</div><div class='del'>-	    eiseqval = rb_iseq_load(ptr[1], iseq-&gt;self, Qnil);</div><div class='add'>+	    eiseq = rb_iseqw_to_iseq(rb_iseq_load(ptr[1], (VALUE)iseq, Qnil));</div><div class='ctx'> 	}</div><div class='ctx'> </div><div class='ctx'> 	lstart = register_label(iseq, labels_table, ptr[2]);</div><div class='hunk'>@@ -5786,7 +6451,7 @@ iseq_build_from_ary_exception(rb_iseq_t *iseq, struct st_table *labels_table,</div><div class='ctx'> </div><div class='ctx'> 	(void)sp;</div><div class='ctx'> </div><div class='del'>-	ADD_CATCH_ENTRY(type, lstart, lend, eiseqval, lcont);</div><div class='add'>+	ADD_CATCH_ENTRY(type, lstart, lend, eiseq, lcont);</div><div class='ctx'> </div><div class='ctx'> 	RB_GC_GUARD(v);</div><div class='ctx'>     }</div><div class='hunk'>@@ -5807,21 +6472,25 @@ insn_make_insn_table(void)</div><div class='ctx'>     return table;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-static VALUE</div><div class='del'>-iseq_build_load_iseq(rb_iseq_t *iseq, VALUE op)</div><div class='add'>+static const rb_iseq_t *</div><div class='add'>+iseq_build_load_iseq(const rb_iseq_t *iseq, VALUE op)</div><div class='ctx'> {</div><div class='del'>-    VALUE iseqval;</div><div class='add'>+    VALUE iseqw;</div><div class='add'>+    const rb_iseq_t *loaded_iseq;</div><div class='add'>+</div><div class='ctx'>     if (RB_TYPE_P(op, T_ARRAY)) {</div><div class='del'>-	iseqval = rb_iseq_load(op, iseq-&gt;self, Qnil);</div><div class='add'>+	iseqw = rb_iseq_load(op, (VALUE)iseq, Qnil);</div><div class='ctx'>     }</div><div class='ctx'>     else if (CLASS_OF(op) == rb_cISeq) {</div><div class='del'>-	iseqval = op;</div><div class='add'>+	iseqw = op;</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='ctx'> 	rb_raise(rb_eSyntaxError, "ISEQ is required");</div><div class='ctx'>     }</div><div class='del'>-    iseq_add_mark_object(iseq, iseqval);</div><div class='del'>-    return iseqval;</div><div class='add'>+</div><div class='add'>+    loaded_iseq = rb_iseqw_to_iseq(iseqw);</div><div class='add'>+    iseq_add_mark_object(iseq, (VALUE)loaded_iseq);</div><div class='add'>+    return loaded_iseq;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static VALUE</div><div class='hunk'>@@ -5829,26 +6498,23 @@ iseq_build_callinfo_from_hash(rb_iseq_t *iseq, VALUE op)</div><div class='ctx'> {</div><div class='ctx'>     ID mid = 0;</div><div class='ctx'>     int orig_argc = 0;</div><div class='del'>-    VALUE block = 0;</div><div class='ctx'>     unsigned int flag = 0;</div><div class='del'>-    rb_call_info_kw_arg_t *kw_arg = 0;</div><div class='add'>+    struct rb_call_info_kw_arg *kw_arg = 0;</div><div class='ctx'> </div><div class='ctx'>     if (!NIL_P(op)) {</div><div class='ctx'> 	VALUE vmid = rb_hash_aref(op, ID2SYM(rb_intern("mid")));</div><div class='ctx'> 	VALUE vflag = rb_hash_aref(op, ID2SYM(rb_intern("flag")));</div><div class='ctx'> 	VALUE vorig_argc = rb_hash_aref(op, ID2SYM(rb_intern("orig_argc")));</div><div class='del'>-	VALUE vblock = rb_hash_aref(op, ID2SYM(rb_intern("blockptr")));</div><div class='ctx'> 	VALUE vkw_arg = rb_hash_aref(op, ID2SYM(rb_intern("kw_arg")));</div><div class='ctx'> </div><div class='ctx'> 	if (!NIL_P(vmid)) mid = SYM2ID(vmid);</div><div class='ctx'> 	if (!NIL_P(vflag)) flag = NUM2UINT(vflag);</div><div class='ctx'> 	if (!NIL_P(vorig_argc)) orig_argc = FIX2INT(vorig_argc);</div><div class='del'>-	if (!NIL_P(vblock)) block = iseq_build_load_iseq(iseq, vblock);</div><div class='ctx'> </div><div class='ctx'> 	if (!NIL_P(vkw_arg)) {</div><div class='ctx'> 	    int i;</div><div class='ctx'> 	    int len = RARRAY_LENINT(vkw_arg);</div><div class='del'>-	    size_t n = sizeof(rb_call_info_kw_arg_t) + sizeof(VALUE) * (len - 1);</div><div class='add'>+	    size_t n = rb_call_info_kw_arg_bytes(len);</div><div class='ctx'> </div><div class='ctx'> 	    kw_arg = xmalloc(n);</div><div class='ctx'> 	    kw_arg-&gt;keyword_len = len;</div><div class='hunk'>@@ -5860,17 +6526,20 @@ iseq_build_callinfo_from_hash(rb_iseq_t *iseq, VALUE op)</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    return (VALUE)new_callinfo(iseq, mid, orig_argc, block, flag, kw_arg);</div><div class='add'>+    return (VALUE)new_callinfo(iseq, mid, orig_argc, flag, kw_arg, (flag &amp; VM_CALL_ARGS_SIMPLE) == 0);</div><div class='ctx'> }</div><div class='add'>+</div><div class='ctx'> static int</div><div class='ctx'> iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,</div><div class='del'>-		VALUE body, struct st_table *labels_table)</div><div class='add'>+			 VALUE body, VALUE labels_wrapper)</div><div class='ctx'> {</div><div class='ctx'>     /* TODO: body should be frozen */</div><div class='ctx'>     const VALUE *ptr = RARRAY_CONST_PTR(body);</div><div class='ctx'>     long i, len = RARRAY_LEN(body);</div><div class='add'>+    struct st_table *labels_table = DATA_PTR(labels_wrapper);</div><div class='ctx'>     int j;</div><div class='ctx'>     int line_no = 0;</div><div class='add'>+    int ret = COMPILE_OK;</div><div class='ctx'> </div><div class='ctx'>     /*</div><div class='ctx'>      * index -&gt; LABEL *label</div><div class='hunk'>@@ -5900,14 +6569,17 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,</div><div class='ctx'> 	    insn = (argc &lt; 0) ? Qnil : RARRAY_AREF(obj, 0);</div><div class='ctx'> 	    if (st_lookup(insn_table, (st_data_t)insn, &amp;insn_id) == 0) {</div><div class='ctx'> 		/* TODO: exception */</div><div class='del'>-		rb_compile_error(RSTRING_PTR(iseq-&gt;location.path), line_no,</div><div class='del'>-				 "unknown instruction: %"PRIsVALUE,</div><div class='del'>-				 rb_inspect(insn));</div><div class='add'>+		COMPILE_ERROR(iseq, line_no,</div><div class='add'>+			      "unknown instruction: %+"PRIsVALUE, insn);</div><div class='add'>+		ret = COMPILE_NG;</div><div class='add'>+		break;</div><div class='ctx'> 	    }</div><div class='ctx'> </div><div class='ctx'> 	    if (argc != insn_len((VALUE)insn_id)-1) {</div><div class='del'>-		rb_compile_error(RSTRING_PTR(iseq-&gt;location.path), line_no,</div><div class='del'>-				 "operand size mismatch");</div><div class='add'>+		COMPILE_ERROR(iseq, line_no,</div><div class='add'>+			      "operand size mismatch");</div><div class='add'>+		ret = COMPILE_NG;</div><div class='add'>+		break;</div><div class='ctx'> 	    }</div><div class='ctx'> </div><div class='ctx'> 	    if (argc &gt; 0) {</div><div class='hunk'>@@ -5932,7 +6604,7 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,</div><div class='ctx'> 		      case TS_ISEQ:</div><div class='ctx'> 			{</div><div class='ctx'> 			    if (op != Qnil) {</div><div class='del'>-				argv[j] = iseq_build_load_iseq(iseq, op);</div><div class='add'>+				argv[j] = (VALUE)iseq_build_load_iseq(iseq, op);</div><div class='ctx'> 			    }</div><div class='ctx'> 			    else {</div><div class='ctx'> 				argv[j] = 0;</div><div class='hunk'>@@ -5945,13 +6617,16 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,</div><div class='ctx'> 			break;</div><div class='ctx'> 		      case TS_IC:</div><div class='ctx'> 			argv[j] = op;</div><div class='del'>-			if (NUM2INT(op) &gt;= iseq-&gt;is_size) {</div><div class='del'>-			    iseq-&gt;is_size = NUM2INT(op) + 1;</div><div class='add'>+			if (NUM2UINT(op) &gt;= iseq-&gt;body-&gt;is_size) {</div><div class='add'>+			    iseq-&gt;body-&gt;is_size = NUM2INT(op) + 1;</div><div class='ctx'> 			}</div><div class='ctx'> 			break;</div><div class='ctx'> 		      case TS_CALLINFO:</div><div class='ctx'> 			argv[j] = iseq_build_callinfo_from_hash(iseq, op);</div><div class='ctx'> 			break;</div><div class='add'>+		      case TS_CALLCACHE:</div><div class='add'>+			argv[j] = Qfalse;</div><div class='add'>+			break;</div><div class='ctx'> 		      case TS_ID:</div><div class='ctx'> 			argv[j] = rb_convert_type(op, T_SYMBOL,</div><div class='ctx'> 						  "Symbol", "to_sym");</div><div class='hunk'>@@ -5963,7 +6638,6 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,</div><div class='ctx'> </div><div class='ctx'> 			    rb_hash_tbl_raw(map)-&gt;type = &amp;cdhash_type;</div><div class='ctx'> 			    op = rb_convert_type(op, T_ARRAY, "Array", "to_ary");</div><div class='del'>-			    op = rb_ary_dup(op);</div><div class='ctx'> 			    for (i=0; i&lt;RARRAY_LEN(op); i+=2) {</div><div class='ctx'> 				VALUE key = RARRAY_AREF(op, i);</div><div class='ctx'> 				VALUE sym = RARRAY_AREF(op, i+1);</div><div class='hunk'>@@ -5973,7 +6647,7 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,</div><div class='ctx'> 			    }</div><div class='ctx'> 			    RB_GC_GUARD(op);</div><div class='ctx'> 			    argv[j] = map;</div><div class='del'>-			    iseq_add_mark_object_compile_time(iseq, map);</div><div class='add'>+			    rb_iseq_add_mark_object(iseq, map);</div><div class='ctx'> 			}</div><div class='ctx'> 			break;</div><div class='ctx'> 		      case TS_FUNCPTR:</div><div class='hunk'>@@ -5999,10 +6673,10 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,</div><div class='ctx'> 	    rb_raise(rb_eTypeError, "unexpected object for instruction");</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='add'>+    DATA_PTR(labels_wrapper) = 0;</div><div class='ctx'>     validate_labels(iseq, labels_table);</div><div class='del'>-    st_free_table(labels_table);</div><div class='del'>-    iseq_setup(iseq, anchor);</div><div class='del'>-    return COMPILE_OK;</div><div class='add'>+    if (!ret) return ret;</div><div class='add'>+    return iseq_setup(iseq, anchor);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> #define CHECK_ARRAY(v)   rb_convert_type((v), T_ARRAY, "Array", "to_ary")</div><div class='hunk'>@@ -6025,22 +6699,24 @@ int_param(int *dst, VALUE param, VALUE sym)</div><div class='ctx'>     return FALSE;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-static void</div><div class='add'>+static const struct rb_iseq_param_keyword *</div><div class='ctx'> iseq_build_kw(rb_iseq_t *iseq, VALUE params, VALUE keywords)</div><div class='ctx'> {</div><div class='ctx'>     int i, j;</div><div class='ctx'>     int len = RARRAY_LENINT(keywords);</div><div class='ctx'>     int default_len;</div><div class='ctx'>     VALUE key, sym, default_val;</div><div class='add'>+    VALUE *dvs;</div><div class='add'>+    ID *ids;</div><div class='add'>+    struct rb_iseq_param_keyword *keyword = ZALLOC(struct rb_iseq_param_keyword);</div><div class='ctx'> </div><div class='del'>-    iseq-&gt;param.flags.has_kw = TRUE;</div><div class='add'>+    iseq-&gt;body-&gt;param.flags.has_kw = TRUE;</div><div class='ctx'> </div><div class='del'>-    iseq-&gt;param.keyword = ZALLOC(struct rb_iseq_param_keyword);</div><div class='del'>-    iseq-&gt;param.keyword-&gt;num = len;</div><div class='add'>+    keyword-&gt;num = len;</div><div class='ctx'> #define SYM(s) ID2SYM(rb_intern(#s))</div><div class='del'>-    (void)int_param(&amp;iseq-&gt;param.keyword-&gt;bits_start, params, SYM(kwbits));</div><div class='del'>-    i = iseq-&gt;param.keyword-&gt;bits_start - iseq-&gt;param.keyword-&gt;num;</div><div class='del'>-    iseq-&gt;param.keyword-&gt;table = &amp;iseq-&gt;local_table[i];</div><div class='add'>+    (void)int_param(&amp;keyword-&gt;bits_start, params, SYM(kwbits));</div><div class='add'>+    i = keyword-&gt;bits_start - keyword-&gt;num;</div><div class='add'>+    ids = (VALUE *)&amp;iseq-&gt;body-&gt;local_table[i];</div><div class='ctx'> #undef SYM</div><div class='ctx'> </div><div class='ctx'>     /* required args */</div><div class='hunk'>@@ -6050,17 +6726,17 @@ iseq_build_kw(rb_iseq_t *iseq, VALUE params, VALUE keywords)</div><div class='ctx'> 	if (!SYMBOL_P(val)) {</div><div class='ctx'> 	    goto default_values;</div><div class='ctx'> 	}</div><div class='del'>-	iseq-&gt;param.keyword-&gt;table[i] = SYM2ID(val);</div><div class='del'>-	iseq-&gt;param.keyword-&gt;required_num++;</div><div class='add'>+	ids[i] = SYM2ID(val);</div><div class='add'>+	keyword-&gt;required_num++;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-default_values: /* note: we intentionally preserve `i' from previous loop */</div><div class='add'>+  default_values: /* note: we intentionally preserve `i' from previous loop */</div><div class='ctx'>     default_len = len - i;</div><div class='ctx'>     if (default_len == 0) {</div><div class='del'>-	return;</div><div class='add'>+	return keyword;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    iseq-&gt;param.keyword-&gt;default_values = ALLOC_N(VALUE, default_len);</div><div class='add'>+    dvs = ALLOC_N(VALUE, default_len);</div><div class='ctx'> </div><div class='ctx'>     for (j = 0; i &lt; len; i++, j++) {</div><div class='ctx'> 	key = RARRAY_AREF(keywords, i);</div><div class='hunk'>@@ -6076,16 +6752,19 @@ default_values: /* note: we intentionally preserve `i' from previous loop */</div><div class='ctx'> 	    default_val = RARRAY_AREF(key, 1);</div><div class='ctx'> 	    break;</div><div class='ctx'> 	  default:</div><div class='del'>-	    rb_raise(rb_eTypeError,</div><div class='del'>-		     "keyword default has unsupported len %+"PRIsVALUE,</div><div class='del'>-		     key);</div><div class='add'>+	    rb_raise(rb_eTypeError, "keyword default has unsupported len %+"PRIsVALUE, key);</div><div class='ctx'> 	}</div><div class='del'>-	iseq-&gt;param.keyword-&gt;table[i] = SYM2ID(sym);</div><div class='del'>-	iseq-&gt;param.keyword-&gt;default_values[j] = default_val;</div><div class='add'>+	ids[i] = SYM2ID(sym);</div><div class='add'>+	dvs[j] = default_val;</div><div class='ctx'>     }</div><div class='add'>+</div><div class='add'>+    keyword-&gt;table = ids;</div><div class='add'>+    keyword-&gt;default_values = dvs;</div><div class='add'>+</div><div class='add'>+    return keyword;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-VALUE</div><div class='add'>+void</div><div class='ctx'> rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE params,</div><div class='ctx'> 			 VALUE exception, VALUE body)</div><div class='ctx'> {</div><div class='hunk'>@@ -6093,6 +6772,7 @@ rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE params,</div><div class='ctx'>     int i, len;</div><div class='ctx'>     ID *tbl;</div><div class='ctx'>     struct st_table *labels_table = st_init_numtable();</div><div class='add'>+    VALUE labels_wrapper = Data_Wrap_Struct(0, 0, st_free_table, labels_table);</div><div class='ctx'>     VALUE arg_opt_labels = rb_hash_aref(params, SYM(opt));</div><div class='ctx'>     VALUE keywords = rb_hash_aref(params, SYM(keyword));</div><div class='ctx'>     VALUE sym_arg_rest = ID2SYM(rb_intern("#arg_rest"));</div><div class='hunk'>@@ -6100,9 +6780,8 @@ rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE params,</div><div class='ctx'>     INIT_ANCHOR(anchor);</div><div class='ctx'> </div><div class='ctx'>     len = RARRAY_LENINT(locals);</div><div class='del'>-    iseq-&gt;local_table_size = len;</div><div class='del'>-    iseq-&gt;local_table = tbl = (ID *)ALLOC_N(ID, iseq-&gt;local_table_size);</div><div class='del'>-    iseq-&gt;local_size = iseq-&gt;local_table_size + 1;</div><div class='add'>+    iseq-&gt;body-&gt;local_table_size = len;</div><div class='add'>+    iseq-&gt;body-&gt;local_table = tbl = len &gt; 0 ? (ID *)ALLOC_N(ID, iseq-&gt;body-&gt;local_table_size) : NULL;</div><div class='ctx'> </div><div class='ctx'>     for (i = 0; i &lt; len; i++) {</div><div class='ctx'> 	VALUE lv = RARRAY_AREF(locals, i);</div><div class='hunk'>@@ -6120,31 +6799,32 @@ rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE params,</div><div class='ctx'>      * local_size, stack_size and param.size are all calculated</div><div class='ctx'>      */</div><div class='ctx'> </div><div class='del'>-#define INT_PARAM(F) int_param(&amp;iseq-&gt;param.F, params, SYM(F))</div><div class='add'>+#define INT_PARAM(F) int_param(&amp;iseq-&gt;body-&gt;param.F, params, SYM(F))</div><div class='ctx'>     if (INT_PARAM(lead_num)) {</div><div class='del'>-	iseq-&gt;param.flags.has_lead = TRUE;</div><div class='add'>+	iseq-&gt;body-&gt;param.flags.has_lead = TRUE;</div><div class='ctx'>     }</div><div class='del'>-    if (INT_PARAM(post_num)) iseq-&gt;param.flags.has_post = TRUE;</div><div class='del'>-    if (INT_PARAM(post_start)) iseq-&gt;param.flags.has_post = TRUE;</div><div class='del'>-    if (INT_PARAM(rest_start)) iseq-&gt;param.flags.has_rest = TRUE;</div><div class='del'>-    if (INT_PARAM(block_start)) iseq-&gt;param.flags.has_block = TRUE;</div><div class='add'>+    if (INT_PARAM(post_num)) iseq-&gt;body-&gt;param.flags.has_post = TRUE;</div><div class='add'>+    if (INT_PARAM(post_start)) iseq-&gt;body-&gt;param.flags.has_post = TRUE;</div><div class='add'>+    if (INT_PARAM(rest_start)) iseq-&gt;body-&gt;param.flags.has_rest = TRUE;</div><div class='add'>+    if (INT_PARAM(block_start)) iseq-&gt;body-&gt;param.flags.has_block = TRUE;</div><div class='ctx'> #undef INT_PARAM</div><div class='ctx'> </div><div class='ctx'>     switch (TYPE(arg_opt_labels)) {</div><div class='ctx'>       case T_ARRAY:</div><div class='ctx'> 	len = RARRAY_LENINT(arg_opt_labels);</div><div class='del'>-	iseq-&gt;param.flags.has_opt = !!(len - 1 &gt;= 0);</div><div class='add'>+	iseq-&gt;body-&gt;param.flags.has_opt = !!(len - 1 &gt;= 0);</div><div class='ctx'> </div><div class='del'>-	if (iseq-&gt;param.flags.has_opt) {</div><div class='del'>-	    iseq-&gt;param.opt_num = len - 1;</div><div class='del'>-	    iseq-&gt;param.opt_table = (VALUE *)ALLOC_N(VALUE, len);</div><div class='add'>+	if (iseq-&gt;body-&gt;param.flags.has_opt) {</div><div class='add'>+	    VALUE *opt_table = ALLOC_N(VALUE, len);</div><div class='ctx'> </div><div class='ctx'> 	    for (i = 0; i &lt; len; i++) {</div><div class='ctx'> 		VALUE ent = RARRAY_AREF(arg_opt_labels, i);</div><div class='ctx'> 		LABEL *label = register_label(iseq, labels_table, ent);</div><div class='del'>-</div><div class='del'>-		iseq-&gt;param.opt_table[i] = (VALUE)label;</div><div class='add'>+		opt_table[i] = (VALUE)label;</div><div class='ctx'> 	    }</div><div class='add'>+</div><div class='add'>+	    iseq-&gt;body-&gt;param.opt_num = len - 1;</div><div class='add'>+	    iseq-&gt;body-&gt;param.opt_table = opt_table;</div><div class='ctx'> 	}</div><div class='ctx'>       case T_NIL:</div><div class='ctx'> 	break;</div><div class='hunk'>@@ -6155,7 +6835,7 @@ rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE params,</div><div class='ctx'> </div><div class='ctx'>     switch (TYPE(keywords)) {</div><div class='ctx'>       case T_ARRAY:</div><div class='del'>-	iseq_build_kw(iseq, params, keywords);</div><div class='add'>+	iseq-&gt;body-&gt;param.keyword = iseq_build_kw(iseq, params, keywords);</div><div class='ctx'>       case T_NIL:</div><div class='ctx'> 	break;</div><div class='ctx'>       default:</div><div class='hunk'>@@ -6164,16 +6844,16 @@ rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE params,</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     if (Qtrue == rb_hash_aref(params, SYM(ambiguous_param0))) {</div><div class='del'>-	iseq-&gt;param.flags.ambiguous_param0 = TRUE;</div><div class='add'>+	iseq-&gt;body-&gt;param.flags.ambiguous_param0 = TRUE;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     if (int_param(&amp;i, params, SYM(kwrest))) {</div><div class='del'>-        if (!iseq-&gt;param.keyword) {</div><div class='del'>-          iseq-&gt;param.keyword = ZALLOC(struct rb_iseq_param_keyword);</div><div class='del'>-        }</div><div class='del'>-        iseq-&gt;param.keyword-&gt;rest_start = i;</div><div class='del'>-        iseq-&gt;param.flags.has_kwrest = TRUE;</div><div class='del'>-</div><div class='add'>+	struct rb_iseq_param_keyword *keyword = (struct rb_iseq_param_keyword *)iseq-&gt;body-&gt;param.keyword;</div><div class='add'>+	if (keyword == NULL) {</div><div class='add'>+	    iseq-&gt;body-&gt;param.keyword = keyword = ZALLOC(struct rb_iseq_param_keyword);</div><div class='add'>+	}</div><div class='add'>+	keyword-&gt;rest_start = i;</div><div class='add'>+	iseq-&gt;body-&gt;param.flags.has_kwrest = TRUE;</div><div class='ctx'>     }</div><div class='ctx'> #undef SYM</div><div class='ctx'>     iseq_calc_param_size(iseq);</div><div class='hunk'>@@ -6182,49 +6862,47 @@ rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE params,</div><div class='ctx'>     iseq_build_from_ary_exception(iseq, labels_table, exception);</div><div class='ctx'> </div><div class='ctx'>     /* body */</div><div class='del'>-    iseq_build_from_ary_body(iseq, anchor, body, labels_table);</div><div class='del'>-    return iseq-&gt;self;</div><div class='add'>+    iseq_build_from_ary_body(iseq, anchor, body, labels_wrapper);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /* for parser */</div><div class='ctx'> </div><div class='ctx'> int</div><div class='del'>-rb_dvar_defined(ID id)</div><div class='add'>+rb_dvar_defined(ID id, const struct rb_block *base_block)</div><div class='ctx'> {</div><div class='del'>-    rb_thread_t *th = GET_THREAD();</div><div class='del'>-    rb_iseq_t *iseq;</div><div class='del'>-    if (th-&gt;base_block &amp;&amp; (iseq = th-&gt;base_block-&gt;iseq)) {</div><div class='del'>-	while (iseq-&gt;type == ISEQ_TYPE_BLOCK ||</div><div class='del'>-	       iseq-&gt;type == ISEQ_TYPE_RESCUE ||</div><div class='del'>-	       iseq-&gt;type == ISEQ_TYPE_ENSURE ||</div><div class='del'>-	       iseq-&gt;type == ISEQ_TYPE_EVAL ||</div><div class='del'>-	       iseq-&gt;type == ISEQ_TYPE_MAIN</div><div class='add'>+    const rb_iseq_t *iseq;</div><div class='add'>+</div><div class='add'>+    if (base_block &amp;&amp; (iseq = vm_block_iseq(base_block)) != NULL) {</div><div class='add'>+	while (iseq-&gt;body-&gt;type == ISEQ_TYPE_BLOCK ||</div><div class='add'>+	       iseq-&gt;body-&gt;type == ISEQ_TYPE_RESCUE ||</div><div class='add'>+	       iseq-&gt;body-&gt;type == ISEQ_TYPE_ENSURE ||</div><div class='add'>+	       iseq-&gt;body-&gt;type == ISEQ_TYPE_EVAL ||</div><div class='add'>+	       iseq-&gt;body-&gt;type == ISEQ_TYPE_MAIN</div><div class='ctx'> 	       ) {</div><div class='del'>-	    int i;</div><div class='add'>+	    unsigned int i;</div><div class='ctx'> </div><div class='del'>-	    for (i = 0; i &lt; iseq-&gt;local_table_size; i++) {</div><div class='del'>-		if (iseq-&gt;local_table[i] == id) {</div><div class='add'>+	    for (i = 0; i &lt; iseq-&gt;body-&gt;local_table_size; i++) {</div><div class='add'>+		if (iseq-&gt;body-&gt;local_table[i] == id) {</div><div class='ctx'> 		    return 1;</div><div class='ctx'> 		}</div><div class='ctx'> 	    }</div><div class='del'>-	    iseq = iseq-&gt;parent_iseq;</div><div class='add'>+	    iseq = iseq-&gt;body-&gt;parent_iseq;</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'>     return 0;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> int</div><div class='del'>-rb_local_defined(ID id)</div><div class='add'>+rb_local_defined(ID id, const struct rb_block *base_block)</div><div class='ctx'> {</div><div class='del'>-    rb_thread_t *th = GET_THREAD();</div><div class='del'>-    rb_iseq_t *iseq;</div><div class='add'>+    const rb_iseq_t *iseq;</div><div class='ctx'> </div><div class='del'>-    if (th-&gt;base_block &amp;&amp; th-&gt;base_block-&gt;iseq) {</div><div class='del'>-	int i;</div><div class='del'>-	iseq = th-&gt;base_block-&gt;iseq-&gt;local_iseq;</div><div class='add'>+    if (base_block &amp;&amp; (iseq = vm_block_iseq(base_block)) != NULL) {</div><div class='add'>+	unsigned int i;</div><div class='add'>+	iseq = iseq-&gt;body-&gt;local_iseq;</div><div class='ctx'> </div><div class='del'>-	for (i=0; i&lt;iseq-&gt;local_table_size; i++) {</div><div class='del'>-	    if (iseq-&gt;local_table[i] == id) {</div><div class='add'>+	for (i=0; i&lt;iseq-&gt;body-&gt;local_table_size; i++) {</div><div class='add'>+	    if (iseq-&gt;body-&gt;local_table[i] == id) {</div><div class='ctx'> 		return 1;</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='hunk'>@@ -6232,18 +6910,6 @@ rb_local_defined(ID id)</div><div class='ctx'>     return 0;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-int</div><div class='del'>-rb_parse_in_eval(void)</div><div class='del'>-{</div><div class='del'>-    return GET_THREAD()-&gt;parse_in_eval &gt; 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='del'>-int</div><div class='del'>-rb_parse_in_main(void)</div><div class='del'>-{</div><div class='del'>-    return GET_THREAD()-&gt;parse_in_eval &lt; 0;</div><div class='del'>-}</div><div class='del'>-</div><div class='ctx'> static int</div><div class='ctx'> caller_location(VALUE *path, VALUE *absolute_path)</div><div class='ctx'> {</div><div class='hunk'>@@ -6253,12 +6919,12 @@ caller_location(VALUE *path, VALUE *absolute_path)</div><div class='ctx'> </div><div class='ctx'>     if (cfp) {</div><div class='ctx'> 	int line = rb_vm_get_sourceline(cfp);</div><div class='del'>-	*path = cfp-&gt;iseq-&gt;location.path;</div><div class='del'>-	*absolute_path = cfp-&gt;iseq-&gt;location.absolute_path;</div><div class='add'>+	*path = cfp-&gt;iseq-&gt;body-&gt;location.path;</div><div class='add'>+	*absolute_path = cfp-&gt;iseq-&gt;body-&gt;location.absolute_path;</div><div class='ctx'> 	return line;</div><div class='ctx'>     }</div><div class='ctx'>     else {</div><div class='del'>-	*path = rb_str_new2("&lt;compiled&gt;");</div><div class='add'>+	*path = rb_fstring_cstr("&lt;compiled&gt;");</div><div class='ctx'> 	*absolute_path = *path;</div><div class='ctx'> 	return 1;</div><div class='ctx'>     }</div><div class='hunk'>@@ -6270,7 +6936,7 @@ typedef struct {</div><div class='ctx'>     int line;</div><div class='ctx'> } accessor_args;</div><div class='ctx'> </div><div class='del'>-static VALUE</div><div class='add'>+static const rb_iseq_t *</div><div class='ctx'> method_for_self(VALUE name, VALUE arg, rb_insn_func_t func,</div><div class='ctx'> 		VALUE (*build)(rb_iseq_t *, LINK_ANCHOR *, VALUE))</div><div class='ctx'> {</div><div class='hunk'>@@ -6280,7 +6946,7 @@ method_for_self(VALUE name, VALUE arg, rb_insn_func_t func,</div><div class='ctx'>     acc.arg = arg;</div><div class='ctx'>     acc.func = func;</div><div class='ctx'>     acc.line = caller_location(&amp;path, &amp;absolute_path);</div><div class='del'>-    return rb_iseq_new_with_opt(NEW_IFUNC(build, (VALUE)&amp;acc),</div><div class='add'>+    return rb_iseq_new_with_opt((NODE *)IFUNC_NEW(build, (VALUE)&amp;acc, 0),</div><div class='ctx'> 				rb_sym2str(name), path, absolute_path,</div><div class='ctx'> 				INT2FIX(acc.line), 0, ISEQ_TYPE_METHOD, 0);</div><div class='ctx'> }</div><div class='hunk'>@@ -6292,8 +6958,8 @@ for_self_aref(rb_iseq_t *iseq, LINK_ANCHOR *ret, VALUE a)</div><div class='ctx'>     const int line = args-&gt;line;</div><div class='ctx'> </div><div class='ctx'>     iseq_set_local_table(iseq, 0);</div><div class='del'>-    iseq-&gt;param.lead_num = 0;</div><div class='del'>-    iseq-&gt;param.size = 0;</div><div class='add'>+    iseq-&gt;body-&gt;param.lead_num = 0;</div><div class='add'>+    iseq-&gt;body-&gt;param.size = 0;</div><div class='ctx'> </div><div class='ctx'>     ADD_INSN1(ret, line, putobject, args-&gt;arg);</div><div class='ctx'>     ADD_INSN1(ret, line, opt_call_c_function, (VALUE)args-&gt;func);</div><div class='hunk'>@@ -6308,10 +6974,10 @@ for_self_aset(rb_iseq_t *iseq, LINK_ANCHOR *ret, VALUE a)</div><div class='ctx'>     static const ID vars[] = {1, idUScore};</div><div class='ctx'> </div><div class='ctx'>     iseq_set_local_table(iseq, vars);</div><div class='del'>-    iseq-&gt;param.lead_num = 1;</div><div class='del'>-    iseq-&gt;param.size = 1;</div><div class='add'>+    iseq-&gt;body-&gt;param.lead_num = 1;</div><div class='add'>+    iseq-&gt;body-&gt;param.size = 1;</div><div class='ctx'> </div><div class='del'>-    ADD_INSN2(ret, line, getlocal, INT2FIX(numberof(vars)-0), INT2FIX(0));</div><div class='add'>+    ADD_GETLOCAL(ret, line, numberof(vars)-1, 0);</div><div class='ctx'>     ADD_INSN1(ret, line, putobject, args-&gt;arg);</div><div class='ctx'>     ADD_INSN1(ret, line, opt_call_c_function, (VALUE)args-&gt;func);</div><div class='ctx'>     ADD_INSN(ret, line, pop);</div><div class='hunk'>@@ -6321,7 +6987,7 @@ for_self_aset(rb_iseq_t *iseq, LINK_ANCHOR *ret, VALUE a)</div><div class='ctx'> /*</div><div class='ctx'>  * func (index) -&gt; (value)</div><div class='ctx'>  */</div><div class='del'>-VALUE</div><div class='add'>+const rb_iseq_t *</div><div class='ctx'> rb_method_for_self_aref(VALUE name, VALUE arg, rb_insn_func_t func)</div><div class='ctx'> {</div><div class='ctx'>     return method_for_self(name, arg, func, for_self_aref);</div><div class='hunk'>@@ -6330,8 +6996,1506 @@ rb_method_for_self_aref(VALUE name, VALUE arg, rb_insn_func_t func)</div><div class='ctx'> /*</div><div class='ctx'>  * func (index, value) -&gt; (index, value)</div><div class='ctx'>  */</div><div class='del'>-VALUE</div><div class='add'>+const rb_iseq_t *</div><div class='ctx'> rb_method_for_self_aset(VALUE name, VALUE arg, rb_insn_func_t func)</div><div class='ctx'> {</div><div class='ctx'>     return method_for_self(name, arg, func, for_self_aset);</div><div class='ctx'> }</div><div class='add'>+</div><div class='add'>+/* ISeq binary format */</div><div class='add'>+</div><div class='add'>+typedef unsigned int ibf_offset_t;</div><div class='add'>+#define IBF_OFFSET(ptr) ((ibf_offset_t)(VALUE)(ptr))</div><div class='add'>+</div><div class='add'>+struct ibf_header {</div><div class='add'>+    char magic[4]; /* YARB */</div><div class='add'>+    unsigned int major_version;</div><div class='add'>+    unsigned int minor_version;</div><div class='add'>+    unsigned int size;</div><div class='add'>+    unsigned int extra_size;</div><div class='add'>+</div><div class='add'>+    unsigned int iseq_list_size;</div><div class='add'>+    unsigned int id_list_size;</div><div class='add'>+    unsigned int object_list_size;</div><div class='add'>+</div><div class='add'>+    ibf_offset_t iseq_list_offset;</div><div class='add'>+    ibf_offset_t id_list_offset;</div><div class='add'>+    ibf_offset_t object_list_offset;</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+struct ibf_id_entry {</div><div class='add'>+    enum {</div><div class='add'>+	ibf_id_enc_ascii,</div><div class='add'>+	ibf_id_enc_utf8,</div><div class='add'>+	ibf_id_enc_other</div><div class='add'>+    } enc : 2;</div><div class='add'>+    char body[1];</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+struct ibf_dump {</div><div class='add'>+    VALUE str;</div><div class='add'>+    VALUE iseq_list;      /* [iseq0 offset, ...] */</div><div class='add'>+    VALUE obj_list;       /* [objs] */</div><div class='add'>+    st_table *iseq_table; /* iseq -&gt; iseq number */</div><div class='add'>+    st_table *id_table;   /* id -&gt; id number */</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+rb_iseq_t * iseq_alloc(void);</div><div class='add'>+</div><div class='add'>+struct ibf_load {</div><div class='add'>+    const char *buff;</div><div class='add'>+    const struct ibf_header *header;</div><div class='add'>+    ID *id_list;     /* [id0, ...] */</div><div class='add'>+    VALUE iseq_list; /* [iseq0, ...] */</div><div class='add'>+    VALUE obj_list;  /* [obj0, ...] */</div><div class='add'>+    VALUE loader_obj;</div><div class='add'>+    VALUE str;</div><div class='add'>+    rb_iseq_t *iseq;</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+static ibf_offset_t</div><div class='add'>+ibf_dump_pos(struct ibf_dump *dump)</div><div class='add'>+{</div><div class='add'>+    return (unsigned int)rb_str_strlen(dump-&gt;str);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static ibf_offset_t</div><div class='add'>+ibf_dump_write(struct ibf_dump *dump, const void *buff, unsigned long size)</div><div class='add'>+{</div><div class='add'>+    ibf_offset_t pos = ibf_dump_pos(dump);</div><div class='add'>+    rb_str_cat(dump-&gt;str, (const char *)buff, size);</div><div class='add'>+    /* TODO: overflow check */</div><div class='add'>+    return pos;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_overwrite(struct ibf_dump *dump, void *buff, unsigned int size, long offset)</div><div class='add'>+{</div><div class='add'>+    VALUE str = dump-&gt;str;</div><div class='add'>+    char *ptr = RSTRING_PTR(str);</div><div class='add'>+    if ((unsigned long)(size + offset) &gt; (unsigned long)RSTRING_LEN(str))</div><div class='add'>+	rb_bug("ibf_dump_overwrite: overflow");</div><div class='add'>+    memcpy(ptr + offset, buff, size);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void *</div><div class='add'>+ibf_load_alloc(const struct ibf_load *load, ibf_offset_t offset, int size)</div><div class='add'>+{</div><div class='add'>+    void *buff = ruby_xmalloc(size);</div><div class='add'>+    memcpy(buff, load-&gt;buff + offset, size);</div><div class='add'>+    return buff;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+#define IBF_W(b, type, n) (type *)(VALUE)ibf_dump_write(dump, (b), sizeof(type) * (n))</div><div class='add'>+#define IBF_WV(variable)   ibf_dump_write(dump, &amp;(variable), sizeof(variable))</div><div class='add'>+#define IBF_WP(b, type, n) ibf_dump_write(dump, (b), sizeof(type) * (n))</div><div class='add'>+#define IBF_R(val, type, n) (type *)ibf_load_alloc(load, IBF_OFFSET(val), sizeof(type) * (n))</div><div class='add'>+</div><div class='add'>+static int</div><div class='add'>+ibf_table_lookup(struct st_table *table, st_data_t key)</div><div class='add'>+{</div><div class='add'>+    st_data_t val;</div><div class='add'>+</div><div class='add'>+    if (st_lookup(table, key, &amp;val)) {</div><div class='add'>+	return (int)val;</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	return -1;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static int</div><div class='add'>+ibf_table_index(struct st_table *table, st_data_t key)</div><div class='add'>+{</div><div class='add'>+    int index = ibf_table_lookup(table, key);</div><div class='add'>+</div><div class='add'>+    if (index &lt; 0) { /* not found */</div><div class='add'>+	index = (int)table-&gt;num_entries;</div><div class='add'>+	st_insert(table, key, (st_data_t)index);</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    return index;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/* dump/load generic */</div><div class='add'>+</div><div class='add'>+static VALUE ibf_load_object(const struct ibf_load *load, VALUE object_index);</div><div class='add'>+static rb_iseq_t *ibf_load_iseq(const struct ibf_load *load, const rb_iseq_t *index_iseq);</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_dump_object(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    long index = RARRAY_LEN(dump-&gt;obj_list);</div><div class='add'>+    long i;</div><div class='add'>+    for (i=0; i&lt;index; i++) {</div><div class='add'>+	if (RARRAY_AREF(dump-&gt;obj_list, i) == obj) return (VALUE)i; /* dedup */</div><div class='add'>+    }</div><div class='add'>+    rb_ary_push(dump-&gt;obj_list, obj);</div><div class='add'>+    return (VALUE)index;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_dump_id(struct ibf_dump *dump, ID id)</div><div class='add'>+{</div><div class='add'>+    return (VALUE)ibf_table_index(dump-&gt;id_table, (st_data_t)id);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static ID</div><div class='add'>+ibf_load_id(const struct ibf_load *load, const ID id_index)</div><div class='add'>+{</div><div class='add'>+    ID id;</div><div class='add'>+</div><div class='add'>+    if (id_index == 0) {</div><div class='add'>+	id = 0;</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	id = load-&gt;id_list[(long)id_index];</div><div class='add'>+</div><div class='add'>+	if (id == 0) {</div><div class='add'>+	    long *indices = (long *)(load-&gt;buff + load-&gt;header-&gt;id_list_offset);</div><div class='add'>+	    VALUE str = ibf_load_object(load, indices[id_index]);</div><div class='add'>+	    id = NIL_P(str) ? 0 : rb_intern_str(str); /* str == nil -&gt; internal junk id */</div><div class='add'>+	    load-&gt;id_list[(long)id_index] = id;</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    return id;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/* dump/load: code */</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_dump_callinfo(struct ibf_dump *dump, const struct rb_call_info *ci)</div><div class='add'>+{</div><div class='add'>+    return (ci-&gt;flag &amp; VM_CALL_KWARG) ? Qtrue : Qfalse;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static ibf_offset_t ibf_dump_iseq_each(struct ibf_dump *dump, const rb_iseq_t *iseq);</div><div class='add'>+</div><div class='add'>+static rb_iseq_t *</div><div class='add'>+ibf_dump_iseq(struct ibf_dump *dump, const rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    if (iseq == NULL) {</div><div class='add'>+	return (rb_iseq_t *)-1;</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	int iseq_index = ibf_table_lookup(dump-&gt;iseq_table, (st_data_t)iseq);</div><div class='add'>+	if (iseq_index &lt; 0) {</div><div class='add'>+	    iseq_index = ibf_table_index(dump-&gt;iseq_table, (st_data_t)iseq);</div><div class='add'>+	    rb_ary_store(dump-&gt;iseq_list, iseq_index, LONG2NUM(ibf_dump_iseq_each(dump, rb_iseq_check(iseq))));</div><div class='add'>+	}</div><div class='add'>+	return (rb_iseq_t *)(VALUE)iseq_index;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_dump_gentry(struct ibf_dump *dump, const struct rb_global_entry *entry)</div><div class='add'>+{</div><div class='add'>+    return (VALUE)ibf_dump_id(dump, entry-&gt;id);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_gentry(const struct ibf_load *load, const struct rb_global_entry *entry)</div><div class='add'>+{</div><div class='add'>+    ID gid = ibf_load_id(load, (ID)(VALUE)entry);</div><div class='add'>+    return (VALUE)rb_global_entry(gid);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE *</div><div class='add'>+ibf_dump_code(struct ibf_dump *dump, const rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    const int iseq_size = iseq-&gt;body-&gt;iseq_size;</div><div class='add'>+    int code_index;</div><div class='add'>+    VALUE *code;</div><div class='add'>+    const VALUE *orig_code = rb_iseq_original_iseq(iseq);</div><div class='add'>+</div><div class='add'>+    code = ALLOCA_N(VALUE, iseq_size);</div><div class='add'>+</div><div class='add'>+    for (code_index=0; code_index&lt;iseq_size;) {</div><div class='add'>+	const VALUE insn = orig_code[code_index];</div><div class='add'>+	const char *types = insn_op_types(insn);</div><div class='add'>+	int op_index;</div><div class='add'>+</div><div class='add'>+	code[code_index++] = (VALUE)insn;</div><div class='add'>+</div><div class='add'>+	for (op_index=0; types[op_index]; op_index++, code_index++) {</div><div class='add'>+	    VALUE op = orig_code[code_index];</div><div class='add'>+	    switch (types[op_index]) {</div><div class='add'>+	      case TS_CDHASH:</div><div class='add'>+	      case TS_VALUE:</div><div class='add'>+		code[code_index] = ibf_dump_object(dump, op);</div><div class='add'>+		break;</div><div class='add'>+	      case TS_ISEQ:</div><div class='add'>+		code[code_index] = (VALUE)ibf_dump_iseq(dump, (const rb_iseq_t *)op);</div><div class='add'>+		break;</div><div class='add'>+	      case TS_IC:</div><div class='add'>+		{</div><div class='add'>+		    unsigned int i;</div><div class='add'>+		    for (i=0; i&lt;iseq-&gt;body-&gt;is_size; i++) {</div><div class='add'>+			if (op == (VALUE)&amp;iseq-&gt;body-&gt;is_entries[i]) {</div><div class='add'>+			    break;</div><div class='add'>+			}</div><div class='add'>+		    }</div><div class='add'>+		    code[code_index] = i;</div><div class='add'>+		}</div><div class='add'>+		break;</div><div class='add'>+	      case TS_CALLINFO:</div><div class='add'>+		code[code_index] = ibf_dump_callinfo(dump, (const struct rb_call_info *)op);</div><div class='add'>+		break;</div><div class='add'>+	      case TS_CALLCACHE:</div><div class='add'>+		code[code_index] = 0;</div><div class='add'>+		break;</div><div class='add'>+	      case TS_ID:</div><div class='add'>+		code[code_index] = ibf_dump_id(dump, (ID)op);</div><div class='add'>+		break;</div><div class='add'>+	      case TS_GENTRY:</div><div class='add'>+		code[code_index] = ibf_dump_gentry(dump, (const struct rb_global_entry *)op);</div><div class='add'>+		break;</div><div class='add'>+	      case TS_FUNCPTR:</div><div class='add'>+		rb_raise(rb_eRuntimeError, "TS_FUNCPTR is not supported");</div><div class='add'>+		break;</div><div class='add'>+	      default:</div><div class='add'>+		code[code_index] = op;</div><div class='add'>+		break;</div><div class='add'>+	    }</div><div class='add'>+	}</div><div class='add'>+	assert(insn_len(insn) == op_index+1);</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    return IBF_W(code, VALUE, iseq_size);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE *</div><div class='add'>+ibf_load_code(const struct ibf_load *load, const rb_iseq_t *iseq, const struct rb_iseq_constant_body *body)</div><div class='add'>+{</div><div class='add'>+    const int iseq_size = body-&gt;iseq_size;</div><div class='add'>+    int code_index;</div><div class='add'>+    VALUE *code = IBF_R(body-&gt;iseq_encoded, VALUE, iseq_size);</div><div class='add'>+</div><div class='add'>+    struct rb_call_info *ci_entries = iseq-&gt;body-&gt;ci_entries;</div><div class='add'>+    struct rb_call_info_with_kwarg *ci_kw_entries = (struct rb_call_info_with_kwarg *)&amp;iseq-&gt;body-&gt;ci_entries[iseq-&gt;body-&gt;ci_size];</div><div class='add'>+    struct rb_call_cache *cc_entries = iseq-&gt;body-&gt;cc_entries;</div><div class='add'>+    union iseq_inline_storage_entry *is_entries = iseq-&gt;body-&gt;is_entries;</div><div class='add'>+</div><div class='add'>+    for (code_index=0; code_index&lt;iseq_size;) {</div><div class='add'>+	const VALUE insn = code[code_index++];</div><div class='add'>+	const char *types = insn_op_types(insn);</div><div class='add'>+	int op_index;</div><div class='add'>+</div><div class='add'>+	for (op_index=0; types[op_index]; op_index++, code_index++) {</div><div class='add'>+	    VALUE op = code[code_index];</div><div class='add'>+</div><div class='add'>+	    switch (types[op_index]) {</div><div class='add'>+	      case TS_CDHASH:</div><div class='add'>+	      case TS_VALUE:</div><div class='add'>+		code[code_index] = ibf_load_object(load, op);</div><div class='add'>+		break;</div><div class='add'>+	      case TS_ISEQ:</div><div class='add'>+		code[code_index] = (VALUE)ibf_load_iseq(load, (const rb_iseq_t *)op);</div><div class='add'>+		break;</div><div class='add'>+	      case TS_IC:</div><div class='add'>+		code[code_index] = (VALUE)&amp;is_entries[(int)op];</div><div class='add'>+		break;</div><div class='add'>+	      case TS_CALLINFO:</div><div class='add'>+		code[code_index] = op ? (VALUE)ci_kw_entries++ : (VALUE)ci_entries++; /* op is Qtrue (kw) or Qfalse (!kw) */</div><div class='add'>+		break;</div><div class='add'>+	      case TS_CALLCACHE:</div><div class='add'>+		code[code_index] = (VALUE)cc_entries++;</div><div class='add'>+		break;</div><div class='add'>+	      case TS_ID:</div><div class='add'>+		code[code_index] = ibf_load_id(load, (ID)op);</div><div class='add'>+		break;</div><div class='add'>+	      case TS_GENTRY:</div><div class='add'>+		code[code_index] = ibf_load_gentry(load, (const struct rb_global_entry *)op);</div><div class='add'>+		break;</div><div class='add'>+	      case TS_FUNCPTR:</div><div class='add'>+		rb_raise(rb_eRuntimeError, "TS_FUNCPTR is not supported");</div><div class='add'>+		break;</div><div class='add'>+	      default:</div><div class='add'>+		/* code[code_index] = op; */</div><div class='add'>+		break;</div><div class='add'>+	    }</div><div class='add'>+	}</div><div class='add'>+	assert(insn_len(insn) == op_index+1);</div><div class='add'>+    };</div><div class='add'>+</div><div class='add'>+</div><div class='add'>+    return code;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE *</div><div class='add'>+ibf_dump_param_opt_table(struct ibf_dump *dump, const rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    int opt_num = iseq-&gt;body-&gt;param.opt_num;</div><div class='add'>+</div><div class='add'>+    if (opt_num &gt; 0) {</div><div class='add'>+	return IBF_W(iseq-&gt;body-&gt;param.opt_table, VALUE, opt_num + 1);</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	return NULL;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE *</div><div class='add'>+ibf_load_param_opt_table(const struct ibf_load *load, const struct rb_iseq_constant_body *body)</div><div class='add'>+{</div><div class='add'>+    int opt_num = body-&gt;param.opt_num;</div><div class='add'>+</div><div class='add'>+    if (opt_num &gt; 0) {</div><div class='add'>+	ibf_offset_t offset = IBF_OFFSET(body-&gt;param.opt_table);</div><div class='add'>+	VALUE *table = ALLOC_N(VALUE, opt_num+1);</div><div class='add'>+	MEMCPY(table, load-&gt;buff + offset, VALUE, opt_num+1);</div><div class='add'>+	return table;</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	return NULL;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static struct rb_iseq_param_keyword *</div><div class='add'>+ibf_dump_param_keyword(struct ibf_dump *dump, const rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    const struct rb_iseq_param_keyword *kw = iseq-&gt;body-&gt;param.keyword;</div><div class='add'>+</div><div class='add'>+    if (kw) {</div><div class='add'>+	struct rb_iseq_param_keyword dump_kw = *kw;</div><div class='add'>+	int dv_num = kw-&gt;num - kw-&gt;required_num;</div><div class='add'>+	ID *ids = kw-&gt;num &gt; 0 ? ALLOCA_N(ID, kw-&gt;num) : NULL;</div><div class='add'>+	VALUE *dvs = dv_num &gt; 0 ? ALLOCA_N(VALUE, dv_num) : NULL;</div><div class='add'>+	int i;</div><div class='add'>+</div><div class='add'>+	for (i=0; i&lt;kw-&gt;num; i++) ids[i] = (ID)ibf_dump_id(dump, kw-&gt;table[i]);</div><div class='add'>+	for (i=0; i&lt;dv_num; i++) dvs[i] = (VALUE)ibf_dump_object(dump, kw-&gt;default_values[i]);</div><div class='add'>+</div><div class='add'>+	dump_kw.table = IBF_W(ids, ID, kw-&gt;num);</div><div class='add'>+	dump_kw.default_values = IBF_W(dvs, VALUE, dv_num);</div><div class='add'>+	return IBF_W(&amp;dump_kw, struct rb_iseq_param_keyword, 1);</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	return NULL;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static const struct rb_iseq_param_keyword *</div><div class='add'>+ibf_load_param_keyword(const struct ibf_load *load, const struct rb_iseq_constant_body *body)</div><div class='add'>+{</div><div class='add'>+    if (body-&gt;param.keyword) {</div><div class='add'>+	struct rb_iseq_param_keyword *kw = IBF_R(body-&gt;param.keyword, struct rb_iseq_param_keyword, 1);</div><div class='add'>+	ID *ids = IBF_R(kw-&gt;table, ID, kw-&gt;num);</div><div class='add'>+	int dv_num = kw-&gt;num - kw-&gt;required_num;</div><div class='add'>+	VALUE *dvs = IBF_R(kw-&gt;default_values, VALUE, dv_num);</div><div class='add'>+	int i;</div><div class='add'>+</div><div class='add'>+	for (i=0; i&lt;kw-&gt;num; i++) {</div><div class='add'>+	    ids[i] = ibf_load_id(load, ids[i]);</div><div class='add'>+	}</div><div class='add'>+	for (i=0; i&lt;dv_num; i++) {</div><div class='add'>+	    dvs[i] = ibf_load_object(load, dvs[i]);</div><div class='add'>+	}</div><div class='add'>+</div><div class='add'>+	kw-&gt;table = ids;</div><div class='add'>+	kw-&gt;default_values = dvs;</div><div class='add'>+	return kw;</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	return NULL;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static struct iseq_line_info_entry *</div><div class='add'>+ibf_dump_line_info_table(struct ibf_dump *dump, const rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    return IBF_W(iseq-&gt;body-&gt;line_info_table, struct iseq_line_info_entry, iseq-&gt;body-&gt;line_info_size);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static struct iseq_line_info_entry *</div><div class='add'>+ibf_load_line_info_table(const struct ibf_load *load, const struct rb_iseq_constant_body *body)</div><div class='add'>+{</div><div class='add'>+    return IBF_R(body-&gt;line_info_table, struct iseq_line_info_entry, body-&gt;line_info_size);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static ID *</div><div class='add'>+ibf_dump_local_table(struct ibf_dump *dump, const rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    const int size = iseq-&gt;body-&gt;local_table_size;</div><div class='add'>+    ID *table = ALLOCA_N(ID, size);</div><div class='add'>+    int i;</div><div class='add'>+</div><div class='add'>+    for (i=0; i&lt;size; i++) {</div><div class='add'>+	table[i] = ibf_dump_id(dump, iseq-&gt;body-&gt;local_table[i]);</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    return IBF_W(table, ID, size);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static ID *</div><div class='add'>+ibf_load_local_table(const struct ibf_load *load, const struct rb_iseq_constant_body *body)</div><div class='add'>+{</div><div class='add'>+    const int size = body-&gt;local_table_size;</div><div class='add'>+</div><div class='add'>+    if (size &gt; 0) {</div><div class='add'>+	ID *table = IBF_R(body-&gt;local_table, ID, size);</div><div class='add'>+	int i;</div><div class='add'>+</div><div class='add'>+	for (i=0; i&lt;size; i++) {</div><div class='add'>+	    table[i] = ibf_load_id(load, table[i]);</div><div class='add'>+	}</div><div class='add'>+	return table;</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	return NULL;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static struct iseq_catch_table *</div><div class='add'>+ibf_dump_catch_table(struct ibf_dump *dump, const rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    const struct iseq_catch_table *table = iseq-&gt;body-&gt;catch_table;</div><div class='add'>+</div><div class='add'>+    if (table) {</div><div class='add'>+	int byte_size = iseq_catch_table_bytes(iseq-&gt;body-&gt;catch_table-&gt;size);</div><div class='add'>+	struct iseq_catch_table *dump_table = (struct iseq_catch_table *)ALLOCA_N(char, byte_size);</div><div class='add'>+	unsigned int i;</div><div class='add'>+	dump_table-&gt;size = table-&gt;size;</div><div class='add'>+	for (i=0; i&lt;table-&gt;size; i++) {</div><div class='add'>+	    dump_table-&gt;entries[i] = table-&gt;entries[i];</div><div class='add'>+	    dump_table-&gt;entries[i].iseq = ibf_dump_iseq(dump, table-&gt;entries[i].iseq);</div><div class='add'>+	}</div><div class='add'>+	return (struct iseq_catch_table *)(VALUE)ibf_dump_write(dump, dump_table, byte_size);</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	return NULL;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static struct iseq_catch_table *</div><div class='add'>+ibf_load_catch_table(const struct ibf_load *load, const struct rb_iseq_constant_body *body)</div><div class='add'>+{</div><div class='add'>+    if (body-&gt;catch_table) {</div><div class='add'>+	struct iseq_catch_table *table;</div><div class='add'>+	unsigned int i;</div><div class='add'>+	unsigned int size;</div><div class='add'>+	size = *(unsigned int *)(load-&gt;buff + IBF_OFFSET(body-&gt;catch_table));</div><div class='add'>+	table = ibf_load_alloc(load, IBF_OFFSET(body-&gt;catch_table), iseq_catch_table_bytes(size));</div><div class='add'>+	for (i=0; i&lt;size; i++) {</div><div class='add'>+	    table-&gt;entries[i].iseq = ibf_load_iseq(load, table-&gt;entries[i].iseq);</div><div class='add'>+	}</div><div class='add'>+	return table;</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	return NULL;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static struct rb_call_info *</div><div class='add'>+ibf_dump_ci_entries(struct ibf_dump *dump, const rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    const unsigned int ci_size = iseq-&gt;body-&gt;ci_size;</div><div class='add'>+    const unsigned int ci_kw_size = iseq-&gt;body-&gt;ci_kw_size;</div><div class='add'>+    const struct rb_call_info *ci_entries = iseq-&gt;body-&gt;ci_entries;</div><div class='add'>+    struct rb_call_info *dump_ci_entries;</div><div class='add'>+    struct rb_call_info_with_kwarg *dump_ci_kw_entries;</div><div class='add'>+    int byte_size = ci_size * sizeof(struct rb_call_info) +</div><div class='add'>+                    ci_kw_size * sizeof(struct rb_call_info_with_kwarg);</div><div class='add'>+    unsigned int i;</div><div class='add'>+</div><div class='add'>+    dump_ci_entries = (struct rb_call_info *)ALLOCA_N(char, byte_size);</div><div class='add'>+    dump_ci_kw_entries = (struct rb_call_info_with_kwarg *)&amp;dump_ci_entries[ci_size];</div><div class='add'>+    memcpy(dump_ci_entries, ci_entries, byte_size);</div><div class='add'>+</div><div class='add'>+    for (i=0; i&lt;ci_size; i++) { /* conver ID for each ci */</div><div class='add'>+	dump_ci_entries[i].mid = ibf_dump_id(dump, dump_ci_entries[i].mid);</div><div class='add'>+    }</div><div class='add'>+    for (i=0; i&lt;ci_kw_size; i++) {</div><div class='add'>+	const struct rb_call_info_kw_arg *kw_arg = dump_ci_kw_entries[i].kw_arg;</div><div class='add'>+	int j;</div><div class='add'>+	VALUE *keywords = ALLOCA_N(VALUE, kw_arg-&gt;keyword_len);</div><div class='add'>+	for (j=0; j&lt;kw_arg-&gt;keyword_len; j++) {</div><div class='add'>+	    keywords[j] = (VALUE)ibf_dump_object(dump, kw_arg-&gt;keywords[j]); /* kw_arg-&gt;keywords[n] is Symbol */</div><div class='add'>+	}</div><div class='add'>+	dump_ci_kw_entries[i].kw_arg = (struct rb_call_info_kw_arg *)(VALUE)ibf_dump_write(dump, &amp;kw_arg-&gt;keyword_len, sizeof(int));</div><div class='add'>+	ibf_dump_write(dump, keywords, sizeof(VALUE) * kw_arg-&gt;keyword_len);</div><div class='add'>+</div><div class='add'>+	dump_ci_kw_entries[i].ci.mid = ibf_dump_id(dump, dump_ci_kw_entries[i].ci.mid);</div><div class='add'>+    }</div><div class='add'>+    return (struct rb_call_info *)(VALUE)ibf_dump_write(dump, dump_ci_entries, byte_size);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static struct rb_call_info *</div><div class='add'>+ibf_load_ci_entries(const struct ibf_load *load, const struct rb_iseq_constant_body *body)</div><div class='add'>+{</div><div class='add'>+    unsigned int i;</div><div class='add'>+    const unsigned int ci_size = body-&gt;ci_size;</div><div class='add'>+    const unsigned int ci_kw_size = body-&gt;ci_kw_size;</div><div class='add'>+    struct rb_call_info *ci_entries = ibf_load_alloc(load, IBF_OFFSET(body-&gt;ci_entries),</div><div class='add'>+						     sizeof(struct rb_call_info) * body-&gt;ci_size +</div><div class='add'>+						     sizeof(struct rb_call_info_with_kwarg) * body-&gt;ci_kw_size);</div><div class='add'>+    struct rb_call_info_with_kwarg *ci_kw_entries = (struct rb_call_info_with_kwarg *)&amp;ci_entries[ci_size];</div><div class='add'>+</div><div class='add'>+    for (i=0; i&lt;ci_size; i++) {</div><div class='add'>+	ci_entries[i].mid = ibf_load_id(load, ci_entries[i].mid);</div><div class='add'>+    }</div><div class='add'>+    for (i=0; i&lt;ci_kw_size; i++) {</div><div class='add'>+	int j;</div><div class='add'>+	ibf_offset_t kw_arg_offset = IBF_OFFSET(ci_kw_entries[i].kw_arg);</div><div class='add'>+	const int keyword_len = *(int *)(load-&gt;buff + kw_arg_offset);</div><div class='add'>+	const VALUE *keywords = (VALUE *)(load-&gt;buff + kw_arg_offset + sizeof(int));</div><div class='add'>+	struct rb_call_info_kw_arg *kw_arg = ruby_xmalloc(sizeof(struct rb_call_info_kw_arg) + sizeof(VALUE) * (keyword_len - 1));</div><div class='add'>+	kw_arg-&gt;keyword_len = keyword_len;</div><div class='add'>+	for (j=0; j&lt;kw_arg-&gt;keyword_len; j++) {</div><div class='add'>+	    kw_arg-&gt;keywords[j] = (VALUE)ibf_load_object(load, keywords[j]);</div><div class='add'>+	}</div><div class='add'>+	ci_kw_entries[i].kw_arg = kw_arg;</div><div class='add'>+	ci_kw_entries[i].ci.mid = ibf_load_id(load, ci_kw_entries[i].ci.mid);</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    return ci_entries;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static ibf_offset_t</div><div class='add'>+ibf_dump_iseq_each(struct ibf_dump *dump, const rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    struct rb_iseq_constant_body dump_body;</div><div class='add'>+    dump_body = *iseq-&gt;body;</div><div class='add'>+</div><div class='add'>+    dump_body.location.path = ibf_dump_object(dump, dump_body.location.path);</div><div class='add'>+    dump_body.location.absolute_path = ibf_dump_object(dump, dump_body.location.absolute_path);</div><div class='add'>+    dump_body.location.base_label = ibf_dump_object(dump, dump_body.location.base_label);</div><div class='add'>+    dump_body.location.label = ibf_dump_object(dump, dump_body.location.label);</div><div class='add'>+</div><div class='add'>+    dump_body.iseq_encoded =    ibf_dump_code(dump, iseq);</div><div class='add'>+    dump_body.param.opt_table = ibf_dump_param_opt_table(dump, iseq);</div><div class='add'>+    dump_body.param.keyword =   ibf_dump_param_keyword(dump, iseq);</div><div class='add'>+    dump_body.line_info_table = ibf_dump_line_info_table(dump, iseq);</div><div class='add'>+    dump_body.local_table =     ibf_dump_local_table(dump, iseq);</div><div class='add'>+    dump_body.catch_table =     ibf_dump_catch_table(dump, iseq);</div><div class='add'>+    dump_body.parent_iseq =     ibf_dump_iseq(dump, iseq-&gt;body-&gt;parent_iseq);</div><div class='add'>+    dump_body.local_iseq =      ibf_dump_iseq(dump, iseq-&gt;body-&gt;local_iseq);</div><div class='add'>+    dump_body.is_entries =      NULL;</div><div class='add'>+    dump_body.ci_entries =      ibf_dump_ci_entries(dump, iseq);</div><div class='add'>+    dump_body.cc_entries =      NULL;</div><div class='add'>+    dump_body.mark_ary =        ISEQ_FLIP_CNT(iseq);</div><div class='add'>+</div><div class='add'>+    return ibf_dump_write(dump, &amp;dump_body, sizeof(dump_body));</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_location_str(const struct ibf_load *load, VALUE str_index)</div><div class='add'>+{</div><div class='add'>+    VALUE str = ibf_load_object(load, str_index);</div><div class='add'>+    if (str != Qnil) {</div><div class='add'>+	str = rb_fstring(str);</div><div class='add'>+    }</div><div class='add'>+    return str;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_load_iseq_each(const struct ibf_load *load, rb_iseq_t *iseq, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    struct rb_iseq_constant_body *load_body = iseq-&gt;body = ZALLOC(struct rb_iseq_constant_body);</div><div class='add'>+    const struct rb_iseq_constant_body *body = (struct rb_iseq_constant_body *)(load-&gt;buff + offset);</div><div class='add'>+</div><div class='add'>+    /* memcpy(load_body, load-&gt;buff + offset, sizeof(*load_body)); */</div><div class='add'>+    load_body-&gt;type = body-&gt;type;</div><div class='add'>+    load_body-&gt;stack_max = body-&gt;stack_max;</div><div class='add'>+    load_body-&gt;iseq_size = body-&gt;iseq_size;</div><div class='add'>+    load_body-&gt;param = body-&gt;param;</div><div class='add'>+    load_body-&gt;local_table_size = body-&gt;local_table_size;</div><div class='add'>+    load_body-&gt;is_size = body-&gt;is_size;</div><div class='add'>+    load_body-&gt;ci_size = body-&gt;ci_size;</div><div class='add'>+    load_body-&gt;ci_kw_size = body-&gt;ci_kw_size;</div><div class='add'>+    load_body-&gt;line_info_size = body-&gt;line_info_size;</div><div class='add'>+</div><div class='add'>+    RB_OBJ_WRITE(iseq, &amp;load_body-&gt;mark_ary, iseq_mark_ary_create((int)body-&gt;mark_ary));</div><div class='add'>+</div><div class='add'>+    RB_OBJ_WRITE(iseq, &amp;load_body-&gt;location.path,          ibf_load_location_str(load, body-&gt;location.path));</div><div class='add'>+    RB_OBJ_WRITE(iseq, &amp;load_body-&gt;location.absolute_path, ibf_load_location_str(load, body-&gt;location.absolute_path));</div><div class='add'>+    RB_OBJ_WRITE(iseq, &amp;load_body-&gt;location.base_label,    ibf_load_location_str(load, body-&gt;location.base_label));</div><div class='add'>+    RB_OBJ_WRITE(iseq, &amp;load_body-&gt;location.label,         ibf_load_location_str(load, body-&gt;location.label));</div><div class='add'>+    load_body-&gt;location.first_lineno = body-&gt;location.first_lineno;</div><div class='add'>+</div><div class='add'>+    load_body-&gt;is_entries      = ZALLOC_N(union iseq_inline_storage_entry, body-&gt;is_size);</div><div class='add'>+    load_body-&gt;ci_entries      = ibf_load_ci_entries(load, body);</div><div class='add'>+    load_body-&gt;cc_entries      = ZALLOC_N(struct rb_call_cache, body-&gt;ci_size + body-&gt;ci_kw_size);</div><div class='add'>+    load_body-&gt;param.opt_table = ibf_load_param_opt_table(load, body);</div><div class='add'>+    load_body-&gt;param.keyword   = ibf_load_param_keyword(load, body);</div><div class='add'>+    load_body-&gt;line_info_table = ibf_load_line_info_table(load, body);</div><div class='add'>+    load_body-&gt;local_table     = ibf_load_local_table(load, body);</div><div class='add'>+    load_body-&gt;catch_table     = ibf_load_catch_table(load, body);</div><div class='add'>+    load_body-&gt;parent_iseq     = ibf_load_iseq(load, body-&gt;parent_iseq);</div><div class='add'>+    load_body-&gt;local_iseq      = ibf_load_iseq(load, body-&gt;local_iseq);</div><div class='add'>+</div><div class='add'>+    load_body-&gt;iseq_encoded    = ibf_load_code(load, iseq, body);</div><div class='add'>+</div><div class='add'>+    rb_iseq_translate_threaded_code(iseq);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_iseq_list(struct ibf_dump *dump, struct ibf_header *header)</div><div class='add'>+{</div><div class='add'>+    const long size = RARRAY_LEN(dump-&gt;iseq_list);</div><div class='add'>+    ibf_offset_t *list = ALLOCA_N(ibf_offset_t, size);</div><div class='add'>+    long i;</div><div class='add'>+</div><div class='add'>+    for (i=0; i&lt;size; i++) {</div><div class='add'>+	list[i] = (ibf_offset_t)NUM2LONG(rb_ary_entry(dump-&gt;iseq_list, i));</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    header-&gt;iseq_list_offset = ibf_dump_write(dump, list, sizeof(ibf_offset_t) * size);</div><div class='add'>+    header-&gt;iseq_list_size = (unsigned int)size;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+struct ibf_dump_id_list_i_arg {</div><div class='add'>+    struct ibf_dump *dump;</div><div class='add'>+    long *list;</div><div class='add'>+    int current_i;</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+static int</div><div class='add'>+ibf_dump_id_list_i(st_data_t key, st_data_t val, st_data_t ptr)</div><div class='add'>+{</div><div class='add'>+    struct ibf_dump_id_list_i_arg *arg = (struct ibf_dump_id_list_i_arg *)ptr;</div><div class='add'>+    int i = (int)val;</div><div class='add'>+    ID id = (ID)key;</div><div class='add'>+    assert(arg-&gt;current_i == i);</div><div class='add'>+    arg-&gt;current_i++;</div><div class='add'>+</div><div class='add'>+    if (rb_id2name(id)) {</div><div class='add'>+	arg-&gt;list[i] = (long)ibf_dump_object(arg-&gt;dump, rb_id2str(id));</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	arg-&gt;list[i] = 0;</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    return ST_CONTINUE;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_id_list(struct ibf_dump *dump, struct ibf_header *header)</div><div class='add'>+{</div><div class='add'>+    const long size = dump-&gt;id_table-&gt;num_entries;</div><div class='add'>+    struct ibf_dump_id_list_i_arg arg;</div><div class='add'>+    arg.list = ALLOCA_N(long, size);</div><div class='add'>+    arg.dump = dump;</div><div class='add'>+    arg.current_i = 0;</div><div class='add'>+</div><div class='add'>+    st_foreach(dump-&gt;id_table, ibf_dump_id_list_i, (st_data_t)&amp;arg);</div><div class='add'>+</div><div class='add'>+    header-&gt;id_list_offset = ibf_dump_write(dump, arg.list, sizeof(long) * size);</div><div class='add'>+    header-&gt;id_list_size = (unsigned int)size;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+#define IBF_OBJECT_INTERNAL FL_PROMOTED0</div><div class='add'>+</div><div class='add'>+/*</div><div class='add'>+ * Binary format</div><div class='add'>+ * - ibf_object_header</div><div class='add'>+ * - ibf_object_xxx (xxx is type)</div><div class='add'>+ */</div><div class='add'>+</div><div class='add'>+struct ibf_object_header {</div><div class='add'>+    unsigned int type: 5;</div><div class='add'>+    unsigned int special_const: 1;</div><div class='add'>+    unsigned int frozen: 1;</div><div class='add'>+    unsigned int internal: 1;</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+enum ibf_object_class_index {</div><div class='add'>+    IBF_OBJECT_CLASS_OBJECT,</div><div class='add'>+    IBF_OBJECT_CLASS_ARRAY,</div><div class='add'>+    IBF_OBJECT_CLASS_STANDARD_ERROR</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+struct ibf_object_string {</div><div class='add'>+    long encindex;</div><div class='add'>+    long len;</div><div class='add'>+    char ptr[1];</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+struct ibf_object_regexp {</div><div class='add'>+    long srcstr;</div><div class='add'>+    char option;</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+struct ibf_object_array {</div><div class='add'>+    long len;</div><div class='add'>+    long ary[1];</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+struct ibf_object_hash {</div><div class='add'>+    long len;</div><div class='add'>+    long keyval[1];</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+struct ibf_object_struct_range {</div><div class='add'>+    long class_index;</div><div class='add'>+    long len;</div><div class='add'>+    long beg;</div><div class='add'>+    long end;</div><div class='add'>+    int excl;</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+struct ibf_object_bignum {</div><div class='add'>+    ssize_t slen;</div><div class='add'>+    BDIGIT digits[1];</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+enum ibf_object_data_type {</div><div class='add'>+    IBF_OBJECT_DATA_ENCODING</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+struct ibf_object_complex_rational {</div><div class='add'>+    long a, b;</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+struct ibf_object_symbol {</div><div class='add'>+    long str;</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+#define IBF_OBJHEADER(offset)     (struct ibf_object_header *)(load-&gt;buff + (offset))</div><div class='add'>+#define IBF_OBJBODY(type, offset) (type *)(load-&gt;buff + sizeof(struct ibf_object_header) + (offset))</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_unsupported(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    rb_obj_info_dump(obj);</div><div class='add'>+    rb_bug("ibf_dump_object_unsupported: unsupported");</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_unsupported(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    rb_bug("unsupported");</div><div class='add'>+    return Qnil;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_class(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    enum ibf_object_class_index cindex;</div><div class='add'>+    if (obj == rb_cObject) {</div><div class='add'>+	cindex = IBF_OBJECT_CLASS_OBJECT;</div><div class='add'>+    }</div><div class='add'>+    else if (obj == rb_cArray) {</div><div class='add'>+	cindex = IBF_OBJECT_CLASS_ARRAY;</div><div class='add'>+    }</div><div class='add'>+    else if (obj == rb_eStandardError) {</div><div class='add'>+	cindex = IBF_OBJECT_CLASS_STANDARD_ERROR;</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	rb_obj_info_dump(obj);</div><div class='add'>+	rb_p(obj);</div><div class='add'>+	rb_bug("unsupported class");</div><div class='add'>+    }</div><div class='add'>+    ibf_dump_write(dump, &amp;cindex, sizeof(cindex));</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_class(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    enum ibf_object_class_index *cindexp = IBF_OBJBODY(enum ibf_object_class_index, offset);</div><div class='add'>+    enum ibf_object_class_index cindex = *cindexp;</div><div class='add'>+</div><div class='add'>+    switch (cindex) {</div><div class='add'>+      case IBF_OBJECT_CLASS_OBJECT:</div><div class='add'>+	return rb_cObject;</div><div class='add'>+      case IBF_OBJECT_CLASS_ARRAY:</div><div class='add'>+	return rb_cArray;</div><div class='add'>+      case IBF_OBJECT_CLASS_STANDARD_ERROR:</div><div class='add'>+	return rb_eStandardError;</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    rb_bug("ibf_load_object_class: unknown class (%d)", (int)cindex);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_float(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    double dbl = RFLOAT_VALUE(obj);</div><div class='add'>+    ibf_dump_write(dump, &amp;dbl, sizeof(dbl));</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_float(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    double *dblp = IBF_OBJBODY(double, offset);</div><div class='add'>+    return DBL2NUM(*dblp);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_string(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    long encindex = (long)rb_enc_get_index(obj);</div><div class='add'>+    long len = RSTRING_LEN(obj);</div><div class='add'>+    const char *ptr = RSTRING_PTR(obj);</div><div class='add'>+</div><div class='add'>+    if (encindex &gt; RUBY_ENCINDEX_BUILTIN_MAX) {</div><div class='add'>+	rb_encoding *enc = rb_enc_from_index((int)encindex);</div><div class='add'>+	const char *enc_name = rb_enc_name(enc);</div><div class='add'>+	encindex = RUBY_ENCINDEX_BUILTIN_MAX + ibf_dump_object(dump, rb_str_new2(enc_name));</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    IBF_WV(encindex);</div><div class='add'>+    IBF_WV(len);</div><div class='add'>+    IBF_WP(ptr, char, len);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_string(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    const struct ibf_object_string *string = IBF_OBJBODY(struct ibf_object_string, offset);</div><div class='add'>+    VALUE str = rb_str_new(string-&gt;ptr, string-&gt;len);</div><div class='add'>+    int encindex = (int)string-&gt;encindex;</div><div class='add'>+</div><div class='add'>+    if (encindex &gt; RUBY_ENCINDEX_BUILTIN_MAX) {</div><div class='add'>+	VALUE enc_name_str = ibf_load_object(load, encindex - RUBY_ENCINDEX_BUILTIN_MAX);</div><div class='add'>+	encindex = rb_enc_find_index(RSTRING_PTR(enc_name_str));</div><div class='add'>+    }</div><div class='add'>+    rb_enc_associate_index(str, encindex);</div><div class='add'>+</div><div class='add'>+    if (header-&gt;internal) rb_obj_hide(str);</div><div class='add'>+    if (header-&gt;frozen)   str = rb_fstring(str);</div><div class='add'>+</div><div class='add'>+    return str;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_regexp(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    struct ibf_object_regexp regexp;</div><div class='add'>+    regexp.srcstr = RREGEXP_SRC(obj);</div><div class='add'>+    regexp.option = (char)rb_reg_options(obj);</div><div class='add'>+    regexp.srcstr = (long)ibf_dump_object(dump, regexp.srcstr);</div><div class='add'>+    IBF_WV(regexp);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_regexp(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    const struct ibf_object_regexp *regexp = IBF_OBJBODY(struct ibf_object_regexp, offset);</div><div class='add'>+    VALUE srcstr = ibf_load_object(load, regexp-&gt;srcstr);</div><div class='add'>+    VALUE reg = rb_reg_compile(srcstr, (int)regexp-&gt;option, NULL, 0);</div><div class='add'>+</div><div class='add'>+    if (header-&gt;internal) rb_obj_hide(reg);</div><div class='add'>+    if (header-&gt;frozen)   rb_obj_freeze(reg);</div><div class='add'>+</div><div class='add'>+    return reg;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_array(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    long i, len = (int)RARRAY_LEN(obj);</div><div class='add'>+    IBF_WV(len);</div><div class='add'>+    for (i=0; i&lt;len; i++) {</div><div class='add'>+	long index = (long)ibf_dump_object(dump, RARRAY_AREF(obj, i));</div><div class='add'>+	IBF_WV(index);</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_array(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    const struct ibf_object_array *array = IBF_OBJBODY(struct ibf_object_array, offset);</div><div class='add'>+    VALUE ary = rb_ary_new_capa(array-&gt;len);</div><div class='add'>+    int i;</div><div class='add'>+</div><div class='add'>+    for (i=0; i&lt;array-&gt;len; i++) {</div><div class='add'>+	rb_ary_push(ary, ibf_load_object(load, array-&gt;ary[i]));</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    if (header-&gt;internal) rb_obj_hide(ary);</div><div class='add'>+    if (header-&gt;frozen)   rb_obj_freeze(ary);</div><div class='add'>+</div><div class='add'>+    return ary;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static int</div><div class='add'>+ibf_dump_object_hash_i(st_data_t key, st_data_t val, st_data_t ptr)</div><div class='add'>+{</div><div class='add'>+    struct ibf_dump *dump = (struct ibf_dump *)ptr;</div><div class='add'>+    long key_index = (long)ibf_dump_object(dump, (VALUE)key);</div><div class='add'>+    long val_index = (long)ibf_dump_object(dump, (VALUE)val);</div><div class='add'>+    IBF_WV(key_index);</div><div class='add'>+    IBF_WV(val_index);</div><div class='add'>+    return ST_CONTINUE;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_hash(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    long len = RHASH_SIZE(obj);</div><div class='add'>+    IBF_WV(len);</div><div class='add'>+    if (len &gt; 0) st_foreach(RHASH(obj)-&gt;ntbl, ibf_dump_object_hash_i, (st_data_t)dump);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_hash(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    const struct ibf_object_hash *hash = IBF_OBJBODY(struct ibf_object_hash, offset);</div><div class='add'>+    VALUE obj = rb_hash_new();</div><div class='add'>+    int i;</div><div class='add'>+</div><div class='add'>+    for (i=0; i&lt;hash-&gt;len; i++) {</div><div class='add'>+	VALUE key = ibf_load_object(load, hash-&gt;keyval[i*2  ]);</div><div class='add'>+	VALUE val = ibf_load_object(load, hash-&gt;keyval[i*2+1]);</div><div class='add'>+	rb_hash_aset(obj, key, val);</div><div class='add'>+    }</div><div class='add'>+    rb_hash_rehash(obj);</div><div class='add'>+</div><div class='add'>+    if (header-&gt;internal) rb_obj_hide(obj);</div><div class='add'>+    if (header-&gt;frozen)   rb_obj_freeze(obj);</div><div class='add'>+</div><div class='add'>+    return obj;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_struct(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    if (rb_obj_is_kind_of(obj, rb_cRange)) {</div><div class='add'>+	struct ibf_object_struct_range range;</div><div class='add'>+	VALUE beg, end;</div><div class='add'>+	range.len = 3;</div><div class='add'>+	range.class_index = 0;</div><div class='add'>+</div><div class='add'>+	rb_range_values(obj, &amp;beg, &amp;end, &amp;range.excl);</div><div class='add'>+	range.beg = (long)ibf_dump_object(dump, beg);</div><div class='add'>+	range.end = (long)ibf_dump_object(dump, end);</div><div class='add'>+</div><div class='add'>+	IBF_WV(range);</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	rb_bug("ibf_dump_object_struct: unsupported class");</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_struct(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    const struct ibf_object_struct_range *range = IBF_OBJBODY(struct ibf_object_struct_range, offset);</div><div class='add'>+    VALUE beg = ibf_load_object(load, range-&gt;beg);</div><div class='add'>+    VALUE end = ibf_load_object(load, range-&gt;end);</div><div class='add'>+    VALUE obj = rb_range_new(beg, end, range-&gt;excl);</div><div class='add'>+    if (header-&gt;internal) rb_obj_hide(obj);</div><div class='add'>+    if (header-&gt;frozen)   rb_obj_freeze(obj);</div><div class='add'>+    return obj;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_bignum(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    ssize_t len = BIGNUM_LEN(obj);</div><div class='add'>+    ssize_t slen = BIGNUM_SIGN(obj) &gt; 0 ? len : len * -1;</div><div class='add'>+    BDIGIT *d = BIGNUM_DIGITS(obj);</div><div class='add'>+</div><div class='add'>+    IBF_WV(slen);</div><div class='add'>+    IBF_WP(d, BDIGIT, len);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_bignum(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    const struct ibf_object_bignum *bignum = IBF_OBJBODY(struct ibf_object_bignum, offset);</div><div class='add'>+    int sign = bignum-&gt;slen &gt; 0;</div><div class='add'>+    ssize_t len = sign &gt; 0 ? bignum-&gt;slen : -1 * bignum-&gt;slen;</div><div class='add'>+    VALUE obj = rb_integer_unpack(bignum-&gt;digits, len * 2, 2, 0,</div><div class='add'>+				  INTEGER_PACK_LITTLE_ENDIAN | (sign == 0 ? INTEGER_PACK_NEGATIVE : 0));</div><div class='add'>+    if (header-&gt;internal) rb_obj_hide(obj);</div><div class='add'>+    if (header-&gt;frozen)   rb_obj_freeze(obj);</div><div class='add'>+    return obj;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_data(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    if (rb_data_is_encoding(obj)) {</div><div class='add'>+	rb_encoding *enc = rb_to_encoding(obj);</div><div class='add'>+	const char *name = rb_enc_name(enc);</div><div class='add'>+	enum ibf_object_data_type type = IBF_OBJECT_DATA_ENCODING;</div><div class='add'>+	long len = strlen(name) + 1;</div><div class='add'>+	IBF_WV(type);</div><div class='add'>+	IBF_WV(len);</div><div class='add'>+	IBF_WP(name, char, strlen(name) + 1);</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	ibf_dump_object_unsupported(dump, obj);</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_data(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    const enum ibf_object_data_type *typep = IBF_OBJBODY(enum ibf_object_data_type, offset);</div><div class='add'>+    /* const long *lenp = IBF_OBJBODY(long, offset + sizeof(enum ibf_object_data_type)); */</div><div class='add'>+    const char *data = IBF_OBJBODY(char, offset + sizeof(enum ibf_object_data_type) + sizeof(long));</div><div class='add'>+</div><div class='add'>+    switch (*typep) {</div><div class='add'>+      case IBF_OBJECT_DATA_ENCODING:</div><div class='add'>+	{</div><div class='add'>+	    VALUE encobj = rb_enc_from_encoding(rb_enc_find(data));</div><div class='add'>+	    return encobj;</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    return ibf_load_object_unsupported(load, header, offset);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_complex_rational(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    long real = (long)ibf_dump_object(dump, RCOMPLEX(obj)-&gt;real);</div><div class='add'>+    long imag = (long)ibf_dump_object(dump, RCOMPLEX(obj)-&gt;imag);</div><div class='add'>+</div><div class='add'>+    IBF_WV(real);</div><div class='add'>+    IBF_WV(imag);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_complex_rational(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    const struct ibf_object_complex_rational *nums = IBF_OBJBODY(struct ibf_object_complex_rational, offset);</div><div class='add'>+    VALUE a = ibf_load_object(load, nums-&gt;a);</div><div class='add'>+    VALUE b = ibf_load_object(load, nums-&gt;b);</div><div class='add'>+    VALUE obj = header-&gt;type == T_COMPLEX ?</div><div class='add'>+      rb_complex_new(a, b) : rb_rational_new(a, b);</div><div class='add'>+</div><div class='add'>+    if (header-&gt;internal) rb_obj_hide(obj);</div><div class='add'>+    if (header-&gt;frozen)   rb_obj_freeze(obj);</div><div class='add'>+    return obj;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_symbol(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    VALUE str = rb_sym2str(obj);</div><div class='add'>+    long str_index = (long)ibf_dump_object(dump, str);</div><div class='add'>+    IBF_WV(str_index);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object_symbol(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)</div><div class='add'>+{</div><div class='add'>+    /* const struct ibf_object_header *header = IBF_OBJHEADER(offset); */</div><div class='add'>+    const struct ibf_object_symbol *symbol = IBF_OBJBODY(struct ibf_object_symbol, offset);</div><div class='add'>+    VALUE str = ibf_load_object(load, symbol-&gt;str);</div><div class='add'>+    ID id = rb_intern_str(str);</div><div class='add'>+    return ID2SYM(id);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+typedef void (*ibf_dump_object_function)(struct ibf_dump *dump, VALUE obj);</div><div class='add'>+static ibf_dump_object_function dump_object_functions[RUBY_T_MASK+1] = {</div><div class='add'>+    ibf_dump_object_unsupported, /* T_NONE */</div><div class='add'>+    ibf_dump_object_unsupported, /* T_OBJECT */</div><div class='add'>+    ibf_dump_object_class,       /* T_CLASS */</div><div class='add'>+    ibf_dump_object_unsupported, /* T_MODULE */</div><div class='add'>+    ibf_dump_object_float,       /* T_FLOAT */</div><div class='add'>+    ibf_dump_object_string,      /* T_STRING */</div><div class='add'>+    ibf_dump_object_regexp,      /* T_REGEXP */</div><div class='add'>+    ibf_dump_object_array,       /* T_ARRAY */</div><div class='add'>+    ibf_dump_object_hash,        /* T_HASH */</div><div class='add'>+    ibf_dump_object_struct,      /* T_STRUCT */</div><div class='add'>+    ibf_dump_object_bignum,      /* T_BIGNUM */</div><div class='add'>+    ibf_dump_object_unsupported, /* T_FILE */</div><div class='add'>+    ibf_dump_object_data,        /* T_DATA */</div><div class='add'>+    ibf_dump_object_unsupported, /* T_MATCH */</div><div class='add'>+    ibf_dump_object_complex_rational, /* T_COMPLEX */</div><div class='add'>+    ibf_dump_object_complex_rational, /* T_RATIONAL */</div><div class='add'>+    ibf_dump_object_unsupported, /* 0x10 */</div><div class='add'>+    ibf_dump_object_unsupported, /* 0x11 T_NIL */</div><div class='add'>+    ibf_dump_object_unsupported, /* 0x12 T_TRUE */</div><div class='add'>+    ibf_dump_object_unsupported, /* 0x13 T_FALSE */</div><div class='add'>+    ibf_dump_object_symbol,      /* 0x14 T_SYMBOL */</div><div class='add'>+    ibf_dump_object_unsupported, /* T_FIXNUM */</div><div class='add'>+    ibf_dump_object_unsupported, /* T_UNDEF */</div><div class='add'>+    ibf_dump_object_unsupported, /* 0x17 */</div><div class='add'>+    ibf_dump_object_unsupported, /* 0x18 */</div><div class='add'>+    ibf_dump_object_unsupported, /* 0x19 */</div><div class='add'>+    ibf_dump_object_unsupported, /* T_IMEMO 0x1a */</div><div class='add'>+    ibf_dump_object_unsupported, /* T_NODE 0x1b */</div><div class='add'>+    ibf_dump_object_unsupported, /* T_ICLASS 0x1c */</div><div class='add'>+    ibf_dump_object_unsupported, /* T_ZOMBIE 0x1d */</div><div class='add'>+    ibf_dump_object_unsupported, /* 0x1e */</div><div class='add'>+    ibf_dump_object_unsupported  /* 0x1f */</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+static ibf_offset_t</div><div class='add'>+lbf_dump_object_object(struct ibf_dump *dump, VALUE obj)</div><div class='add'>+{</div><div class='add'>+    struct ibf_object_header obj_header;</div><div class='add'>+    ibf_offset_t current_offset = ibf_dump_pos(dump);</div><div class='add'>+    obj_header.type = TYPE(obj);</div><div class='add'>+</div><div class='add'>+    if (SPECIAL_CONST_P(obj)) {</div><div class='add'>+	if (RB_TYPE_P(obj, T_SYMBOL) ||</div><div class='add'>+	    RB_TYPE_P(obj, T_FLOAT)) {</div><div class='add'>+	    obj_header.internal = FALSE;</div><div class='add'>+	    goto dump_object;</div><div class='add'>+	}</div><div class='add'>+	obj_header.special_const = TRUE;</div><div class='add'>+	obj_header.frozen = TRUE;</div><div class='add'>+	obj_header.internal = TRUE;</div><div class='add'>+	IBF_WV(obj_header);</div><div class='add'>+	IBF_WV(obj);</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	obj_header.internal = (RBASIC_CLASS(obj) == 0) ? TRUE : FALSE;</div><div class='add'>+      dump_object:</div><div class='add'>+	obj_header.special_const = FALSE;</div><div class='add'>+	obj_header.frozen = FL_TEST(obj, FL_FREEZE) ? TRUE : FALSE;</div><div class='add'>+	IBF_WV(obj_header);</div><div class='add'>+	(*dump_object_functions[obj_header.type])(dump, obj);</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    return current_offset;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+typedef VALUE (*ibf_load_object_function)(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t);</div><div class='add'>+static ibf_load_object_function load_object_functions[RUBY_T_MASK+1] = {</div><div class='add'>+    ibf_load_object_unsupported, /* T_NONE */</div><div class='add'>+    ibf_load_object_unsupported, /* T_OBJECT */</div><div class='add'>+    ibf_load_object_class,       /* T_CLASS */</div><div class='add'>+    ibf_load_object_unsupported, /* T_MODULE */</div><div class='add'>+    ibf_load_object_float,       /* T_FLOAT */</div><div class='add'>+    ibf_load_object_string,      /* T_STRING */</div><div class='add'>+    ibf_load_object_regexp,      /* T_REGEXP */</div><div class='add'>+    ibf_load_object_array,       /* T_ARRAY */</div><div class='add'>+    ibf_load_object_hash,        /* T_HASH */</div><div class='add'>+    ibf_load_object_struct,      /* T_STRUCT */</div><div class='add'>+    ibf_load_object_bignum,      /* T_BIGNUM */</div><div class='add'>+    ibf_load_object_unsupported, /* T_FILE */</div><div class='add'>+    ibf_load_object_data,        /* T_DATA */</div><div class='add'>+    ibf_load_object_unsupported, /* T_MATCH */</div><div class='add'>+    ibf_load_object_complex_rational, /* T_COMPLEX */</div><div class='add'>+    ibf_load_object_complex_rational, /* T_RATIONAL */</div><div class='add'>+    ibf_load_object_unsupported, /* 0x10 */</div><div class='add'>+    ibf_load_object_unsupported, /* T_NIL */</div><div class='add'>+    ibf_load_object_unsupported, /* T_TRUE */</div><div class='add'>+    ibf_load_object_unsupported, /* T_FALSE */</div><div class='add'>+    ibf_load_object_symbol,</div><div class='add'>+    ibf_load_object_unsupported, /* T_FIXNUM */</div><div class='add'>+    ibf_load_object_unsupported, /* T_UNDEF */</div><div class='add'>+    ibf_load_object_unsupported, /* 0x17 */</div><div class='add'>+    ibf_load_object_unsupported, /* 0x18 */</div><div class='add'>+    ibf_load_object_unsupported, /* 0x19 */</div><div class='add'>+    ibf_load_object_unsupported, /* T_IMEMO 0x1a */</div><div class='add'>+    ibf_load_object_unsupported, /* T_NODE 0x1b */</div><div class='add'>+    ibf_load_object_unsupported, /* T_ICLASS 0x1c */</div><div class='add'>+    ibf_load_object_unsupported, /* T_ZOMBIE 0x1d */</div><div class='add'>+    ibf_load_object_unsupported, /* 0x1e */</div><div class='add'>+    ibf_load_object_unsupported  /* 0x1f */</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+static VALUE</div><div class='add'>+ibf_load_object(const struct ibf_load *load, VALUE object_index)</div><div class='add'>+{</div><div class='add'>+    if (object_index == 0) {</div><div class='add'>+	return Qnil;</div><div class='add'>+    }</div><div class='add'>+    else if (object_index &gt;= load-&gt;header-&gt;object_list_size) {</div><div class='add'>+	rb_raise(rb_eIndexError, "object index out of range: %"PRIdVALUE, object_index);</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	VALUE obj = rb_ary_entry(load-&gt;obj_list, (long)object_index);</div><div class='add'>+	if (obj == Qnil) { /* TODO: avoid multiple Qnil load */</div><div class='add'>+	    ibf_offset_t *offsets = (ibf_offset_t *)(load-&gt;header-&gt;object_list_offset + load-&gt;buff);</div><div class='add'>+	    ibf_offset_t offset = offsets[object_index];</div><div class='add'>+	    const struct ibf_object_header *header = IBF_OBJHEADER(offset);</div><div class='add'>+</div><div class='add'>+	    if (header-&gt;special_const) {</div><div class='add'>+		VALUE *vp = IBF_OBJBODY(VALUE, offset);</div><div class='add'>+		obj = *vp;</div><div class='add'>+	    }</div><div class='add'>+	    else {</div><div class='add'>+		obj = (*load_object_functions[header-&gt;type])(load, header, offset);</div><div class='add'>+	    }</div><div class='add'>+</div><div class='add'>+	    rb_ary_store(load-&gt;obj_list, (long)object_index, obj);</div><div class='add'>+	}</div><div class='add'>+	iseq_add_mark_object(load-&gt;iseq, obj);</div><div class='add'>+	return obj;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_object_list(struct ibf_dump *dump, struct ibf_header *header)</div><div class='add'>+{</div><div class='add'>+    VALUE list = rb_ary_tmp_new(RARRAY_LEN(dump-&gt;obj_list));</div><div class='add'>+    int i, size;</div><div class='add'>+</div><div class='add'>+    for (i=0; i&lt;RARRAY_LEN(dump-&gt;obj_list); i++) {</div><div class='add'>+	VALUE obj = RARRAY_AREF(dump-&gt;obj_list, i);</div><div class='add'>+	ibf_offset_t offset = lbf_dump_object_object(dump, obj);</div><div class='add'>+	rb_ary_push(list, UINT2NUM(offset));</div><div class='add'>+    }</div><div class='add'>+    size = i;</div><div class='add'>+    header-&gt;object_list_offset = ibf_dump_pos(dump);</div><div class='add'>+</div><div class='add'>+    for (i=0; i&lt;size; i++) {</div><div class='add'>+	ibf_offset_t offset = NUM2UINT(RARRAY_AREF(list, i));</div><div class='add'>+	IBF_WV(offset);</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    header-&gt;object_list_size = size;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_mark(void *ptr)</div><div class='add'>+{</div><div class='add'>+    struct ibf_dump *dump = (struct ibf_dump *)ptr;</div><div class='add'>+    rb_gc_mark(dump-&gt;str);</div><div class='add'>+    rb_gc_mark(dump-&gt;iseq_list);</div><div class='add'>+    rb_gc_mark(dump-&gt;obj_list);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_free(void *ptr)</div><div class='add'>+{</div><div class='add'>+    struct ibf_dump *dump = (struct ibf_dump *)ptr;</div><div class='add'>+    if (dump-&gt;iseq_table) {</div><div class='add'>+	st_free_table(dump-&gt;iseq_table);</div><div class='add'>+	dump-&gt;iseq_table = 0;</div><div class='add'>+    }</div><div class='add'>+    if (dump-&gt;id_table) {</div><div class='add'>+	st_free_table(dump-&gt;id_table);</div><div class='add'>+	dump-&gt;id_table = 0;</div><div class='add'>+    }</div><div class='add'>+    ruby_xfree(dump);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static size_t</div><div class='add'>+ibf_dump_memsize(const void *ptr)</div><div class='add'>+{</div><div class='add'>+    struct ibf_dump *dump = (struct ibf_dump *)ptr;</div><div class='add'>+    size_t size = sizeof(*dump);</div><div class='add'>+    if (dump-&gt;iseq_table) size += st_memsize(dump-&gt;iseq_table);</div><div class='add'>+    if (dump-&gt;id_table) size += st_memsize(dump-&gt;id_table);</div><div class='add'>+    return size;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static const rb_data_type_t ibf_dump_type = {</div><div class='add'>+    "ibf_dump",</div><div class='add'>+    {ibf_dump_mark, ibf_dump_free, ibf_dump_memsize,},</div><div class='add'>+    0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_dump_setup(struct ibf_dump *dump, VALUE dumper_obj)</div><div class='add'>+{</div><div class='add'>+    RB_OBJ_WRITE(dumper_obj, &amp;dump-&gt;str, rb_str_new(0, 0));</div><div class='add'>+    RB_OBJ_WRITE(dumper_obj, &amp;dump-&gt;iseq_list, rb_ary_tmp_new(0));</div><div class='add'>+    RB_OBJ_WRITE(dumper_obj, &amp;dump-&gt;obj_list, rb_ary_tmp_new(1));</div><div class='add'>+    rb_ary_push(dump-&gt;obj_list, Qnil); /* 0th is nil */</div><div class='add'>+    dump-&gt;iseq_table = st_init_numtable(); /* need free */</div><div class='add'>+    dump-&gt;id_table = st_init_numtable();   /* need free */</div><div class='add'>+</div><div class='add'>+    ibf_table_index(dump-&gt;id_table, 0); /* id_index:0 is 0 */</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+VALUE</div><div class='add'>+iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt)</div><div class='add'>+{</div><div class='add'>+    struct ibf_dump *dump;</div><div class='add'>+    struct ibf_header header = {{0}};</div><div class='add'>+    VALUE dump_obj;</div><div class='add'>+    VALUE str;</div><div class='add'>+</div><div class='add'>+    if (iseq-&gt;body-&gt;parent_iseq != NULL ||</div><div class='add'>+	iseq-&gt;body-&gt;local_iseq != iseq) {</div><div class='add'>+	rb_raise(rb_eRuntimeError, "should be top of iseq");</div><div class='add'>+    }</div><div class='add'>+    if (RTEST(ISEQ_COVERAGE(iseq))) {</div><div class='add'>+	rb_raise(rb_eRuntimeError, "should not compile with coverage");</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    dump_obj = TypedData_Make_Struct(0, struct ibf_dump, &amp;ibf_dump_type, dump);</div><div class='add'>+    ibf_dump_setup(dump, dump_obj);</div><div class='add'>+</div><div class='add'>+    ibf_dump_write(dump, &amp;header, sizeof(header));</div><div class='add'>+    ibf_dump_write(dump, RUBY_PLATFORM, strlen(RUBY_PLATFORM) + 1);</div><div class='add'>+    ibf_dump_iseq(dump, iseq);</div><div class='add'>+</div><div class='add'>+    header.magic[0] = 'Y'; /* YARB */</div><div class='add'>+    header.magic[1] = 'A';</div><div class='add'>+    header.magic[2] = 'R';</div><div class='add'>+    header.magic[3] = 'B';</div><div class='add'>+    header.major_version = ISEQ_MAJOR_VERSION;</div><div class='add'>+    header.minor_version = ISEQ_MINOR_VERSION;</div><div class='add'>+    ibf_dump_iseq_list(dump, &amp;header);</div><div class='add'>+    ibf_dump_id_list(dump, &amp;header);</div><div class='add'>+    ibf_dump_object_list(dump, &amp;header);</div><div class='add'>+    header.size = ibf_dump_pos(dump);</div><div class='add'>+</div><div class='add'>+    if (RTEST(opt)) {</div><div class='add'>+	VALUE opt_str = opt;</div><div class='add'>+	const char *ptr = StringValuePtr(opt_str);</div><div class='add'>+	header.extra_size = RSTRING_LENINT(opt_str);</div><div class='add'>+	ibf_dump_write(dump, ptr, header.extra_size);</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	header.extra_size = 0;</div><div class='add'>+    }</div><div class='add'>+</div><div class='add'>+    ibf_dump_overwrite(dump, &amp;header, sizeof(header), 0);</div><div class='add'>+</div><div class='add'>+    str = dump-&gt;str;</div><div class='add'>+    ibf_dump_free(dump);</div><div class='add'>+    DATA_PTR(dump_obj) = NULL;</div><div class='add'>+    RB_GC_GUARD(dump_obj);</div><div class='add'>+    return str;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static const ibf_offset_t *</div><div class='add'>+ibf_iseq_list(const struct ibf_load *load)</div><div class='add'>+{</div><div class='add'>+    return (ibf_offset_t *)(load-&gt;buff + load-&gt;header-&gt;iseq_list_offset);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+void</div><div class='add'>+ibf_load_iseq_complete(rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    struct ibf_load *load = RTYPEDDATA_DATA(iseq-&gt;aux.loader.obj);</div><div class='add'>+    rb_iseq_t *prev_src_iseq = load-&gt;iseq;</div><div class='add'>+    load-&gt;iseq = iseq;</div><div class='add'>+    ibf_load_iseq_each(load, iseq, ibf_iseq_list(load)[iseq-&gt;aux.loader.index]);</div><div class='add'>+    ISEQ_COMPILE_DATA(iseq) = NULL;</div><div class='add'>+    FL_UNSET(iseq, ISEQ_NOT_LOADED_YET);</div><div class='add'>+    load-&gt;iseq = prev_src_iseq;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+#if USE_LAZY_LOAD</div><div class='add'>+const rb_iseq_t *</div><div class='add'>+rb_iseq_complete(const rb_iseq_t *iseq)</div><div class='add'>+{</div><div class='add'>+    ibf_load_iseq_complete((rb_iseq_t *)iseq);</div><div class='add'>+    return iseq;</div><div class='add'>+}</div><div class='add'>+#endif</div><div class='add'>+</div><div class='add'>+static rb_iseq_t *</div><div class='add'>+ibf_load_iseq(const struct ibf_load *load, const rb_iseq_t *index_iseq)</div><div class='add'>+{</div><div class='add'>+    int iseq_index = (int)(VALUE)index_iseq;</div><div class='add'>+</div><div class='add'>+    if (iseq_index == -1) {</div><div class='add'>+	return NULL;</div><div class='add'>+    }</div><div class='add'>+    else {</div><div class='add'>+	VALUE iseqv = rb_ary_entry(load-&gt;iseq_list, iseq_index);</div><div class='add'>+</div><div class='add'>+	if (iseqv != Qnil) {</div><div class='add'>+	    return (rb_iseq_t *)iseqv;</div><div class='add'>+	}</div><div class='add'>+	else {</div><div class='add'>+	    rb_iseq_t *iseq = iseq_imemo_alloc();</div><div class='add'>+	    FL_SET(iseq, ISEQ_NOT_LOADED_YET);</div><div class='add'>+	    iseq-&gt;aux.loader.obj = load-&gt;loader_obj;</div><div class='add'>+	    iseq-&gt;aux.loader.index = iseq_index;</div><div class='add'>+	    rb_ary_store(load-&gt;iseq_list, iseq_index, (VALUE)iseq);</div><div class='add'>+</div><div class='add'>+#if !USE_LAZY_LOAD</div><div class='add'>+	    ibf_load_iseq_complete(iseq);</div><div class='add'>+#endif /* !USE_LAZY_LOAD */</div><div class='add'>+</div><div class='add'>+	    if (load-&gt;iseq) {</div><div class='add'>+		iseq_add_mark_object(load-&gt;iseq, (VALUE)iseq);</div><div class='add'>+	    }</div><div class='add'>+	    return iseq;</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_load_setup(struct ibf_load *load, VALUE loader_obj, VALUE str)</div><div class='add'>+{</div><div class='add'>+    rb_check_safe_obj(str);</div><div class='add'>+</div><div class='add'>+    if (RSTRING_LENINT(str) &lt; (int)sizeof(struct ibf_header)) {</div><div class='add'>+	rb_raise(rb_eRuntimeError, "broken binary format");</div><div class='add'>+    }</div><div class='add'>+    RB_OBJ_WRITE(loader_obj, &amp;load-&gt;str, str);</div><div class='add'>+    load-&gt;loader_obj = loader_obj;</div><div class='add'>+    load-&gt;buff = StringValuePtr(str);</div><div class='add'>+    load-&gt;header = (struct ibf_header *)load-&gt;buff;</div><div class='add'>+    RB_OBJ_WRITE(loader_obj, &amp;load-&gt;iseq_list, rb_ary_tmp_new(0));</div><div class='add'>+    RB_OBJ_WRITE(loader_obj, &amp;load-&gt;obj_list, rb_ary_tmp_new(0));</div><div class='add'>+    load-&gt;id_list = ZALLOC_N(ID, load-&gt;header-&gt;id_list_size);</div><div class='add'>+    load-&gt;iseq = NULL;</div><div class='add'>+</div><div class='add'>+    if (RSTRING_LENINT(str) &lt; (int)load-&gt;header-&gt;size) {</div><div class='add'>+	rb_raise(rb_eRuntimeError, "broken binary format");</div><div class='add'>+    }</div><div class='add'>+    if (strncmp(load-&gt;header-&gt;magic, "YARB", 4) != 0) {</div><div class='add'>+	rb_raise(rb_eRuntimeError, "unknown binary format");</div><div class='add'>+    }</div><div class='add'>+    if (load-&gt;header-&gt;major_version != ISEQ_MAJOR_VERSION ||</div><div class='add'>+	load-&gt;header-&gt;minor_version != ISEQ_MINOR_VERSION) {</div><div class='add'>+	rb_raise(rb_eRuntimeError, "unmatched version file (%u.%u for %u.%u)",</div><div class='add'>+		 load-&gt;header-&gt;major_version, load-&gt;header-&gt;minor_version, ISEQ_MAJOR_VERSION, ISEQ_MINOR_VERSION);</div><div class='add'>+    }</div><div class='add'>+    if (strcmp(load-&gt;buff + sizeof(struct ibf_header), RUBY_PLATFORM) != 0) {</div><div class='add'>+	rb_raise(rb_eRuntimeError, "unmatched platform");</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_loader_mark(void *ptr)</div><div class='add'>+{</div><div class='add'>+    if (ptr) {</div><div class='add'>+	struct ibf_load *load = (struct ibf_load *)ptr;</div><div class='add'>+	rb_gc_mark(load-&gt;str);</div><div class='add'>+	rb_gc_mark(load-&gt;iseq_list);</div><div class='add'>+	rb_gc_mark(load-&gt;obj_list);</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static void</div><div class='add'>+ibf_loader_free(void *ptr)</div><div class='add'>+{</div><div class='add'>+    if (ptr) {</div><div class='add'>+	struct ibf_load *load = (struct ibf_load *)ptr;</div><div class='add'>+	ruby_xfree(load-&gt;id_list);</div><div class='add'>+	ruby_xfree(load);</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static size_t</div><div class='add'>+ibf_loader_memsize(const void *ptr)</div><div class='add'>+{</div><div class='add'>+    struct ibf_load *load = (struct ibf_load *)ptr;</div><div class='add'>+    return sizeof(struct ibf_load) + load-&gt;header-&gt;id_list_size * sizeof(ID);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static const rb_data_type_t ibf_load_type = {</div><div class='add'>+    "ibf_loader",</div><div class='add'>+    {ibf_loader_mark, ibf_loader_free, ibf_loader_memsize,},</div><div class='add'>+    0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+const rb_iseq_t *</div><div class='add'>+iseq_ibf_load(VALUE str)</div><div class='add'>+{</div><div class='add'>+    struct ibf_load *load;</div><div class='add'>+    const rb_iseq_t *iseq;</div><div class='add'>+    VALUE loader_obj = TypedData_Make_Struct(0, struct ibf_load, &amp;ibf_load_type, load);</div><div class='add'>+</div><div class='add'>+    ibf_load_setup(load, loader_obj, str);</div><div class='add'>+    iseq = ibf_load_iseq(load, 0);</div><div class='add'>+</div><div class='add'>+    RB_GC_GUARD(loader_obj);</div><div class='add'>+    return iseq;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+VALUE</div><div class='add'>+iseq_ibf_load_extra_data(VALUE str)</div><div class='add'>+{</div><div class='add'>+    struct ibf_load *load;</div><div class='add'>+    VALUE loader_obj = TypedData_Make_Struct(0, struct ibf_load, &amp;ibf_load_type, load);</div><div class='add'>+    VALUE extra_str;</div><div class='add'>+</div><div class='add'>+    ibf_load_setup(load, loader_obj, str);</div><div class='add'>+    extra_str = rb_str_new(load-&gt;buff + load-&gt;header-&gt;size, load-&gt;header-&gt;extra_size);</div><div class='add'>+    RB_GC_GUARD(loader_obj);</div><div class='add'>+    return extra_str;</div><div class='add'>+}</div><div class='head'>diff --git a/complex.c b/complex.c<br/>index 11a394c6ce..7a9c56d667 100644<br/>--- a/<a href='/ruby.git/tree/complex.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>complex.c</a><br/>+++ b/<a href='/ruby.git/tree/complex.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>complex.c</a></div><div class='hunk'>@@ -5,18 +5,31 @@</div><div class='ctx'>   which is written in ruby.</div><div class='ctx'> */</div><div class='ctx'> </div><div class='del'>-#include "internal.h"</div><div class='add'>+#include "ruby/config.h"</div><div class='add'>+#if defined _MSC_VER</div><div class='add'>+/* Microsoft Visual C does not define M_PI and others by default */</div><div class='add'>+# define _USE_MATH_DEFINES 1</div><div class='add'>+#endif</div><div class='ctx'> #include &lt;math.h&gt;</div><div class='add'>+#include "internal.h"</div><div class='ctx'> </div><div class='ctx'> #define NDEBUG</div><div class='del'>-#include &lt;assert.h&gt;</div><div class='add'>+#include "ruby_assert.h"</div><div class='ctx'> </div><div class='ctx'> #define ZERO INT2FIX(0)</div><div class='ctx'> #define ONE INT2FIX(1)</div><div class='ctx'> #define TWO INT2FIX(2)</div><div class='add'>+#define RFLOAT_0 DBL2NUM(0)</div><div class='add'>+#if defined(HAVE_SIGNBIT) &amp;&amp; defined(__GNUC__) &amp;&amp; defined(__sun) &amp;&amp; \</div><div class='add'>+    !defined(signbit)</div><div class='add'>+extern int signbit(double);</div><div class='add'>+#endif</div><div class='ctx'> </div><div class='ctx'> VALUE rb_cComplex;</div><div class='ctx'> </div><div class='add'>+static VALUE nucomp_abs(VALUE self);</div><div class='add'>+static VALUE nucomp_arg(VALUE self);</div><div class='add'>+</div><div class='ctx'> static ID id_abs, id_arg, id_convert,</div><div class='ctx'>     id_denominator, id_eqeq_p, id_expt, id_fdiv,</div><div class='ctx'>     id_negate, id_numerator, id_quo,</div><div class='hunk'>@@ -97,7 +110,7 @@ f_mul(VALUE x, VALUE y)</div><div class='ctx'>     if (FIXNUM_P(y)) {</div><div class='ctx'> 	long iy = FIX2LONG(y);</div><div class='ctx'> 	if (iy == 0) {</div><div class='del'>-	    if (FIXNUM_P(x) || RB_TYPE_P(x, T_BIGNUM))</div><div class='add'>+	    if (RB_INTEGER_TYPE_P(x))</div><div class='ctx'> 		return ZERO;</div><div class='ctx'> 	}</div><div class='ctx'> 	else if (iy == 1)</div><div class='hunk'>@@ -106,7 +119,7 @@ f_mul(VALUE x, VALUE y)</div><div class='ctx'>     else if (FIXNUM_P(x)) {</div><div class='ctx'> 	long ix = FIX2LONG(x);</div><div class='ctx'> 	if (ix == 0) {</div><div class='del'>-	    if (FIXNUM_P(y) || RB_TYPE_P(y, T_BIGNUM))</div><div class='add'>+	    if (RB_INTEGER_TYPE_P(y))</div><div class='ctx'> 		return ZERO;</div><div class='ctx'> 	}</div><div class='ctx'> 	else if (ix == 1)</div><div class='hunk'>@@ -225,13 +238,13 @@ k_numeric_p(VALUE x)</div><div class='ctx'> inline static VALUE</div><div class='ctx'> k_fixnum_p(VALUE x)</div><div class='ctx'> {</div><div class='del'>-    return f_kind_of_p(x, rb_cFixnum);</div><div class='add'>+    return FIXNUM_P(x);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> inline static VALUE</div><div class='ctx'> k_bignum_p(VALUE x)</div><div class='ctx'> {</div><div class='del'>-    return f_kind_of_p(x, rb_cBignum);</div><div class='add'>+    return RB_TYPE_P(x, T_BIGNUM);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> inline static VALUE</div><div class='hunk'>@@ -253,19 +266,14 @@ k_complex_p(VALUE x)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> #define k_exact_p(x) (!k_float_p(x))</div><div class='del'>-#define k_inexact_p(x) k_float_p(x)</div><div class='ctx'> </div><div class='ctx'> #define k_exact_zero_p(x) (k_exact_p(x) &amp;&amp; f_zero_p(x))</div><div class='del'>-#define k_exact_one_p(x) (k_exact_p(x) &amp;&amp; f_one_p(x))</div><div class='ctx'> </div><div class='ctx'> #define get_dat1(x) \</div><div class='del'>-    struct RComplex *dat;\</div><div class='del'>-    dat = ((struct RComplex *)(x))</div><div class='add'>+    struct RComplex *dat = RCOMPLEX(x)</div><div class='ctx'> </div><div class='ctx'> #define get_dat2(x,y) \</div><div class='del'>-    struct RComplex *adat, *bdat;\</div><div class='del'>-    adat = ((struct RComplex *)(x));\</div><div class='del'>-    bdat = ((struct RComplex *)(y))</div><div class='add'>+    struct RComplex *adat = RCOMPLEX(x), *bdat = RCOMPLEX(y)</div><div class='ctx'> </div><div class='ctx'> inline static VALUE</div><div class='ctx'> nucomp_s_new_internal(VALUE klass, VALUE real, VALUE imag)</div><div class='hunk'>@@ -335,6 +343,8 @@ nucomp_canonicalization(int f)</div><div class='ctx'> {</div><div class='ctx'>     canonicalization = f;</div><div class='ctx'> }</div><div class='add'>+#else</div><div class='add'>+#define canonicalization 0</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='ctx'> inline static void</div><div class='hunk'>@@ -458,7 +468,7 @@ f_complex_new2(VALUE klass, VALUE x, VALUE y)</div><div class='ctx'> static VALUE</div><div class='ctx'> nucomp_f_complex(int argc, VALUE *argv, VALUE klass)</div><div class='ctx'> {</div><div class='del'>-    return rb_funcall2(rb_cComplex, id_convert, argc, argv);</div><div class='add'>+    return rb_funcallv(rb_cComplex, id_convert, argc, argv);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> #define imp1(n) \</div><div class='hunk'>@@ -525,6 +535,21 @@ m_sin(VALUE x)</div><div class='ctx'> #if 0</div><div class='ctx'> imp1(sqrt)</div><div class='ctx'> </div><div class='add'>+VALUE</div><div class='add'>+rb_complex_sqrt(VALUE x)</div><div class='add'>+{</div><div class='add'>+    int pos;</div><div class='add'>+    VALUE a, re, im;</div><div class='add'>+    get_dat1(x);</div><div class='add'>+</div><div class='add'>+    pos = f_positive_p(dat-&gt;imag);</div><div class='add'>+    a = f_abs(x);</div><div class='add'>+    re = m_sqrt_bang(f_div(f_add(a, dat-&gt;real), TWO));</div><div class='add'>+    im = m_sqrt_bang(f_div(f_sub(a, dat-&gt;real), TWO));</div><div class='add'>+    if (!pos) im = f_negate(im);</div><div class='add'>+    return f_complex_new2(rb_cComplex, re, im);</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> static VALUE</div><div class='ctx'> m_sqrt(VALUE x)</div><div class='ctx'> {</div><div class='hunk'>@@ -533,26 +558,48 @@ m_sqrt(VALUE x)</div><div class='ctx'> 	    return m_sqrt_bang(x);</div><div class='ctx'> 	return f_complex_new2(rb_cComplex, ZERO, m_sqrt_bang(f_negate(x)));</div><div class='ctx'>     }</div><div class='del'>-    else {</div><div class='del'>-	get_dat1(x);</div><div class='del'>-</div><div class='del'>-	if (f_negative_p(dat-&gt;imag))</div><div class='del'>-	    return f_conj(m_sqrt(f_conj(x)));</div><div class='del'>-	else {</div><div class='del'>-	    VALUE a = f_abs(x);</div><div class='del'>-	    return f_complex_new2(rb_cComplex,</div><div class='del'>-				  m_sqrt_bang(f_div(f_add(a, dat-&gt;real), TWO)),</div><div class='del'>-				  m_sqrt_bang(f_div(f_sub(a, dat-&gt;real), TWO)));</div><div class='del'>-	}</div><div class='del'>-    }</div><div class='add'>+    return rb_complex_sqrt(x);</div><div class='ctx'> }</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='del'>-inline static VALUE</div><div class='add'>+static VALUE</div><div class='ctx'> f_complex_polar(VALUE klass, VALUE x, VALUE y)</div><div class='ctx'> {</div><div class='ctx'>     assert(!k_complex_p(x));</div><div class='ctx'>     assert(!k_complex_p(y));</div><div class='add'>+    if (f_zero_p(x) || f_zero_p(y)) {</div><div class='add'>+	if (canonicalization) return x;</div><div class='add'>+	return nucomp_s_new_internal(klass, x, RFLOAT_0);</div><div class='add'>+    }</div><div class='add'>+    if (RB_FLOAT_TYPE_P(y)) {</div><div class='add'>+	const double arg = RFLOAT_VALUE(y);</div><div class='add'>+	if (arg == M_PI) {</div><div class='add'>+	    x = f_negate(x);</div><div class='add'>+	    if (canonicalization) return x;</div><div class='add'>+	    y = RFLOAT_0;</div><div class='add'>+	}</div><div class='add'>+	else if (arg == M_PI_2) {</div><div class='add'>+	    y = x;</div><div class='add'>+	    x = RFLOAT_0;</div><div class='add'>+	}</div><div class='add'>+	else if (arg == M_PI_2+M_PI) {</div><div class='add'>+	    y = f_negate(x);</div><div class='add'>+	    x = RFLOAT_0;</div><div class='add'>+	}</div><div class='add'>+	else if (RB_FLOAT_TYPE_P(x)) {</div><div class='add'>+	    const double abs = RFLOAT_VALUE(x);</div><div class='add'>+	    const double real = abs * cos(arg), imag = abs * sin(arg);</div><div class='add'>+	    x = DBL2NUM(real);</div><div class='add'>+	    if (canonicalization &amp;&amp; imag == 0.0) return x;</div><div class='add'>+	    y = DBL2NUM(imag);</div><div class='add'>+	}</div><div class='add'>+	else {</div><div class='add'>+	    y = f_mul(x, DBL2NUM(sin(arg)));</div><div class='add'>+	    x = f_mul(x, DBL2NUM(cos(arg)));</div><div class='add'>+	    if (canonicalization &amp;&amp; f_zero_p(y)) return x;</div><div class='add'>+	}</div><div class='add'>+	return nucomp_s_new_internal(klass, x, y);</div><div class='add'>+    }</div><div class='ctx'>     return nucomp_s_canonicalize_internal(klass,</div><div class='ctx'> 					  f_mul(x, m_cos(y)),</div><div class='ctx'> 					  f_mul(x, m_sin(y)));</div><div class='hunk'>@@ -577,8 +624,8 @@ nucomp_s_polar(int argc, VALUE *argv, VALUE klass)</div><div class='ctx'>     switch (rb_scan_args(argc, argv, "11", &amp;abs, &amp;arg)) {</div><div class='ctx'>       case 1:</div><div class='ctx'> 	nucomp_real_check(abs);</div><div class='del'>-	arg = ZERO;</div><div class='del'>-	break;</div><div class='add'>+	if (canonicalization) return abs;</div><div class='add'>+	return nucomp_s_new_internal(klass, abs, ZERO);</div><div class='ctx'>       default:</div><div class='ctx'> 	nucomp_real_check(abs);</div><div class='ctx'> 	nucomp_real_check(arg);</div><div class='hunk'>@@ -671,11 +718,12 @@ f_addsub(VALUE self, VALUE other,</div><div class='ctx'>  *    Complex(9, 8)  + 4               #=&gt; (13+8i)</div><div class='ctx'>  *    Complex(20, 9) + 9.8             #=&gt; (29.8+9i)</div><div class='ctx'>  */</div><div class='del'>-static VALUE</div><div class='del'>-nucomp_add(VALUE self, VALUE other)</div><div class='add'>+VALUE</div><div class='add'>+rb_complex_plus(VALUE self, VALUE other)</div><div class='ctx'> {</div><div class='ctx'>     return f_addsub(self, other, f_add, '+');</div><div class='ctx'> }</div><div class='add'>+#define nucomp_add rb_complex_plus</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='ctx'>  * call-seq:</div><div class='hunk'>@@ -695,6 +743,19 @@ nucomp_sub(VALUE self, VALUE other)</div><div class='ctx'>     return f_addsub(self, other, f_sub, '-');</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+static VALUE</div><div class='add'>+safe_mul(VALUE a, VALUE b, int az, int bz)</div><div class='add'>+{</div><div class='add'>+    double v;</div><div class='add'>+    if (!az &amp;&amp; bz &amp;&amp; RB_FLOAT_TYPE_P(a) &amp;&amp; (v = RFLOAT_VALUE(a), !isnan(v))) {</div><div class='add'>+	a = signbit(v) ? DBL2NUM(-1.0) : DBL2NUM(1.0);</div><div class='add'>+    }</div><div class='add'>+    if (!bz &amp;&amp; az &amp;&amp; RB_FLOAT_TYPE_P(b) &amp;&amp; (v = RFLOAT_VALUE(b), !isnan(v))) {</div><div class='add'>+	b = signbit(v) ? DBL2NUM(-1.0) : DBL2NUM(1.0);</div><div class='add'>+    }</div><div class='add'>+    return f_mul(a, b);</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> /*</div><div class='ctx'>  * call-seq:</div><div class='ctx'>  *    cmp * numeric  -&gt;  complex</div><div class='hunk'>@@ -707,18 +768,24 @@ nucomp_sub(VALUE self, VALUE other)</div><div class='ctx'>  *    Complex(9, 8)  * 4               #=&gt; (36+32i)</div><div class='ctx'>  *    Complex(20, 9) * 9.8             #=&gt; (196.0+88.2i)</div><div class='ctx'>  */</div><div class='del'>-static VALUE</div><div class='del'>-nucomp_mul(VALUE self, VALUE other)</div><div class='add'>+VALUE</div><div class='add'>+rb_complex_mul(VALUE self, VALUE other)</div><div class='ctx'> {</div><div class='ctx'>     if (k_complex_p(other)) {</div><div class='ctx'> 	VALUE real, imag;</div><div class='add'>+	VALUE areal, aimag, breal, bimag;</div><div class='add'>+	int arzero, aizero, brzero, bizero;</div><div class='ctx'> </div><div class='ctx'> 	get_dat2(self, other);</div><div class='ctx'> </div><div class='del'>-	real = f_sub(f_mul(adat-&gt;real, bdat-&gt;real),</div><div class='del'>-		     f_mul(adat-&gt;imag, bdat-&gt;imag));</div><div class='del'>-	imag = f_add(f_mul(adat-&gt;real, bdat-&gt;imag),</div><div class='del'>-		     f_mul(adat-&gt;imag, bdat-&gt;real));</div><div class='add'>+	arzero = !!f_zero_p(areal = adat-&gt;real);</div><div class='add'>+	aizero = !!f_zero_p(aimag = adat-&gt;imag);</div><div class='add'>+	brzero = !!f_zero_p(breal = bdat-&gt;real);</div><div class='add'>+	bizero = !!f_zero_p(bimag = bdat-&gt;imag);</div><div class='add'>+	real = f_sub(safe_mul(areal, breal, arzero, brzero),</div><div class='add'>+		     safe_mul(aimag, bimag, aizero, bizero));</div><div class='add'>+	imag = f_add(safe_mul(areal, bimag, arzero, bizero),</div><div class='add'>+		     safe_mul(aimag, breal, aizero, brzero));</div><div class='ctx'> </div><div class='ctx'> 	return f_complex_new2(CLASS_OF(self), real, imag);</div><div class='ctx'>     }</div><div class='hunk'>@@ -731,6 +798,7 @@ nucomp_mul(VALUE self, VALUE other)</div><div class='ctx'>     }</div><div class='ctx'>     return rb_num_coerce_bin(self, other, '*');</div><div class='ctx'> }</div><div class='add'>+#define nucomp_mul rb_complex_mul</div><div class='ctx'> </div><div class='ctx'> inline static VALUE</div><div class='ctx'> f_divide(VALUE self, VALUE other,</div><div class='hunk'>@@ -953,8 +1021,8 @@ nucomp_coerce(VALUE self, VALUE other)</div><div class='ctx'>     if (RB_TYPE_P(other, T_COMPLEX))</div><div class='ctx'> 	return rb_assoc_new(other, self);</div><div class='ctx'> </div><div class='del'>-    rb_raise(rb_eTypeError, "%s can't be coerced into %s",</div><div class='del'>-	     rb_obj_classname(other), rb_obj_classname(self));</div><div class='add'>+    rb_raise(rb_eTypeError, "%"PRIsVALUE" can't be coerced into %"PRIsVALUE,</div><div class='add'>+	     rb_obj_class(other), rb_obj_class(self));</div><div class='ctx'>     return Qnil;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -1188,10 +1256,6 @@ nucomp_eql_p(VALUE self, VALUE other)</div><div class='ctx'> inline static VALUE</div><div class='ctx'> f_signbit(VALUE x)</div><div class='ctx'> {</div><div class='del'>-#if defined(HAVE_SIGNBIT) &amp;&amp; defined(__GNUC__) &amp;&amp; defined(__sun) &amp;&amp; \</div><div class='del'>-    !defined(signbit)</div><div class='del'>-    extern int signbit(double);</div><div class='del'>-#endif</div><div class='ctx'>     if (RB_TYPE_P(x, T_FLOAT)) {</div><div class='ctx'> 	double f = RFLOAT_VALUE(x);</div><div class='ctx'> 	return f_boolcast(!isnan(f) &amp;&amp; signbit(f));</div><div class='hunk'>@@ -1267,6 +1331,68 @@ nucomp_inspect(VALUE self)</div><div class='ctx'>     return s;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+/*</div><div class='add'>+ * call-seq:</div><div class='add'>+ *    cmp.finite?  -&gt;  true or false</div><div class='add'>+ *</div><div class='add'>+ * Returns +true+ if +cmp+'s magnitude is finite number,</div><div class='add'>+ * oterwise returns +false+.</div><div class='add'>+ */</div><div class='add'>+static VALUE</div><div class='add'>+rb_complex_finite_p(VALUE self)</div><div class='add'>+{</div><div class='add'>+    VALUE magnitude = nucomp_abs(self);</div><div class='add'>+    double f;</div><div class='add'>+</div><div class='add'>+    switch (TYPE(magnitude)) {</div><div class='add'>+    case T_FIXNUM: case T_BIGNUM: case T_RATIONAL:</div><div class='add'>+	return Qtrue;</div><div class='add'>+</div><div class='add'>+    case T_FLOAT:</div><div class='add'>+	f = RFLOAT_VALUE(magnitude);</div><div class='add'>+	return isinf(f) ? Qfalse : Qtrue;</div><div class='add'>+</div><div class='add'>+    default:</div><div class='add'>+	return rb_funcall(magnitude, rb_intern("finite?"), 0);</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/*</div><div class='add'>+ * call-seq:</div><div class='add'>+ *    cmp.infinite?  -&gt;  nil or 1 or -1</div><div class='add'>+ *</div><div class='add'>+ * Returns values corresponding to the value of +cmp+'s magnitude:</div><div class='add'>+ *</div><div class='add'>+ * +finite+::    +nil+</div><div class='add'>+ * ++Infinity+:: ++1+</div><div class='add'>+ *</div><div class='add'>+ *  For example:</div><div class='add'>+ *</div><div class='add'>+ *     (1+1i).infinite?                   #=&gt; nil</div><div class='add'>+ *     (Float::INFINITY + 1i).infinite?   #=&gt; 1</div><div class='add'>+ */</div><div class='add'>+static VALUE</div><div class='add'>+rb_complex_infinite_p(VALUE self)</div><div class='add'>+{</div><div class='add'>+    VALUE magnitude = nucomp_abs(self);</div><div class='add'>+    double f;</div><div class='add'>+</div><div class='add'>+    switch (TYPE(magnitude)) {</div><div class='add'>+    case T_FIXNUM: case T_BIGNUM: case T_RATIONAL:</div><div class='add'>+	return Qnil;</div><div class='add'>+</div><div class='add'>+    case T_FLOAT:</div><div class='add'>+	f = RFLOAT_VALUE(magnitude);</div><div class='add'>+	if (isinf(f)) {</div><div class='add'>+	    return INT2FIX(f &lt; 0 ? -1 : 1);</div><div class='add'>+	}</div><div class='add'>+	return Qnil;</div><div class='add'>+</div><div class='add'>+    default:</div><div class='add'>+	return rb_funcall(magnitude, rb_intern("infinite?"), 0);</div><div class='add'>+    }</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> /* :nodoc: */</div><div class='ctx'> static VALUE</div><div class='ctx'> nucomp_dumper(VALUE self)</div><div class='hunk'>@@ -1351,10 +1477,16 @@ rb_complex_set_real(VALUE cmp, VALUE r)</div><div class='ctx'> VALUE</div><div class='ctx'> rb_complex_set_imag(VALUE cmp, VALUE i)</div><div class='ctx'> {</div><div class='del'>-    RCOMPLEX_SET_REAL(cmp, i);</div><div class='add'>+    RCOMPLEX_SET_IMAG(cmp, i);</div><div class='ctx'>     return cmp;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+VALUE</div><div class='add'>+rb_complex_abs(VALUE cmp)</div><div class='add'>+{</div><div class='add'>+    return nucomp_abs(cmp);</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> /*</div><div class='ctx'>  * call-seq:</div><div class='ctx'>  *    cmp.to_i  -&gt;  integer</div><div class='hunk'>@@ -1371,7 +1503,7 @@ nucomp_to_i(VALUE self)</div><div class='ctx'> {</div><div class='ctx'>     get_dat1(self);</div><div class='ctx'> </div><div class='del'>-    if (k_inexact_p(dat-&gt;imag) || f_nonzero_p(dat-&gt;imag)) {</div><div class='add'>+    if (!k_exact_zero_p(dat-&gt;imag)) {</div><div class='ctx'> 	rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Integer",</div><div class='ctx'> 		 self);</div><div class='ctx'>     }</div><div class='hunk'>@@ -1394,7 +1526,7 @@ nucomp_to_f(VALUE self)</div><div class='ctx'> {</div><div class='ctx'>     get_dat1(self);</div><div class='ctx'> </div><div class='del'>-    if (k_inexact_p(dat-&gt;imag) || f_nonzero_p(dat-&gt;imag)) {</div><div class='add'>+    if (!k_exact_zero_p(dat-&gt;imag)) {</div><div class='ctx'> 	rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Float",</div><div class='ctx'> 		 self);</div><div class='ctx'>     }</div><div class='hunk'>@@ -1419,7 +1551,7 @@ nucomp_to_r(VALUE self)</div><div class='ctx'> {</div><div class='ctx'>     get_dat1(self);</div><div class='ctx'> </div><div class='del'>-    if (k_inexact_p(dat-&gt;imag) || f_nonzero_p(dat-&gt;imag)) {</div><div class='add'>+    if (!k_exact_zero_p(dat-&gt;imag)) {</div><div class='ctx'> 	rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Rational",</div><div class='ctx'> 		 self);</div><div class='ctx'>     }</div><div class='hunk'>@@ -1446,11 +1578,11 @@ nucomp_rationalize(int argc, VALUE *argv, VALUE self)</div><div class='ctx'> </div><div class='ctx'>     rb_scan_args(argc, argv, "01", NULL);</div><div class='ctx'> </div><div class='del'>-    if (k_inexact_p(dat-&gt;imag) || f_nonzero_p(dat-&gt;imag)) {</div><div class='add'>+    if (!k_exact_zero_p(dat-&gt;imag)) {</div><div class='ctx'>        rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Rational",</div><div class='ctx'>                 self);</div><div class='ctx'>     }</div><div class='del'>-    return rb_funcall2(dat-&gt;real, rb_intern("rationalize"), argc, argv);</div><div class='add'>+    return rb_funcallv(dat-&gt;real, rb_intern("rationalize"), argc, argv);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='hunk'>@@ -2024,9 +2156,10 @@ float_arg(VALUE self)</div><div class='ctx'>  * and i is imaginary unit.  Real a equals complex a+0i</div><div class='ctx'>  * mathematically.</div><div class='ctx'>  *</div><div class='del'>- * In ruby, you can create complex object with Complex, Complex::rect,</div><div class='del'>- * Complex::polar or to_c method.</div><div class='add'>+ * Complex object can be created as literal, and also by using</div><div class='add'>+ * Kernel#Complex, Complex::rect, Complex::polar or to_c method.</div><div class='ctx'>  *</div><div class='add'>+ *    2+1i                 #=&gt; (2+1i)</div><div class='ctx'>  *    Complex(1)           #=&gt; (1+0i)</div><div class='ctx'>  *    Complex(2, 3)        #=&gt; (2+3i)</div><div class='ctx'>  *    Complex.polar(2, 3)  #=&gt; (-1.9799849932008908+0.2822400161197344i)</div><div class='hunk'>@@ -2112,10 +2245,6 @@ Init_Complex(void)</div><div class='ctx'>     rb_undef_method(rb_cComplex, "truncate");</div><div class='ctx'>     rb_undef_method(rb_cComplex, "i");</div><div class='ctx'> </div><div class='del'>-#if 0 /* NUBY */</div><div class='del'>-    rb_undef_method(rb_cComplex, "//");</div><div class='del'>-#endif</div><div class='del'>-</div><div class='ctx'>     rb_define_method(rb_cComplex, "real", nucomp_real, 0);</div><div class='ctx'>     rb_define_method(rb_cComplex, "imaginary", nucomp_imag, 0);</div><div class='ctx'>     rb_define_method(rb_cComplex, "imag", nucomp_imag, 0);</div><div class='hunk'>@@ -2163,6 +2292,12 @@ Init_Complex(void)</div><div class='ctx'>     rb_define_method(rb_cComplex, "to_s", nucomp_to_s, 0);</div><div class='ctx'>     rb_define_method(rb_cComplex, "inspect", nucomp_inspect, 0);</div><div class='ctx'> </div><div class='add'>+    rb_undef_method(rb_cComplex, "positive?");</div><div class='add'>+    rb_undef_method(rb_cComplex, "negative?");</div><div class='add'>+</div><div class='add'>+    rb_define_method(rb_cComplex, "finite?", rb_complex_finite_p, 0);</div><div class='add'>+    rb_define_method(rb_cComplex, "infinite?", rb_complex_infinite_p, 0);</div><div class='add'>+</div><div class='ctx'>     rb_define_private_method(rb_cComplex, "marshal_dump", nucomp_marshal_dump, 0);</div><div class='ctx'>     compat = rb_define_class_under(rb_cComplex, "compatible", rb_cObject); /* :nodoc: */</div><div class='ctx'>     rb_define_private_method(compat, "marshal_load", nucomp_marshal_load, 1);</div><div class='head'>diff --git a/configure.in b/configure.in<br/>index 7330df41ad..da0fc54997 100644<br/>--- a/<a href='/ruby.git/tree/configure.in?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>configure.in</a><br/>+++ b/<a href='/ruby.git/tree/configure.in?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>configure.in</a></div><div class='hunk'>@@ -11,6 +11,10 @@ AC_DEFUN([RUBY_PREREQ_AC],</div><div class='ctx'> </div><div class='ctx'> AC_DISABLE_OPTION_CHECKING</div><div class='ctx'> </div><div class='add'>+AC_ARG_VAR([cflags], [additional CFLAGS])</div><div class='add'>+AC_ARG_VAR([cppflags], [additional CPPFLAGS])</div><div class='add'>+AC_ARG_VAR([cxxflags], [additional CXXFLAGS])</div><div class='add'>+</div><div class='ctx'> AC_DEFUN([RUBY_RM_RECURSIVE], [</div><div class='ctx'> m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [2.70]), [-1], [</div><div class='ctx'> # suppress error messages, rm: cannot remove 'conftest.dSYM', from</div><div class='hunk'>@@ -39,10 +43,10 @@ AC_ARG_WITH(baseruby,</div><div class='ctx'> 		AS_CASE(["$withval"],[*ruby*],[BASERUBY=$withval],[AC_MSG_ERROR(need ruby)])</div><div class='ctx'> 	],</div><div class='ctx'> 	[</div><div class='del'>-		BASERUBY="ruby"</div><div class='add'>+		AC_PATH_PROG([BASERUBY], [ruby], [false])</div><div class='ctx'> 	])</div><div class='del'>-if test "`RUBYOPT=- $BASERUBY -e 'p 42' 2&gt;/dev/null`" = 42; then</div><div class='del'>-    if test "`RUBYOPT=- $BASERUBY --disable=gems -e 'p 42' 2&gt;/dev/null`" = 42; then</div><div class='add'>+if test "`RUBYOPT=- $BASERUBY -e 'print 42' 2&gt;/dev/null`" = 42; then</div><div class='add'>+    if test "`RUBYOPT=- $BASERUBY --disable=gems -e 'print 42' 2&gt;/dev/null`" = 42; then</div><div class='ctx'> 	BASERUBY="$BASERUBY --disable=gems"</div><div class='ctx'>     fi</div><div class='ctx'>     $BASERUBY -C "$srcdir/tool" downloader.rb -e gnu config.guess config.sub</div><div class='hunk'>@@ -220,16 +224,22 @@ fi</div><div class='ctx'> GNU_LD=$rb_cv_prog_gnu_ld</div><div class='ctx'> AC_SUBST(GNU_LD)])</div><div class='ctx'> </div><div class='del'>-eval `sed -n 's/^#define RUBY_API_VERSION_\([A-Z][A-Z_0-9]*\) \([0-9][0-9]*\)/\1=\2/p' $srcdir/include/ruby/version.h`</div><div class='add'>+eval `sed -n ['s/^@%:@define RUBY_API_VERSION_\([A-Z][A-Z_0-9]*\) \([0-9][0-9]*\)/API_\1=\2/p'] $srcdir/include/ruby/version.h`</div><div class='add'>+RUBY_PROGRAM_VERSION=`sed -n 's/^@%:@define RUBY_VERSION "\(.*\)"/\1/p' $srcdir/version.h`</div><div class='add'>+MAJOR=`echo $RUBY_PROGRAM_VERSION | cut -d. -f1`</div><div class='add'>+MINOR=`echo $RUBY_PROGRAM_VERSION | cut -d. -f2`</div><div class='add'>+TEENY=`echo $RUBY_PROGRAM_VERSION | cut -d. -f3`</div><div class='ctx'> for v in MAJOR MINOR TEENY; do</div><div class='ctx'>     if eval "test \"\$$v\" = ''"; then</div><div class='ctx'> 	AC_MSG_ERROR(could not determine $v number from version.h)</div><div class='ctx'>     fi</div><div class='ctx'> done</div><div class='add'>+AS_IF([test "$MAJOR.$MINOR" != "$API_MAJOR.$API_MINOR"], [</div><div class='add'>+    AC_MSG_ERROR([API version $API_MAJOR.$API_MINOR differs from program version $MAJOR.$MINOR])</div><div class='add'>+])</div><div class='ctx'> AC_SUBST(MAJOR)</div><div class='ctx'> AC_SUBST(MINOR)</div><div class='ctx'> AC_SUBST(TEENY)</div><div class='del'>-RUBY_PROGRAM_VERSION=`sed -n 's/^#define RUBY_VERSION "\(.*\)"/\1/p' $srcdir/version.h`</div><div class='ctx'> AC_SUBST(RUBY_PROGRAM_VERSION)</div><div class='ctx'> RUBY_PATCHLEVEL=`sed -n 's/^#define RUBY_PATCHLEVEL //p' $srcdir/version.h`</div><div class='ctx'> AC_DEFINE(CANONICALIZATION_FOR_MATHN)</div><div class='hunk'>@@ -249,16 +259,7 @@ then</div><div class='ctx'>   AC_MSG_ERROR(cached CC is different -- throw away $cache_file</div><div class='ctx'> (it is also a good idea to do 'make clean' before compiling))</div><div class='ctx'> fi</div><div class='del'>-AS_CASE(["$build_os"],</div><div class='del'>-  [darwin1*.*], [</div><div class='del'>-    AS_CASE(["x$CC"],</div><div class='del'>-      [xgcc-4.2|x/usr/bin/gcc-4.2], [: ${CXX=g++-4.2}],</div><div class='del'>-      [xgcc|x/usr/bin/gcc],         [: ${CXX=g++}],</div><div class='del'>-      [xcc|x/usr/bin/cc],           [: ${CXX=c++}],</div><div class='del'>-      [xclang|x/usr/bin/clang],     [: ${CXX=clang++}])</div><div class='del'>-  ])</div><div class='ctx'> test -z "$CC" || ac_cv_prog_CC="$CC"</div><div class='del'>-test -z "$CXX" || ac_cv_prog_CXX="$CXX"</div><div class='ctx'> </div><div class='ctx'> if test "$program_prefix" = NONE; then</div><div class='ctx'>   program_prefix=</div><div class='hunk'>@@ -432,8 +433,8 @@ else</div><div class='ctx'>     rb_cv_target_archs=${target_archs}</div><div class='ctx'> fi</div><div class='ctx'> if test "x${ARCH_FLAG}" != x; then</div><div class='del'>-    CFLAGS="$CFLAGS ${ARCH_FLAG}"</div><div class='del'>-    LDFLAGS="${LDFLAGS+$LDFLAGS }${ARCH_FLAG}"</div><div class='add'>+    CFLAGS="${CFLAGS:+$CFLAGS }${ARCH_FLAG}"</div><div class='add'>+    LDFLAGS="${LDFLAGS:+$LDFLAGS }${ARCH_FLAG}"</div><div class='ctx'> fi</div><div class='ctx'> # RUBY_UNIVERSAL_ARCH end</div><div class='ctx'> ])</div><div class='hunk'>@@ -485,6 +486,19 @@ if test x"${build}" != x"${host}"; then</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='ctx'> AC_PROG_CC</div><div class='add'>+</div><div class='add'>+dnl Select the appropriate C++ compiler in OS X</div><div class='add'>+AS_CASE(["$build_os"],</div><div class='add'>+  [darwin1*.*], [</div><div class='add'>+    AS_CASE(["x$CC"],</div><div class='add'>+      [xgcc-4.2|x/usr/bin/gcc-4.2], [: ${CXX=g++-4.2}],</div><div class='add'>+      [xgcc|x/usr/bin/gcc],         [: ${CXX=g++}],</div><div class='add'>+      [xcc|x/usr/bin/cc],           [: ${CXX=c++}],</div><div class='add'>+      [xicc],                       [: ${CXX=icpc}],</div><div class='add'>+      [xclang|x/usr/bin/clang],     [: ${CXX=clang++}])</div><div class='add'>+  ])</div><div class='add'>+test -z "$CXX" || ac_cv_prog_CXX="$CXX"</div><div class='add'>+</div><div class='ctx'> AC_PROG_CXX</div><div class='ctx'> RUBY_MINGW32</div><div class='ctx'> AC_PROG_GCC_TRADITIONAL</div><div class='hunk'>@@ -510,8 +524,10 @@ RUBY_CPPOUTFILE</div><div class='ctx'> </div><div class='ctx'> : ${OUTFLAG='-o '}</div><div class='ctx'> : ${COUTFLAG=${OUTFLAG}}</div><div class='add'>+: ${CSRCFLAG=''}</div><div class='ctx'> AC_SUBST(OUTFLAG)</div><div class='ctx'> AC_SUBST(COUTFLAG)</div><div class='add'>+AC_SUBST(CSRCFLAG)</div><div class='ctx'> </div><div class='ctx'> cc_version=</div><div class='ctx'> for option in --version -v -V -qversion; do</div><div class='hunk'>@@ -556,6 +572,12 @@ AC_CHECK_TOOL(AR, ar)</div><div class='ctx'> if test -z "$AR"; then</div><div class='ctx'>   AC_CHECK_PROGS(AR, aal, ar)</div><div class='ctx'> fi</div><div class='add'>+AC_CACHE_CHECK([for $AR D option], [rb_cv_ar_D_option], [</div><div class='add'>+    AS_IF([$AR rcD conftest.a &gt; /dev/null 2&gt;&amp;1 &amp;&amp; rm conftest.a],</div><div class='add'>+	[rb_cv_ar_D_option=yes], [rb_cv_ar_D_option=no])</div><div class='add'>+])</div><div class='add'>+AS_IF([test "$rb_cv_ar_D_option" = yes], [ARFLAGS='rcD '], [ARFLAGS='rcu '])</div><div class='add'>+AC_SUBST(ARFLAGS)</div><div class='ctx'> </div><div class='ctx'> AC_CHECK_TOOL(AS, as)</div><div class='ctx'> ASFLAGS=$ASFLAGS</div><div class='hunk'>@@ -617,8 +639,10 @@ AC_DEFUN([RUBY_DTRACE_AVAILABLE],</div><div class='ctx'> [</div><div class='ctx'>     echo "provider conftest{ probe fire(); };" &gt; conftest_provider.d</div><div class='ctx'>     if $DTRACE -h -o conftest_provider.h -s conftest_provider.d &gt;/dev/null 2&gt;/dev/null; then</div><div class='del'>-      # DTrace is available on the system</div><div class='del'>-      rb_cv_dtrace_available=yes</div><div class='add'>+      AC_TRY_COMPILE([@%:@include "conftest_provider.h"], [CONFTEST_FIRE();], [</div><div class='add'>+	# DTrace is available on the system</div><div class='add'>+	rb_cv_dtrace_available=yes</div><div class='add'>+      ], [rb_cv_dtrace_available=no])</div><div class='ctx'>     else</div><div class='ctx'>       # DTrace is not available while dtrace command exists</div><div class='ctx'>       # for example FreeBSD 8 or FreeBSD 9 without DTrace build option</div><div class='hunk'>@@ -631,6 +655,7 @@ AC_DEFUN([RUBY_DTRACE_AVAILABLE],</div><div class='ctx'> AC_DEFUN([RUBY_DTRACE_POSTPROCESS],</div><div class='ctx'> [AC_CACHE_CHECK(whether $DTRACE needs post processing, rb_cv_prog_dtrace_g,</div><div class='ctx'> [</div><div class='add'>+  rb_cv_prog_dtrace_g=no</div><div class='ctx'>   if {</div><div class='ctx'>     cat &gt;conftest_provider.d &lt;&lt;_PROBES &amp;&amp;</div><div class='ctx'>     provider conftest {</div><div class='hunk'>@@ -638,18 +663,20 @@ AC_DEFUN([RUBY_DTRACE_POSTPROCESS],</div><div class='ctx'>     };</div><div class='ctx'> _PROBES</div><div class='ctx'>     $DTRACE -h -o conftest_provider.h -s conftest_provider.d &gt;/dev/null 2&gt;/dev/null &amp;&amp;</div><div class='del'>-    cat &gt;conftest.c &lt;&lt;_CONF &amp;&amp;</div><div class='del'>-    @%:@include "conftest_provider.h"</div><div class='del'>-    int main(void){ CONFTEST_FIRE(); return 0; }</div><div class='del'>-_CONF</div><div class='del'>-    $CC $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c &amp;&amp;</div><div class='del'>-    cp -p conftest.o conftest.oo &amp;&amp;</div><div class='del'>-    $DTRACE -G -s conftest_provider.d conftest.o 2&gt;/dev/null</div><div class='add'>+    :</div><div class='ctx'>   }; then</div><div class='del'>-    rb_cv_prog_dtrace_g=yes</div><div class='del'>-    cmp -b conftest.o conftest.oo || rb_cv_prog_dtrace_g=rebuild</div><div class='del'>-  else</div><div class='del'>-    rb_cv_prog_dtrace_g=no</div><div class='add'>+    AC_TRY_COMPILE([@%:@include "conftest_provider.h"], [CONFTEST_FIRE();], [</div><div class='add'>+	if {</div><div class='add'>+	    cp -p conftest.${ac_objext} conftest.${ac_objext}.save &amp;&amp;</div><div class='add'>+	    $DTRACE -G -s conftest_provider.d conftest.${ac_objext} 2&gt;/dev/null &amp;&amp;</div><div class='add'>+	    :</div><div class='add'>+	}; then</div><div class='add'>+	    if cmp -s conftest.o conftest.${ac_objext}.save; then</div><div class='add'>+		rb_cv_prog_dtrace_g=yes</div><div class='add'>+	    else</div><div class='add'>+		rb_cv_prog_dtrace_g=rebuild</div><div class='add'>+	    fi</div><div class='add'>+	fi])</div><div class='ctx'>   fi</div><div class='ctx'>   rm -f conftest.[co] conftest_provider.[dho]</div><div class='ctx'> ])</div><div class='hunk'>@@ -738,7 +765,7 @@ RUBY_WERROR_FLAG([</div><div class='ctx'> 	cp ../confdefs.h . &amp;&amp;</div><div class='ctx'> 	echo '&lt;?xml?&gt;&lt;plist&gt;&lt;dict&gt;&lt;key&gt;CFBundleIdentifier&lt;/key&gt;&lt;string&gt;&lt;/string&gt;&lt;/dict&gt;&lt;/plist&gt;' &gt; Info.plist &amp;&amp;</div><div class='ctx'> 	:</div><div class='del'>-    } || AC_MSG_ERROR([faild to make temporary directory])</div><div class='add'>+    } || AC_MSG_ERROR([failed to make temporary directory])</div><div class='ctx'>     AC_TRY_LINK([], [],</div><div class='ctx'> 	[AC_MSG_RESULT(yes)],</div><div class='ctx'> 	[</div><div class='hunk'>@@ -793,9 +820,18 @@ if test "$GCC:${warnflags+set}:no" = yes::no; then</div><div class='ctx'>     else</div><div class='ctx'> 	extra_warning=</div><div class='ctx'>     fi</div><div class='add'>+    if test $gcc_major -eq 5; then</div><div class='add'>+	extra_warning="$extra_warning -Wno-maybe-uninitialized"</div><div class='add'>+    fi</div><div class='ctx'>     for wflag in -Wno-unused-parameter -Wno-parentheses -Wno-long-long \</div><div class='add'>+                 -diag-disable=2259 \</div><div class='ctx'> 		 -Wno-missing-field-initializers \</div><div class='add'>+		 -Wno-tautological-compare \</div><div class='add'>+		 -Wno-parentheses-equality \</div><div class='add'>+		 -Wno-constant-logical-operand \</div><div class='add'>+		 -Wno-self-assign \</div><div class='ctx'> 		 -Wunused-variable \</div><div class='add'>+		 -Werror=implicit-int \</div><div class='ctx'> 		 -Werror=pointer-arith \</div><div class='ctx'> 		 -Werror=write-strings \</div><div class='ctx'> 		 -Werror=declaration-after-statement \</div><div class='hunk'>@@ -804,6 +840,8 @@ if test "$GCC:${warnflags+set}:no" = yes::no; then</div><div class='ctx'> 		 -Werror=division-by-zero \</div><div class='ctx'> 		 -Werror=deprecated-declarations \</div><div class='ctx'> 		 -Wno-packed-bitfield-compat \</div><div class='add'>+		 -Wsuggest-attribute=noreturn \</div><div class='add'>+		 -Wsuggest-attribute=format \</div><div class='ctx'> 		 $extra_warning \</div><div class='ctx'> 		 ; do</div><div class='ctx'> 	if test "$particular_werror_flags" != yes; then</div><div class='hunk'>@@ -831,6 +869,20 @@ if test "$GCC:${warnflags+set}:no" = yes::no; then</div><div class='ctx'> fi</div><div class='ctx'> RUBY_TRY_CFLAGS(-Qunused-arguments, [RUBY_APPEND_OPTIONS(rb_cv_wsuppress_flags, -Qunused-arguments)])</div><div class='ctx'> </div><div class='add'>+for n in infinity nan; do</div><div class='add'>+    m=AS_TR_CPP($n)</div><div class='add'>+    AC_CACHE_CHECK([whether $m is available without C99 option], rb_cv_$n,</div><div class='add'>+	[AC_COMPILE_IFELSE(</div><div class='add'>+	    [AC_LANG_BOOL_COMPILE_TRY(AC_INCLUDES_DEFAULT([@%:@include &lt;math.h&gt;</div><div class='add'>+@%:@ifndef $m</div><div class='add'>+@%:@error no $m</div><div class='add'>+@%:@endif</div><div class='add'>+]), [1])], [eval rb_cv_$n=yes], [eval rb_cv_$n=no])])</div><div class='add'>+    if eval test '"$rb_cv_'$n'"' = yes; then</div><div class='add'>+	AC_DEFINE_UNQUOTED([HAVE_]$m)</div><div class='add'>+    fi</div><div class='add'>+done</div><div class='add'>+</div><div class='ctx'> if test "$GCC" = yes; then</div><div class='ctx'>     # NaCl's glibc build generates undefined references to __memset_chk.</div><div class='ctx'>     # TODO(sbc): Remove this once NaCl's glibc is fixed.</div><div class='hunk'>@@ -845,7 +897,7 @@ if test "$GCC" = yes; then</div><div class='ctx'> </div><div class='ctx'>     # -fstack-protector</div><div class='ctx'>     AS_CASE(["$target_os"],</div><div class='del'>-    [mingw*|nacl|haiku], [</div><div class='add'>+    [mingw*|nacl], [</div><div class='ctx'> 	stack_protector=no</div><div class='ctx'>     ])</div><div class='ctx'>     if test -z "${stack_protector+set}"; then</div><div class='hunk'>@@ -870,14 +922,9 @@ if test "$GCC" = yes; then</div><div class='ctx'>     [cygwin*|darwin*|netbsd*|nacl], [</div><div class='ctx'>       # need lgamma_r(), finite()</div><div class='ctx'>     ],</div><div class='del'>-    [haiku], [</div><div class='del'>-      # Haiku R1/alpha3 uses gcc-4.4.4 which can not handle anonymous union</div><div class='del'>-      # with ANSI standard flags. Anonumous union is required to compile</div><div class='del'>-      # socket extension where &lt;net/if.h&gt; uses anonymous union.</div><div class='del'>-    ],</div><div class='ctx'>     [</div><div class='ctx'>       # ANSI (no XCFLAGS because this is C only)</div><div class='del'>-	for ansi_options in -std=iso9899:1999 "-ansi -std=iso9899:199409"; do</div><div class='add'>+	for ansi_options in -std=gnu99; do</div><div class='ctx'> 	    RUBY_TRY_CFLAGS(${ansi_options}, [</div><div class='ctx'> 		RUBY_APPEND_OPTIONS(warnflags, ${ansi_options})</div><div class='ctx'> 		RUBY_APPEND_OPTIONS(strict_warnflags, ${ansi_options})</div><div class='hunk'>@@ -918,12 +965,19 @@ if test "$GCC" = yes; then</div><div class='ctx'> </div><div class='ctx'>     AS_CASE(["$target_os"], [mingw*], [</div><div class='ctx'> 	RUBY_TRY_CFLAGS(-fno-omit-frame-pointer, [optflags="${optflags+$optflags }-fno-omit-frame-pointer"])</div><div class='add'>+	RUBY_TRY_CFLAGS(-static-libgcc, [static_libgcc=yes], [static_libgcc=no])</div><div class='add'>+	if test "$static_libgcc" = yes; then</div><div class='add'>+	    RUBY_APPEND_OPTION(EXTLDFLAGS, -static-libgcc)</div><div class='add'>+	fi</div><div class='ctx'>     ])</div><div class='ctx'> </div><div class='ctx'>     # disable fast-math</div><div class='ctx'>     for oflag in -fno-fast-math; do</div><div class='ctx'> 	RUBY_TRY_CFLAGS($oflag, [RUBY_APPEND_OPTION(optflags, $oflag)])</div><div class='ctx'>     done</div><div class='add'>+    for oflag in -fexcess-precision=standard -fp-model\ precise; do</div><div class='add'>+	RUBY_TRY_CFLAGS($oflag, [RUBY_APPEND_OPTION(XCFLAGS, $oflag)])</div><div class='add'>+    done</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='ctx'> AC_ARG_WITH(opt-dir,</div><div class='hunk'>@@ -1004,6 +1058,13 @@ AS_CASE(["$target_os"],</div><div class='ctx'> 		    AC_DEFINE(BROKEN_SETREUID, 1)</div><div class='ctx'> 		    AC_DEFINE(BROKEN_SETREGID, 1)</div><div class='ctx'> 		fi</div><div class='add'>+		incs=`$CC -v -E -xc - &lt; /dev/null 2&gt;&amp;1 | sed ['1,/^@%:@include &lt;/d;s/^ *//;s|[^./][^/]*/\.\./||g;/\/include$/!d;s||/lib|;/\/usr\/lib/d']`</div><div class='add'>+		for d in `$CC -print-search-dirs | sed -e '/^libraries: */!d;s///' | tr : '\012' | fgrep -v /../ | sed -n 's|^\(/.*/lib\)/$|\1|p'`; do</div><div class='add'>+		    incs=`echo "$incs" | fgrep -v "$d"`</div><div class='add'>+		done</div><div class='add'>+		for d in $incs; do</div><div class='add'>+		    test -d "$d" &amp;&amp; RUBY_APPEND_OPTIONS(LDFLAGS, "-L$d")</div><div class='add'>+		done</div><div class='ctx'> 		ac_cv_type_getgroups=gid_t # getgroups() on Rosetta fills garbage</div><div class='ctx'> 		ac_cv_lib_crypt_crypt=no</div><div class='ctx'> 		ac_cv_func_fdatasync=no # Mac OS X wrongly reports it has fdatasync()</div><div class='hunk'>@@ -1011,38 +1072,51 @@ AS_CASE(["$target_os"],</div><div class='ctx'> 		if test $gcc_major -lt 4 -o \( $gcc_major -eq 4 -a $gcc_minor -lt 3 \); then</div><div class='ctx'> 		    ac_cv_func___builtin_setjmp=no</div><div class='ctx'> 		fi</div><div class='del'>-                AC_CACHE_CHECK(for broken crypt with 8bit chars, rb_cv_broken_crypt,</div><div class='del'>-                    [AC_TRY_RUN([</div><div class='add'>+		AC_CACHE_CHECK(for broken crypt with 8bit chars, rb_cv_broken_crypt,</div><div class='add'>+		    [AC_TRY_RUN([</div><div class='ctx'> #include &lt;stdio.h&gt;</div><div class='ctx'> #include &lt;unistd.h&gt;</div><div class='ctx'> #include &lt;string.h&gt;</div><div class='ctx'> </div><div class='add'>+void</div><div class='add'>+broken_crypt(const char *salt, const char *buf1, const char *buf2)</div><div class='add'>+{</div><div class='add'>+#if 0</div><div class='add'>+    printf("%.2x%.2x: %s -&gt; %s\n", (unsigned char)salt[0], (unsigned char)salt[1],</div><div class='add'>+	   buf1+2, buf2+2);</div><div class='add'>+#endif</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> int</div><div class='ctx'> main()</div><div class='ctx'> {</div><div class='ctx'>     int i;</div><div class='add'>+    char salt[2], buf[256], *s;</div><div class='ctx'>     for (i = 0; i &lt; 128*128; i++) {</div><div class='del'>-	char salt[2], buf[256], *s;</div><div class='ctx'> 	salt[0] = 0x80 | (i &amp; 0x7f);</div><div class='ctx'> 	salt[1] = 0x80 | (i &gt;&gt; 7);</div><div class='ctx'> 	strcpy(buf, crypt("", salt));</div><div class='ctx'> 	if (strcmp(buf, s = crypt("", salt))) {</div><div class='del'>-#if 0</div><div class='del'>-	    printf("%.2x%.2x: %s -&gt; %s\n", (unsigned char)salt[0], (unsigned char)salt[1],</div><div class='del'>-		   buf+2, s+2);</div><div class='del'>-#endif</div><div class='add'>+	    broken_crypt(salt, buf, s);</div><div class='ctx'> 	    return 1;</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='add'>+    salt[0] = salt[1] = ' ';</div><div class='add'>+    strcpy(buf, crypt("", salt));</div><div class='add'>+    salt[0] = salt[1] = 0x80 | ' ';</div><div class='add'>+    if (strcmp(buf, s = crypt("", salt))) {</div><div class='add'>+	broken_crypt(salt, buf, s);</div><div class='add'>+	return 1;</div><div class='add'>+    }</div><div class='ctx'>     return 0;</div><div class='ctx'> }</div><div class='ctx'> ],</div><div class='del'>-	            rb_cv_broken_crypt=no,</div><div class='del'>-	            rb_cv_broken_crypt=yes,</div><div class='del'>-	            rb_cv_broken_crypt=yes)])</div><div class='del'>-                if test "$rb_cv_broken_crypt" = yes; then</div><div class='del'>-                  AC_DEFINE(BROKEN_CRYPT, 1)</div><div class='del'>-                fi</div><div class='add'>+		    rb_cv_broken_crypt=no,</div><div class='add'>+		    rb_cv_broken_crypt=yes,</div><div class='add'>+		    rb_cv_broken_crypt=yes)])</div><div class='add'>+		if test "$rb_cv_broken_crypt" = yes; then</div><div class='add'>+		   AC_DEFINE(BROKEN_CRYPT, 1)</div><div class='add'>+		fi</div><div class='ctx'> 		AC_CHECK_PROGS(codesign, codesign)</div><div class='ctx'> 		if test -n "$codesign"; then</div><div class='ctx'> 		    POSTLINK="test -z '\$(RUBY_CODESIGN)' || $codesign -s '\$(RUBY_CODESIGN)' -f \$@"</div><div class='hunk'>@@ -1055,16 +1129,63 @@ main()</div><div class='ctx'> 		],</div><div class='ctx'> [hpux*], [	LIBS="-lm $LIBS"</div><div class='ctx'> 		ac_cv_c_inline=no],</div><div class='del'>-[beos*|haiku*], [</div><div class='del'>-		ac_cv_func_link=no</div><div class='del'>-		ac_cv_func_sched_yield=no</div><div class='del'>-		ac_cv_func_pthread_attr_setinheritsched=no</div><div class='del'>-		AS_CASE(["$target_os"],</div><div class='del'>-		[beos*], [ ac_cv_header_net_socket_h=yes],</div><div class='del'>-		[haiku*], [ ac_cv_func_shutdown=no])</div><div class='del'>-		LIBS="$LIBS" # m lib is include in root under BeOS/Haiku</div><div class='add'>+[solaris*], [	LIBS="-lm $LIBS"</div><div class='add'>+		ac_cv_func_vfork=no</div><div class='add'>+		AC_MSG_CHECKING(whether _XOPEN_SOURCE is already given)</div><div class='add'>+		AC_TRY_COMPILE([#include &lt;unistd.h&gt;</div><div class='add'>+		    #ifndef _XOPEN_SOURCE</div><div class='add'>+		    #error _XOPEN_SOURCE is not defined</div><div class='add'>+		    #endif</div><div class='add'>+		    ], [],</div><div class='add'>+		    [given_xopen_source=yes], [given_xopen_source=no])</div><div class='add'>+		AC_MSG_RESULT($given_xopen_source)</div><div class='add'>+		if test $given_xopen_source = no; then</div><div class='add'>+		  # On Solaris, with gcc, -std=iso9899:1999 in $ansi_options</div><div class='add'>+		  # is often also needed in CPPFLAGS, because some feature</div><div class='add'>+		  # definitions vary depending on such standards options.</div><div class='add'>+		  AS_CASE(["${ansi_options}"],</div><div class='add'>+		  [*-std=iso9899:1999*], [</div><div class='add'>+		    RUBY_APPEND_OPTIONS(CPPFLAGS, ${ansi_options})</div><div class='add'>+		  ])</div><div class='add'>+		  AC_MSG_CHECKING(appropriate _XOPEN_SOURCE value to define)</div><div class='add'>+		  define_xopen_source=""</div><div class='add'>+		  for tmp_xpg in 7 6 5; do</div><div class='add'>+		    if test x"$define_xopen_source" != x; then</div><div class='add'>+		        break</div><div class='add'>+		    fi</div><div class='add'>+		    # Both AC_TRY_CPP and AC_TRY_COMPILE should pass</div><div class='add'>+		    # because some options may not be set to CPPFLAGS.</div><div class='add'>+		    AC_TRY_CPP([</div><div class='add'>+			#define _XOPEN_SOURCE ${tmp_xpg}00</div><div class='add'>+			#include &lt;unistd.h&gt;</div><div class='add'>+			#ifndef _XPG${tmp_xpg}</div><div class='add'>+			#error _XPG${tmp_xpg} should be defined by _XOPEN_SOURCE=${tmp_xpg}00</div><div class='add'>+			#endif</div><div class='add'>+			], [</div><div class='add'>+			AC_TRY_COMPILE([</div><div class='add'>+			#define _XOPEN_SOURCE ${tmp_xpg}00</div><div class='add'>+			#include &lt;unistd.h&gt;</div><div class='add'>+			#ifndef _XPG${tmp_xpg}</div><div class='add'>+			#error _XPG${tmp_xpg} should be defined by _XOPEN_SOURCE=${tmp_xpg}00</div><div class='add'>+			#endif</div><div class='add'>+			], [],</div><div class='add'>+			[define_xopen_source=${tmp_xpg}00], [])</div><div class='add'>+			], [])</div><div class='add'>+		  done</div><div class='add'>+		  if test x"$define_xopen_source" = x; then</div><div class='add'>+		    define_xopen_source=no</div><div class='add'>+		  fi</div><div class='add'>+		  AC_MSG_RESULT($define_xopen_source)</div><div class='add'>+		  if test x"$define_xopen_source" != xno; then</div><div class='add'>+		    RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE=$define_xopen_source)</div><div class='add'>+		  fi</div><div class='add'>+		fi</div><div class='add'>+		],</div><div class='add'>+[haiku*], [</div><div class='add'>+		LIBS="$LIBS" # m lib is include in root</div><div class='ctx'> 		],</div><div class='ctx'> [cygwin*], [	ac_cv_header_langinfo_h=yes</div><div class='add'>+		RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE -D_GNU_SOURCE)</div><div class='ctx'> 		AC_CHECK_FUNCS(cygwin_conv_path)</div><div class='ctx'> 		AC_LIBOBJ([langinfo])</div><div class='ctx'> 		],</div><div class='hunk'>@@ -1079,6 +1200,7 @@ main()</div><div class='ctx'> 		ac_cv_header_sys_time_h=no</div><div class='ctx'> 		ac_cv_header_sys_times_h=no</div><div class='ctx'> 		ac_cv_header_sys_socket_h=no</div><div class='add'>+		ac_cv_func_lstat=yes</div><div class='ctx'> 		ac_cv_func_times=yes</div><div class='ctx'> 		ac_cv_func_waitpid=yes</div><div class='ctx'> 		ac_cv_func_fsync=yes</div><div class='hunk'>@@ -1087,7 +1209,10 @@ main()</div><div class='ctx'> 		ac_cv_func_isinf=yes</div><div class='ctx'> 		ac_cv_func_isnan=yes</div><div class='ctx'> 		ac_cv_func_finite=yes</div><div class='add'>+		ac_cv_func_lchown=yes</div><div class='ctx'> 		ac_cv_func_link=yes</div><div class='add'>+		ac_cv_func_readlink=yes</div><div class='add'>+		ac_cv_func_symlink=yes</div><div class='ctx'> 		ac_cv_lib_crypt_crypt=no</div><div class='ctx'> 		ac_cv_func_getpgrp_void=no</div><div class='ctx'> 		ac_cv_func_memcmp_working=yes</div><div class='hunk'>@@ -1110,10 +1235,9 @@ main()</div><div class='ctx'> 		    AC_DEFINE(HAVE_TYPE_NET_LUID, 1)</div><div class='ctx'> 		fi</div><div class='ctx'> 		AC_CHECK_FUNCS(_gmtime64_s)</div><div class='add'>+		AC_CHECK_FUNCS(_wfreopen_s)</div><div class='ctx'> 		AC_LIBOBJ([langinfo])</div><div class='ctx'> 		],</div><div class='del'>-[os2-emx*], [	LIBS="-lm $LIBS"</div><div class='del'>-		ac_cv_lib_dir_opendir=no],</div><div class='ctx'> [bsdi*], [	LIBS="-lm $LIBS"</div><div class='ctx'> 		AC_DEFINE(BROKEN_SETREUID, 1)</div><div class='ctx'> 		AC_DEFINE(BROKEN_SETREGID, 1)</div><div class='hunk'>@@ -1131,6 +1255,9 @@ main()</div><div class='ctx'> 		ac_cv_func_isinf=yes</div><div class='ctx'> 		ac_cv_func_isnan=yes</div><div class='ctx'> 		],</div><div class='add'>+[aix*],[	LIBS="-lm $LIBS"</div><div class='add'>+		ac_cv_func_round=no</div><div class='add'>+		],</div><div class='ctx'> [nacl], [</div><div class='ctx'>   LIBS="-lm $LIBS"</div><div class='ctx'>   if test "${nacl_cv_build_variant}" = "newlib"; then</div><div class='hunk'>@@ -1151,47 +1278,46 @@ AC_HEADER_DIRENT</div><div class='ctx'> dnl AC_HEADER_STDC has been checked in AC_USE_SYSTEM_EXTENSIONS</div><div class='ctx'> AC_HEADER_STDBOOL</div><div class='ctx'> AC_HEADER_SYS_WAIT</div><div class='del'>-AC_CHECK_HEADERS( \</div><div class='del'>-  limits.h \</div><div class='del'>-  sys/file.h \</div><div class='del'>-  sys/ioctl.h \</div><div class='del'>-  sys/syscall.h \</div><div class='del'>-  fcntl.h \</div><div class='del'>-  sys/fcntl.h \</div><div class='del'>-  sys/param.h \</div><div class='del'>-  sys/select.h \</div><div class='del'>-  sys/time.h \</div><div class='del'>-  sys/times.h \</div><div class='del'>-  syscall.h \</div><div class='del'>-  pwd.h \</div><div class='del'>-  grp.h \</div><div class='del'>-  a.out.h \</div><div class='del'>-  utime.h \</div><div class='del'>-  direct.h \</div><div class='del'>-  sys/resource.h \</div><div class='del'>-  sys/mkdev.h \</div><div class='del'>-  sys/utime.h \</div><div class='del'>-  float.h \</div><div class='del'>-  ieeefp.h \</div><div class='del'>-  ucontext.h \</div><div class='del'>-  intrinsics.h \</div><div class='del'>-  langinfo.h \</div><div class='del'>-  locale.h \</div><div class='del'>-  sys/sendfile.h \</div><div class='del'>-  time.h \</div><div class='del'>-  net/socket.h \</div><div class='del'>-  sys/socket.h \</div><div class='del'>-  process.h \</div><div class='del'>-  sys/prctl.h \</div><div class='del'>-  sys/uio.h \</div><div class='del'>-  atomic.h \</div><div class='del'>-  malloc.h \</div><div class='del'>-  malloc_np.h \</div><div class='del'>-  malloc/malloc.h \</div><div class='del'>-  setjmpex.h \</div><div class='del'>-  sys/attr.h \</div><div class='del'>-  sys/id.h</div><div class='del'>-)</div><div class='add'>+</div><div class='add'>+AC_CHECK_HEADERS(a.out.h)</div><div class='add'>+AC_CHECK_HEADERS(atomic.h)</div><div class='add'>+AC_CHECK_HEADERS(direct.h)</div><div class='add'>+AC_CHECK_HEADERS(grp.h)</div><div class='add'>+AC_CHECK_HEADERS(fcntl.h)</div><div class='add'>+AC_CHECK_HEADERS(float.h)</div><div class='add'>+AC_CHECK_HEADERS(ieeefp.h)</div><div class='add'>+AC_CHECK_HEADERS(intrinsics.h)</div><div class='add'>+AC_CHECK_HEADERS(langinfo.h)</div><div class='add'>+AC_CHECK_HEADERS(limits.h)</div><div class='add'>+AC_CHECK_HEADERS(locale.h)</div><div class='add'>+AC_CHECK_HEADERS(malloc.h)</div><div class='add'>+AC_CHECK_HEADERS(malloc/malloc.h)</div><div class='add'>+AC_CHECK_HEADERS(malloc_np.h)</div><div class='add'>+AC_CHECK_HEADERS(net/socket.h)</div><div class='add'>+AC_CHECK_HEADERS(process.h)</div><div class='add'>+AC_CHECK_HEADERS(pwd.h)</div><div class='add'>+AC_CHECK_HEADERS(setjmpex.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/attr.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/fcntl.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/file.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/id.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/ioctl.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/mkdev.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/param.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/prctl.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/resource.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/select.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/sendfile.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/socket.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/syscall.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/time.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/times.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/uio.h)</div><div class='add'>+AC_CHECK_HEADERS(sys/utime.h)</div><div class='add'>+AC_CHECK_HEADERS(syscall.h)</div><div class='add'>+AC_CHECK_HEADERS(time.h)</div><div class='add'>+AC_CHECK_HEADERS(ucontext.h)</div><div class='add'>+AC_CHECK_HEADERS(utime.h)</div><div class='ctx'> </div><div class='ctx'> AC_ARG_WITH([gmp],</div><div class='ctx'>   [AS_HELP_STRING([--without-gmp],</div><div class='hunk'>@@ -1241,6 +1367,24 @@ dnl check for large file stuff</div><div class='ctx'> mv confdefs.h confdefs1.h</div><div class='ctx'> : &gt; confdefs.h</div><div class='ctx'> AC_SYS_LARGEFILE</div><div class='add'>+# On 32-bit Solaris, it is safe to define _LARGEFILE_SOURCE</div><div class='add'>+# which is not added by AC_SYS_LARGEFILE.</div><div class='add'>+if test x"$enable_largefile" != xno; then</div><div class='add'>+  AS_CASE(["$target_os"], [solaris*], [</div><div class='add'>+    AC_MSG_CHECKING([wheather _LARGEFILE_SOURCE should be defined])</div><div class='add'>+    AS_CASE(["${ac_cv_sys_file_offset_bits}:${ac_cv_sys_large_files}"],</div><div class='add'>+      ["64:"|"64:no"|"64:unknown"], [</div><div class='add'>+	# insert _LARGEFILE_SOURCE before _FILE_OFFSET_BITS line</div><div class='add'>+	# that is the same order as "getconf LFS_CFLAGS" output</div><div class='add'>+	mv confdefs.h largefile0.h</div><div class='add'>+	: &gt; confdefs.h</div><div class='add'>+	AC_DEFINE(_LARGEFILE_SOURCE)</div><div class='add'>+	cat largefile0.h &gt;&gt; confdefs.h</div><div class='add'>+	rm largefile0.h</div><div class='add'>+	AC_MSG_RESULT([yes])</div><div class='add'>+      ], [AC_MSG_RESULT([no])])</div><div class='add'>+  ])</div><div class='add'>+fi</div><div class='ctx'> mv confdefs.h largefile.h</div><div class='ctx'> mv confdefs1.h confdefs.h</div><div class='ctx'> cat largefile.h &gt;&gt; confdefs.h</div><div class='hunk'>@@ -1278,6 +1422,12 @@ AC_CACHE_CHECK([char bit], [rb_cv_char_bit],</div><div class='ctx'> </div><div class='ctx'> dnl RUBY_CHECK_SIZEOF [typename], [maybe same size types], [macros], [include]</div><div class='ctx'> AC_DEFUN([RUBY_CHECK_SIZEOF],</div><div class='add'>+[dnl</div><div class='add'>+AS_VAR_PUSHDEF([rbcv_var], [rbcv_sizeof_var])dnl</div><div class='add'>+AS_VAR_PUSHDEF([cond], [rbcv_sizeof_cond])dnl</div><div class='add'>+AS_VAR_PUSHDEF([t], [rbcv_sizeof_type])dnl</div><div class='add'>+AS_VAR_PUSHDEF([s], [rbcv_sizeof_size])dnl</div><div class='add'>+]</div><div class='ctx'> [m4_bmatch([$1], [\.], [], [if test "$universal_binary" = yes; then])</div><div class='ctx'> AC_CACHE_CHECK([size of $1], [AS_TR_SH([ac_cv_sizeof_$1])], [</div><div class='ctx'>     unset AS_TR_SH(ac_cv_sizeof_$1)</div><div class='hunk'>@@ -1295,7 +1445,12 @@ static ac__type_sizeof_ *rbcv_ptr;</div><div class='ctx'> 		AS_TR_SH(ac_cv_sizeof_$1)=AS_TR_CPP([SIZEOF_]$t)</div><div class='ctx'> 		break])</div><div class='ctx'>     done</div><div class='del'>-    }])</div><div class='add'>+    }], [</div><div class='add'>+	AC_COMPUTE_INT([AS_TR_SH(ac_cv_sizeof_$1)], [AS_TR_CPP(SIZEOF_$1)],</div><div class='add'>+	    [AC_INCLUDES_DEFAULT([$4])</div><div class='add'>+$rbcv_var],</div><div class='add'>+	    [AS_TR_SH(ac_cv_sizeof_$1)=])</div><div class='add'>+    ])</div><div class='ctx'>     unset cond</div><div class='ctx'>     m4_ifval([$3], [test -z "${AS_TR_SH(ac_cv_sizeof_$1)+set}" &amp;&amp; {</div><div class='ctx'>     for s in 32 64 128; do</div><div class='hunk'>@@ -1311,11 +1466,22 @@ static ac__type_sizeof_ *rbcv_ptr;</div><div class='ctx'> 	    AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([$hdr], [!AS_TR_CPP(HAVE_$1)])], [continue])</div><div class='ctx'> 	    AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([$hdr]</div><div class='ctx'> 				[$rbcv_var],</div><div class='del'>-				[AS_TR_CPP(HAVE_$1) == (AS_TR_CPP(SIZEOF_$1) == ([$[s / rb_cv_char_bit]]))])],</div><div class='del'>-		[AS_TR_SH(ac_cv_sizeof_$1)="${AS_TR_SH(ac_cv_sizeof_$1)+${AS_TR_SH(ac_cv_sizeof_$1)-} }${t}${s}"])</div><div class='add'>+				[AS_TR_CPP(HAVE_$1) == (AS_TR_CPP(SIZEOF_$1) == ($s / $rb_cv_char_bit))])],</div><div class='add'>+		[AS_TR_SH(ac_cv_sizeof_$1)="${AS_TR_SH(ac_cv_sizeof_$1)+${AS_TR_SH(ac_cv_sizeof_$1)-} }${t}${s}"; continue])</div><div class='add'>+	    AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([$hdr]</div><div class='add'>+[</div><div class='add'>+@%:@if AS_TR_CPP(HAVE_$1)</div><div class='add'>+$rbcv_var</div><div class='add'>+@%:@else</div><div class='add'>+@%:@define AS_TR_CPP(SIZEOF_$1) 0</div><div class='add'>+@%:@endif</div><div class='add'>+],</div><div class='add'>+		    [AS_TR_CPP(HAVE_$1) == (AS_TR_CPP(SIZEOF_$1) == (m4_bmatch([$2], [^[0-9][0-9]*$], [$2], [($s / $rb_cv_char_bit)])))])],</div><div class='add'>+		[AS_TR_SH(ac_cv_sizeof_$1)="${AS_TR_SH(ac_cv_sizeof_$1)+${AS_TR_SH(ac_cv_sizeof_$1)-} }${t}${s}m4_bmatch([$2], [^[0-9][0-9]*$], [:$2])"])</div><div class='ctx'> 	done</div><div class='ctx'>     done</div><div class='ctx'>     }])</div><div class='add'>+    test "${AS_TR_SH(ac_cv_sizeof_$1)@%:@@&lt;:@1-9@:&gt;@}" = "${AS_TR_SH(ac_cv_sizeof_$1)}" &amp;&amp;</div><div class='ctx'>     m4_ifval([$2][$3],</div><div class='ctx'> 	[test "${AS_TR_SH(ac_cv_sizeof_$1)@%:@SIZEOF_}" = "${AS_TR_SH(ac_cv_sizeof_$1)}" &amp;&amp; ]){</div><div class='ctx'>     test "$universal_binary" = yes &amp;&amp; cross_compiling=yes</div><div class='hunk'>@@ -1340,13 +1506,14 @@ ${cond+@%:@endif}</div><div class='ctx'> 	AS_CASE(["$t"],</div><div class='ctx'> 	[[[0-9]*|SIZEOF_*]], [</div><div class='ctx'> 	    ${cond+echo "@%:@else"}</div><div class='del'>-	    echo "[@%:@define ]AS_TR_CPP(SIZEOF_$1) [$t]"</div><div class='add'>+	    echo "[@%:@define ]AS_TR_CPP(SIZEOF_$1) $t"</div><div class='ctx'> 	    break</div><div class='ctx'> 	    ],</div><div class='ctx'> 	[</div><div class='ctx'> 	    s=`expr $t : ['.*[^0-9]\([0-9][0-9]*\)$']`</div><div class='add'>+	    AS_CASE([$t], [*:*], [t="${t%:*}"], [s=`expr $s / $rb_cv_char_bit`])</div><div class='ctx'> 	    echo "@%:@${cond+el}if defined(__${t}__) || defined(__${t}) || defined(_${t}) || defined($t)"</div><div class='del'>-	    echo "@%:@define AS_TR_CPP(SIZEOF_$1) [$[s / rb_cv_char_bit]]"</div><div class='add'>+	    echo "@%:@define AS_TR_CPP(SIZEOF_$1) $s"</div><div class='ctx'> 	    cond=1</div><div class='ctx'> 	    ])</div><div class='ctx'>     done</div><div class='hunk'>@@ -1355,14 +1522,18 @@ ${cond+@%:@endif}</div><div class='ctx'> m4_bmatch([$1], [\.], [], [else</div><div class='ctx'> AC_CHECK_SIZEOF([$1], 0, [$4])</div><div class='ctx'> fi])</div><div class='add'>+AS_VAR_POPDEF([rbcv_var])dnl</div><div class='add'>+AS_VAR_POPDEF([cond])dnl</div><div class='add'>+AS_VAR_POPDEF([t])dnl</div><div class='add'>+AS_VAR_POPDEF([s])dnl</div><div class='ctx'> ])</div><div class='ctx'> </div><div class='ctx'> RUBY_CHECK_SIZEOF(int, [], [ILP])</div><div class='ctx'> RUBY_CHECK_SIZEOF(short)</div><div class='ctx'> RUBY_CHECK_SIZEOF(long, [int], [ILP LP])</div><div class='ctx'> RUBY_CHECK_SIZEOF(long long)</div><div class='del'>-RUBY_CHECK_SIZEOF(__int64)</div><div class='del'>-RUBY_CHECK_SIZEOF(__int128)</div><div class='add'>+RUBY_CHECK_SIZEOF(__int64, [8], [ILP LP])</div><div class='add'>+RUBY_CHECK_SIZEOF(__int128, [16], [ILP LP])</div><div class='ctx'> RUBY_CHECK_SIZEOF(off_t)</div><div class='ctx'> RUBY_CHECK_SIZEOF(void*, [int long "long long"], [ILP LP LLP])</div><div class='ctx'> RUBY_CHECK_SIZEOF(float)</div><div class='hunk'>@@ -1419,7 +1590,7 @@ elif test "x$ac_cv_type___int64" = xyes; then</div><div class='ctx'>     RUBY_CHECK_PRINTF_PREFIX(__int64, ll I64, LL)</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='del'>-dnl RUBY_CHECK_SIZEOF [typename] [if-signed] [if-unsigned] [included]</div><div class='add'>+dnl RUBY_CHECK_SIGNEDNESS [typename] [if-signed] [if-unsigned] [included]</div><div class='ctx'> AC_DEFUN([RUBY_CHECK_SIGNEDNESS], [dnl</div><div class='ctx'>     AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([$4])], [($1)-1 &gt; 0])],</div><div class='ctx'> 		      [$3], [$2])])</div><div class='hunk'>@@ -1460,7 +1631,16 @@ AC_DEFUN([RUBY_REPLACE_TYPE], [dnl</div><div class='ctx'> 	  [</div><div class='ctx'> 	    t=INT])</div><div class='ctx'> 	rb_cv_[$1]_convertible=${u}${t}])</div><div class='del'>-    test "${AS_TR_SH(ac_cv_type_[$1])}" = "yes" &amp;&amp; n="$1"</div><div class='add'>+    if test "${AS_TR_SH(ac_cv_type_[$1])}" = "yes"; then</div><div class='add'>+	n="$1"</div><div class='add'>+    else</div><div class='add'>+	AS_CASE(["${rb_cv_[$1]_convertible}"],</div><div class='add'>+		[*LL], [n="long long"],</div><div class='add'>+		[*LONG], [n="long"],</div><div class='add'>+		[n="int"])</div><div class='add'>+	AS_CASE(["${rb_cv_[$1]_convertible}"],</div><div class='add'>+		[U*], [n="unsigned $n"])</div><div class='add'>+    fi</div><div class='ctx'>     AS_CASE("${rb_cv_[$1]_convertible}", [U*], [u=+1], [u=-1])</div><div class='ctx'>     AC_DEFINE_UNQUOTED(rb_[$1], $n)</div><div class='ctx'>     AC_DEFINE_UNQUOTED([SIGNEDNESS_OF_]AS_TR_CPP($1), $u)</div><div class='hunk'>@@ -1582,19 +1762,20 @@ EOH</div><div class='ctx'> ])dnl</div><div class='ctx'> ])dnl</div><div class='ctx'> </div><div class='del'>-dnl RUBY_FUNC_ATTRIBUTE(attrib, macroname, cachevar, condition)</div><div class='del'>-AC_DEFUN([RUBY_FUNC_ATTRIBUTE], [dnl</div><div class='add'>+dnl RUBY_DECL_ATTRIBUTE(attrib, macroname, cachevar, condition, type, code)</div><div class='add'>+AC_DEFUN([RUBY_DECL_ATTRIBUTE], [dnl</div><div class='ctx'> m4_ifval([$2], dnl</div><div class='del'>-  [AS_VAR_PUSHDEF([attrib],[$2])], dnl</div><div class='del'>-  [AS_VAR_PUSHDEF([attrib],[FUNC_]AS_TR_CPP($1))] dnl</div><div class='add'>+  [AS_VAR_PUSHDEF([attrib], m4_bpatsubst([$2], [(.*)], []))], dnl</div><div class='add'>+  [AS_VAR_PUSHDEF([attrib], m4_toupper(m4_format(%.4s, [$5]))[_]AS_TR_CPP($1))] dnl</div><div class='ctx'> )dnl</div><div class='ctx'> m4_ifval([$3], dnl</div><div class='ctx'>   [AS_VAR_PUSHDEF([rbcv],[$3])], dnl</div><div class='del'>-  [AS_VAR_PUSHDEF([rbcv],[rb_cv_func_][$1])]dnl</div><div class='add'>+  [AS_VAR_PUSHDEF([rbcv],[rb_cv_]m4_format(%.4s, [$5])[_][$1])]dnl</div><div class='ctx'> )dnl</div><div class='del'>-m4_pushdef([attrib_code],[m4_bpatsubst([$1],["],[\\"])])</div><div class='add'>+m4_pushdef([attrib_code],[m4_bpatsubst([$1],["],[\\"])])dnl</div><div class='add'>+m4_pushdef([attrib_params],[m4_bpatsubst([$2(x)],[^[^()]*(\([^()]*\)).*],[\1])])dnl</div><div class='ctx'> m4_ifval([$4], [rbcv_cond=["$4"]; test "$rbcv_cond" || unset rbcv_cond])</div><div class='del'>-AC_CACHE_CHECK(for m4_ifval([$2],[$2],[$1]) function attribute, rbcv,</div><div class='add'>+AC_CACHE_CHECK(for m4_ifval([$2],[m4_bpatsubst([$2], [(.*)], [])],[$1]) [$5] attribute, rbcv, dnl</div><div class='ctx'> [rbcv=x</div><div class='ctx'> RUBY_WERROR_FLAG([</div><div class='ctx'> for mac in \</div><div class='hunk'>@@ -1605,31 +1786,62 @@ for mac in \</div><div class='ctx'>   m4_ifval([$4],mac="$mac"${rbcv_cond+" /* only if $rbcv_cond */"})</div><div class='ctx'>   AC_TRY_COMPILE(</div><div class='ctx'>     m4_ifval([$4],${rbcv_cond+[@%:@if ]$rbcv_cond})</div><div class='del'>-[@%:@define ]attrib[(x) $mac]</div><div class='add'>+[@%:@define ]attrib[](attrib_params)[ $mac]</div><div class='ctx'> m4_ifval([$4],${rbcv_cond+[@%:@else]}</div><div class='del'>-${rbcv_cond+[@%:@define ]attrib[(x) x]}</div><div class='add'>+${rbcv_cond+[@%:@define ]attrib[](attrib_params)[ x]}</div><div class='ctx'> ${rbcv_cond+[@%:@endif]})</div><div class='del'>-    attrib[(void conftest_attribute_check(void));], [],</div><div class='add'>+$6</div><div class='add'>+@%:@define mesg ("")</div><div class='add'>+    attrib[](attrib_params)[;], [],</div><div class='ctx'>     [rbcv="$mac"; break])</div><div class='ctx'> done</div><div class='ctx'> ])])</div><div class='ctx'> if test "$rbcv" != x; then</div><div class='del'>-    RUBY_DEFINE_IF(m4_ifval([$4],[${rbcv_cond}]), attrib[(x)], $rbcv)</div><div class='add'>+    RUBY_DEFINE_IF(m4_ifval([$4],[${rbcv_cond}]), attrib[](attrib_params)[], $rbcv)</div><div class='ctx'> fi</div><div class='ctx'> m4_ifval([$4], [unset rbcv_cond]) dnl</div><div class='add'>+m4_popdef([attrib_params])dnl</div><div class='add'>+m4_popdef([attrib_code])dnl</div><div class='ctx'> AS_VAR_POPDEF([attrib])dnl</div><div class='ctx'> AS_VAR_POPDEF([rbcv])dnl</div><div class='ctx'> ])</div><div class='ctx'> </div><div class='del'>-RUBY_FUNC_ATTRIBUTE(noreturn, NORETURN)</div><div class='del'>-RUBY_FUNC_ATTRIBUTE(deprecated, DEPRECATED)</div><div class='del'>-RUBY_FUNC_ATTRIBUTE(noinline, NOINLINE)</div><div class='add'>+dnl RUBY_FUNC_ATTRIBUTE(attrib, macroname, cachevar, condition)</div><div class='add'>+AC_DEFUN([RUBY_FUNC_ATTRIBUTE], [dnl</div><div class='add'>+    RUBY_DECL_ATTRIBUTE([$1], [$2], [$3], [$4],</div><div class='add'>+	[function], [@%:@define x void conftest_attribute_check(void)]</div><div class='add'>+    )</div><div class='add'>+])</div><div class='add'>+</div><div class='add'>+dnl RUBY_TYPE_ATTRIBUTE(attrib, macroname, cachevar, condition)</div><div class='add'>+AC_DEFUN([RUBY_TYPE_ATTRIBUTE], [dnl</div><div class='add'>+    RUBY_DECL_ATTRIBUTE([$1], [$2], [$3], [$4],</div><div class='add'>+	[type], [</div><div class='add'>+@%:@define x struct conftest_attribute_check {int i;}</div><div class='add'>+])</div><div class='add'>+])</div><div class='add'>+</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__const__, CONSTFUNC)</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__pure__, PUREFUNC)</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__noreturn__, NORETURN)</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__deprecated__, DEPRECATED)</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__deprecated__("by "@%:@n), DEPRECATED_BY(n,x), rb_cv_func_deprecated_by)</div><div class='add'>+RUBY_TYPE_ATTRIBUTE(__deprecated__ mesg, DEPRECATED_TYPE(mesg,x), rb_cv_type_deprecated)</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__noinline__, NOINLINE)</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__always_inline__, ALWAYS_INLINE)</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__error__ mesg, ERRORFUNC(mesg,x), rb_cv_func___error__)</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__warning__ mesg, WARNINGFUNC(mesg,x), rb_cv_func___warning__)</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__weak__, WEAK, rb_cv_func_weak)</div><div class='add'>+if test "$rb_cv_func_weak" != x; then</div><div class='add'>+   AC_DEFINE(HAVE_FUNC_WEAK)</div><div class='add'>+fi</div><div class='ctx'> </div><div class='ctx'> if_i386=${universal_binary+[defined __i386__]}</div><div class='del'>-RUBY_FUNC_ATTRIBUTE(stdcall,  [], [], ${if_i386})</div><div class='del'>-RUBY_FUNC_ATTRIBUTE(cdecl,    [], [], ${if_i386})</div><div class='del'>-RUBY_FUNC_ATTRIBUTE(fastcall, [], [], ${if_i386})</div><div class='del'>-RUBY_FUNC_ATTRIBUTE(optimize("-Os","-fomit-frame-pointer"), FUNC_MINIMIZED, rb_cv_func_minimized)</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__stdcall__,  FUNC_STDCALL,  rb_cv_func_stdcall,  ${if_i386})</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__cdecl__,    FUNC_CDECL,    rb_cv_func_cdecl,    ${if_i386})</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__fastcall__, FUNC_FASTCALL, rb_cv_func_fastcall, ${if_i386})</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__optimize__("O0"), FUNC_UNOPTIMIZED, rb_cv_func_unoptimized)</div><div class='add'>+RUBY_FUNC_ATTRIBUTE(__optimize__("-Os","-fomit-frame-pointer"), FUNC_MINIMIZED, rb_cv_func_minimized)</div><div class='ctx'> </div><div class='ctx'> if test "$GCC" = yes; then</div><div class='ctx'>     AC_CACHE_CHECK([for function alias], [rb_cv_gcc_function_alias],</div><div class='hunk'>@@ -1694,7 +1906,7 @@ fi</div><div class='ctx'> AC_CACHE_CHECK(for exported function attribute, rb_cv_func_exported, [</div><div class='ctx'> rb_cv_func_exported=no</div><div class='ctx'> RUBY_WERROR_FLAG([</div><div class='del'>-for mac in '__attribute__ ((visibility("default")))' '__declspec(dllexport)'; do</div><div class='add'>+for mac in '__attribute__ ((__visibility__("default")))' '__declspec(dllexport)'; do</div><div class='ctx'>   AC_TRY_COMPILE([@%:@define RUBY_FUNC_EXPORTED $mac extern</div><div class='ctx'>     RUBY_FUNC_EXPORTED void conftest_attribute_check(void);], [],</div><div class='ctx'>     [rb_cv_func_exported="$mac"; break])</div><div class='hunk'>@@ -1722,6 +1934,32 @@ if test "$rb_cv_function_name_string" != no; then</div><div class='ctx'>     AC_DEFINE_UNQUOTED(RUBY_FUNCTION_NAME_STRING, [$rb_cv_function_name_string])</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='add'>+AC_CACHE_CHECK(if enum over int is allowed, rb_cv_enum_over_int, [</div><div class='add'>+    rb_cv_enum_over_int=no</div><div class='add'>+    if test "x$ac_cv_type_long_long" = xyes; then</div><div class='add'>+	type="unsigned long long" max="ULLONG_MAX"</div><div class='add'>+    else</div><div class='add'>+	type="unsigned long" max="ULONG_MAX"</div><div class='add'>+    fi</div><div class='add'>+    RUBY_WERROR_FLAG([</div><div class='add'>+        AC_COMPILE_IFELSE([</div><div class='add'>+            AC_LANG_BOOL_COMPILE_TRY([</div><div class='add'>+                    @%:@include &lt;limits.h&gt;</div><div class='add'>+                    enum {conftest_max = $max};</div><div class='add'>+                ], [</div><div class='add'>+                    (conftest_max == $max) &amp;&amp;</div><div class='add'>+                    (sizeof(conftest_max) == sizeof($type))</div><div class='add'>+                ]</div><div class='add'>+	    )],</div><div class='add'>+	    [rb_cv_enum_over_int=yes],</div><div class='add'>+	    [rb_cv_enum_over_int=no]</div><div class='add'>+	)</div><div class='add'>+    ])</div><div class='add'>+])</div><div class='add'>+if test $rb_cv_enum_over_int = yes; then</div><div class='add'>+    AC_DEFINE(ENUM_OVER_INT, 1)</div><div class='add'>+fi</div><div class='add'>+</div><div class='ctx'> dnl Check whether we need to define sys_nerr locally</div><div class='ctx'> AC_CHECK_DECLS([sys_nerr], [], [], [$ac_includes_default</div><div class='ctx'> @%:@include &lt;errno.h&gt;])</div><div class='hunk'>@@ -1823,8 +2061,10 @@ if test "$rb_cv_large_fd_select" = yes; then</div><div class='ctx'>     AC_DEFINE(HAVE_RB_FD_INIT, 1)</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='del'>-dnl RUBY_DEFINT TYPENAME, SIZE, [SIGNED-OR-UNSIGNED], [INCLUDES = DEFAULT-INCLUDES]</div><div class='add'>+dnl RUBY_DEFINT TYPENAME, SIZE, [UNSIGNED], [INCLUDES = DEFAULT-INCLUDES]</div><div class='ctx'> AC_DEFUN([RUBY_DEFINT], [dnl</div><div class='add'>+AS_VAR_PUSHDEF([cond], [rb_defint_cond])dnl</div><div class='add'>+AS_VAR_PUSHDEF([type], [rb_defint_type])dnl</div><div class='ctx'> AC_CACHE_CHECK([for $1], [rb_cv_type_$1],</div><div class='ctx'> [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$4])</div><div class='ctx'> typedef $1 t; int s = sizeof(t) == 42;])],</div><div class='hunk'>@@ -1835,19 +2075,30 @@ typedef $1 t; int s = sizeof(t) == 42;])],</div><div class='ctx'>     ["$ac_cv_sizeof_int"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])int"],</div><div class='ctx'>     ["$ac_cv_sizeof_long"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])long"],</div><div class='ctx'>     ["$ac_cv_sizeof_long_long"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])long long"],</div><div class='del'>-    ["$ac_cv_sizeof___int64"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])__int64"],</div><div class='del'>-    ["$ac_cv_sizeof___int128"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])__int128"],</div><div class='add'>+    ["${ac_cv_sizeof___int64@%:@*:}"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])__int64"],</div><div class='add'>+    ["${ac_cv_sizeof___int128@%:@*:}"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])__int128"],</div><div class='ctx'>     [ rb_cv_type_$1=no])])])</div><div class='ctx'> if test "${rb_cv_type_$1}" != no; then</div><div class='add'>+    type="${rb_cv_type_$1@%:@@%:@unsigned }"</div><div class='add'>+    AS_IF([test "$type" != yes &amp;&amp; eval 'test -n "${ac_cv_sizeof_'$type'+set}"'], [</div><div class='add'>+	eval cond='"${ac_cv_sizeof_'$type'}"'</div><div class='add'>+	AS_CASE([$cond], [*:*], [</div><div class='add'>+	    cond=AS_TR_CPP($type)</div><div class='add'>+	    echo "@%:@if defined SIZEOF_"$cond" &amp;&amp; SIZEOF_"$cond" &gt; 0" &gt;&gt; confdefs.h</div><div class='add'>+	], [cond=])</div><div class='add'>+    ], [cond=])</div><div class='ctx'>     AC_DEFINE([HAVE_]AS_TR_CPP($1), 1)</div><div class='ctx'>     if test "${rb_cv_type_$1}" = yes; then</div><div class='ctx'> 	m4_bmatch([$2], [^[1-9][0-9]*$], [AC_CHECK_SIZEOF([$1], 0, [AC_INCLUDES_DEFAULT([$4])])],</div><div class='ctx'> 			[RUBY_CHECK_SIZEOF([$1], [$2], [], [AC_INCLUDES_DEFAULT([$4])])])</div><div class='ctx'>     else</div><div class='ctx'> 	AC_DEFINE_UNQUOTED($1, [$rb_cv_type_$1])</div><div class='del'>-	AC_DEFINE_UNQUOTED([SIZEOF_]AS_TR_CPP($1), [SIZEOF_]AS_TR_CPP([$rb_cv_type_$1]))</div><div class='add'>+	AC_DEFINE_UNQUOTED([SIZEOF_]AS_TR_CPP($1), [SIZEOF_]AS_TR_CPP([$type]))</div><div class='ctx'>     fi</div><div class='add'>+    test -n "$cond" &amp;&amp; echo "@%:@endif /* $cond */" &gt;&gt; confdefs.h</div><div class='ctx'> fi</div><div class='add'>+AS_VAR_POPDEF([cond])dnl</div><div class='add'>+AS_VAR_POPDEF([type])dnl</div><div class='ctx'> ])</div><div class='ctx'> </div><div class='ctx'> RUBY_DEFINT(int8_t, 1)</div><div class='hunk'>@@ -1975,6 +2226,7 @@ AC_REPLACE_FUNCS(cbrt)</div><div class='ctx'> AC_REPLACE_FUNCS(crypt)</div><div class='ctx'> AC_REPLACE_FUNCS(dup2)</div><div class='ctx'> AC_REPLACE_FUNCS(erf)</div><div class='add'>+AC_REPLACE_FUNCS(explicit_bzero)</div><div class='ctx'> AC_REPLACE_FUNCS(ffs)</div><div class='ctx'> AC_REPLACE_FUNCS(finite)</div><div class='ctx'> AC_REPLACE_FUNCS(flock)</div><div class='hunk'>@@ -2012,17 +2264,46 @@ else</div><div class='ctx'>   AC_LIBOBJ([signbit])</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='add'>+AC_CACHE_CHECK(for broken memmem, rb_cv_broken_memmem, [</div><div class='add'>+    AC_TRY_RUN([</div><div class='add'>+@%:@include &lt;string.h&gt;</div><div class='add'>+</div><div class='add'>+int</div><div class='add'>+main(int argc, char **argv)</div><div class='add'>+{</div><div class='add'>+    const char *str = "hogefugafoobar";</div><div class='add'>+    const char *rs = "foo";</div><div class='add'>+    const char *empty = "";</div><div class='add'>+    char *p;</div><div class='add'>+</div><div class='add'>+    p = memmem(str, strlen(str), rs, strlen(rs));</div><div class='add'>+    if (p == str+8) {</div><div class='add'>+	p = memmem(str, strlen(str), empty, strlen(empty));</div><div class='add'>+	if (p == str)</div><div class='add'>+	    return 0;</div><div class='add'>+    }</div><div class='add'>+    return 1;</div><div class='add'>+}</div><div class='add'>+    ],</div><div class='add'>+    rb_cv_broken_memmem=no,</div><div class='add'>+    rb_cv_broken_memmem=yes,</div><div class='add'>+    rb_cv_broken_memmem=yes)</div><div class='add'>+])</div><div class='add'>+test x"$rb_cv_broken_memmem" = xyes &amp;&amp; ac_cv_func_memmem=no</div><div class='add'>+</div><div class='ctx'> AC_FUNC_FORK</div><div class='ctx'> </div><div class='ctx'> AC_CHECK_FUNCS(__syscall)</div><div class='ctx'> AC_CHECK_FUNCS(_longjmp)		# used for AC_ARG_WITH(setjmp-type)</div><div class='del'>-AC_CHECK_FUNCS(_setjmp)			# used for AC_ARG_WITH(setjmp-type)</div><div class='del'>-AC_CHECK_FUNCS(_setjmpex)		# used for AC_ARG_WITH(setjmp-type)</div><div class='add'>+# we don't use _setjmp if _longjmp doesn't exist.</div><div class='add'>+test x$ac_cv_func__longjmp = xno &amp;&amp; ac_cv_func__setjmp=no</div><div class='add'>+AC_CHECK_FUNCS(arc4random_buf)</div><div class='ctx'> AC_CHECK_FUNCS(atan2l atan2f)</div><div class='ctx'> AC_CHECK_FUNCS(chroot)</div><div class='ctx'> AC_CHECK_FUNCS(chsize)</div><div class='ctx'> AC_CHECK_FUNCS(clock_gettime)</div><div class='ctx'> AC_CHECK_FUNCS(cosh)</div><div class='add'>+AC_CHECK_FUNCS(crypt_r)</div><div class='ctx'> AC_CHECK_FUNCS(daemon)</div><div class='ctx'> AC_CHECK_FUNCS(dirfd)</div><div class='ctx'> AC_CHECK_FUNCS(dl_iterate_phdr)</div><div class='hunk'>@@ -2074,9 +2355,12 @@ AC_CHECK_FUNCS(malloc_usable_size)</div><div class='ctx'> AC_CHECK_FUNCS(malloc_size)</div><div class='ctx'> AC_CHECK_FUNCS(mblen)</div><div class='ctx'> AC_CHECK_FUNCS(memalign)</div><div class='add'>+AC_CHECK_FUNCS(memset_s)</div><div class='ctx'> AC_CHECK_FUNCS(writev)</div><div class='ctx'> AC_CHECK_FUNCS(memrchr)</div><div class='ctx'> AC_CHECK_FUNCS(memmem)</div><div class='add'>+AC_CHECK_FUNCS(mkfifo)</div><div class='add'>+AC_CHECK_FUNCS(mknod)</div><div class='ctx'> AC_CHECK_FUNCS(mktime)</div><div class='ctx'> AC_CHECK_FUNCS(pipe2)</div><div class='ctx'> AC_CHECK_FUNCS(poll)</div><div class='hunk'>@@ -2085,6 +2369,7 @@ AC_CHECK_FUNCS(posix_memalign)</div><div class='ctx'> AC_CHECK_FUNCS(ppoll)</div><div class='ctx'> AC_CHECK_FUNCS(pread)</div><div class='ctx'> AC_CHECK_FUNCS(qsort_r)</div><div class='add'>+AC_CHECK_FUNCS(qsort_s)</div><div class='ctx'> AC_CHECK_FUNCS(readlink)</div><div class='ctx'> AC_CHECK_FUNCS(round)</div><div class='ctx'> AC_CHECK_FUNCS(sched_getaffinity)</div><div class='hunk'>@@ -2128,6 +2413,9 @@ AC_CHECK_FUNCS(utimes)</div><div class='ctx'> AC_CHECK_FUNCS(wait4)</div><div class='ctx'> AC_CHECK_FUNCS(waitpid)</div><div class='ctx'> </div><div class='add'>+AS_IF([test "$ac_cv_func_memset_s" = yes],</div><div class='add'>+    [RUBY_DEFINE_IF([!defined __STDC_WANT_LIB_EXT1__], [__STDC_WANT_LIB_EXT1__], 1)])</div><div class='add'>+</div><div class='ctx'> AS_IF([test "$ac_cv_func_getcwd" = yes], [</div><div class='ctx'>     AC_CACHE_CHECK(if getcwd allocates buffer if NULL is given, [rb_cv_getcwd_malloc],</div><div class='ctx'> 	[AC_TRY_RUN([</div><div class='hunk'>@@ -2159,6 +2447,10 @@ main(int argc, char **argv)</div><div class='ctx'>     AS_IF([test "$rb_cv_getcwd_malloc" = no], [AC_DEFINE(NO_GETCWD_MALLOC, 1)])</div><div class='ctx'> ])</div><div class='ctx'> </div><div class='add'>+AS_IF([test "$ac_cv_func_crypt_r" = yes],</div><div class='add'>+    [AC_CHECK_MEMBERS([struct crypt_data.initialized], [], [],</div><div class='add'>+		      [AC_INCLUDES_DEFAULT([@%:@include &lt;crypt.h&gt;])])])</div><div class='add'>+</div><div class='ctx'> AC_DEFUN([RUBY_CHECK_BUILTIN_FUNC], [dnl</div><div class='ctx'> AC_CACHE_CHECK([for $1], AS_TR_SH(rb_cv_builtin_$1),</div><div class='ctx'>   [AC_LINK_IFELSE(</div><div class='hunk'>@@ -2171,11 +2463,24 @@ fi])</div><div class='ctx'> RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap16, [__builtin_bswap16(0)])</div><div class='ctx'> RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap32, [__builtin_bswap32(0)])</div><div class='ctx'> RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap64, [__builtin_bswap64(0)])</div><div class='add'>+RUBY_CHECK_BUILTIN_FUNC(__builtin_popcount, [__builtin_popcount(0)])</div><div class='add'>+RUBY_CHECK_BUILTIN_FUNC(__builtin_popcountll, [__builtin_popcountll(0)])</div><div class='ctx'> RUBY_CHECK_BUILTIN_FUNC(__builtin_clz, [__builtin_clz(0)])</div><div class='ctx'> RUBY_CHECK_BUILTIN_FUNC(__builtin_clzl, [__builtin_clzl(0)])</div><div class='ctx'> RUBY_CHECK_BUILTIN_FUNC(__builtin_clzll, [__builtin_clzll(0)])</div><div class='del'>-RUBY_CHECK_BUILTIN_FUNC(__builtin_choose_expr, [__builtin_choose_expr(0, 0, 0)])</div><div class='del'>-RUBY_CHECK_BUILTIN_FUNC(__builtin_choose_expr_constant_p, [__builtin_choose_expr(__builtin_constant_p(foo), 0, 0)])</div><div class='add'>+RUBY_CHECK_BUILTIN_FUNC(__builtin_ctz, [__builtin_ctz(0)])</div><div class='add'>+RUBY_CHECK_BUILTIN_FUNC(__builtin_ctzll, [__builtin_ctzll(0)])</div><div class='add'>+RUBY_CHECK_BUILTIN_FUNC(__builtin_constant_p, [__builtin_constant_p(0)])</div><div class='add'>+RUBY_CHECK_BUILTIN_FUNC(__builtin_choose_expr, [</div><div class='add'>+    [int x[__extension__(__builtin_choose_expr(1, 1, -1))]];</div><div class='add'>+    [int y[__extension__(__builtin_choose_expr(0, -1, 1))]];</div><div class='add'>+    ])</div><div class='add'>+if test x$rb_cv_builtin___builtin_choose_expr = xyes; then</div><div class='add'>+    RUBY_CHECK_BUILTIN_FUNC(__builtin_choose_expr_constant_p, [</div><div class='add'>+    [int x[__extension__(__builtin_choose_expr(__builtin_constant_p(1), 1, -1))]];</div><div class='add'>+    [int y[__extension__(__builtin_choose_expr(__builtin_constant_p(foo), -1, 1))]];</div><div class='add'>+    ])</div><div class='add'>+fi</div><div class='ctx'> RUBY_CHECK_BUILTIN_FUNC(__builtin_types_compatible_p, [__builtin_types_compatible_p(int, int)])</div><div class='ctx'> </div><div class='ctx'> if test "$ac_cv_func_qsort_r" != no; then</div><div class='hunk'>@@ -2201,6 +2506,9 @@ void qsort_r(void *base, size_t nmemb, size_t size,</div><div class='ctx'>   AS_CASE("$rb_cv_gnu_qsort_r:$rb_cv_bsd_qsort_r",</div><div class='ctx'>   [yes:no], [</div><div class='ctx'>     AC_DEFINE(HAVE_GNU_QSORT_R, 1)</div><div class='add'>+  ],</div><div class='add'>+  [no:yes], [</div><div class='add'>+    AC_DEFINE(HAVE_BSD_QSORT_R, 1)</div><div class='ctx'>   ])</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='hunk'>@@ -2233,6 +2541,47 @@ main(int argc, char **argv)</div><div class='ctx'> ])</div><div class='ctx'> AS_IF([test "x$rb_cv_atan2_inf_c99" = xyes], [AC_DEFINE(ATAN2_INF_C99)])</div><div class='ctx'> </div><div class='add'>+AS_IF([test "x$ac_cv_func_lgamma_r" = xyes], [</div><div class='add'>+    AC_CACHE_CHECK(whether lgamma_r handles +0.0 and -0.0, rb_cv_lgamma_r_pm0, [</div><div class='add'>+	AC_TRY_RUN([</div><div class='add'>+@%:@include &lt;math.h&gt;</div><div class='add'>+@%:@ifdef HAVE_UNISTD_H</div><div class='add'>+@%:@include &lt;unistd.h&gt;</div><div class='add'>+@%:@endif</div><div class='add'>+@%:@ifndef EXIT_SUCCESS</div><div class='add'>+@%:@define EXIT_SUCCESS 0</div><div class='add'>+@%:@endif</div><div class='add'>+@%:@ifndef EXIT_FAILURE</div><div class='add'>+@%:@define EXIT_FAILURE 1</div><div class='add'>+@%:@endif</div><div class='add'>+</div><div class='add'>+int</div><div class='add'>+main(int argc, char **argv)</div><div class='add'>+{</div><div class='add'>+    int sign = 0;</div><div class='add'>+    double x = lgamma_r(-0.0, &amp;sign);</div><div class='add'>+</div><div class='add'>+    /* should be [+inf, -1] */</div><div class='add'>+    if (x &lt;= 0) return EXIT_FAILURE;</div><div class='add'>+    if (!isinf(x)) return EXIT_FAILURE;</div><div class='add'>+    if (sign != -1) return EXIT_FAILURE;</div><div class='add'>+</div><div class='add'>+    /* should be [+inf, 1] */</div><div class='add'>+    x = lgamma_r(+0.0, &amp;sign);</div><div class='add'>+    if (x &lt;= 0) return EXIT_FAILURE;</div><div class='add'>+    if (!isinf(x)) return EXIT_FAILURE;</div><div class='add'>+    if (sign != 1) return EXIT_FAILURE;</div><div class='add'>+    return EXIT_SUCCESS;</div><div class='add'>+}</div><div class='add'>+],</div><div class='add'>+	[rb_cv_lgamma_r_pm0=yes],</div><div class='add'>+	[rb_cv_lgamma_r_pm0=no],</div><div class='add'>+	[rb_cv_lgamma_r_pm0=yes]</div><div class='add'>+	)</div><div class='add'>+    ])</div><div class='add'>+    AS_IF([test "x$rb_cv_lgamma_r_pm0" = xno], [AC_DEFINE(LGAMMA_R_PM0_FIX)])</div><div class='add'>+])</div><div class='add'>+</div><div class='ctx'> # Some platform need -lrt for clock_gettime, but the other don't.</div><div class='ctx'> if test x"$ac_cv_func_clock_gettime" != xyes; then</div><div class='ctx'>     # glibc 2.17 moves clock_* functions from librt to the main C library.</div><div class='hunk'>@@ -2255,12 +2604,21 @@ if test "$rb_cv_unsetenv_return_value" = no; then</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='ctx'> # used for AC_ARG_WITH(setjmp-type)</div><div class='del'>-AC_CACHE_CHECK(for sigsetjmp as a macro or function, ac_cv_func_sigsetjmp,</div><div class='add'>+AC_DEFUN([RUBY_CHECK_SETJMP], [</div><div class='add'>+AC_CACHE_CHECK([for ]$1[ as a macro or function], ac_cv_func_$1,</div><div class='ctx'>   [AC_TRY_COMPILE([</div><div class='del'>-#include &lt;setjmp.h&gt;</div><div class='del'>-], [sigjmp_buf env; sigsetjmp(env,1);],</div><div class='del'>-	ac_cv_func_sigsetjmp=yes,</div><div class='del'>-	ac_cv_func_sigsetjmp=no)])</div><div class='add'>+@%:@include &lt;setjmp.h&gt;</div><div class='add'>+]AC_INCLUDES_DEFAULT([$3])[</div><div class='add'>+@%:@define JMPARGS_1 env</div><div class='add'>+@%:@define JMPARGS_2 env,1</div><div class='add'>+@%:@define JMPARGS JMPARGS_]m4_ifval($2,2,1)[</div><div class='add'>+],</div><div class='add'>+    m4_ifval($2,$2,jmp_buf)[ env; $1(JMPARGS);],</div><div class='add'>+    ac_cv_func_$1=yes,</div><div class='add'>+    ac_cv_func_$1=no)]</div><div class='add'>+)</div><div class='add'>+AS_IF([test "$ac_cv_func_]$1[" = yes], [AC_DEFINE([HAVE_]AS_TR_CPP($1), 1)])</div><div class='add'>+])</div><div class='ctx'> </div><div class='ctx'> AC_DEFUN([RUBY_CHECK_BUILTIN_SETJMP], [</div><div class='ctx'> if test x"${ac_cv_func___builtin_setjmp}" = xyes; then</div><div class='hunk'>@@ -2274,6 +2632,9 @@ AC_CACHE_CHECK(for __builtin_setjmp, ac_cv_func___builtin_setjmp,</div><div class='ctx'> 	[AC_TRY_LINK([@%:@include &lt;setjmp.h&gt;</div><div class='ctx'> 	    @%:@include &lt;stdio.h&gt;</div><div class='ctx'> 	    jmp_buf jb;</div><div class='add'>+	    @%:@ifdef NORETURN</div><div class='add'>+	    NORETURN(void t(void));</div><div class='add'>+	    @%:@endif</div><div class='ctx'> 	    void t(void) {__builtin_longjmp($cast jb, 1);}</div><div class='ctx'> 	    int jump(void) {(void)(__builtin_setjmp($cast jb) ? 1 : 0); return 0;}],</div><div class='ctx'> 	    [</div><div class='hunk'>@@ -2286,11 +2647,11 @@ AC_CACHE_CHECK(for __builtin_setjmp, ac_cv_func___builtin_setjmp,</div><div class='ctx'>     done])</div><div class='ctx'> ])</div><div class='ctx'> </div><div class='del'>-# we don't use _setjmp if _longjmp doesn't exist.</div><div class='del'>-test x$ac_cv_func__longjmp = xno &amp;&amp; ac_cv_func__setjmp=no</div><div class='del'>-</div><div class='ctx'> AC_DEFUN([RUBY_SETJMP_TYPE], [</div><div class='ctx'> RUBY_CHECK_BUILTIN_SETJMP</div><div class='add'>+RUBY_CHECK_SETJMP(_setjmpex, [], [@%:@include &lt;setjmpex.h&gt;])</div><div class='add'>+RUBY_CHECK_SETJMP(_setjmp)</div><div class='add'>+RUBY_CHECK_SETJMP(sigsetjmp, [sigjmp_buf])</div><div class='ctx'> AC_MSG_CHECKING(for setjmp type)</div><div class='ctx'> setjmp_suffix=</div><div class='ctx'> AC_ARG_WITH(setjmp-type,</div><div class='hunk'>@@ -2335,6 +2696,7 @@ AC_MSG_RESULT(${setjmp_prefix}setjmp${setjmp_suffix}${setjmp_cast:+\($setjmp_cas</div><div class='ctx'> AC_DEFINE_UNQUOTED([RUBY_SETJMP(env)], [${setjmp_prefix}setjmp${setjmp_suffix}($setjmp_cast(env)${setjmp_sigmask+,0})])</div><div class='ctx'> AC_DEFINE_UNQUOTED([RUBY_LONGJMP(env,val)], [${setjmp_prefix}longjmp($setjmp_cast(env),val)])</div><div class='ctx'> AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf)</div><div class='add'>+AS_IF([test x$setjmp_suffix = xex], [AC_DEFINE_UNQUOTED(RUBY_USE_SETJMPEX, 1)])</div><div class='ctx'> ])</div><div class='ctx'> # End of setjmp check.</div><div class='ctx'> </div><div class='hunk'>@@ -2347,7 +2709,11 @@ if test "$use_setreuid" = yes; then</div><div class='ctx'> fi</div><div class='ctx'> AC_STRUCT_TIMEZONE</div><div class='ctx'> AC_CACHE_CHECK(for struct tm.tm_gmtoff, rb_cv_member_struct_tm_tm_gmtoff,</div><div class='del'>-  [AC_TRY_COMPILE([@%:@include &lt;time.h&gt;],</div><div class='add'>+  [AC_TRY_COMPILE([</div><div class='add'>+@%:@define _BSD_SOURCE</div><div class='add'>+@%:@define _DEFAULT_SOURCE</div><div class='add'>+@%:@include &lt;time.h&gt;</div><div class='add'>+   ],</div><div class='ctx'>     [struct tm t; t.tm_gmtoff = 3600;],</div><div class='ctx'>   [rb_cv_member_struct_tm_tm_gmtoff=yes],</div><div class='ctx'>   [rb_cv_member_struct_tm_tm_gmtoff=no])])</div><div class='hunk'>@@ -2519,6 +2885,8 @@ main()</div><div class='ctx'>   fi</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='add'>+AC_CHECK_TYPES([sig_t],[],[],[@%:@include &lt;signal.h&gt;])</div><div class='add'>+</div><div class='ctx'> if test "$ac_cv_func_getpgid" = no; then</div><div class='ctx'>   # AC_FUNC_GETPGRP fails when cross-compiling with old autoconf.</div><div class='ctx'>   # autoconf is changed between 2.52d and 2.52f?</div><div class='hunk'>@@ -2533,6 +2901,14 @@ if test "$ac_cv_func_setpgid:$ac_cv_func_setpgrp" = no:yes; then</div><div class='ctx'> AC_FUNC_SETPGRP</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='add'>+if test x"$ac_cv_func_dirfd" = xno; then</div><div class='add'>+  AS_CASE(["$target_os"],[solaris*],</div><div class='add'>+          [AC_CHECK_MEMBERS([DIR.d_fd, DIR.dd_fd],,,[</div><div class='add'>+#include &lt;sys/types.h&gt;</div><div class='add'>+#include &lt;dirent.h&gt;</div><div class='add'>+])])</div><div class='add'>+fi</div><div class='add'>+</div><div class='ctx'> if test x"$target_cpu" = xia64; then</div><div class='ctx'>     AC_LIBOBJ([ia64])</div><div class='ctx'>     AC_CACHE_CHECK(for __libc_ia64_register_backing_store_base,</div><div class='hunk'>@@ -2674,16 +3050,18 @@ if test x"$enable_pthread" = xyes; then</div><div class='ctx'> 	AC_DEFINE(NON_SCALAR_THREAD_ID)</div><div class='ctx'>     fi</div><div class='ctx'>     AC_CHECK_FUNCS(sched_yield pthread_attr_setinheritsched \</div><div class='del'>-	pthread_getattr_np pthread_attr_get_np pthread_attr_getstack\</div><div class='add'>+	pthread_attr_get_np pthread_attr_getstack\</div><div class='ctx'> 	pthread_get_stackaddr_np pthread_get_stacksize_np \</div><div class='ctx'> 	thr_stksegment pthread_stackseg_np pthread_getthrds_np \</div><div class='ctx'> 	pthread_cond_init pthread_condattr_setclock pthread_condattr_init \</div><div class='del'>-	pthread_sigmask pthread_setname_np)</div><div class='add'>+	pthread_sigmask pthread_setname_np pthread_set_name_np)</div><div class='add'>+    AS_CASE(["$target_os"],[aix*],[ac_cv_func_pthread_getattr_np=no],[AC_CHECK_FUNCS(pthread_getattr_np)])</div><div class='ctx'>     if test "${host_os}" = "nacl"; then</div><div class='ctx'>       ac_cv_func_pthread_attr_init=no</div><div class='ctx'>     else</div><div class='ctx'>       AC_CHECK_FUNCS(pthread_attr_init)</div><div class='ctx'>     fi</div><div class='add'>+    set_current_thread_name=</div><div class='ctx'>     if test "$ac_cv_func_pthread_setname_np" = yes; then</div><div class='ctx'> 	AC_CACHE_CHECK([arguments of pthread_setname_np], [rb_cv_func_pthread_setname_np_arguments],</div><div class='ctx'> 	    [rb_cv_func_pthread_setname_np_arguments=</div><div class='hunk'>@@ -2709,16 +3087,38 @@ if test x"$enable_pthread" = xyes; then</div><div class='ctx'> 	    ]</div><div class='ctx'> 	)</div><div class='ctx'> 	if test -n "${rb_cv_func_pthread_setname_np_arguments}"; then</div><div class='del'>-	    AC_DEFINE_UNQUOTED(SET_THREAD_NAME(name), pthread_setname_np${rb_cv_func_pthread_setname_np_arguments})</div><div class='del'>-	else</div><div class='del'>-	    AC_DEFINE_UNQUOTED(SET_THREAD_NAME(name), (void)0)</div><div class='add'>+	    set_current_thread_name="pthread_setname_np${rb_cv_func_pthread_setname_np_arguments}"</div><div class='ctx'> 	fi</div><div class='add'>+    elif test "$ac_cv_func_pthread_set_name_np" = yes; then</div><div class='add'>+	set_current_thread_name="pthread_set_name_np(pthread_self(), name)"</div><div class='add'>+    fi</div><div class='add'>+    AS_IF([test -n "$set_current_thread_name"], [</div><div class='add'>+	AC_DEFINE_UNQUOTED(SET_CURRENT_THREAD_NAME(name), $set_current_thread_name)</div><div class='add'>+	AS_CASE([$set_current_thread_name],</div><div class='add'>+	    [*'pthread_self()'*], [</div><div class='add'>+		set_another_thread_name=`echo "$set_current_thread_name" | sed 's/pthread_self()/thid/'`</div><div class='add'>+		AC_DEFINE_UNQUOTED(SET_ANOTHER_THREAD_NAME(thid,name), $set_another_thread_name)</div><div class='add'>+	    ])</div><div class='add'>+    ])</div><div class='add'>+fi</div><div class='add'>+</div><div class='add'>+if test x"$ac_cv_header_ucontext_h" = xno; then</div><div class='add'>+    AC_CACHE_CHECK([if signal.h defines ucontext_t], [rb_cv_ucontext_in_signal_h],</div><div class='add'>+	[AC_TRY_COMPILE([@%:@include &lt;signal.h&gt;],</div><div class='add'>+	[size_t size = sizeof(ucontext_t);],</div><div class='add'>+	[rb_cv_ucontext_in_signal_h=yes], [rb_cv_ucontext_in_signal_h=no])])</div><div class='add'>+    if test x"$rb_cv_ucontext_in_signal_h" = xyes; then</div><div class='add'>+	    AC_DEFINE_UNQUOTED(UCONTEXT_IN_SIGNAL_H, 1)</div><div class='ctx'>     fi</div><div class='ctx'> fi</div><div class='del'>-if test x"$ac_cv_header_ucontext_h" = xyes; then</div><div class='add'>+if test x"$ac_cv_header_ucontext_h" = xyes -o x"$rb_cv_ucontext_in_signal_h" = xyes; then</div><div class='ctx'>     AC_CACHE_CHECK([if mcontext_t is a pointer], [rb_cv_mcontext_t_ptr],</div><div class='del'>-	[AC_TRY_COMPILE([@%:@include &lt;ucontext.h&gt;</div><div class='del'>-	mcontext_t test(mcontext_t mc) {return mc+1;}</div><div class='add'>+	[AC_TRY_COMPILE([</div><div class='add'>+	    @%:@include &lt;signal.h&gt;</div><div class='add'>+	    @%:@ifdef HAVE_UCONTEXT_H</div><div class='add'>+	    @%:@include &lt;ucontext.h&gt;</div><div class='add'>+	    @%:@endif</div><div class='add'>+        mcontext_t test(mcontext_t mc) {return mc+1;}</div><div class='ctx'> 	],</div><div class='ctx'> 	[test(0);],</div><div class='ctx'> 	[rb_cv_mcontext_t_ptr=yes], [rb_cv_mcontext_t_ptr=no])])</div><div class='hunk'>@@ -2869,7 +3269,7 @@ if test "$with_dln_a_out" != yes; then</div><div class='ctx'>       # mkmf.rb's have_header() to fail if the desired resource happens to be</div><div class='ctx'>       # installed in the /usr/local tree.</div><div class='ctx'>       RUBY_APPEND_OPTION(CCDLFLAGS, -fno-common)],</div><div class='del'>-    [bsdi*|beos*|haiku*|cygwin*|mingw*|aix*|interix*], [ ],</div><div class='add'>+    [bsdi*|cygwin*|mingw*|aix*|interix*], [ ],</div><div class='ctx'>     [</div><div class='ctx'>       RUBY_APPEND_OPTION(CCDLFLAGS, -fPIC)])</div><div class='ctx'>   else</div><div class='hunk'>@@ -2906,6 +3306,10 @@ if test "$with_dln_a_out" != yes; then</div><div class='ctx'> 			fi</div><div class='ctx'> 			if test "$ac_cv_sizeof_voidp" = 8; then</div><div class='ctx'> 			    : ${LIBPATHENV=LD_LIBRARY_PATH_64}</div><div class='add'>+			    : ${PRELOADENV=LD_PRELOAD_64}</div><div class='add'>+			else</div><div class='add'>+			    : ${LIBPATHENV=LD_LIBRARY_PATH_32}</div><div class='add'>+			    : ${PRELOADENV=LD_PRELOAD_32}</div><div class='ctx'> 			fi</div><div class='ctx'> 			rb_cv_dlopen=yes],</div><div class='ctx'> 	[sunos*], [	: ${LDSHARED='$(LD) -assert nodefinitions'}</div><div class='hunk'>@@ -2923,7 +3327,7 @@ if test "$with_dln_a_out" != yes; then</div><div class='ctx'> 	[bsdi3*], [	AS_CASE(["$CC"],</div><div class='ctx'> 			[*shlicc*], [	: ${LDSHARED='$(CC) -r'}</div><div class='ctx'> 					rb_cv_dlopen=yes])],</div><div class='del'>-	[linux* | gnu* | k*bsd*-gnu | netbsd* | bsdi* | kopensolaris*-gnu], [</div><div class='add'>+	[linux* | gnu* | k*bsd*-gnu | netbsd* | bsdi* | kopensolaris*-gnu | haiku*], [</div><div class='ctx'> 			: ${LDSHARED='$(CC) -shared'}</div><div class='ctx'> 			if test "$rb_cv_binary_elf" = yes; then</div><div class='ctx'> 			    LDFLAGS="$LDFLAGS -Wl,-export-dynamic"</div><div class='hunk'>@@ -2950,14 +3354,7 @@ if test "$with_dln_a_out" != yes; then</div><div class='ctx'> 	[darwin*], [	: ${LDSHARED='$(CC) -dynamic -bundle'}</div><div class='ctx'> 			: ${LDFLAGS=""}</div><div class='ctx'> 			: ${LIBPATHENV=DYLD_LIBRARY_PATH}</div><div class='del'>-			# /usr/local/include is always searched for</div><div class='del'>-			# some reason, but /usr/local/lib is not.</div><div class='del'>-			hdr=`find /usr/local/include -name \*.h -type f | sed 's:^/usr/local/include/::;q'`</div><div class='del'>-			if test -n "$hdr" &amp;&amp; $CC -E -include "$hdr" -xc - &lt;/dev/null 2&gt;/dev/null | fgrep -q "$hdr"; then</div><div class='del'>-			    $CC -print-search-dirs | grep -q '^libraries:.*:/usr/local/lib/*' ||</div><div class='del'>-			    echo " $LDFLAGS " | grep -q ' -L */usr/local/lib/* ' ||</div><div class='del'>-			    LDFLAGS="${LDFLAGS:+$LDFLAGS }-L/usr/local/lib"</div><div class='del'>-			fi</div><div class='add'>+			: ${PRELOADENV=DYLD_INSERT_LIBRARIES}</div><div class='ctx'> 			rb_cv_dlopen=yes],</div><div class='ctx'>         [aix*], [	: ${LDSHARED='$(CC)'}</div><div class='ctx'> 			LDSHARED="$LDSHARED ${linker_flag}-G"</div><div class='hunk'>@@ -2970,31 +3367,6 @@ if test "$with_dln_a_out" != yes; then</div><div class='ctx'> 			: ${LIBPATHENV=LIBPATH}</div><div class='ctx'> 			RPATHFLAG=" ${linker_flag}-blibpath:%1\$-s:${prefix}/lib:${LIBPATH:-/usr/lib:/lib}"</div><div class='ctx'> 			rb_cv_dlopen=yes],</div><div class='del'>-	[beos*], [	AS_CASE(["$target_cpu"],</div><div class='del'>-			  [powerpc*], [</div><div class='del'>-			    : ${LDSHARED='$(LD) -xms'}</div><div class='del'>-			    EXTDLDFLAGS='-export $(TARGET_ENTRY)'</div><div class='del'>-			    DLDFLAGS="$DLDFLAGS -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o"</div><div class='del'>-			    LDFLAGS="$LDFLAGS -L/boot/home/config/lib -lbe -lroot"</div><div class='del'>-			    ],</div><div class='del'>-			  [i586*], [</div><div class='del'>-			    : ${LDSHARED='$(LD) -shared'}</div><div class='del'>-			    DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib \$(topdir)/_APP_ -lroot"</div><div class='del'>-			    LDFLAGS="$LDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib -lroot"</div><div class='del'>-			    ])</div><div class='del'>-			: ${LIBPATHENV=LIBRARY_PATH}</div><div class='del'>-			rb_cv_dlopen=yes],</div><div class='del'>-	[haiku*], [	AS_CASE(["$target_cpu"],</div><div class='del'>-			  [powerpc*], [</div><div class='del'>-			    : ${LDSHARED='$(LD) -xms'}</div><div class='del'>-			    EXTDLDFLAGS='-export $(TARGET_ENTRY)'</div><div class='del'>-			    DLDFLAGS="$DLDFLAGS -lroot glue-noinit.a init_term_dyn.o start_dyn.o"</div><div class='del'>-                            ],</div><div class='del'>-			  [i586*], [</div><div class='del'>-			    : ${LDSHARED='$(CC) -shared'}</div><div class='del'>-			    ])</div><div class='del'>-			: ${LIBPATHENV=LIBRARY_PATH}</div><div class='del'>-			rb_cv_dlopen=yes ],</div><div class='ctx'> 	[nto-qnx*], [	DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"</div><div class='ctx'> 			: ${LDSHARED='$(LD) -Bshareable -x'}</div><div class='ctx'> 			LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"</div><div class='hunk'>@@ -3004,12 +3376,11 @@ if test "$with_dln_a_out" != yes; then</div><div class='ctx'> 			XLDFLAGS="$XLDFLAGS -Wl,--stack,0x00200000,--enable-auto-import"</div><div class='ctx'> 			DLDFLAGS="${DLDFLAGS} -Wl,--enable-auto-image-base,--enable-auto-import"</div><div class='ctx'> 			: ${LIBPATHENV=""}</div><div class='add'>+			: ${PRELOADENV=""}</div><div class='ctx'> 			rb_cv_dlopen=yes],</div><div class='ctx'> 	[hiuxmpp], [	: ${LDSHARED='$(LD) -r'}],</div><div class='ctx'> 	[atheos*], [	: ${LDSHARED='$(CC) -shared'}</div><div class='ctx'> 			rb_cv_dlopen=yes],</div><div class='del'>-	[os2-emx*], [	LDFLAGS="$LDFLAGS -Zomf"</div><div class='del'>-			],</div><div class='ctx'>         [nacl], [ LDSHARED='$(CC) -shared' ],</div><div class='ctx'> 	[	: ${LDSHARED='$(LD)'}])</div><div class='ctx'>   AC_MSG_RESULT($rb_cv_dlopen)</div><div class='hunk'>@@ -3066,6 +3437,7 @@ AC_SUBST(LINK_SO)</div><div class='ctx'> AC_SUBST(LIBPATHFLAG)</div><div class='ctx'> AC_SUBST(RPATHFLAG)</div><div class='ctx'> AC_SUBST(LIBPATHENV, "${LIBPATHENV-LD_LIBRARY_PATH}")</div><div class='add'>+AC_SUBST(PRELOADENV, "${PRELOADENV-LD_PRELOAD}")</div><div class='ctx'> AC_SUBST(TRY_LINK)</div><div class='ctx'> </div><div class='ctx'> if test "x$OPT_DIR" != x; then</div><div class='hunk'>@@ -3075,11 +3447,13 @@ if test "x$OPT_DIR" != x; then</div><div class='ctx'>         for dir in $OPT_DIR; do</div><div class='ctx'>             echo x ${LIBPATHFLAG} ${RPATHFLAG} |</div><div class='ctx'>             sed "s/^x *//;s${IFS}"'%1\\$-s'"${IFS}${dir}/lib${IFS}g;s${IFS}%s${IFS}${dir}/lib${IFS}g"</div><div class='del'>-        done | tr '\012' ' '`</div><div class='del'>-    test x"${LDFLAGS}" = x || LDFLAGS="$LDFLAGS "</div><div class='del'>-    LDFLAGS="$LDFLAGS$val"</div><div class='del'>-    test x"${DLDFLAGS}" = x || DLDFLAGS="$DLDFLAGS "</div><div class='del'>-    DLDFLAGS="$DLDFLAGS$val"</div><div class='add'>+        done | tr '\012' ' ' | sed 's/ *$//'`</div><div class='add'>+    if test x"$val" != x; then</div><div class='add'>+	test x"${LDFLAGS}" = x || LDFLAGS="$LDFLAGS "</div><div class='add'>+	LDFLAGS="$LDFLAGS$val"</div><div class='add'>+	test x"${DLDFLAGS}" = x || DLDFLAGS="$DLDFLAGS "</div><div class='add'>+	DLDFLAGS="$DLDFLAGS$val"</div><div class='add'>+    fi</div><div class='ctx'>     LDFLAGS_OPTDIR="$val"</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='hunk'>@@ -3095,6 +3469,7 @@ AS_CASE(["$target_cpu-$target_os"],</div><div class='ctx'>     AC_CHECK_HEADERS([execinfo.h])</div><div class='ctx'>     if test "x$ac_cv_header_execinfo_h" = xyes; then</div><div class='ctx'> 	AC_CHECK_LIB([execinfo], [backtrace])</div><div class='add'>+	AC_CHECK_HEADERS([libunwind.h])</div><div class='ctx'>     fi],</div><div class='ctx'> [*-freebsd*|x86_64-netbsd*], [</div><div class='ctx'>     AC_CHECK_HEADERS([execinfo.h])</div><div class='hunk'>@@ -3202,9 +3577,6 @@ else</div><div class='ctx'>     [darwin*], [</div><div class='ctx'> 	RUBY_APPEND_OPTION(XLDFLAGS, [-Wl,-u,_objc_msgSend])</div><div class='ctx'> 	DLEXT=bundle],</div><div class='del'>-    [os2-emx*], [</div><div class='del'>-	LOAD_RELATIVE=1</div><div class='del'>-	DLEXT=dll],</div><div class='ctx'>     [cygwin*|mingw*|*djgpp*], [</div><div class='ctx'> 	LOAD_RELATIVE=1</div><div class='ctx'> 	DLEXT=so],</div><div class='hunk'>@@ -3326,6 +3698,7 @@ if test x"$cross_compiling" = xyes; then</div><div class='ctx'>   RUNRUBY_COMMAND='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`'</div><div class='ctx'>   RUNRUBY='$(RUNRUBY_COMMAND)'</div><div class='ctx'>   XRUBY='$(MINIRUBY)'</div><div class='add'>+  BOOTSTRAPRUBY='$(BASERUBY)'</div><div class='ctx'>   TEST_RUNNABLE=no</div><div class='ctx'>   CROSS_COMPILING=yes</div><div class='ctx'> </div><div class='hunk'>@@ -3349,6 +3722,7 @@ else</div><div class='ctx'>   RUNRUBY_COMMAND='$(MINIRUBY) $(srcdir)/tool/runruby.rb --extout=$(EXTOUT) $(RUNRUBYOPT)'</div><div class='ctx'>   RUNRUBY='$(RUNRUBY_COMMAND) --'</div><div class='ctx'>   XRUBY='$(RUNRUBY)'</div><div class='add'>+  BOOTSTRAPRUBY='$(MINIRUBY)'</div><div class='ctx'>   TEST_RUNNABLE=yes</div><div class='ctx'>   CROSS_COMPILING=no</div><div class='ctx'> fi</div><div class='hunk'>@@ -3360,6 +3734,7 @@ AC_SUBST(PREP)</div><div class='ctx'> AC_SUBST(RUNRUBY_COMMAND)</div><div class='ctx'> AC_SUBST(RUNRUBY)</div><div class='ctx'> AC_SUBST(XRUBY)</div><div class='add'>+AC_SUBST(BOOTSTRAPRUBY)</div><div class='ctx'> AC_SUBST(EXTOUT, [${EXTOUT=.ext}])</div><div class='ctx'> </div><div class='ctx'> FIRSTMAKEFILE=""</div><div class='hunk'>@@ -3370,7 +3745,7 @@ LIBRUBYARG='$(LIBRUBYARG_STATIC)'</div><div class='ctx'> SOLIBS=</div><div class='ctx'> </div><div class='ctx'> AS_CASE(["$target_os"],</div><div class='del'>-  [cygwin*|mingw*|beos*|haiku*|darwin*|os2-emx*], [</div><div class='add'>+  [cygwin*|mingw*|haiku*|darwin*], [</div><div class='ctx'>     : ${DLDLIBS=""}</div><div class='ctx'>     ],</div><div class='ctx'>   [</div><div class='hunk'>@@ -3395,7 +3770,7 @@ AC_ARG_WITH(soname,</div><div class='ctx'> </div><div class='ctx'> LIBRUBY_LDSHARED=$LDSHARED</div><div class='ctx'> LIBRUBY_DLDFLAGS=$DLDFLAGS</div><div class='del'>-LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR).$(TEENY)'</div><div class='add'>+LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(RUBY_PROGRAM_VERSION)'</div><div class='ctx'> LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so'</div><div class='ctx'> ENABLE_SHARED=no</div><div class='ctx'> </div><div class='hunk'>@@ -3438,7 +3813,7 @@ AS_CASE("$enable_shared", [yes], [</div><div class='ctx'>     [sunos4*], [</div><div class='ctx'> 	LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so'</div><div class='ctx'> 	],</div><div class='del'>-    [linux* | gnu* | k*bsd*-gnu | atheos* | kopensolaris*-gnu], [</div><div class='add'>+    [linux* | gnu* | k*bsd*-gnu | atheos* | kopensolaris*-gnu | haiku*], [</div><div class='ctx'> 	LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR)'" $LDFLAGS_OPTDIR"</div><div class='ctx'> 	LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so'</div><div class='ctx'> 	if test "$load_relative" = yes; then</div><div class='hunk'>@@ -3472,7 +3847,7 @@ AS_CASE("$enable_shared", [yes], [</div><div class='ctx'>     [solaris*], [</div><div class='ctx'> 	SOLIBS='$(LIBS)'</div><div class='ctx'> 	LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)'</div><div class='del'>-	LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR).$(TEENY) lib$(RUBY_SO_NAME).so'</div><div class='add'>+	LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(RUBY_PROGRAM_VERSION) lib$(RUBY_SO_NAME).so'</div><div class='ctx'> 	if test "$GCC" = yes; then</div><div class='ctx'> 	    LIBRUBY_DLDFLAGS="$DLDFLAGS "'-Wl,-h,$(@F)'</div><div class='ctx'> 	else</div><div class='hunk'>@@ -3482,7 +3857,7 @@ AS_CASE("$enable_shared", [yes], [</div><div class='ctx'> 	],</div><div class='ctx'>     [hpux*], [</div><div class='ctx'> 	XLDFLAGS="$XLDFLAGS "'-Wl,+s,+b,$(libdir)'</div><div class='del'>-	LIBRUBY_SO='lib$(RUBY_SO_NAME).sl.$(MAJOR).$(MINOR).$(TEENY)'</div><div class='add'>+	LIBRUBY_SO='lib$(RUBY_SO_NAME).sl.$(RUBY_PROGRAM_VERSION)'</div><div class='ctx'> 	LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).sl.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).sl'</div><div class='ctx'> 	],</div><div class='ctx'>     [aix*], [</div><div class='hunk'>@@ -3490,24 +3865,19 @@ AS_CASE("$enable_shared", [yes], [</div><div class='ctx'> 	LIBRUBYARG_SHARED='-L${libdir} -l${RUBY_SO_NAME}'</div><div class='ctx'> 	SOLIBS='-lm -lc'</div><div class='ctx'> 	],</div><div class='del'>-    [beos*], [</div><div class='del'>-	AS_CASE(["$target_cpu"],</div><div class='del'>-	[powerpc*], [</div><div class='del'>-	    LIBRUBY_DLDFLAGS="-f ruby.exp -lnet -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o $LDFLAGS_OPTDIR"</div><div class='del'>-	    ])</div><div class='del'>-	],</div><div class='ctx'>     [darwin*], [</div><div class='del'>-	RUBY_SO_NAME="$RUBY_SO_NAME"'.$(MAJOR).$(MINOR).$(TEENY)'</div><div class='add'>+	RUBY_SO_NAME="$RUBY_SO_NAME"'.$(RUBY_PROGRAM_VERSION)'</div><div class='ctx'> 	LIBRUBY_LDSHARED='$(CC) -dynamiclib'</div><div class='ctx'> 	if test "$load_relative" = yes; then</div><div class='ctx'> 	    libprefix="@executable_path/../${libdir_basename}"</div><div class='ctx'> 	    LIBRUBY_RELATIVE=yes</div><div class='ctx'> 	fi</div><div class='ctx'> 	LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-install_name '${libprefix}'/$(LIBRUBY_SO)'</div><div class='del'>-	LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-current_version $(MAJOR).$(MINOR).$(TEENY)'</div><div class='del'>-	LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-compatibility_version $(ruby_version)'</div><div class='add'>+	LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-current_version $(MAJOR).$(MINOR)'</div><div class='add'>+	LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-compatibility_version $(RUBY_PROGRAM_VERSION)'</div><div class='ctx'> 	if test "$visibility_option" = ld; then</div><div class='ctx'> 	    LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,_Init_*'</div><div class='add'>+	    LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,_ruby_static_id_*'</div><div class='ctx'> 	    LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,*_threadptr_*'</div><div class='ctx'> 	fi</div><div class='ctx'> 	LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "' $(XLDFLAGS)'</div><div class='hunk'>@@ -3529,10 +3899,6 @@ AS_CASE("$enable_shared", [yes], [</div><div class='ctx'>           AS_HELP_STRING([--disable-pie], [disable PIE feature]),</div><div class='ctx'>           [pie=$enableval], [pie=])</div><div class='ctx'>   AS_CASE(["$target_os"],</div><div class='del'>-  [haiku], [</div><div class='del'>-    # gcc supports PIE, but doesn't work correctly in Haiku</div><div class='del'>-    pie=no</div><div class='del'>-  ],</div><div class='ctx'>   [nacl], [</div><div class='ctx'>     # -pie implies -shared for NaCl.</div><div class='ctx'>     pie=no</div><div class='hunk'>@@ -3582,6 +3948,15 @@ if test "$EXEEXT" = .exe; then</div><div class='ctx'>     AC_SUBST(EXECUTABLE_EXTS)</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='add'>+AS_CASE("$cross_compiling:${LIBPATHENV}", [yes:* | no:], [], [</div><div class='add'>+    AC_MSG_CHECKING(whether wrapper for $LIBPATHENV is needed)</div><div class='add'>+    AS_IF([env ${LIBPATHENV}=/lib /bin/sh -c ': ${'${LIBPATHENV}'?}' 2&gt;/dev/null],</div><div class='add'>+	[AC_MSG_RESULT(no)],</div><div class='add'>+	[PREP="$PREP"' ruby-runner$(EXEEXT)'</div><div class='add'>+	AC_MSG_RESULT(yes)]</div><div class='add'>+    )</div><div class='add'>+])</div><div class='add'>+</div><div class='ctx'> AC_ARG_ENABLE(dtrace,</div><div class='ctx'>         AS_HELP_STRING([--enable-dtrace],</div><div class='ctx'>         [enable DTrace for tracing inside ruby. enabled by default on systems having dtrace]),</div><div class='hunk'>@@ -3639,7 +4014,7 @@ dnl build rdoc index if requested</div><div class='ctx'> RDOCTARGET=""</div><div class='ctx'> CAPITARGET=""</div><div class='ctx'> AC_ARG_ENABLE(install-doc,</div><div class='del'>-       AS_HELP_STRING([--disable-install-doc], [do not install neither rdoc indexes nor C API documents during install]),</div><div class='add'>+       AS_HELP_STRING([--disable-install-doc], [do not install either rdoc indexes or C API documents during install]),</div><div class='ctx'>        [install_doc=$enableval], [install_doc=yes])</div><div class='ctx'> AC_ARG_ENABLE(install-rdoc,</div><div class='ctx'>       AS_HELP_STRING([--disable-install-rdoc], [do not install rdoc indexes during install]),</div><div class='hunk'>@@ -3701,13 +4076,6 @@ AS_CASE(["$target_os"],</div><div class='ctx'> 	RUBY_APPEND_OPTION(XLDFLAGS, [-framework CoreFoundation])</div><div class='ctx'> 	RUBY_APPEND_OPTION(LIBRUBYARG_STATIC, [-framework CoreFoundation])</div><div class='ctx'> 	],</div><div class='del'>-    [os2-emx], [</div><div class='del'>-	AC_LIBOBJ([os2])</div><div class='del'>-	CFLAGS="$CFLAGS -DOS2"</div><div class='del'>-	LIBRUBY_A=`echo $LIBRUBY_A | sed 's/^lib//'`</div><div class='del'>-	LIBRUBY_SO=`echo $LIBRUBY_SO | sed 's/^lib//'`</div><div class='del'>-	LIBRUBY_ALIASES=`for i in $LIBRUBY_ALIASES; do echo "$i"; done | sed 's/^lib//'`</div><div class='del'>-	],</div><div class='ctx'>     [osf*], [</div><div class='ctx'> 	if test "$GCC" != "yes" ; then</div><div class='ctx'> 	  # compile something small: taint.c is fine for this.</div><div class='hunk'>@@ -3723,12 +4091,8 @@ AS_CASE(["$target_os"],</div><div class='ctx'> 	  CFLAGS="$CFLAGS -std"</div><div class='ctx'> 	fi</div><div class='ctx'> 	],</div><div class='del'>-    [beos*], [</div><div class='del'>-	AS_CASE(["$target_cpu"],[powerpc*], [CFLAGS="$CFLAGS -relax_pointers"])</div><div class='del'>-	CPPFLAGS="$CPPFLAGS -I/boot/home/config/include"</div><div class='del'>-	],</div><div class='ctx'>     [cygwin*|mingw*], [</div><div class='del'>-	RUBY_SO_NAME="${RUBY_SO_NAME}"'$(MAJOR)$(MINOR)$(TEENY)'</div><div class='add'>+	RUBY_SO_NAME="${RUBY_SO_NAME}"'$(MAJOR)$(MINOR)0'</div><div class='ctx'> 	LIBRUBY_DLDFLAGS="${DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)'</div><div class='ctx'> 	AS_CASE(["$target_os"],</div><div class='ctx'> 	[cygwin*], [</div><div class='hunk'>@@ -3866,40 +4230,6 @@ if test "${universal_binary-no}" = yes ; then</div><div class='ctx'> 		[rb_cv_architecture_available=yes], [rb_cv_architecture_available=no]))</div><div class='ctx'> fi</div><div class='ctx'> </div><div class='del'>-if test "$ac_cv_func_memmem" = yes; then</div><div class='del'>-  AC_CACHE_CHECK(for broken memmem, rb_cv_broken_memmem, [</div><div class='del'>-    AC_TRY_RUN([</div><div class='del'>-#include &lt;string.h&gt;</div><div class='del'>-</div><div class='del'>-int</div><div class='del'>-main()</div><div class='del'>-{</div><div class='del'>-  char *str = "hogefugafoobar";</div><div class='del'>-  char *rs = "foo";</div><div class='del'>-  char *empty = "";</div><div class='del'>-  char *p;</div><div class='del'>-</div><div class='del'>-  p = memmem(str, strlen(str), rs, strlen(rs));</div><div class='del'>-  if (p == str+8) {</div><div class='del'>-    p = memmem(str, strlen(str), empty, strlen(empty));</div><div class='del'>-    if (p == str)</div><div class='del'>-      return 0;</div><div class='del'>-    else</div><div class='del'>-      return 1;</div><div class='del'>-  }</div><div class='del'>-  else {</div><div class='del'>-    return 1;</div><div class='del'>-  }</div><div class='del'>-}</div><div class='del'>-    ],</div><div class='del'>-    rb_cv_broken_memmem=no,</div><div class='del'>-    rb_cv_broken_memmem=yes,</div><div class='del'>-    rb_cv_broken_memmem=yes)</div><div class='del'>-  ])</div><div class='del'>-  test x"$rb_cv_broken_memmem" = xyes &amp;&amp; ac_cv_func_memmem=no</div><div class='del'>-fi</div><div class='del'>-</div><div class='del'>-</div><div class='ctx'> CPPFLAGS="$CPPFLAGS "'$(DEFS)'</div><div class='ctx'> test -z "$CPPFLAGS" || CPPFLAGS="$CPPFLAGS "; CPPFLAGS="$CPPFLAGS"'${cppflags}'</div><div class='ctx'> if test -n "${cflags+set}"; then</div><div class='hunk'>@@ -3918,8 +4248,8 @@ if test "${ARCH_FLAG}"; then</div><div class='ctx'> fi</div><div class='ctx'> warnflags="$rb_cv_warnflags"</div><div class='ctx'> AC_SUBST(cppflags)dnl</div><div class='del'>-AC_SUBST(cflags, ["$orig_cflags "'${optflags} ${debugflags} ${warnflags}'])dnl</div><div class='del'>-AC_SUBST(cxxflags, ["$orig_cxxflags "'${optflags} ${debugflags} ${warnflags}'])dnl</div><div class='add'>+AC_SUBST(cflags, ["${orig_cflags:+$orig_cflags }"'${optflags} ${debugflags} ${warnflags}'])dnl</div><div class='add'>+AC_SUBST(cxxflags, ["${orig_cxxflags:+$orig_cxxflags }"'${optflags} ${debugflags} ${warnflags}'])dnl</div><div class='ctx'> AC_SUBST(optflags)dnl</div><div class='ctx'> AC_SUBST(debugflags)dnl</div><div class='ctx'> AC_SUBST(warnflags)dnl</div><div class='hunk'>@@ -4014,11 +4344,9 @@ if test ${RUBY_LIB_VERSION_STYLE+set}; then</div><div class='ctx'>     echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"</div><div class='ctx'>     echo '#define STRINGIZE(x) x'</div><div class='ctx'>     test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'</div><div class='del'>-    echo '#include "verconf.h"'</div><div class='ctx'>     echo '#include "version.h"'</div><div class='ctx'>     echo 'ruby_version=RUBY_LIB_VERSION'</div><div class='ctx'>     } &gt; conftest.c</div><div class='del'>-    test -f verconf.h || &gt; verconf.h</div><div class='ctx'>     ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`"</div><div class='ctx'>     eval $ruby_version</div><div class='ctx'> elif test -z "${ruby_version}"; then</div><div class='hunk'>@@ -4077,6 +4405,7 @@ AC_SUBST(vendordir)dnl</div><div class='ctx'> AC_SUBST(vendorlibdir)dnl</div><div class='ctx'> AC_SUBST(vendorarchdir)dnl</div><div class='ctx'> </div><div class='add'>+AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl</div><div class='ctx'> AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl</div><div class='ctx'> </div><div class='ctx'> if test "${universal_binary-no}" = yes ; then</div><div class='hunk'>@@ -4158,7 +4487,7 @@ AC_ARG_WITH(mantype,</div><div class='ctx'> 	AS_HELP_STRING([--with-mantype=TYPE], [specify man page type; TYPE is one of man and doc]),</div><div class='ctx'> 		[</div><div class='ctx'> 			AS_CASE(["$withval"],</div><div class='del'>-			[man|doc], [MANTYPE=$withval],</div><div class='add'>+			[man|man.gz|man.bz2|doc|doc.gz|doc.bz2], [MANTYPE=$withval],</div><div class='ctx'> 			[AC_MSG_ERROR(invalid man type: $withval)])</div><div class='ctx'> 		])</div><div class='ctx'> if test -z "$MANTYPE"; then</div><div class='hunk'>@@ -4192,7 +4521,10 @@ guard=INCLUDE_RUBY_CONFIG_H</div><div class='ctx'>   grep -v "^#define PACKAGE_" confdefs.h</div><div class='ctx'>   echo "#endif /* $guard */"</div><div class='ctx'> } | tr -d '\015' |</div><div class='del'>-${srcdir}/tool/ifchange "${config_h}" -</div><div class='add'>+(</div><div class='add'>+  if test "x$CONFIGURE_TTY" = xyes; then color=--color; else color=; fi</div><div class='add'>+  exec ${srcdir}/tool/ifchange $color "${config_h}" -</div><div class='add'>+) || AC_MSG_ERROR([failed to create ${config_h}])</div><div class='ctx'> tr -d '\015' &lt; largefile.h &gt; confdefs.h</div><div class='ctx'> rm largefile.h</div><div class='ctx'> </div><div class='hunk'>@@ -4200,7 +4532,7 @@ BUILTIN_ENCS=["`sed -n -e '/^BUILTIN_ENCS[ 	]*=/{' \</div><div class='ctx'> 	-e s/// -e :l -e '/\\\\$/N' -e 's/\\\\\\n/ /' -e 't l' -e p \</div><div class='ctx'> 	-e '}' "${srcdir}/enc/Makefile.in"`"]</div><div class='ctx'> BUILTIN_ENCOBJS=</div><div class='del'>-for e in $BUILTIN_ENCS; do BUILTIN_ENCOBJS="$BUILTIN_ENCOBJS `basename $e .c`"'.$(OBJEXT)'; done</div><div class='add'>+for e in $BUILTIN_ENCS; do BUILTIN_ENCOBJS="$BUILTIN_ENCOBJS "`echo $e | sed 's/\.c$/.$(OBJEXT)/'`; done</div><div class='ctx'> AC_SUBST(BUILTIN_ENCOBJS)</div><div class='ctx'> </div><div class='ctx'> BUILTIN_TRANSES=["`sed -n -e '/^BUILTIN_TRANSES[ 	]*=/{' \</div><div class='hunk'>@@ -4209,15 +4541,15 @@ BUILTIN_TRANSES=["`sed -n -e '/^BUILTIN_TRANSES[ 	]*=/{' \</div><div class='ctx'> BUILTIN_TRANSSRCS=</div><div class='ctx'> BUILTIN_TRANSOBJS=</div><div class='ctx'> for e in $BUILTIN_TRANSES; do</div><div class='del'>-  BUILTIN_TRANSSRCS="$BUILTIN_TRANSSRCS `basename $e .trans`"'.c';</div><div class='del'>-  BUILTIN_TRANSOBJS="$BUILTIN_TRANSOBJS `basename $e .trans`"'.$(OBJEXT)';</div><div class='add'>+  BUILTIN_TRANSSRCS="$BUILTIN_TRANSSRCS "`echo $e | sed 's/\.trans$/.c/'`</div><div class='add'>+  BUILTIN_TRANSOBJS="$BUILTIN_TRANSOBJS "`echo $e | sed 's/\.trans$/.$(OBJEXT)/'`</div><div class='ctx'> done</div><div class='ctx'> AC_SUBST(BUILTIN_TRANSSRCS)</div><div class='ctx'> AC_SUBST(BUILTIN_TRANSOBJS)</div><div class='ctx'> </div><div class='ctx'> PACKAGE=$RUBY_BASE_NAME</div><div class='ctx'> AC_SUBST(PACKAGE)</div><div class='del'>-AC_MSG_RESULT($PACKAGE library version = $ruby_version)</div><div class='add'>+AS_MESSAGE([$PACKAGE library version = $ruby_version])</div><div class='ctx'> </div><div class='ctx'> AS_CASE([" $CPP "], [*" $CC "*], [CPP=`echo " $CPP " | sed "s| $CC |"' $(CC) |;s/^ *//;s/  *$//'`])</div><div class='ctx'> </div><div class='hunk'>@@ -4231,10 +4563,12 @@ AC_CONFIG_FILES(Makefile, [</div><div class='ctx'> 	    :</div><div class='ctx'> 	elif svn info "$srcdir" &gt; /dev/null 2&gt;&amp;1; then</div><div class='ctx'> 	    VCS='svn'</div><div class='del'>-	elif test -d "$srcdir/.git/svn"; then</div><div class='del'>-	    VCS='git svn'</div><div class='del'>-	elif test -d "$srcdir/.git"; then</div><div class='del'>-	    VCS='git'</div><div class='add'>+	elif git_dir=`git --work-tree="$srcdir" --git-dir="$srcdir/.git" rev-parse --git-dir 2&gt;/dev/null`; then</div><div class='add'>+	    if test -d "$git_dir/svn"; then</div><div class='add'>+		VCS='git svn'</div><div class='add'>+	    else</div><div class='add'>+		VCS='git'</div><div class='add'>+	    fi</div><div class='ctx'> 	else</div><div class='ctx'> 	    VCS='echo cannot'</div><div class='ctx'> 	fi</div><div class='hunk'>@@ -4243,7 +4577,12 @@ AC_CONFIG_FILES(Makefile, [</div><div class='ctx'> 		["git svn"], [VCSUP='$(VCS) rebase $(GITSVNREBASEOPTIONS)'],</div><div class='ctx'> 		[git],       [VCSUP='$(VCS) pull $(GITPULLOPTIONS)'],</div><div class='ctx'> 		[VCSUP='$(VCS)'])</div><div class='del'>-	sed -n 's/^@%:@define \(RUBY_RELEASE_DATE\) "\(.*\)"/\1 = \2/p' "$srcdir/version.h"</div><div class='add'>+	sed -n \</div><div class='add'>+	    -e '[/^@%:@define \(RUBY_RELEASE_[A-Z]*\) \([0-9][0-9]*\)/]{' \</div><div class='add'>+	    -e   's//\1 = \2/' \</div><div class='add'>+	    -e   '[s/ \([0-9]\)$/ 0\1/]' \</div><div class='add'>+	    -e   p \</div><div class='add'>+	    -e '}' "$srcdir/version.h"</div><div class='ctx'> 	sed '/^MISSING/s/\$U\././g;/^VCS *=/s#@VCS@#'"$VCS"'#;/^VCSUP *=/s#@VCSUP@#'"$VCSUP"'#' Makefile</div><div class='ctx'> 	echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'</div><div class='ctx'> 	if test "$gnumake" != yes; then</div><div class='hunk'>@@ -4269,7 +4608,7 @@ AC_CONFIG_FILES(Makefile, [</div><div class='ctx'> [EXEEXT='$EXEEXT' gnumake='$gnumake'])</div><div class='ctx'> </div><div class='ctx'> AC_ARG_WITH([ruby-pc],</div><div class='del'>-	    AC_HELP_STRING([pc file basename]),</div><div class='add'>+	    AC_HELP_STRING([--with-ruby-pc=FILENAME], [pc file basename]),</div><div class='ctx'> 	    [ruby_pc="$withval"],</div><div class='ctx'> 	    [ruby_pc="${RUBY_BASE_NAME}-${MAJOR}.${MINOR}.pc"])</div><div class='ctx'> AC_SUBST(ruby_pc)</div><div class='hunk'>@@ -4298,3 +4637,48 @@ AC_CONFIG_FILES($ruby_pc:template/ruby.pc.in,</div><div class='ctx'> AC_OUTPUT</div><div class='ctx'> }</div><div class='ctx'> }</div><div class='add'>+</div><div class='add'>+AS_IF([${FOLD+:} false], [], [</div><div class='add'>+AS_IF([test "`echo abcdefg hijklmno | fold -s -w10 | sed 1d`" = hijklmno], [FOLD="fold"], [FOLD=])</div><div class='add'>+])</div><div class='add'>+AS_REQUIRE_SHELL_FN([config_summary],</div><div class='add'>+    [AS_FUNCTION_DESCRIBE([config_summary], [NAME, VAL], [configuration summary])],</div><div class='add'>+    [AS_IF([test -z "$2"], [], [</div><div class='add'>+	AS_ECHO_N(["   * $1:                     "]) | head -c26</div><div class='add'>+	AS_IF([test "$FOLD"], [</div><div class='add'>+	    echo "$2" | fold -s -w50 |</div><div class='add'>+	    sed '1!s/^/                          /;$!s/$/\\/'</div><div class='add'>+	], [echo "$2"])</div><div class='add'>+    ])]</div><div class='add'>+)</div><div class='add'>+</div><div class='add'>+echo "---"</div><div class='add'>+echo "Configuration summary for $RUBY_BASE_NAME version $RUBY_PROGRAM_VERSION"</div><div class='add'>+echo ""</div><div class='add'>+config_summary "Installation prefix" "$prefix"</div><div class='add'>+config_summary "exec prefix"         "$exec_prefix"</div><div class='add'>+config_summary "arch"                "$arch"</div><div class='add'>+config_summary "site arch"           "$sitearch"</div><div class='add'>+config_summary "RUBY_BASE_NAME"      "$RUBY_BASE_NAME"</div><div class='add'>+config_summary "enable shared"       "$enable_shared"</div><div class='add'>+config_summary "ruby lib prefix"     "$rubylibprefix"</div><div class='add'>+config_summary "site libraries path" "$rubysitearchprefix"</div><div class='add'>+config_summary "vendor path"         "$vendordir"</div><div class='add'>+config_summary "target OS"           "$target_os"</div><div class='add'>+config_summary "compiler"            "$CC"</div><div class='add'>+config_summary "with pthread"        "$enable_pthread"</div><div class='add'>+config_summary "enable shared libs"  "$ENABLE_SHARED"</div><div class='add'>+config_summary "dynamic library ext" "$DLEXT"</div><div class='add'>+config_summary "CFLAGS"              "$cflags"</div><div class='add'>+config_summary "CPPFLAGS"            "$cppflags"</div><div class='add'>+config_summary "LDFLAGS"             "$LDFLAGS"</div><div class='add'>+config_summary "optflags"            "$optflags"</div><div class='add'>+config_summary "debugflags"          "$debugflags"</div><div class='add'>+config_summary "warnflags"           "$warnflags"</div><div class='add'>+config_summary "strip command"       "$STRIP"</div><div class='add'>+config_summary "install doc"         "$install_doc"</div><div class='add'>+config_summary "man page type"       "$MANTYPE"</div><div class='add'>+config_summary "search path"         "$search_path"</div><div class='add'>+config_summary "static-linked-ext"   ${EXTSTATIC:+"yes"}</div><div class='add'>+echo ""</div><div class='add'>+echo "---"</div><div class='head'>diff --git a/constant.h b/constant.h<br/>index c7de5da533..76b59fa047 100644<br/>--- a/<a href='/ruby.git/tree/constant.h?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>constant.h</a><br/>+++ b/<a href='/ruby.git/tree/constant.h?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>constant.h</a></div><div class='hunk'>@@ -12,15 +12,21 @@</div><div class='ctx'> #define CONSTANT_H</div><div class='ctx'> </div><div class='ctx'> typedef enum {</div><div class='add'>+    CONST_DEPRECATED = 0x100,</div><div class='add'>+</div><div class='add'>+    CONST_VISIBILITY_MASK = 0xff,</div><div class='ctx'>     CONST_PUBLIC    = 0x00,</div><div class='ctx'>     CONST_PRIVATE,</div><div class='ctx'>     CONST_VISIBILITY_MAX</div><div class='ctx'> } rb_const_flag_t;</div><div class='ctx'> </div><div class='ctx'> #define RB_CONST_PRIVATE_P(ce) \</div><div class='del'>-    ((ce)-&gt;flag == CONST_PRIVATE)</div><div class='add'>+    (((ce)-&gt;flag &amp; CONST_VISIBILITY_MASK) == CONST_PRIVATE)</div><div class='ctx'> #define RB_CONST_PUBLIC_P(ce) \</div><div class='del'>-    ((ce)-&gt;flag == CONST_PUBLIC)</div><div class='add'>+    (((ce)-&gt;flag &amp; CONST_VISIBILITY_MASK) == CONST_PUBLIC)</div><div class='add'>+</div><div class='add'>+#define RB_CONST_DEPRECATED_P(ce) \</div><div class='add'>+    ((ce)-&gt;flag &amp; CONST_DEPRECATED)</div><div class='ctx'> </div><div class='ctx'> typedef struct rb_const_entry_struct {</div><div class='ctx'>     rb_const_flag_t flag;</div><div class='hunk'>@@ -31,7 +37,8 @@ typedef struct rb_const_entry_struct {</div><div class='ctx'> </div><div class='ctx'> VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj);</div><div class='ctx'> VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj);</div><div class='del'>-void rb_free_const_table(st_table *tbl);</div><div class='add'>+VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj);</div><div class='add'>+void rb_free_const_table(struct rb_id_table *tbl);</div><div class='ctx'> VALUE rb_public_const_get(VALUE klass, ID id);</div><div class='ctx'> VALUE rb_public_const_get_at(VALUE klass, ID id);</div><div class='ctx'> VALUE rb_public_const_get_from(VALUE klass, ID id);</div><div class='head'>diff --git a/cont.c b/cont.c<br/>index 22e0c5abe0..8119b5cb23 100644<br/>--- a/<a href='/ruby.git/tree/cont.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>cont.c</a><br/>+++ b/<a href='/ruby.git/tree/cont.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>cont.c</a></div><div class='hunk'>@@ -54,13 +54,7 @@</div><div class='ctx'> #     define FIBER_USE_NATIVE 1</div><div class='ctx'> #   endif</div><div class='ctx'> # elif defined(_WIN32)</div><div class='del'>-#   if _WIN32_WINNT &gt;= 0x0400</div><div class='del'>-/* only when _WIN32_WINNT &gt;= 0x0400 on Windows because Fiber APIs are</div><div class='del'>- * supported only such building (and running) environments.</div><div class='del'>- * [ruby-dev:41192]</div><div class='del'>- */</div><div class='del'>-#     define FIBER_USE_NATIVE 1</div><div class='del'>-#   endif</div><div class='add'>+#  define FIBER_USE_NATIVE 1</div><div class='ctx'> # endif</div><div class='ctx'> #endif</div><div class='ctx'> #if !defined(FIBER_USE_NATIVE)</div><div class='hunk'>@@ -137,7 +131,7 @@ struct rb_fiber_struct {</div><div class='ctx'>      * then this fiber can't "resume" any more after that.</div><div class='ctx'>      * You shouldn't mix "transfer" and "resume".</div><div class='ctx'>      */</div><div class='del'>-    int transfered;</div><div class='add'>+    int transferred;</div><div class='ctx'> </div><div class='ctx'> #if FIBER_USE_NATIVE</div><div class='ctx'> #ifdef _WIN32</div><div class='hunk'>@@ -180,6 +174,7 @@ cont_mark(void *ptr)</div><div class='ctx'>     if (ptr) {</div><div class='ctx'> 	rb_context_t *cont = ptr;</div><div class='ctx'> 	rb_gc_mark(cont-&gt;value);</div><div class='add'>+</div><div class='ctx'> 	rb_thread_mark(&amp;cont-&gt;saved_thread);</div><div class='ctx'> 	rb_gc_mark(cont-&gt;saved_thread.self);</div><div class='ctx'> </div><div class='hunk'>@@ -226,7 +221,7 @@ cont_free(void *ptr)</div><div class='ctx'>     RUBY_FREE_ENTER("cont");</div><div class='ctx'>     if (ptr) {</div><div class='ctx'> 	rb_context_t *cont = ptr;</div><div class='del'>-	RUBY_FREE_UNLESS_NULL(cont-&gt;saved_thread.stack); fflush(stdout);</div><div class='add'>+	RUBY_FREE_UNLESS_NULL(cont-&gt;saved_thread.stack);</div><div class='ctx'> #if FIBER_USE_NATIVE</div><div class='ctx'> 	if (cont-&gt;type == CONTINUATION_CONTEXT) {</div><div class='ctx'> 	    /* cont */</div><div class='hunk'>@@ -236,17 +231,16 @@ cont_free(void *ptr)</div><div class='ctx'> 	else {</div><div class='ctx'> 	    /* fiber */</div><div class='ctx'> 	    rb_fiber_t *fib = (rb_fiber_t*)cont;</div><div class='add'>+	    const rb_thread_t *const th = GET_THREAD();</div><div class='ctx'> #ifdef _WIN32</div><div class='del'>-	    if (GET_THREAD()-&gt;fiber != fib &amp;&amp; cont-&gt;type != ROOT_FIBER_CONTEXT) {</div><div class='add'>+	    if (th &amp;&amp; th-&gt;fiber != fib &amp;&amp; cont-&gt;type != ROOT_FIBER_CONTEXT) {</div><div class='ctx'> 		/* don't delete root fiber handle */</div><div class='del'>-		rb_fiber_t *fib = (rb_fiber_t*)cont;</div><div class='ctx'> 		if (fib-&gt;fib_handle) {</div><div class='ctx'> 		    DeleteFiber(fib-&gt;fib_handle);</div><div class='ctx'> 		}</div><div class='ctx'> 	    }</div><div class='ctx'> #else /* not WIN32 */</div><div class='del'>-	    if (GET_THREAD()-&gt;fiber != fib) {</div><div class='del'>-                rb_fiber_t *fib = (rb_fiber_t*)cont;</div><div class='add'>+	    if (th &amp;&amp; th-&gt;fiber != fib) {</div><div class='ctx'>                 if (fib-&gt;ss_sp) {</div><div class='ctx'>                     if (cont-&gt;type == ROOT_FIBER_CONTEXT) {</div><div class='ctx'> 			rb_bug("Illegal root fiber parameter");</div><div class='hunk'>@@ -281,26 +275,25 @@ cont_memsize(const void *ptr)</div><div class='ctx'> {</div><div class='ctx'>     const rb_context_t *cont = ptr;</div><div class='ctx'>     size_t size = 0;</div><div class='del'>-    if (cont) {</div><div class='del'>-	size = sizeof(*cont);</div><div class='del'>-	if (cont-&gt;vm_stack) {</div><div class='add'>+</div><div class='add'>+    size = sizeof(*cont);</div><div class='add'>+    if (cont-&gt;vm_stack) {</div><div class='ctx'> #ifdef CAPTURE_JUST_VALID_VM_STACK</div><div class='del'>-	    size_t n = (cont-&gt;vm_stack_slen + cont-&gt;vm_stack_clen);</div><div class='add'>+	size_t n = (cont-&gt;vm_stack_slen + cont-&gt;vm_stack_clen);</div><div class='ctx'> #else</div><div class='del'>-	    size_t n = cont-&gt;saved_thread.stack_size;</div><div class='add'>+	size_t n = cont-&gt;saved_thread.stack_size;</div><div class='ctx'> #endif</div><div class='del'>-	    size += n * sizeof(*cont-&gt;vm_stack);</div><div class='del'>-	}</div><div class='add'>+	size += n * sizeof(*cont-&gt;vm_stack);</div><div class='add'>+    }</div><div class='ctx'> </div><div class='del'>-	if (cont-&gt;machine.stack) {</div><div class='del'>-	    size += cont-&gt;machine.stack_size * sizeof(*cont-&gt;machine.stack);</div><div class='del'>-	}</div><div class='add'>+    if (cont-&gt;machine.stack) {</div><div class='add'>+	size += cont-&gt;machine.stack_size * sizeof(*cont-&gt;machine.stack);</div><div class='add'>+    }</div><div class='ctx'> #ifdef __ia64</div><div class='del'>-	if (cont-&gt;machine.register_stack) {</div><div class='del'>-	    size += cont-&gt;machine.register_stack_size * sizeof(*cont-&gt;machine.register_stack);</div><div class='del'>-	}</div><div class='del'>-#endif</div><div class='add'>+    if (cont-&gt;machine.register_stack) {</div><div class='add'>+	size += cont-&gt;machine.register_stack_size * sizeof(*cont-&gt;machine.register_stack);</div><div class='ctx'>     }</div><div class='add'>+#endif</div><div class='ctx'>     return size;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -344,14 +337,13 @@ fiber_memsize(const void *ptr)</div><div class='ctx'> {</div><div class='ctx'>     const rb_fiber_t *fib = ptr;</div><div class='ctx'>     size_t size = 0;</div><div class='del'>-    if (ptr) {</div><div class='del'>-	size = sizeof(*fib);</div><div class='del'>-	if (fib-&gt;cont.type != ROOT_FIBER_CONTEXT &amp;&amp;</div><div class='del'>-	    fib-&gt;cont.saved_thread.local_storage != NULL) {</div><div class='del'>-	    size += st_memsize(fib-&gt;cont.saved_thread.local_storage);</div><div class='del'>-	}</div><div class='del'>-	size += cont_memsize(&amp;fib-&gt;cont);</div><div class='add'>+</div><div class='add'>+    size = sizeof(*fib);</div><div class='add'>+    if (fib-&gt;cont.type != ROOT_FIBER_CONTEXT &amp;&amp;</div><div class='add'>+	fib-&gt;cont.saved_thread.local_storage != NULL) {</div><div class='add'>+	size += st_memsize(fib-&gt;cont.saved_thread.local_storage);</div><div class='ctx'>     }</div><div class='add'>+    size += cont_memsize(&amp;fib-&gt;cont);</div><div class='ctx'>     return size;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -499,7 +491,7 @@ cont_capture(volatile int *stat)</div><div class='ctx'>     cont-&gt;vm_stack = ALLOC_N(VALUE, th-&gt;stack_size);</div><div class='ctx'>     MEMCPY(cont-&gt;vm_stack, th-&gt;stack, VALUE, th-&gt;stack_size);</div><div class='ctx'> #endif</div><div class='del'>-    cont-&gt;saved_thread.stack = 0;</div><div class='add'>+    cont-&gt;saved_thread.stack = NULL;</div><div class='ctx'> </div><div class='ctx'>     cont_save_machine_stack(th, cont);</div><div class='ctx'> </div><div class='hunk'>@@ -520,7 +512,7 @@ cont_capture(volatile int *stat)</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     if (ruby_setjmp(cont-&gt;jmpbuf)) {</div><div class='del'>-	volatile VALUE value;</div><div class='add'>+	VALUE value;</div><div class='ctx'> </div><div class='ctx'> 	VAR_INITIALIZED(cont);</div><div class='ctx'> 	value = cont-&gt;value;</div><div class='hunk'>@@ -548,7 +540,7 @@ cont_restore_thread(rb_context_t *cont)</div><div class='ctx'> 	th-&gt;fiber = sth-&gt;fiber;</div><div class='ctx'> 	fib = th-&gt;fiber ? th-&gt;fiber : th-&gt;root_fiber;</div><div class='ctx'> </div><div class='del'>-	if (fib) {</div><div class='add'>+	if (fib &amp;&amp; fib-&gt;cont.saved_thread.stack) {</div><div class='ctx'> 	    th-&gt;stack_size = fib-&gt;cont.saved_thread.stack_size;</div><div class='ctx'> 	    th-&gt;stack = fib-&gt;cont.saved_thread.stack;</div><div class='ctx'> 	}</div><div class='hunk'>@@ -563,6 +555,7 @@ cont_restore_thread(rb_context_t *cont)</div><div class='ctx'>     else {</div><div class='ctx'> 	/* fiber */</div><div class='ctx'> 	th-&gt;stack = sth-&gt;stack;</div><div class='add'>+	sth-&gt;stack = NULL;</div><div class='ctx'> 	th-&gt;stack_size = sth-&gt;stack_size;</div><div class='ctx'> 	th-&gt;local_storage = sth-&gt;local_storage;</div><div class='ctx'> 	th-&gt;local_storage_recursive_hash = sth-&gt;local_storage_recursive_hash;</div><div class='hunk'>@@ -582,7 +575,6 @@ cont_restore_thread(rb_context_t *cont)</div><div class='ctx'>     th-&gt;root_lep = sth-&gt;root_lep;</div><div class='ctx'>     th-&gt;root_svar = sth-&gt;root_svar;</div><div class='ctx'>     th-&gt;ensure_list = sth-&gt;ensure_list;</div><div class='del'>-</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> #if FIBER_USE_NATIVE</div><div class='hunk'>@@ -660,6 +652,10 @@ fiber_initialize_machine_stack_context(rb_fiber_t *fib, size_t size)</div><div class='ctx'>     rb_thread_t *sth = &amp;fib-&gt;cont.saved_thread;</div><div class='ctx'> </div><div class='ctx'> #ifdef _WIN32</div><div class='add'>+# if defined(_MSC_VER) &amp;&amp; _MSC_VER &lt;= 1200</div><div class='add'>+#   define CreateFiberEx(cs, stacksize, flags, entry, param) \</div><div class='add'>+    CreateFiber((stacksize), (entry), (param))</div><div class='add'>+# endif</div><div class='ctx'>     fib-&gt;fib_handle = CreateFiberEx(size - 1, size, 0, fiber_entry, NULL);</div><div class='ctx'>     if (!fib-&gt;fib_handle) {</div><div class='ctx'> 	/* try to release unnecessary fibers &amp; retry to create */</div><div class='hunk'>@@ -732,7 +728,6 @@ fiber_setcontext(rb_fiber_t *newfib, rb_fiber_t *oldfib)</div><div class='ctx'> 	rb_bug("non_root_fiber-&gt;context.uc_stac.ss_sp should not be NULL");</div><div class='ctx'>     }</div><div class='ctx'> #endif</div><div class='del'>-</div><div class='ctx'>     /* swap machine context */</div><div class='ctx'> #ifdef _WIN32</div><div class='ctx'>     SwitchToFiber(newfib-&gt;fib_handle);</div><div class='hunk'>@@ -890,6 +885,24 @@ cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)</div><div class='ctx'>  *     Ron</div><div class='ctx'>  *     Max</div><div class='ctx'>  *</div><div class='add'>+ *  Also you can call callcc in other methods:</div><div class='add'>+ *</div><div class='add'>+ *     require "continuation"</div><div class='add'>+ *</div><div class='add'>+ *     def g</div><div class='add'>+ *       arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ]</div><div class='add'>+ *       cc = callcc { |cc| cc }</div><div class='add'>+ *       puts arr.shift</div><div class='add'>+ *       return cc, arr.size</div><div class='add'>+ *     end</div><div class='add'>+ *</div><div class='add'>+ *     def f</div><div class='add'>+ *       c, size = g</div><div class='add'>+ *       c.call(c) if size &gt; 1</div><div class='add'>+ *     end</div><div class='add'>+ *</div><div class='add'>+ *     f</div><div class='add'>+ *</div><div class='ctx'>  *  This (somewhat contrived) example allows the inner loop to abandon</div><div class='ctx'>  *  processing early:</div><div class='ctx'>  *</div><div class='hunk'>@@ -1071,7 +1084,6 @@ rb_cont_call(int argc, VALUE *argv, VALUE contval)</div><div class='ctx'> </div><div class='ctx'>     /* restore `tracing' context. see [Feature #4347] */</div><div class='ctx'>     th-&gt;trace_arg = cont-&gt;saved_thread.trace_arg;</div><div class='del'>-</div><div class='ctx'>     cont_restore_0(cont, &amp;contval);</div><div class='ctx'>     return Qnil; /* unreachable */</div><div class='ctx'> }</div><div class='hunk'>@@ -1093,7 +1105,7 @@ rb_cont_call(int argc, VALUE *argv, VALUE contval)</div><div class='ctx'>  *  comes with a small 4KB stack. This enables the fiber to be paused from deeply</div><div class='ctx'>  *  nested function calls within the fiber block.</div><div class='ctx'>  *</div><div class='del'>- *  When a fiber is created it will not run automatically. Rather it must be</div><div class='add'>+ *  When a fiber is created it will not run automatically. Rather it must</div><div class='ctx'>  *  be explicitly asked to run using the &lt;code&gt;Fiber#resume&lt;/code&gt; method.</div><div class='ctx'>  *  The code running inside the fiber can give up control by calling</div><div class='ctx'>  *  &lt;code&gt;Fiber.yield&lt;/code&gt; in which case it yields control back to caller</div><div class='hunk'>@@ -1177,6 +1189,18 @@ fiber_t_alloc(VALUE fibval)</div><div class='ctx'>     return fib;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+rb_control_frame_t *</div><div class='add'>+rb_vm_push_frame(rb_thread_t *th,</div><div class='add'>+		 const rb_iseq_t *iseq,</div><div class='add'>+		 VALUE type,</div><div class='add'>+		 VALUE self,</div><div class='add'>+		 VALUE specval,</div><div class='add'>+		 VALUE cref_or_me,</div><div class='add'>+		 const VALUE *pc,</div><div class='add'>+		 VALUE *sp,</div><div class='add'>+		 int local_size,</div><div class='add'>+		 int stack_max);</div><div class='add'>+</div><div class='ctx'> static VALUE</div><div class='ctx'> fiber_init(VALUE fibval, VALUE proc)</div><div class='ctx'> {</div><div class='hunk'>@@ -1188,28 +1212,24 @@ fiber_init(VALUE fibval, VALUE proc)</div><div class='ctx'>     /* initialize cont */</div><div class='ctx'>     cont-&gt;vm_stack = 0;</div><div class='ctx'> </div><div class='del'>-    th-&gt;stack = 0;</div><div class='add'>+    th-&gt;stack = NULL;</div><div class='ctx'>     th-&gt;stack_size = 0;</div><div class='ctx'> </div><div class='ctx'>     th-&gt;stack_size = cth-&gt;vm-&gt;default_params.fiber_vm_stack_size / sizeof(VALUE);</div><div class='ctx'>     th-&gt;stack = ALLOC_N(VALUE, th-&gt;stack_size);</div><div class='del'>-</div><div class='ctx'>     th-&gt;cfp = (void *)(th-&gt;stack + th-&gt;stack_size);</div><div class='del'>-    th-&gt;cfp--;</div><div class='del'>-    th-&gt;cfp-&gt;pc = 0;</div><div class='del'>-    th-&gt;cfp-&gt;sp = th-&gt;stack + 1;</div><div class='del'>-#if VM_DEBUG_BP_CHECK</div><div class='del'>-    th-&gt;cfp-&gt;bp_check = 0;</div><div class='del'>-#endif</div><div class='del'>-    th-&gt;cfp-&gt;ep = th-&gt;stack;</div><div class='del'>-    *th-&gt;cfp-&gt;ep = VM_ENVVAL_BLOCK_PTR(0);</div><div class='del'>-    th-&gt;cfp-&gt;self = Qnil;</div><div class='del'>-    th-&gt;cfp-&gt;klass = Qnil;</div><div class='del'>-    th-&gt;cfp-&gt;flag = 0;</div><div class='del'>-    th-&gt;cfp-&gt;iseq = 0;</div><div class='del'>-    th-&gt;cfp-&gt;proc = 0;</div><div class='del'>-    th-&gt;cfp-&gt;block_iseq = 0;</div><div class='del'>-    th-&gt;cfp-&gt;me = 0;</div><div class='add'>+</div><div class='add'>+    rb_vm_push_frame(th,</div><div class='add'>+		     NULL,</div><div class='add'>+		     VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL | VM_FRAME_FLAG_FINISH | VM_FRAME_FLAG_CFRAME,</div><div class='add'>+		     Qnil, /* self */</div><div class='add'>+		     VM_BLOCK_HANDLER_NONE,</div><div class='add'>+		     0, /* specval */</div><div class='add'>+		     NULL, /* pc */</div><div class='add'>+		     th-&gt;stack, /* sp */</div><div class='add'>+		     0, /* local_size */</div><div class='add'>+		     0);</div><div class='add'>+</div><div class='ctx'>     th-&gt;tag = 0;</div><div class='ctx'>     th-&gt;local_storage = st_init_numtable();</div><div class='ctx'>     th-&gt;local_storage_recursive_hash = Qnil;</div><div class='hunk'>@@ -1256,11 +1276,12 @@ rb_fiber_start(void)</div><div class='ctx'> 	argv = (argc = cont-&gt;argc) &gt; 1 ? RARRAY_CONST_PTR(args) : &amp;args;</div><div class='ctx'> 	cont-&gt;value = Qnil;</div><div class='ctx'> 	th-&gt;errinfo = Qnil;</div><div class='del'>-	th-&gt;root_lep = rb_vm_ep_local_ep(proc-&gt;block.ep);</div><div class='del'>-	th-&gt;root_svar = Qnil;</div><div class='del'>-</div><div class='add'>+	th-&gt;root_lep = rb_vm_ep_local_ep(vm_block_ep(&amp;proc-&gt;block));</div><div class='add'>+	th-&gt;root_svar = Qfalse;</div><div class='ctx'> 	fib-&gt;status = RUNNING;</div><div class='del'>-	cont-&gt;value = rb_vm_invoke_proc(th, proc, argc, argv, 0);</div><div class='add'>+</div><div class='add'>+	EXEC_EVENT_HOOK(th, RUBY_EVENT_FIBER_SWITCH, th-&gt;self, 0, 0, Qnil);</div><div class='add'>+	cont-&gt;value = rb_vm_invoke_proc(th, proc, argc, argv, VM_BLOCK_HANDLER_NONE);</div><div class='ctx'>     }</div><div class='ctx'>     TH_POP_TAG();</div><div class='ctx'> </div><div class='hunk'>@@ -1449,6 +1470,8 @@ fiber_switch(rb_fiber_t *fib, int argc, const VALUE *argv, int is_resume)</div><div class='ctx'>     value = fiber_store(fib, th);</div><div class='ctx'>     RUBY_VM_CHECK_INTS(th);</div><div class='ctx'> </div><div class='add'>+    EXEC_EVENT_HOOK(th, RUBY_EVENT_FIBER_SWITCH, th-&gt;self, 0, 0, Qnil);</div><div class='add'>+</div><div class='ctx'>     return value;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='hunk'>@@ -1486,7 +1509,7 @@ rb_fiber_resume(VALUE fibval, int argc, const VALUE *argv)</div><div class='ctx'>     if (fib-&gt;prev != 0 || fib-&gt;cont.type == ROOT_FIBER_CONTEXT) {</div><div class='ctx'> 	rb_raise(rb_eFiberError, "double resume");</div><div class='ctx'>     }</div><div class='del'>-    if (fib-&gt;transfered != 0) {</div><div class='add'>+    if (fib-&gt;transferred != 0) {</div><div class='ctx'> 	rb_raise(rb_eFiberError, "cannot resume transferred Fiber");</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='hunk'>@@ -1598,7 +1621,7 @@ rb_fiber_m_transfer(int argc, VALUE *argv, VALUE fibval)</div><div class='ctx'> {</div><div class='ctx'>     rb_fiber_t *fib;</div><div class='ctx'>     GetFiberPtr(fibval, fib);</div><div class='del'>-    fib-&gt;transfered = 1;</div><div class='add'>+    fib-&gt;transferred = 1;</div><div class='ctx'>     return fiber_switch(fib, argc, argv, 0);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='head'>diff --git a/cygwin/GNUmakefile.in b/cygwin/GNUmakefile.in<br/>index 768a1b6b7f..2f93102efe 100644<br/>--- a/<a href='/ruby.git/tree/cygwin/GNUmakefile.in?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>cygwin/GNUmakefile.in</a><br/>+++ b/<a href='/ruby.git/tree/cygwin/GNUmakefile.in?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>cygwin/GNUmakefile.in</a></div><div class='hunk'>@@ -1,8 +1,11 @@</div><div class='add'>+override MFLAGS := $(filter-out -j%,$(MFLAGS))</div><div class='add'>+override MAKEFLAGS := $(filter-out -j%,$(MAKEFLAGS))</div><div class='ctx'> include Makefile</div><div class='ctx'> </div><div class='ctx'> ENABLE_SHARED=@ENABLE_SHARED@</div><div class='ctx'> DLLWRAP = @DLLWRAP@ --target=@target_os@ --driver-name="$(CC)"</div><div class='ctx'> WINDRES = @WINDRES@ --preprocessor="$(CPP) -xc" -DRC_INVOKED</div><div class='add'>+STRIP = @STRIP@</div><div class='ctx'> </div><div class='ctx'> ifeq (@target_os@,cygwin)</div><div class='ctx'>   DLL_BASE_NAME := $(LIBRUBY_SO:.dll=)</div><div class='hunk'>@@ -10,9 +13,6 @@ else</div><div class='ctx'>   DLL_BASE_NAME := $(RUBY_SO_NAME)</div><div class='ctx'>   DLLWRAP += -mno-cygwin</div><div class='ctx'>   VPATH := $(VPATH):$(srcdir)/win32</div><div class='del'>-  STUBPROGRAM = rubystub$(EXEEXT)</div><div class='del'>-  IGNOREDPATTERNS = %~ .% %.orig %.rej \#%\#</div><div class='del'>-  SCRIPTPROGRAMS = $(addsuffix $(EXEEXT),$(filter-out $(IGNOREDPATTERNS),$(notdir $(wildcard $(srcdir)/bin/*))))</div><div class='ctx'> endif</div><div class='ctx'> </div><div class='ctx'> ifneq ($(ENABLE_SHARED),yes)</div><div class='hunk'>@@ -32,6 +32,8 @@ WPROGRAM = $(RUBYW_INSTALL_NAME)$(EXEEXT)</div><div class='ctx'> </div><div class='ctx'> -include uncommon.mk</div><div class='ctx'> </div><div class='add'>+include $(srcdir)/defs/gmake.mk</div><div class='add'>+</div><div class='ctx'> SOLIBS := $(DLL_BASE_NAME).res.@OBJEXT@ $(SOLIBS)</div><div class='ctx'> override EXTOBJS += $(if $(filter-out $(RUBYW_INSTALL_NAME),$(@:$(EXEEXT)=)),$(RUBY_INSTALL_NAME),$(@:$(EXEEXT)=)).res.$(OBJEXT)</div><div class='ctx'> RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(DLL_BASE_NAME).rc</div><div class='hunk'>@@ -39,13 +41,6 @@ RUBYDEF = $(DLL_BASE_NAME).def</div><div class='ctx'> </div><div class='ctx'> ruby: $(PROGRAM)</div><div class='ctx'> rubyw: $(WPROGRAM)</div><div class='del'>-stub: $(STUBPROGRAM)</div><div class='del'>-scriptbin: $(SCRIPTPROGRAMS)</div><div class='del'>-</div><div class='del'>-%$(EXEEXT): bin/% $(STUBPROGRAM)</div><div class='del'>-	$(ECHO) generating $@</div><div class='del'>-	$(Q) { cat $(STUBPROGRAM); echo; sed -e '1{' -e '/^#!.*ruby/!i\' -e '#!/bin/ruby' -e '}' $&lt;; } &gt; $@</div><div class='del'>-	$(Q) chmod +x $@</div><div class='ctx'> </div><div class='ctx'> $(LIBRUBY): $(RUBY_EXP) $(LIBRUBY_SO)</div><div class='ctx'> $(RUBY_EXP) $(LIBRUBY_SO): $(DLL_BASE_NAME).res.@OBJEXT@</div><div class='hunk'>@@ -54,11 +49,11 @@ $(RUBY_EXP) $(LIBRUBY_SO): $(DLL_BASE_NAME).res.@OBJEXT@</div><div class='ctx'> 	$(ECHO) compiling $@</div><div class='ctx'> 	$(Q) $(WINDRES) --include-dir . --include-dir $(&lt;D) --include-dir $(srcdir)/win32 $&lt; $@</div><div class='ctx'> </div><div class='del'>-$(RCFILES): $(RBCONFIG) $(srcdir)/revision.h $(srcdir)/win32/resource.rb</div><div class='add'>+%.rc: $(RBCONFIG) $(srcdir)/revision.h $(srcdir)/win32/resource.rb</div><div class='ctx'> 	$(ECHO) generating $@</div><div class='ctx'> 	$(Q) $(MINIRUBY) $(srcdir)/win32/resource.rb \</div><div class='ctx'> 	  -ruby_name=$(RUBY_INSTALL_NAME) -rubyw_name=$(RUBYW_INSTALL_NAME) \</div><div class='del'>-	  -so_name=$(DLL_BASE_NAME) \</div><div class='add'>+	  -so_name=$(DLL_BASE_NAME) -output=$(*F) \</div><div class='ctx'> 	  . $(icondirs) $(srcdir)/win32</div><div class='ctx'> </div><div class='ctx'> $(PROGRAM): $(RUBY_INSTALL_NAME).res.@OBJEXT@</div><div class='hunk'>@@ -67,11 +62,7 @@ $(WPROGRAM): $(RUBYW_INSTALL_NAME).res.@OBJEXT@</div><div class='ctx'> 	$(ECHO) linking $@</div><div class='ctx'> 	$(Q) $(PURIFY) $(CC) -mwindows -e $(SYMBOL_PREFIX)mainCRTStartup $(LDFLAGS) $(XLDFLAGS) \</div><div class='ctx'> 	  $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@</div><div class='del'>-$(STUBPROGRAM): $(RUBY_INSTALL_NAME).res.@OBJEXT@ stub.@OBJEXT@</div><div class='del'>-	@rm -f $@</div><div class='del'>-	$(ECHO) linking $@</div><div class='del'>-	$(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) \</div><div class='del'>-	  stub.@OBJEXT@ $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@</div><div class='add'>+$(STUBPROGRAM): $(RUBY_INSTALL_NAME).res.@OBJEXT@</div><div class='ctx'> </div><div class='ctx'> $(RUBY_EXP): $(LIBRUBY_A)</div><div class='ctx'> 	$(ECHO) creating $@</div><div class='hunk'>@@ -86,7 +77,15 @@ GNUmakefile:	$(srcdir)/cygwin/GNUmakefile.in</div><div class='ctx'> ifeq (@target_os@,mingw32)</div><div class='ctx'> $(OBJS) $(MAINOBJ): win32.h</div><div class='ctx'> </div><div class='del'>-dir.$(OBJEXT) win32.$(OBJEXT): win32/dir.h</div><div class='add'>+dir.$(OBJEXT) win32/win32.$(OBJEXT): win32/dir.h</div><div class='add'>+file.$(OBJEXT) win32/win32.$(OBJEXT): win32/file.h</div><div class='add'>+</div><div class='add'>+MSYS2_ARG_CONV_EXCL_PARAM = --exclude=;--name=</div><div class='add'>+</div><div class='add'>+yes-test-ruby:	 export MSYS2_ARG_CONV_EXCL=$(MSYS2_ARG_CONV_EXCL_PARAM)</div><div class='add'>+yes-test-all:	 export MSYS2_ARG_CONV_EXCL=$(MSYS2_ARG_CONV_EXCL_PARAM)</div><div class='add'>+yes-test-almost: export MSYS2_ARG_CONV_EXCL=$(MSYS2_ARG_CONV_EXCL_PARAM)</div><div class='add'>+</div><div class='ctx'> endif</div><div class='ctx'> </div><div class='ctx'> $(LIBRUBY_SO): $(RUBYDEF)</div><div class='hunk'>@@ -99,7 +98,7 @@ clean-local::</div><div class='ctx'> 	@$(RM) $(RUBYDEF)</div><div class='ctx'> </div><div class='ctx'> ifeq (@target_os@,cygwin)</div><div class='del'>-cygwin-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)$(TEENY).dll: $(LIBRUBY_A) $(RUBYDEF)</div><div class='add'>+cygwin-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)0.dll: $(LIBRUBY_A) $(RUBYDEF)</div><div class='ctx'> 	$(ECHO) generating $@</div><div class='ctx'> 	$(Q) @DLLWRAP@ -s --def=$(RUBYDEF) -o $@</div><div class='ctx'> endif</div><div class='head'>diff --git a/debug.c b/debug.c<br/>index b526ab9523..8a5e69bbf5 100644<br/>--- a/<a href='/ruby.git/tree/debug.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>debug.c</a><br/>+++ b/<a href='/ruby.git/tree/debug.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>debug.c</a></div><div class='hunk'>@@ -25,42 +25,11 @@ const union {</div><div class='ctx'>     enum node_type              node_type;</div><div class='ctx'>     enum ruby_method_ids        method_ids;</div><div class='ctx'>     enum ruby_id_types          id_types;</div><div class='add'>+    enum ruby_fl_type           fl_types;</div><div class='add'>+    enum ruby_encoding_consts   encoding_consts;</div><div class='add'>+    enum ruby_coderange_type    enc_coderange_types;</div><div class='add'>+    enum ruby_econv_flag_type   econv_flag_types;</div><div class='ctx'>     enum {</div><div class='del'>-        RUBY_ENCODING_INLINE_MAX = ENCODING_INLINE_MAX,</div><div class='del'>-        RUBY_ENCODING_SHIFT = ENCODING_SHIFT,</div><div class='del'>-        RUBY_ENC_CODERANGE_MASK    = ENC_CODERANGE_MASK,</div><div class='del'>-        RUBY_ENC_CODERANGE_UNKNOWN = ENC_CODERANGE_UNKNOWN,</div><div class='del'>-        RUBY_ENC_CODERANGE_7BIT    = ENC_CODERANGE_7BIT,</div><div class='del'>-        RUBY_ENC_CODERANGE_VALID   = ENC_CODERANGE_VALID,</div><div class='del'>-        RUBY_ENC_CODERANGE_BROKEN  = ENC_CODERANGE_BROKEN,</div><div class='del'>-        RUBY_FL_PROMOTED0   = FL_PROMOTED0,</div><div class='del'>-        RUBY_FL_PROMOTED1   = FL_PROMOTED1,</div><div class='del'>-        RUBY_FL_PROMOTED    = FL_PROMOTED0|FL_PROMOTED1,</div><div class='del'>-        RUBY_FL_FINALIZE    = FL_FINALIZE,</div><div class='del'>-        RUBY_FL_TAINT       = FL_TAINT,</div><div class='del'>-        RUBY_FL_EXIVAR      = FL_EXIVAR,</div><div class='del'>-        RUBY_FL_FREEZE      = FL_FREEZE,</div><div class='del'>-        RUBY_FL_SINGLETON   = FL_SINGLETON,</div><div class='del'>-        RUBY_FL_USER0       = FL_USER0,</div><div class='del'>-        RUBY_FL_USER1       = FL_USER1,</div><div class='del'>-        RUBY_FL_USER2       = FL_USER2,</div><div class='del'>-        RUBY_FL_USER3       = FL_USER3,</div><div class='del'>-        RUBY_FL_USER4       = FL_USER4,</div><div class='del'>-        RUBY_FL_USER5       = FL_USER5,</div><div class='del'>-        RUBY_FL_USER6       = FL_USER6,</div><div class='del'>-        RUBY_FL_USER7       = FL_USER7,</div><div class='del'>-        RUBY_FL_USER8       = FL_USER8,</div><div class='del'>-        RUBY_FL_USER9       = FL_USER9,</div><div class='del'>-        RUBY_FL_USER10      = FL_USER10,</div><div class='del'>-        RUBY_FL_USER11      = FL_USER11,</div><div class='del'>-        RUBY_FL_USER12      = FL_USER12,</div><div class='del'>-        RUBY_FL_USER13      = FL_USER13,</div><div class='del'>-        RUBY_FL_USER14      = FL_USER14,</div><div class='del'>-        RUBY_FL_USER15      = FL_USER15,</div><div class='del'>-        RUBY_FL_USER16      = FL_USER16,</div><div class='del'>-        RUBY_FL_USER17      = FL_USER17,</div><div class='del'>-        RUBY_FL_USER18      = FL_USER18,</div><div class='del'>-        RUBY_FL_USHIFT      = FL_USHIFT,</div><div class='ctx'>         RUBY_NODE_TYPESHIFT = NODE_TYPESHIFT,</div><div class='ctx'>         RUBY_NODE_TYPEMASK  = NODE_TYPEMASK,</div><div class='ctx'>         RUBY_NODE_LSHIFT    = NODE_LSHIFT,</div><div class='hunk'>@@ -68,9 +37,7 @@ const union {</div><div class='ctx'>     } various;</div><div class='ctx'> } ruby_dummy_gdb_enums;</div><div class='ctx'> </div><div class='del'>-const VALUE RUBY_FL_USER19    = FL_USER19;</div><div class='ctx'> const SIGNED_VALUE RUBY_NODE_LMASK = NODE_LMASK;</div><div class='del'>-const VALUE RUBY_ENCODING_MASK  = ENCODING_MASK;</div><div class='ctx'> </div><div class='ctx'> int</div><div class='ctx'> ruby_debug_print_indent(int level, int debug_level, int indent_level)</div><div class='hunk'>@@ -92,14 +59,16 @@ ruby_debug_printf(const char *format, ...)</div><div class='ctx'>     va_end(ap);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+#include "gc.h"</div><div class='add'>+</div><div class='ctx'> VALUE</div><div class='ctx'> ruby_debug_print_value(int level, int debug_level, const char *header, VALUE obj)</div><div class='ctx'> {</div><div class='ctx'>     if (level &lt; debug_level) {</div><div class='del'>-	VALUE str;</div><div class='del'>-	str = rb_inspect(obj);</div><div class='del'>-	fprintf(stderr, "DBG&gt; %s: %s\n", header,</div><div class='del'>-		obj == (VALUE)(SIGNED_VALUE)-1 ? "" : StringValueCStr(str));</div><div class='add'>+	char buff[0x100];</div><div class='add'>+	rb_raw_obj_info(buff, 0x100, obj);</div><div class='add'>+</div><div class='add'>+	fprintf(stderr, "DBG&gt; %s: %s\n", header, buff);</div><div class='ctx'> 	fflush(stderr);</div><div class='ctx'>     }</div><div class='ctx'>     return obj;</div><div class='hunk'>@@ -115,7 +84,7 @@ ID</div><div class='ctx'> ruby_debug_print_id(int level, int debug_level, const char *header, ID id)</div><div class='ctx'> {</div><div class='ctx'>     if (level &lt; debug_level) {</div><div class='del'>-	fprintf(stderr, "DBG&gt; %s: %"PRIsVALUE"\n", header, rb_id2str(id));</div><div class='add'>+	fprintf(stderr, "DBG&gt; %s: %s\n", header, rb_id2name(id));</div><div class='ctx'> 	fflush(stderr);</div><div class='ctx'>     }</div><div class='ctx'>     return id;</div><div class='head'>diff --git a/defs/default_gems b/defs/default_gems<br/>deleted file mode 100644<br/>index ce9010910a..0000000000<br/>--- a/<a href='/ruby.git/tree/defs/default_gems?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>defs/default_gems</a><br/>+++ /dev/null</div><div class='hunk'>@@ -1,4 +0,0 @@</div><div class='del'>-# gem		base directory		versioning file			[executable files under bin]</div><div class='del'>-rake		lib/rake		lib/rake.rb			[rake]</div><div class='del'>-rdoc		lib/rdoc		lib/rdoc.rb			[rdoc ri]</div><div class='del'>-json		ext/json		ext/json/lib/json/version.rb</div><div class='head'>diff --git a/defs/gmake.mk b/defs/gmake.mk<br/>index f5033b2245..2233627f8c 100644<br/>--- a/<a href='/ruby.git/tree/defs/gmake.mk?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>defs/gmake.mk</a><br/>+++ b/<a href='/ruby.git/tree/defs/gmake.mk?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>defs/gmake.mk</a></div><div class='hunk'>@@ -1,17 +1,26 @@</div><div class='ctx'> # -*- makefile-gmake -*-</div><div class='ctx'> gnumake = yes</div><div class='ctx'> </div><div class='add'>+CHECK_TARGETS := exam love check%</div><div class='ctx'> TEST_TARGETS := $(filter check test check% test% btest%,$(MAKECMDGOALS))</div><div class='ctx'> TEST_TARGETS += $(subst check,test-all,$(patsubst check-%,test-%,$(TEST_TARGETS)))</div><div class='ctx'> TEST_TARGETS := $(patsubst test-%,yes-test-%,$(patsubst btest-%,yes-btest-%,$(TEST_TARGETS)))</div><div class='ctx'> TEST_DEPENDS := $(if $(TEST_TARGETS),$(filter all main exts,$(MAKECMDGOALS)))</div><div class='del'>-TEST_DEPENDS += $(TEST_DEPENDS) $(if $(filter check%,$(MAKECMDGOALS)),main)</div><div class='del'>-TEST_DEPENDS += $(if $(filter all,$(INSTALLDOC)),docs)</div><div class='add'>+TEST_DEPENDS += $(if $(filter $(CHECK_TARGETS),$(MAKECMDGOALS)),main)</div><div class='add'>+TEST_DEPENDS += $(if $(filter main,$(TEST_DEPENDS)),$(if $(filter all,$(INSTALLDOC)),docs))</div><div class='ctx'> </div><div class='ctx'> ifneq ($(filter -O0 -Od,$(optflags)),)</div><div class='ctx'> override XCFLAGS := $(filter-out -D_FORTIFY_SOURCE=%,$(XCFLAGS))</div><div class='ctx'> endif</div><div class='ctx'> </div><div class='add'>+ifeq ($(if $(filter all main exts enc trans libencs libenc libtrans \</div><div class='add'>+		    prog program ruby ruby$(EXEEXT) \</div><div class='add'>+		    wprogram rubyw rubyw$(EXEEXT) \</div><div class='add'>+		    miniruby$(EXEEXT) mini,\</div><div class='add'>+	     $(MAKECMDGOALS)),,$(MAKECMDGOALS)),)</div><div class='add'>+-include $(SHOWFLAGS)</div><div class='add'>+endif</div><div class='add'>+</div><div class='ctx'> ifneq ($(filter universal-%,$(arch)),)</div><div class='ctx'> define archcmd</div><div class='ctx'> %.$(1).S: %.c</div><div class='hunk'>@@ -31,16 +40,18 @@ $(foreach arch,$(filter -arch=%,$(subst -arch ,-arch=,$(ARCH_FLAG))),\</div><div class='ctx'> 	$(eval $(call archcmd,$(patsubst -arch=%,%,$(value arch)),$(patsubst -arch=%,-arch %,$(value arch)))))</div><div class='ctx'> endif</div><div class='ctx'> </div><div class='del'>-ifneq ($(filter love check% test,$(MAKECMDGOALS)),)</div><div class='add'>+ifneq ($(filter $(CHECK_TARGETS) test,$(MAKECMDGOALS)),)</div><div class='add'>+yes-test-basic: $(TEST_DEPENDS) yes-test-knownbug</div><div class='ctx'> yes-test-knownbug: $(TEST_DEPENDS) yes-btest-ruby</div><div class='del'>-yes-btest-ruby: $(TEST_DEPENDS) yes-test-sample</div><div class='del'>-yes-test-sample: $(TEST_DEPENDS)</div><div class='add'>+yes-btest-ruby: $(TEST_DEPENDS)</div><div class='ctx'> endif</div><div class='del'>-ifneq ($(filter love check%,$(MAKECMDGOALS)) $(filter test-all,$(TEST_TARGETS)),)</div><div class='del'>-yes-test-all yes-test-ruby: $(filter-out %test-all %test-ruby check%,$(TEST_TARGETS))</div><div class='add'>+ifneq ($(filter $(CHECK_TARGETS),$(MAKECMDGOALS)) $(filter yes-test-all,$(TEST_TARGETS)),)</div><div class='add'>+yes-test-testframework yes-test-almost yes-test-ruby: $(filter-out %test-all %test-ruby check%,$(TEST_TARGETS)) \</div><div class='add'>+	yes-test-basic</div><div class='ctx'> endif</div><div class='del'>-ifneq ($(filter love check%,$(MAKECMDGOALS))$(if $(filter test-all,$(MAKECMDGOALS)),$(filter test-knownbug,$(MAKECMDGOALS))),)</div><div class='del'>-yes-test-all yes-test-ruby: yes-test-knownbug</div><div class='add'>+ifneq ($(filter $(CHECK_TARGETS),$(MAKECMDGOALS))$(if $(filter test-all,$(MAKECMDGOALS)),$(filter test-knownbug,$(MAKECMDGOALS))),)</div><div class='add'>+yes-test-testframework yes-test-almost yes-test-ruby: yes-test-knownbug</div><div class='add'>+yes-test-almost: yes-test-testframework</div><div class='ctx'> endif</div><div class='ctx'> </div><div class='ctx'> $(TEST_TARGETS): $(TEST_DEPENDS)</div><div class='hunk'>@@ -55,9 +66,62 @@ install-prereq: uninstall</div><div class='ctx'> uninstall sudo-precheck: all $(if $(filter all,$(INSTALLDOC)),docs)</div><div class='ctx'> endif</div><div class='ctx'> </div><div class='add'>+ifneq ($(filter exam,$(MAKECMDGOALS)),)</div><div class='add'>+test-rubyspec: check</div><div class='add'>+yes-test-all no-test-all: test</div><div class='add'>+endif</div><div class='add'>+</div><div class='ctx'> ifneq ($(filter love,$(MAKECMDGOALS)),)</div><div class='ctx'> showflags: up</div><div class='del'>-sudo-precheck: test</div><div class='add'>+sudo-precheck: test yes-test-testframework no-test-testframework</div><div class='ctx'> install-prereq: sudo-precheck</div><div class='ctx'> yes-test-all no-test-all: install</div><div class='add'>+yes-test-almost no-test-almost: install</div><div class='add'>+endif</div><div class='add'>+</div><div class='add'>+$(srcdir)/missing/des_tables.c: $(srcdir)/missing/crypt.c</div><div class='add'>+ifeq ($(if $(filter yes,$(CROSS_COMPILING)),,$(CC)),)</div><div class='add'>+	touch $@</div><div class='add'>+else</div><div class='add'>+	@$(ECHO) building make_des_table</div><div class='add'>+	$(CC) $(CPPFLAGS) -DDUMP $(LDFLAGS) $(XLDFLAGS) $(LIBS) -omake_des_table $(srcdir)/missing/crypt.c</div><div class='add'>+	@[ -x ./make_des_table ]</div><div class='add'>+	@$(ECHO) generating $@</div><div class='add'>+	$(Q) $(MAKEDIRS) $(@D)</div><div class='add'>+	$(Q) ./make_des_table &gt; $@.new</div><div class='add'>+	$(Q) mv $@.new $@</div><div class='add'>+	$(Q) $(RMALL) make_des_table*</div><div class='add'>+endif</div><div class='add'>+</div><div class='add'>+STUBPROGRAM = rubystub$(EXEEXT)</div><div class='add'>+IGNOREDPATTERNS = %~ .% %.orig %.rej \#%\#</div><div class='add'>+SCRIPTBINDIR := $(if $(EXEEXT),,exec/)</div><div class='add'>+SCRIPTPROGRAMS = $(addprefix $(SCRIPTBINDIR),$(addsuffix $(EXEEXT),$(filter-out $(IGNOREDPATTERNS),$(notdir $(wildcard $(srcdir)/bin/*)))))</div><div class='add'>+</div><div class='add'>+stub: $(STUBPROGRAM)</div><div class='add'>+scriptbin: $(SCRIPTPROGRAMS)</div><div class='add'>+ifneq ($(STUBPROGRAM),rubystub)</div><div class='add'>+rubystub: $(STUBPROGRAM)</div><div class='ctx'> endif</div><div class='add'>+</div><div class='add'>+$(SCRIPTPROGRAMS): $(STUBPROGRAM)</div><div class='add'>+</div><div class='add'>+$(STUBPROGRAM): rubystub.$(OBJEXT) $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP)</div><div class='add'>+</div><div class='add'>+rubystub$(EXEEXT):</div><div class='add'>+	@rm -f $@</div><div class='add'>+	$(ECHO) linking $@</div><div class='add'>+	$(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) rubystub.$(OBJEXT) $(EXTOBJS) $(LIBRUBYARG) $(MAINLIBS) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@</div><div class='add'>+	$(Q) $(POSTLINK)</div><div class='add'>+	$(if $(STRIP),$(Q) $(STRIP) $@)</div><div class='add'>+</div><div class='add'>+$(SCRIPTBINDIR)%$(EXEEXT): bin/% $(STUBPROGRAM) \</div><div class='add'>+			   $(if $(SCRIPTBINDIR),$(TIMESTAMPDIR)/.exec.time)</div><div class='add'>+	$(ECHO) generating $@</div><div class='add'>+	$(Q) { cat $(STUBPROGRAM); echo; sed -e '1{' -e '/^#!.*ruby/!i\' -e '#!/bin/ruby' -e '}' $&lt;; } &gt; $@</div><div class='add'>+	$(Q) chmod +x $@</div><div class='add'>+	$(Q) $(POSTLINK)</div><div class='add'>+</div><div class='add'>+$(TIMESTAMPDIR)/.exec.time:</div><div class='add'>+	$(Q) mkdir exec</div><div class='add'>+	$(Q) exit &gt; $@</div><div class='head'>diff --git a/defs/id.def b/defs/id.def<br/>index d4cd5e77de..4fe9d3ccd8 100644<br/>--- a/<a href='/ruby.git/tree/defs/id.def?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>defs/id.def</a><br/>+++ b/<a href='/ruby.git/tree/defs/id.def?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>defs/id.def</a></div><div class='hunk'>@@ -1,5 +1,7 @@</div><div class='ctx'> # -*- mode: ruby; coding: us-ascii -*-</div><div class='ctx'> firstline, predefined = __LINE__+1, %[\</div><div class='add'>+  max</div><div class='add'>+  min</div><div class='ctx'>   freeze</div><div class='ctx'>   inspect</div><div class='ctx'>   intern</div><div class='hunk'>@@ -60,6 +62,47 @@ firstline, predefined = __LINE__+1, %[\</div><div class='ctx'>   core#hash_merge_ary</div><div class='ctx'>   core#hash_merge_ptr</div><div class='ctx'>   core#hash_merge_kwd</div><div class='add'>+</div><div class='add'>+  -                                                     debug#created_info</div><div class='add'>+</div><div class='add'>+  $_                                                    LASTLINE</div><div class='add'>+  $~                                                    BACKREF</div><div class='add'>+]</div><div class='add'>+</div><div class='add'>+# VM ID         OP      Parser Token</div><div class='add'>+token_ops = %[\</div><div class='add'>+  Dot2          ..      DOT2</div><div class='add'>+  Dot3          ...     DOT3</div><div class='add'>+  UPlus         +@      UPLUS</div><div class='add'>+  UMinus        -@      UMINUS</div><div class='add'>+  Pow           **      POW</div><div class='add'>+  DSTAR         **</div><div class='add'>+  Cmp           &lt;=&gt;     CMP</div><div class='add'>+  PLUS          +</div><div class='add'>+  MINUS         -</div><div class='add'>+  MULT          *</div><div class='add'>+  DIV           /</div><div class='add'>+  MOD           %</div><div class='add'>+  LTLT          &lt;&lt;      LSHFT</div><div class='add'>+  GTGT          &gt;&gt;      RSHFT</div><div class='add'>+  LT            &lt;</div><div class='add'>+  LE            &lt;=      LEQ</div><div class='add'>+  GT            &gt;</div><div class='add'>+  GE            &gt;=      GEQ</div><div class='add'>+  Eq            ==      EQ</div><div class='add'>+  Eqq           ===     EQQ</div><div class='add'>+  Neq           !=      NEQ</div><div class='add'>+  Not           !</div><div class='add'>+  Backquote     `</div><div class='add'>+  EqTilde       =~      MATCH</div><div class='add'>+  NeqTilde      !~      NMATCH</div><div class='add'>+  AREF          []</div><div class='add'>+  ASET          []=</div><div class='add'>+  COLON2        ::</div><div class='add'>+  COLON3        ::</div><div class='add'>+  ANDOP         &amp;&amp;</div><div class='add'>+  OROP          ||</div><div class='add'>+  ANDDOT        &amp;.</div><div class='ctx'> ]</div><div class='ctx'> </div><div class='ctx'> class KeywordError &lt; RuntimeError</div><div class='hunk'>@@ -76,6 +119,7 @@ global_ids = []</div><div class='ctx'> const_ids = []</div><div class='ctx'> class_ids = []</div><div class='ctx'> attrset_ids = []</div><div class='add'>+token_op_ids = []</div><div class='ctx'> names = {}</div><div class='ctx'> predefined.split(/^/).each_with_index do |line, num|</div><div class='ctx'>   next if /^#/ =~ line</div><div class='hunk'>@@ -92,6 +136,10 @@ predefined.split(/^/).each_with_index do |line, num|</div><div class='ctx'>     token.sub!(/\A@/, "_I_")</div><div class='ctx'>     token.gsub!(/\W+/, "")</div><div class='ctx'>   end</div><div class='add'>+  if name == '-'</div><div class='add'>+    preserved_ids &lt;&lt; token</div><div class='add'>+    next</div><div class='add'>+  end</div><div class='ctx'>   if prev = names[name]</div><div class='ctx'>     KeywordError.raise("#{name} is already registered at line #{prev+firstline}", firstline+num)</div><div class='ctx'>   end</div><div class='hunk'>@@ -102,7 +150,7 @@ predefined.split(/^/).each_with_index do |line, num|</div><div class='ctx'>   case name</div><div class='ctx'>   when /\A[A-Z]\w*\z/; const_ids</div><div class='ctx'>   when /\A(?!\d)\w+\z/; local_ids</div><div class='del'>-  when /\A\$(?:\d+|(?!\d)\w+)\z/; global_ids</div><div class='add'>+  when /\A\$(?:\d+|(?!\d)\w+|\W)\z/; global_ids</div><div class='ctx'>   when /\A@@(?!\d)\w+\z/; class_ids</div><div class='ctx'>   when /\A@(?!\d)\w+\z/; instance_ids</div><div class='ctx'>   when /\A((?!\d)\w+)=\z/; attrset_ids</div><div class='hunk'>@@ -110,6 +158,14 @@ predefined.split(/^/).each_with_index do |line, num|</div><div class='ctx'>   end &lt;&lt; token</div><div class='ctx'>   predefined_ids[token] = name</div><div class='ctx'> end</div><div class='add'>+token_ops.split(/^/).each do |line|</div><div class='add'>+  next if /^#/ =~ line</div><div class='add'>+  line.sub!(/\s+#.*/, '')</div><div class='add'>+  id, op, token = line.split</div><div class='add'>+  next unless id and op</div><div class='add'>+  token ||= (id unless /\A\W\z/ =~ op)</div><div class='add'>+  token_op_ids &lt;&lt; [id, op, token]</div><div class='add'>+end</div><div class='ctx'> {</div><div class='ctx'>   "LOCAL" =&gt; local_ids,</div><div class='ctx'>   "INSTANCE" =&gt; instance_ids,</div><div class='hunk'>@@ -119,4 +175,5 @@ end</div><div class='ctx'>   "ATTRSET" =&gt; attrset_ids,</div><div class='ctx'>   :preserved =&gt; preserved_ids,</div><div class='ctx'>   :predefined =&gt; predefined_ids,</div><div class='add'>+  :token_op =&gt; token_op_ids,</div><div class='ctx'> }</div><div class='head'>diff --git a/defs/keywords b/defs/keywords<br/>index 1b5719aa85..e0d931cd1f 100644<br/>--- a/<a href='/ruby.git/tree/defs/keywords?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>defs/keywords</a><br/>+++ b/<a href='/ruby.git/tree/defs/keywords?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>defs/keywords</a></div><div class='hunk'>@@ -1,5 +1,5 @@</div><div class='ctx'> %{</div><div class='del'>-struct kwtable {const char *name; int id[2]; enum lex_state_e state;};</div><div class='add'>+struct kwtable {int name, id[2], state;};</div><div class='ctx'> const struct kwtable *rb_reserved_word(const char *, unsigned int);</div><div class='ctx'> #ifndef RIPPER</div><div class='ctx'> static const struct kwtable *reserved_word(const char *, unsigned int);</div><div class='hunk'>@@ -13,7 +13,7 @@ __LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END</div><div class='ctx'> __FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END</div><div class='ctx'> BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END</div><div class='ctx'> END, {keyword_END, keyword_END}, EXPR_END</div><div class='del'>-alias, {keyword_alias, keyword_alias}, EXPR_FNAME</div><div class='add'>+alias, {keyword_alias, keyword_alias}, EXPR_FNAME|EXPR_FITEM</div><div class='ctx'> and, {keyword_and, keyword_and}, EXPR_VALUE</div><div class='ctx'> begin, {keyword_begin, keyword_begin}, EXPR_BEG</div><div class='ctx'> break, {keyword_break, keyword_break}, EXPR_MID</div><div class='hunk'>@@ -43,7 +43,7 @@ self, {keyword_self, keyword_self}, EXPR_END</div><div class='ctx'> super, {keyword_super, keyword_super}, EXPR_ARG</div><div class='ctx'> then, {keyword_then, keyword_then}, EXPR_BEG</div><div class='ctx'> true, {keyword_true, keyword_true}, EXPR_END</div><div class='del'>-undef, {keyword_undef, keyword_undef}, EXPR_FNAME</div><div class='add'>+undef, {keyword_undef, keyword_undef}, EXPR_FNAME|EXPR_FITEM</div><div class='ctx'> unless, {keyword_unless, modifier_unless}, EXPR_VALUE</div><div class='ctx'> until, {keyword_until, modifier_until}, EXPR_VALUE</div><div class='ctx'> when, {keyword_when, keyword_when}, EXPR_VALUE</div><div class='head'>diff --git a/defs/lex.c.src b/defs/lex.c.src<br/>index 1b5719aa85..e0d931cd1f 100644<br/>--- a/<a href='/ruby.git/tree/defs/lex.c.src?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>defs/lex.c.src</a><br/>+++ b/<a href='/ruby.git/tree/defs/lex.c.src?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>defs/lex.c.src</a></div><div class='hunk'>@@ -1,5 +1,5 @@</div><div class='ctx'> %{</div><div class='del'>-struct kwtable {const char *name; int id[2]; enum lex_state_e state;};</div><div class='add'>+struct kwtable {int name, id[2], state;};</div><div class='ctx'> const struct kwtable *rb_reserved_word(const char *, unsigned int);</div><div class='ctx'> #ifndef RIPPER</div><div class='ctx'> static const struct kwtable *reserved_word(const char *, unsigned int);</div><div class='hunk'>@@ -13,7 +13,7 @@ __LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END</div><div class='ctx'> __FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END</div><div class='ctx'> BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END</div><div class='ctx'> END, {keyword_END, keyword_END}, EXPR_END</div><div class='del'>-alias, {keyword_alias, keyword_alias}, EXPR_FNAME</div><div class='add'>+alias, {keyword_alias, keyword_alias}, EXPR_FNAME|EXPR_FITEM</div><div class='ctx'> and, {keyword_and, keyword_and}, EXPR_VALUE</div><div class='ctx'> begin, {keyword_begin, keyword_begin}, EXPR_BEG</div><div class='ctx'> break, {keyword_break, keyword_break}, EXPR_MID</div><div class='hunk'>@@ -43,7 +43,7 @@ self, {keyword_self, keyword_self}, EXPR_END</div><div class='ctx'> super, {keyword_super, keyword_super}, EXPR_ARG</div><div class='ctx'> then, {keyword_then, keyword_then}, EXPR_BEG</div><div class='ctx'> true, {keyword_true, keyword_true}, EXPR_END</div><div class='del'>-undef, {keyword_undef, keyword_undef}, EXPR_FNAME</div><div class='add'>+undef, {keyword_undef, keyword_undef}, EXPR_FNAME|EXPR_FITEM</div><div class='ctx'> unless, {keyword_unless, modifier_unless}, EXPR_VALUE</div><div class='ctx'> until, {keyword_until, modifier_until}, EXPR_VALUE</div><div class='ctx'> when, {keyword_when, keyword_when}, EXPR_VALUE</div><div class='head'>diff --git a/defs/opt_insn_unif.def b/defs/opt_insn_unif.def<br/>index 1ac613dbea..31ae2eb6a1 100644<br/>--- a/<a href='/ruby.git/tree/defs/opt_insn_unif.def?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>defs/opt_insn_unif.def</a><br/>+++ b/<a href='/ruby.git/tree/defs/opt_insn_unif.def?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>defs/opt_insn_unif.def</a></div><div class='hunk'>@@ -8,12 +8,10 @@ __END__</div><div class='ctx'> putobject putobject</div><div class='ctx'> putobject putstring</div><div class='ctx'> putobject setlocal</div><div class='del'>-putobject setdynamic</div><div class='ctx'> </div><div class='ctx'> putstring putstring</div><div class='ctx'> putstring putobject</div><div class='ctx'> putstring setlocal</div><div class='del'>-putstring setdynamic</div><div class='ctx'> </div><div class='ctx'> # putnil end</div><div class='ctx'> </div><div class='head'>diff --git a/dir.c b/dir.c<br/>index 84413c6b57..90fc1efed9 100644<br/>--- a/<a href='/ruby.git/tree/dir.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>dir.c</a><br/>+++ b/<a href='/ruby.git/tree/dir.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>dir.c</a></div><div class='hunk'>@@ -12,6 +12,7 @@</div><div class='ctx'> **********************************************************************/</div><div class='ctx'> </div><div class='ctx'> #include "internal.h"</div><div class='add'>+#include "encindex.h"</div><div class='ctx'> </div><div class='ctx'> #include &lt;sys/types.h&gt;</div><div class='ctx'> #include &lt;sys/stat.h&gt;</div><div class='hunk'>@@ -20,6 +21,7 @@</div><div class='ctx'> #include &lt;unistd.h&gt;</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='add'>+#undef HAVE_DIRENT_NAMLEN</div><div class='ctx'> #if defined HAVE_DIRENT_H &amp;&amp; !defined _WIN32</div><div class='ctx'> # include &lt;dirent.h&gt;</div><div class='ctx'> # define NAMLEN(dirent) strlen((dirent)-&gt;d_name)</div><div class='hunk'>@@ -29,6 +31,7 @@</div><div class='ctx'> #else</div><div class='ctx'> # define dirent direct</div><div class='ctx'> # define NAMLEN(dirent) (dirent)-&gt;d_namlen</div><div class='add'>+# define HAVE_DIRENT_NAMLEN 1</div><div class='ctx'> # if HAVE_SYS_NDIR_H</div><div class='ctx'> #  include &lt;sys/ndir.h&gt;</div><div class='ctx'> # endif</div><div class='hunk'>@@ -80,14 +83,19 @@ char *strchr(char*,char);</div><div class='ctx'> #include &lt;sys/attr.h&gt;</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='add'>+#define USE_NAME_ON_FS_REAL_BASENAME 1	/* platform dependent APIs to</div><div class='add'>+					 * get real basenames */</div><div class='add'>+#define USE_NAME_ON_FS_BY_FNMATCH 2	/* select the matching</div><div class='add'>+					 * basename by fnmatch */</div><div class='add'>+</div><div class='ctx'> #ifdef HAVE_GETATTRLIST</div><div class='del'>-# define USE_NAME_ON_FS 1</div><div class='add'>+# define USE_NAME_ON_FS USE_NAME_ON_FS_REAL_BASENAME</div><div class='ctx'> # define RUP32(size) ((size)+3/4)</div><div class='ctx'> # define SIZEUP32(type) RUP32(sizeof(type))</div><div class='ctx'> #elif defined _WIN32</div><div class='del'>-# define USE_NAME_ON_FS 1</div><div class='add'>+# define USE_NAME_ON_FS USE_NAME_ON_FS_REAL_BASENAME</div><div class='ctx'> #elif defined DOSISH</div><div class='del'>-# define USE_NAME_ON_FS 2	/* by fnmatch */</div><div class='add'>+# define USE_NAME_ON_FS USE_NAME_ON_FS_BY_FNMATCH</div><div class='ctx'> #else</div><div class='ctx'> # define USE_NAME_ON_FS 0</div><div class='ctx'> #endif</div><div class='hunk'>@@ -147,6 +155,26 @@ has_nonascii(const char *ptr, size_t len)</div><div class='ctx'> # define IF_NORMALIZE_UTF8PATH(something) /* nothing */</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='add'>+#ifndef IFTODT</div><div class='add'>+# define IFTODT(m)	(((m) &amp; S_IFMT) / ((~S_IFMT &amp; S_IFMT-1) + 1))</div><div class='add'>+#endif</div><div class='add'>+</div><div class='add'>+typedef enum {</div><div class='add'>+#ifdef DT_UNKNOWN</div><div class='add'>+    path_exist     = DT_UNKNOWN,</div><div class='add'>+    path_directory = DT_DIR,</div><div class='add'>+    path_regular   = DT_REG,</div><div class='add'>+    path_symlink   = DT_LNK,</div><div class='add'>+#else</div><div class='add'>+    path_exist,</div><div class='add'>+    path_directory = IFTODT(S_IFDIR),</div><div class='add'>+    path_regular   = IFTODT(S_IFREG),</div><div class='add'>+    path_symlink   = IFTODT(S_IFLNK),</div><div class='add'>+#endif</div><div class='add'>+    path_noent = -1,</div><div class='add'>+    path_unknown = -2</div><div class='add'>+} rb_pathtype_t;</div><div class='add'>+</div><div class='ctx'> #define FNM_NOESCAPE	0x01</div><div class='ctx'> #define FNM_PATHNAME	0x02</div><div class='ctx'> #define FNM_DOTMATCH	0x04</div><div class='hunk'>@@ -157,6 +185,11 @@ has_nonascii(const char *ptr, size_t len)</div><div class='ctx'> #else</div><div class='ctx'> #define FNM_SYSCASE	0</div><div class='ctx'> #endif</div><div class='add'>+#if _WIN32</div><div class='add'>+#define FNM_SHORTNAME	0x20</div><div class='add'>+#else</div><div class='add'>+#define FNM_SHORTNAME	0</div><div class='add'>+#endif</div><div class='ctx'> </div><div class='ctx'> #define FNM_NOMATCH	1</div><div class='ctx'> #define FNM_ERROR	2</div><div class='hunk'>@@ -233,7 +266,7 @@ bracket(</div><div class='ctx'>     return ok == not ? NULL : (char *)p + 1;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-/* If FNM_PATHNAME is set, only path element will be matched. (upto '/' or '\0')</div><div class='add'>+/* If FNM_PATHNAME is set, only path element will be matched. (up to '/' or '\0')</div><div class='ctx'>    Otherwise, entire string will be matched.</div><div class='ctx'>    End marker itself won't be compared.</div><div class='ctx'>    And if function succeeds, *pcur reaches end marker.</div><div class='hunk'>@@ -412,7 +445,7 @@ dir_free(void *ptr)</div><div class='ctx'> static size_t</div><div class='ctx'> dir_memsize(const void *ptr)</div><div class='ctx'> {</div><div class='del'>-    return ptr ? sizeof(struct dir_data) : 0;</div><div class='add'>+    return sizeof(struct dir_data);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static const rb_data_type_t dir_data_type = {</div><div class='hunk'>@@ -465,7 +498,7 @@ dir_initialize(int argc, VALUE *argv, VALUE dir)</div><div class='ctx'>     const char *path;</div><div class='ctx'> </div><div class='ctx'>     if (!keyword_ids[0]) {</div><div class='del'>-	keyword_ids[0] = rb_intern("encoding");</div><div class='add'>+	keyword_ids[0] = rb_id_encoding();</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='ctx'>     fsenc = rb_filesystem_encoding();</div><div class='hunk'>@@ -493,8 +526,7 @@ dir_initialize(int argc, VALUE *argv, VALUE dir)</div><div class='ctx'>     path = RSTRING_PTR(dirname);</div><div class='ctx'>     dp-&gt;dir = opendir(path);</div><div class='ctx'>     if (dp-&gt;dir == NULL) {</div><div class='del'>-	if (errno == EMFILE || errno == ENFILE) {</div><div class='del'>-	    rb_gc();</div><div class='add'>+	if (rb_gc_for_fd(errno)) {</div><div class='ctx'> 	    dp-&gt;dir = opendir(path);</div><div class='ctx'> 	}</div><div class='ctx'> #ifdef HAVE_GETATTRLIST</div><div class='hunk'>@@ -553,11 +585,16 @@ dir_closed(void)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static struct dir_data *</div><div class='del'>-dir_check(VALUE dir)</div><div class='add'>+dir_get(VALUE dir)</div><div class='ctx'> {</div><div class='del'>-    struct dir_data *dirp;</div><div class='ctx'>     rb_check_frozen(dir);</div><div class='del'>-    dirp = rb_check_typeddata(dir, &amp;dir_data_type);</div><div class='add'>+    return rb_check_typeddata(dir, &amp;dir_data_type);</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+static struct dir_data *</div><div class='add'>+dir_check(VALUE dir)</div><div class='add'>+{</div><div class='add'>+    struct dir_data *dirp = dir_get(dir);</div><div class='ctx'>     if (!dirp-&gt;dir) dir_closed();</div><div class='ctx'>     return dirp;</div><div class='ctx'> }</div><div class='hunk'>@@ -585,9 +622,22 @@ dir_inspect(VALUE dir)</div><div class='ctx'> 	rb_str_cat2(str, "&gt;");</div><div class='ctx'> 	return str;</div><div class='ctx'>     }</div><div class='del'>-    return rb_funcall(dir, rb_intern("to_s"), 0, 0);</div><div class='add'>+    return rb_funcallv(dir, rb_intern("to_s"), 0, 0);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+/* Workaround for Solaris 10 that does not have dirfd.</div><div class='add'>+   Note: Solaris 11 (POSIX.1-2008 compliant) has dirfd(3C).</div><div class='add'>+ */</div><div class='add'>+#if defined(__sun) &amp;&amp; !defined(HAVE_DIRFD)</div><div class='add'>+# if defined(HAVE_DIR_D_FD)</div><div class='add'>+#  define dirfd(x) ((x)-&gt;d_fd)</div><div class='add'>+#  define HAVE_DIRFD 1</div><div class='add'>+# elif defined(HAVE_DIR_DD_FD)</div><div class='add'>+#  define dirfd(x) ((x)-&gt;dd_fd)</div><div class='add'>+#  define HAVE_DIRFD 1</div><div class='add'>+# endif</div><div class='add'>+#endif</div><div class='add'>+</div><div class='ctx'> #ifdef HAVE_DIRFD</div><div class='ctx'> /*</div><div class='ctx'>  *  call-seq:</div><div class='hunk'>@@ -640,10 +690,43 @@ dir_path(VALUE dir)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> #if defined _WIN32</div><div class='add'>+static int</div><div class='add'>+fundamental_encoding_p(rb_encoding *enc)</div><div class='add'>+{</div><div class='add'>+    switch (rb_enc_to_index(enc)) {</div><div class='add'>+      case ENCINDEX_ASCII:</div><div class='add'>+      case ENCINDEX_US_ASCII:</div><div class='add'>+      case ENCINDEX_UTF_8:</div><div class='add'>+	return TRUE;</div><div class='add'>+      default:</div><div class='add'>+	return FALSE;</div><div class='add'>+    }</div><div class='add'>+}</div><div class='ctx'> # define READDIR(dir, enc) rb_w32_readdir((dir), (enc))</div><div class='ctx'> #else</div><div class='ctx'> # define READDIR(dir, enc) readdir((dir))</div><div class='ctx'> #endif</div><div class='add'>+static int</div><div class='add'>+to_be_skipped(const struct dirent *dp)</div><div class='add'>+{</div><div class='add'>+    const char *name = dp-&gt;d_name;</div><div class='add'>+    if (name[0] != '.') return FALSE;</div><div class='add'>+#ifdef HAVE_DIRENT_NAMLEN</div><div class='add'>+    switch (NAMLEN(dp)) {</div><div class='add'>+      case 2:</div><div class='add'>+	if (name[1] != '.') return FALSE;</div><div class='add'>+      case 1:</div><div class='add'>+	return TRUE;</div><div class='add'>+      default:</div><div class='add'>+	break;</div><div class='add'>+    }</div><div class='add'>+#else</div><div class='add'>+    if (!name[1]) return TRUE;</div><div class='add'>+    if (name[1] != '.') return FALSE;</div><div class='add'>+    if (!name[2]) return TRUE;</div><div class='add'>+#endif</div><div class='add'>+    return FALSE;</div><div class='add'>+}</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='ctx'>  *  call-seq:</div><div class='hunk'>@@ -830,8 +913,8 @@ dir_rewind(VALUE dir)</div><div class='ctx'>  *  call-seq:</div><div class='ctx'>  *     dir.close -&gt; nil</div><div class='ctx'>  *</div><div class='del'>- *  Closes the directory stream. Any further attempts to access</div><div class='del'>- *  &lt;em&gt;dir&lt;/em&gt; will raise an &lt;code&gt;IOError&lt;/code&gt;.</div><div class='add'>+ *  Closes the directory stream.</div><div class='add'>+ *  Calling this method on closed Dir object is ignored since Ruby 2.3.</div><div class='ctx'>  *</div><div class='ctx'>  *     d = Dir.new("testdir")</div><div class='ctx'>  *     d.close   #=&gt; nil</div><div class='hunk'>@@ -841,7 +924,8 @@ dir_close(VALUE dir)</div><div class='ctx'> {</div><div class='ctx'>     struct dir_data *dirp;</div><div class='ctx'> </div><div class='del'>-    GetDIR(dir, dirp);</div><div class='add'>+    dirp = dir_get(dir);</div><div class='add'>+    if (!dirp-&gt;dir) return Qnil;</div><div class='ctx'>     closedir(dirp-&gt;dir);</div><div class='ctx'>     dirp-&gt;dir = NULL;</div><div class='ctx'> </div><div class='hunk'>@@ -930,7 +1014,6 @@ dir_s_chdir(int argc, VALUE *argv, VALUE obj)</div><div class='ctx'> {</div><div class='ctx'>     VALUE path = Qnil;</div><div class='ctx'> </div><div class='del'>-    rb_secure(2);</div><div class='ctx'>     if (rb_scan_args(argc, argv, "01", &amp;path) == 1) {</div><div class='ctx'> 	FilePathValue(path);</div><div class='ctx'> 	path = rb_str_encode_ospath(path);</div><div class='hunk'>@@ -967,10 +1050,17 @@ rb_dir_getwd(void)</div><div class='ctx'> {</div><div class='ctx'>     char *path;</div><div class='ctx'>     VALUE cwd;</div><div class='add'>+    int fsenc = rb_enc_to_index(rb_filesystem_encoding());</div><div class='ctx'> </div><div class='add'>+    if (fsenc == ENCINDEX_US_ASCII) fsenc = ENCINDEX_ASCII;</div><div class='ctx'>     path = my_getcwd();</div><div class='add'>+#ifdef __APPLE__</div><div class='add'>+    cwd = rb_str_normalize_ospath(path, strlen(path));</div><div class='add'>+    OBJ_TAINT(cwd);</div><div class='add'>+#else</div><div class='ctx'>     cwd = rb_tainted_str_new2(path);</div><div class='del'>-    rb_enc_associate(cwd, rb_filesystem_encoding());</div><div class='add'>+#endif</div><div class='add'>+    rb_enc_associate_index(cwd, fsenc);</div><div class='ctx'> </div><div class='ctx'>     xfree(path);</div><div class='ctx'>     return cwd;</div><div class='hunk'>@@ -994,15 +1084,14 @@ dir_s_getwd(VALUE dir)</div><div class='ctx'>     return rb_dir_getwd();</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-static void</div><div class='del'>-check_dirname(volatile VALUE *dir)</div><div class='add'>+static VALUE</div><div class='add'>+check_dirname(VALUE dir)</div><div class='ctx'> {</div><div class='del'>-    VALUE d = *dir;</div><div class='add'>+    VALUE d = dir;</div><div class='ctx'>     char *path, *pend;</div><div class='ctx'>     long len;</div><div class='ctx'>     rb_encoding *enc;</div><div class='ctx'> </div><div class='del'>-    rb_secure(2);</div><div class='ctx'>     FilePathValue(d);</div><div class='ctx'>     enc = rb_enc_get(d);</div><div class='ctx'>     RSTRING_GETMEM(d, path, len);</div><div class='hunk'>@@ -1010,8 +1099,9 @@ check_dirname(volatile VALUE *dir)</div><div class='ctx'>     pend = rb_enc_path_end(rb_enc_path_skip_prefix(path, pend, enc), pend, enc);</div><div class='ctx'>     if (pend - path &lt; len) {</div><div class='ctx'> 	d = rb_str_subseq(d, 0, pend - path);</div><div class='add'>+	StringValueCStr(d);</div><div class='ctx'>     }</div><div class='del'>-    *dir = rb_str_encode_ospath(d);</div><div class='add'>+    return rb_str_encode_ospath(d);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> #if defined(HAVE_CHROOT)</div><div class='hunk'>@@ -1027,7 +1117,7 @@ check_dirname(volatile VALUE *dir)</div><div class='ctx'> static VALUE</div><div class='ctx'> dir_s_chroot(VALUE dir, VALUE path)</div><div class='ctx'> {</div><div class='del'>-    check_dirname(&amp;path);</div><div class='add'>+    path = check_dirname(path);</div><div class='ctx'>     if (chroot(RSTRING_PTR(path)) == -1)</div><div class='ctx'> 	rb_sys_fail_path(path);</div><div class='ctx'> </div><div class='hunk'>@@ -1065,7 +1155,7 @@ dir_s_mkdir(int argc, VALUE *argv, VALUE obj)</div><div class='ctx'> 	mode = 0777;</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    check_dirname(&amp;path);</div><div class='add'>+    path = check_dirname(path);</div><div class='ctx'>     if (mkdir(RSTRING_PTR(path), mode) == -1)</div><div class='ctx'> 	rb_sys_fail_path(path);</div><div class='ctx'> </div><div class='hunk'>@@ -1084,7 +1174,7 @@ dir_s_mkdir(int argc, VALUE *argv, VALUE obj)</div><div class='ctx'> static VALUE</div><div class='ctx'> dir_s_rmdir(VALUE obj, VALUE dir)</div><div class='ctx'> {</div><div class='del'>-    check_dirname(&amp;dir);</div><div class='add'>+    dir = check_dirname(dir);</div><div class='ctx'>     if (rmdir(RSTRING_PTR(dir)) &lt; 0)</div><div class='ctx'> 	rb_sys_fail_path(dir);</div><div class='ctx'> </div><div class='hunk'>@@ -1145,6 +1235,8 @@ sys_enc_warning_in(const char *func, const char *mesg, rb_encoding *enc)</div><div class='ctx'> </div><div class='ctx'> #ifdef _WIN32</div><div class='ctx'> #define STAT(p, s)	rb_w32_ustati64((p), (s))</div><div class='add'>+#undef lstat</div><div class='add'>+#define lstat(p, s)	rb_w32_ulstati64((p), (s))</div><div class='ctx'> #else</div><div class='ctx'> #define STAT(p, s)	stat((p), (s))</div><div class='ctx'> #endif</div><div class='hunk'>@@ -1180,9 +1272,7 @@ do_opendir(const char *path, int flags, rb_encoding *enc)</div><div class='ctx'>     DIR *dirp;</div><div class='ctx'> #ifdef _WIN32</div><div class='ctx'>     VALUE tmp = 0;</div><div class='del'>-    if (enc != rb_usascii_encoding() &amp;&amp;</div><div class='del'>-	enc != rb_ascii8bit_encoding() &amp;&amp;</div><div class='del'>-	enc != rb_utf8_encoding()) {</div><div class='add'>+    if (!fundamental_encoding_p(enc)) {</div><div class='ctx'> 	tmp = rb_enc_str_new(path, strlen(path), enc);</div><div class='ctx'> 	tmp = rb_str_encode_ospath(tmp);</div><div class='ctx'> 	path = RSTRING_PTR(tmp);</div><div class='hunk'>@@ -1411,15 +1501,16 @@ join_path(const char *path, long len, int dirsep, const char *name, size_t namle</div><div class='ctx'> static int</div><div class='ctx'> is_case_sensitive(DIR *dirp)</div><div class='ctx'> {</div><div class='del'>-    u_int32_t attrbuf[SIZEUP32(vol_capabilities_attr_t) + 1];</div><div class='add'>+    struct {</div><div class='add'>+	u_int32_t length;</div><div class='add'>+	vol_capabilities_attr_t cap[1];</div><div class='add'>+    } __attribute__((aligned(4), packed)) attrbuf[1];</div><div class='ctx'>     struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, 0, ATTR_VOL_INFO|ATTR_VOL_CAPABILITIES};</div><div class='del'>-    const vol_capabilities_attr_t *cap = (void *)(attrbuf+1);</div><div class='add'>+    const vol_capabilities_attr_t *const cap = attrbuf[0].cap;</div><div class='ctx'>     const int idx = VOL_CAPABILITIES_FORMAT;</div><div class='ctx'>     const uint32_t mask = VOL_CAP_FMT_CASE_SENSITIVE;</div><div class='del'>-    struct statfs sf;</div><div class='ctx'> </div><div class='del'>-    if (fstatfs(dirfd(dirp), &amp;sf)) return -1;</div><div class='del'>-    if (getattrlist(sf.f_mntonname, &amp;al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW))</div><div class='add'>+    if (fgetattrlist(dirfd(dirp), &amp;al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW))</div><div class='ctx'> 	return -1;</div><div class='ctx'>     if (!(cap-&gt;valid[idx] &amp; mask))</div><div class='ctx'> 	return -1;</div><div class='hunk'>@@ -1427,19 +1518,34 @@ is_case_sensitive(DIR *dirp)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static char *</div><div class='del'>-replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p)</div><div class='del'>-{</div><div class='del'>-    u_int32_t attrbuf[SIZEUP32(attrreference_t) + RUP32(MAXPATHLEN * 3) + 1];</div><div class='del'>-    struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, ATTR_CMN_NAME};</div><div class='del'>-    const attrreference_t *ar = (void *)(attrbuf+1);</div><div class='add'>+replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p, int flags, rb_pathtype_t *type)</div><div class='add'>+{</div><div class='add'>+    struct {</div><div class='add'>+	u_int32_t length;</div><div class='add'>+	attrreference_t ref[1];</div><div class='add'>+	fsobj_type_t objtype;</div><div class='add'>+	char path[MAXPATHLEN * 3];</div><div class='add'>+    } __attribute__((aligned(4), packed)) attrbuf[1];</div><div class='add'>+    struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, ATTR_CMN_NAME|ATTR_CMN_OBJTYPE};</div><div class='add'>+    const attrreference_t *const ar = attrbuf[0].ref;</div><div class='ctx'>     const char *name;</div><div class='ctx'>     long len;</div><div class='ctx'>     char *tmp;</div><div class='ctx'>     IF_NORMALIZE_UTF8PATH(VALUE utf8str = Qnil);</div><div class='ctx'> </div><div class='del'>-    if (getattrlist(path, &amp;al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW))</div><div class='add'>+    *type = path_noent;</div><div class='add'>+    if (getattrlist(path, &amp;al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW)) {</div><div class='add'>+	if (!to_be_ignored(errno))</div><div class='add'>+	    sys_warning(path, enc);</div><div class='ctx'> 	return path;</div><div class='add'>+    }</div><div class='ctx'> </div><div class='add'>+    switch (attrbuf[0].objtype) {</div><div class='add'>+      case VREG: *type = path_regular; break;</div><div class='add'>+      case VDIR: *type = path_directory; break;</div><div class='add'>+      case VLNK: *type = path_symlink; break;</div><div class='add'>+      default: *type = path_exist; break;</div><div class='add'>+    }</div><div class='ctx'>     name = (char *)ar + ar-&gt;attr_dataoffset;</div><div class='ctx'>     len = (long)ar-&gt;attr_length - 1;</div><div class='ctx'>     if (name + len &gt; (char *)attrbuf + sizeof(attrbuf))</div><div class='hunk'>@@ -1464,9 +1570,10 @@ replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p)</div><div class='ctx'> }</div><div class='ctx'> #elif defined _WIN32</div><div class='ctx'> VALUE rb_w32_conv_from_wchar(const WCHAR *wstr, rb_encoding *enc);</div><div class='add'>+int rb_w32_reparse_symlink_p(const WCHAR *path);</div><div class='ctx'> </div><div class='ctx'> static char *</div><div class='del'>-replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p)</div><div class='add'>+replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p, int flags, rb_pathtype_t *type)</div><div class='ctx'> {</div><div class='ctx'>     char *plainname = path;</div><div class='ctx'>     volatile VALUE tmp = 0;</div><div class='hunk'>@@ -1475,10 +1582,8 @@ replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p)</div><div class='ctx'>     WCHAR *wplain;</div><div class='ctx'>     HANDLE h = INVALID_HANDLE_VALUE;</div><div class='ctx'>     long wlen;</div><div class='del'>-    if (enc &amp;&amp;</div><div class='del'>-	enc != rb_usascii_encoding() &amp;&amp;</div><div class='del'>-	enc != rb_ascii8bit_encoding() &amp;&amp;</div><div class='del'>-	enc != rb_utf8_encoding()) {</div><div class='add'>+    int e = 0;</div><div class='add'>+    if (!fundamental_encoding_p(enc)) {</div><div class='ctx'> 	tmp = rb_enc_str_new_cstr(plainname, enc);</div><div class='ctx'> 	tmp = rb_str_encode_ospath(tmp);</div><div class='ctx'> 	plainname = RSTRING_PTR(tmp);</div><div class='hunk'>@@ -1486,11 +1591,28 @@ replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p)</div><div class='ctx'>     wplain = rb_w32_mbstr_to_wstr(CP_UTF8, plainname, -1, &amp;wlen);</div><div class='ctx'>     if (tmp) rb_str_resize(tmp, 0);</div><div class='ctx'>     if (!wplain) return path;</div><div class='del'>-    if (GetFileAttributesExW(wplain, GetFileExInfoStandard, &amp;fa))</div><div class='add'>+    if (GetFileAttributesExW(wplain, GetFileExInfoStandard, &amp;fa)) {</div><div class='ctx'> 	h = FindFirstFileW(wplain, &amp;fd);</div><div class='add'>+	e = rb_w32_map_errno(GetLastError());</div><div class='add'>+    }</div><div class='add'>+    if (fa.dwFileAttributes &amp; FILE_ATTRIBUTE_REPARSE_POINT) {</div><div class='add'>+	if (!rb_w32_reparse_symlink_p(wplain))</div><div class='add'>+	    fa.dwFileAttributes &amp;= ~FILE_ATTRIBUTE_REPARSE_POINT;</div><div class='add'>+    }</div><div class='ctx'>     free(wplain);</div><div class='del'>-    if (h == INVALID_HANDLE_VALUE) return path;</div><div class='add'>+    if (h == INVALID_HANDLE_VALUE) {</div><div class='add'>+	*type = path_noent;</div><div class='add'>+	if (e &amp;&amp; !to_be_ignored(e)) {</div><div class='add'>+	    errno = e;</div><div class='add'>+	    sys_warning(path, enc);</div><div class='add'>+	}</div><div class='add'>+	return path;</div><div class='add'>+    }</div><div class='ctx'>     FindClose(h);</div><div class='add'>+    *type =</div><div class='add'>+	(fa.dwFileAttributes &amp; FILE_ATTRIBUTE_REPARSE_POINT) ? path_symlink :</div><div class='add'>+	(fa.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY) ? path_directory :</div><div class='add'>+	path_regular;</div><div class='ctx'>     if (tmp) {</div><div class='ctx'> 	char *buf;</div><div class='ctx'> 	tmp = rb_w32_conv_from_wchar(fd.cFileName, enc);</div><div class='hunk'>@@ -1521,12 +1643,10 @@ replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p)</div><div class='ctx'>     }</div><div class='ctx'>     return path;</div><div class='ctx'> }</div><div class='del'>-#elif USE_NAME_ON_FS == 1</div><div class='add'>+#elif USE_NAME_ON_FS == USE_NAME_ON_FS_REAL_BASENAME</div><div class='ctx'> # error not implemented</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='del'>-enum answer {UNKNOWN = -1, NO, YES};</div><div class='del'>-</div><div class='ctx'> #ifndef S_ISDIR</div><div class='ctx'> #   define S_ISDIR(m) (((m) &amp; S_IFMT) == S_IFDIR)</div><div class='ctx'> #endif</div><div class='hunk'>@@ -1557,12 +1677,24 @@ glob_func_caller(VALUE val)</div><div class='ctx'>     return Qnil;</div><div class='ctx'> }</div><div class='ctx'> </div><div class='add'>+static inline int</div><div class='add'>+dirent_match(const char *pat, rb_encoding *enc, const char *name, const struct dirent *dp, int flags)</div><div class='add'>+{</div><div class='add'>+    if (fnmatch(pat, enc, name, flags) == 0) return 1;</div><div class='add'>+#ifdef _WIN32</div><div class='add'>+    if (dp-&gt;d_altname &amp;&amp; (flags &amp; FNM_SHORTNAME)) {</div><div class='add'>+	if (fnmatch(pat, enc, dp-&gt;d_altname, flags) == 0) return 1;</div><div class='add'>+    }</div><div class='add'>+#endif</div><div class='add'>+    return 0;</div><div class='add'>+}</div><div class='add'>+</div><div class='ctx'> static int</div><div class='ctx'> glob_helper(</div><div class='ctx'>     const char *path,</div><div class='add'>+    long pathlen,</div><div class='ctx'>     int dirsep, /* '/' should be placed before appending child entry's name to 'path'. */</div><div class='del'>-    enum answer exist, /* Does 'path' indicate an existing entry? */</div><div class='del'>-    enum answer isdir, /* Does 'path' indicate a directory or a symlink to a directory? */</div><div class='add'>+    rb_pathtype_t pathtype, /* type of 'path' */</div><div class='ctx'>     struct glob_pattern **beg,</div><div class='ctx'>     struct glob_pattern **end,</div><div class='ctx'>     int flags,</div><div class='hunk'>@@ -1575,7 +1707,6 @@ glob_helper(</div><div class='ctx'>     struct glob_pattern **cur, **new_beg, **new_end;</div><div class='ctx'>     int plain = 0, magical = 0, recursive = 0, match_all = 0, match_dir = 0;</div><div class='ctx'>     int escape = !(flags &amp; FNM_NOESCAPE);</div><div class='del'>-    long pathlen;</div><div class='ctx'> </div><div class='ctx'>     for (cur = beg; cur &lt; end; ++cur) {</div><div class='ctx'> 	struct glob_pattern *p = *cur;</div><div class='hunk'>@@ -1588,7 +1719,7 @@ glob_helper(</div><div class='ctx'> 	    plain = 1;</div><div class='ctx'> 	    break;</div><div class='ctx'> 	  case ALPHA:</div><div class='del'>-#if USE_NAME_ON_FS == 1</div><div class='add'>+#if USE_NAME_ON_FS == USE_NAME_ON_FS_REAL_BASENAME</div><div class='ctx'> 	    plain = 1;</div><div class='ctx'> #else</div><div class='ctx'> 	    magical = 1;</div><div class='hunk'>@@ -1608,33 +1739,28 @@ glob_helper(</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    pathlen = strlen(path);</div><div class='ctx'>     if (*path) {</div><div class='del'>-	if (match_all &amp;&amp; exist == UNKNOWN) {</div><div class='add'>+	if (match_all &amp;&amp; pathtype == path_unknown) {</div><div class='ctx'> 	    if (do_lstat(path, &amp;st, flags, enc) == 0) {</div><div class='del'>-		exist = YES;</div><div class='del'>-		isdir = S_ISDIR(st.st_mode) ? YES : S_ISLNK(st.st_mode) ? UNKNOWN : NO;</div><div class='add'>+		pathtype = IFTODT(st.st_mode);</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else {</div><div class='del'>-		exist = NO;</div><div class='del'>-		isdir = NO;</div><div class='add'>+		pathtype = path_noent;</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='del'>-	if (match_dir &amp;&amp; isdir == UNKNOWN) {</div><div class='add'>+	if (match_dir &amp;&amp; pathtype == path_unknown) {</div><div class='ctx'> 	    if (do_stat(path, &amp;st, flags, enc) == 0) {</div><div class='del'>-		exist = YES;</div><div class='del'>-		isdir = S_ISDIR(st.st_mode) ? YES : NO;</div><div class='add'>+		pathtype = IFTODT(st.st_mode);</div><div class='ctx'> 	    }</div><div class='ctx'> 	    else {</div><div class='del'>-		exist = NO;</div><div class='del'>-		isdir = NO;</div><div class='add'>+		pathtype = path_noent;</div><div class='ctx'> 	    }</div><div class='ctx'> 	}</div><div class='del'>-	if (match_all &amp;&amp; exist == YES) {</div><div class='add'>+	if (match_all &amp;&amp; pathtype &gt; path_noent) {</div><div class='ctx'> 	    status = glob_call_func(func, path, arg, enc);</div><div class='ctx'> 	    if (status) return status;</div><div class='ctx'> 	}</div><div class='del'>-	if (match_dir &amp;&amp; isdir == YES) {</div><div class='add'>+	if (match_dir &amp;&amp; pathtype == path_directory) {</div><div class='ctx'> 	    char *tmp = join_path(path, pathlen, dirsep, "", 0);</div><div class='ctx'> 	    if (!tmp) return -1;</div><div class='ctx'> 	    status = glob_call_func(func, tmp, arg, enc);</div><div class='hunk'>@@ -1643,16 +1769,16 @@ glob_helper(</div><div class='ctx'> 	}</div><div class='ctx'>     }</div><div class='ctx'> </div><div class='del'>-    if (exist == NO || isdir == NO) return 0;</div><div class='add'>+    if (pathtype == path_noent) return 0;</div><div class='ctx'> </div><div class='ctx'>     if (magical || recursive) {</div><div class='ctx'> 	struct dirent *dp;</div><div class='ctx'> 	DIR *dirp;</div><div class='del'>-# if USE_NAME_ON_FS == 2</div><div class='add'>+# if USE_NAME_ON_FS == USE_NAME_ON_FS_BY_FNMATCH</div><div class='ctx'> 	char *plainname = 0;</div><div class='ctx'> # endif</div><div class='ctx'> 	IF_NORMALIZE_UTF8PATH(int norm_p);</div><div class='del'>-# if USE_NAME_ON_FS == 2</div><div class='add'>+# if USE_NAME_ON_FS == USE_NAME_ON_FS_BY_FNMATCH</div><div class='ctx'> 	if (cur + 1 == end &amp;&amp; (*cur)-&gt;type &lt;= ALPHA) {</div><div class='ctx'> 	    plainname = join_path(path, pathlen, dirsep, (*cur)-&gt;str, strlen((*cur)-&gt;str));</div><div class='ctx'> 	    if (!plainname) return -1;</div><div class='hunk'>@@ -1685,7 +1811,7 @@ glob_helper(</div><div class='ctx'> # endif</div><div class='ctx'> 	while ((dp = READDIR(dirp, enc)) != NULL) {</div><div class='ctx'> 	    char *buf;</div><div class='del'>-	    enum answer new_isdir = UNKNOWN;</div><div class='add'>+	    rb_pathtype_t new_pathtype = path_unknown;</div><div class='ctx'> 	    const char *name;</div><div class='ctx'> 	    size_t namlen;</div><div class='ctx'> 	    int dotfile = 0;</div><div class='hunk'>@@ -1721,15 +1847,18 @@ glob_helper(</div><div class='ctx'> 	    }</div><div class='ctx'> 	    name = buf + pathlen + (dirsep != 0);</div><div class='ctx'> 	    if (recursive &amp;&amp; dotfile &lt; ((flags &amp; FNM_DOTMATCH) ? 2 : 1)) {</div><div class='add'>+#ifdef DT_UNKNOWN</div><div class='add'>+		if ((new_pathtype = dp-&gt;d_type) != (rb_pathtype_t)DT_UNKNOWN)</div><div class='add'>+		    /* Got it. We need nothing more. */</div><div class='add'>+		    ;</div><div class='add'>+		else</div><div class='add'>+		    /* fall back to call lstat(2) */</div><div class='add'>+#endif</div><div class='ctx'> 		/* RECURSIVE never match dot files unless FNM_DOTMATCH is set */</div><div class='del'>-#ifndef _WIN32</div><div class='ctx'> 		if (do_lstat(buf, &amp;st, flags, enc) == 0)</div><div class='del'>-		    new_isdir = S_ISDIR(st.st_mode) ? YES : S_ISLNK(st.st_mode) ? UNKNOWN : NO;</div><div class='add'>+		    new_pathtype = IFTODT(st.st_mode);</div><div class='ctx'> 		else</div><div class='del'>-		    new_isdir = NO;</div><div class='del'>-#else</div><div class='del'>-		new_isdir = dp-&gt;d_isdir ? (!dp-&gt;d_isrep ? YES : UNKNOWN) : NO;</div><div class='del'>-#endif</div><div class='add'>+		    new_pathtype = path_noent;</div><div class='ctx'> 	    }</div><div class='ctx'> </div><div class='ctx'> 	    new_beg = new_end = GLOB_ALLOC_N(struct glob_pattern *, (end - beg) * 2);</div><div class='hunk'>@@ -1742,13 +1871,14 @@ glob_helper(</div><div class='ctx'> 	    for (cur = beg; cur &lt; end; ++cur) {</div><div class='ctx'> 		struct glob_pattern *p = *cur;</div><div class='ctx'> 		if (p-&gt;type == RECURSIVE) {</div><div class='del'>-		    if (new_isdir == YES) /* not symlink but real directory */</div><div class='add'>+		    if (new_pathtype == path_directory || /* not symlink but real directory */</div><div class='add'>+			new_pathtype == path_exist)</div><div class='ctx'> 			*new_end++ = p; /* append recursive pattern */</div><div class='ctx'> 		    p = p-&gt;next; /* 0 times recursion */</div><div class='ctx'> 		}</div><div class='ctx'> 		switch (p-&gt;type) {</div><div class='ctx'> 		  case ALPHA:</div><div class='del'>-# if USE_NAME_ON_FS == 2</div><div class='add'>+# if USE_NAME_ON_FS == USE_NAME_ON_FS_BY_FNMATCH</div><div class='ctx'> 		    if (plainname) {</div><div class='ctx'> 			*new_end++ = p-&gt;next;</div><div class='ctx'> 			break;</div><div class='hunk'>@@ -1756,14 +1886,15 @@ glob_helper(</div><div class='ctx'> # endif</div><div class='ctx'> 		  case PLAIN:</div><div class='ctx'> 		  case MAGICAL:</div><div class='del'>-		    if (fnmatch(p-&gt;str, enc, name, flags) == 0)</div><div class='add'>+		    if (dirent_match(p-&gt;str, enc, name, dp, flags))</div><div class='ctx'> 			*new_end++ = p-&gt;next;</div><div class='ctx'> 		  default:</div><div class='ctx'> 		    break;</div><div class='ctx'> 		}</div><div class='ctx'> 	    }</div><div class='ctx'> </div><div class='del'>-	    status = glob_helper(buf, 1, YES, new_isdir, new_beg, new_end,</div><div class='add'>+	    status = glob_helper(buf, name - buf + namlen, 1,</div><div class='add'>+				 new_pathtype, new_beg, new_end,</div><div class='ctx'> 				 flags, func, arg, enc);</div><div class='ctx'> 	    GLOB_FREE(buf);</div><div class='ctx'> 	    GLOB_FREE(new_beg);</div><div class='hunk'>@@ -1785,6 +1916,7 @@ glob_helper(</div><div class='ctx'> </div><div class='ctx'> 	for (cur = copy_beg; cur &lt; copy_end; ++cur) {</div><div class='ctx'> 	    if (*cur) {</div><div class='add'>+		rb_pathtype_t new_pathtype = path_unknown;</div><div class='ctx'> 		char *buf;</div><div class='ctx'> 		char *name;</div><div class='ctx'> 		size_t len = strlen((*cur)-&gt;str) + 1;</div><div class='hunk'>@@ -1818,14 +1950,16 @@ glob_helper(</div><div class='ctx'> 		    status = -1;</div><div class='ctx'> 		    break;</div><div class='ctx'> 		}</div><div class='del'>-#if USE_NAME_ON_FS == 1</div><div class='add'>+#if USE_NAME_ON_FS == USE_NAME_ON_FS_REAL_BASENAME</div><div class='ctx'> 		if ((*cur)-&gt;type == ALPHA) {</div><div class='ctx'> 		    long base = pathlen + (dirsep != 0);</div><div class='del'>-		    buf = replace_real_basename(buf, base, enc, IF_NORMALIZE_UTF8PATH(1)+0);</div><div class='add'>+		    buf = replace_real_basename(buf, base, enc, IF_NORMALIZE_UTF8PATH(1)+0,</div><div class='add'>+						flags, &amp;new_pathtype);</div><div class='ctx'> 		}</div><div class='ctx'> #endif</div><div class='del'>-		status = glob_helper(buf, 1, UNKNOWN, UNKNOWN, new_beg,</div><div class='del'>-				     new_end, flags, func, arg, enc);</div><div class='add'>+		status = glob_helper(buf, pathlen + strlen(buf + pathlen), 1,</div><div class='add'>+				     new_pathtype, new_beg, new_end,</div><div class='add'>+				     flags, func, arg, enc);</div><div class='ctx'> 		GLOB_FREE(buf);</div><div class='ctx'> 		GLOB_FREE(new_beg);</div><div class='ctx'> 		if (status) break;</div><div class='hunk'>@@ -1853,7 +1987,7 @@ ruby_glob0(const char *path, int flags, ruby_glob_func *func, VALUE arg, rb_enco</div><div class='ctx'>     root = rb_enc_path_skip_prefix(root, root + strlen(root), enc);</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='del'>-    if (root &amp;&amp; *root == '/') root++;</div><div class='add'>+    if (*root == '/') root++;</div><div class='ctx'> </div><div class='ctx'>     n = root - start;</div><div class='ctx'>     buf = GLOB_ALLOC_N(char, n + 1);</div><div class='hunk'>@@ -1866,7 +2000,8 @@ ruby_glob0(const char *path, int flags, ruby_glob_func *func, VALUE arg, rb_enco</div><div class='ctx'> 	GLOB_FREE(buf);</div><div class='ctx'> 	return -1;</div><div class='ctx'>     }</div><div class='del'>-    status = glob_helper(buf, 0, UNKNOWN, UNKNOWN, &amp;list, &amp;list + 1, flags, func, arg, enc);</div><div class='add'>+    status = glob_helper(buf, n, 0, path_unknown, &amp;list, &amp;list + 1,</div><div class='add'>+			 flags, func, arg, enc);</div><div class='ctx'>     glob_free_pattern(list);</div><div class='ctx'>     GLOB_FREE(buf);</div><div class='ctx'> </div><div class='hunk'>@@ -1920,7 +2055,15 @@ rb_glob(const char *path, void (*func)(const char *, VALUE, void *), VALUE arg)</div><div class='ctx'> static void</div><div class='ctx'> push_pattern(const char *path, VALUE ary, void *enc)</div><div class='ctx'> {</div><div class='del'>-    rb_ary_push(ary, rb_external_str_new_with_enc(path, strlen(path), enc));</div><div class='add'>+#if defined _WIN32 || defined __APPLE__</div><div class='add'>+    VALUE name = rb_utf8_str_new_cstr(path);</div><div class='add'>+    rb_encoding *eenc = rb_default_internal_encoding();</div><div class='add'>+    OBJ_TAINT(name);</div><div class='add'>+    name = rb_str_conv_enc(name, NULL, eenc ? eenc : enc);</div><div class='add'>+#else</div><div class='add'>+    VALUE name = rb_external_str_new_with_enc(path, strlen(path), enc);</div><div class='add'>+#endif</div><div class='add'>+    rb_ary_push(ary, name);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='hunk'>@@ -1938,7 +2081,7 @@ ruby_brace_expand(const char *str, int flags, ruby_glob_func *func, VALUE arg,</div><div class='ctx'> 	if (*p == '{' &amp;&amp; nest++ == 0) {</div><div class='ctx'> 	    lbrace = p;</div><div class='ctx'> 	}</div><div class='del'>-	if (*p == '}' &amp;&amp; --nest &lt;= 0) {</div><div class='add'>+	if (*p == '}' &amp;&amp; lbrace &amp;&amp; --nest == 0) {</div><div class='ctx'> 	    rbrace = p;</div><div class='ctx'> 	    break;</div><div class='ctx'> 	}</div><div class='hunk'>@@ -1996,12 +2139,12 @@ glob_brace(const char *path, VALUE val, void *enc)</div><div class='ctx'>     return ruby_glob0(path, arg-&gt;flags, arg-&gt;func, arg-&gt;value, enc);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-static int</div><div class='del'>-ruby_brace_glob0(const char *str, int flags, ruby_glob_func *func, VALUE arg,</div><div class='del'>-		 rb_encoding* enc)</div><div class='add'>+int</div><div class='add'>+ruby_brace_glob_with_enc(const char *str, int flags, ruby_glob_func *func, VALUE arg, rb_encoding *enc)</div><div class='ctx'> {</div><div class='ctx'>     struct brace_args args;</div><div class='ctx'> </div><div class='add'>+    flags &amp;= ~GLOB_VERBOSE;</div><div class='ctx'>     args.func = func;</div><div class='ctx'>     args.value = arg;</div><div class='ctx'>     args.flags = flags;</div><div class='hunk'>@@ -2011,37 +2154,47 @@ ruby_brace_glob0(const char *str, int flags, ruby_glob_func *func, VALUE arg,</div><div class='ctx'> int</div><div class='ctx'> ruby_brace_glob(const char *str, int flags, ruby_glob_func *func, VALUE arg)</div><div class='ctx'> {</div><div class='del'>-    return ruby_brace_glob0(str, flags &amp; ~GLOB_VERBOSE, func, arg,</div><div class='del'>-			    rb_ascii8bit_encoding());</div><div class='add'>+    return ruby_brace_glob_with_enc(str, flags, func, arg, rb_ascii8bit_encoding());</div><div class='ctx'> }</div><div class='ctx'> </div><div class='del'>-int</div><div class='del'>-ruby_brace_glob_with_enc(const char *str, int flags, ruby_glob_func *func, VALUE arg, rb_encoding *enc)</div><div class='add'>+struct push_glob_args {</div><div class='add'>+    struct glob_args glob;</div><div class='add'>+    int flags;</div><div class='add'>+};</div><div class='add'>+</div><div class='add'>+static int</div><div class='add'>+push_caller(const char *path, VALUE val, void *enc)</div><div class='ctx'> {</div><div class='del'>-    return ruby_brace_glob0(str, flags &amp; ~GLOB_VERBOSE, func, arg, enc);</div><div class='add'>+    struct push_glob_args *arg = (struct push_glob_args *)val;</div><div class='add'>+</div><div class='add'>+    return ruby_glob0(path, arg-&gt;flags, rb_glob_caller, (VALUE)&amp;arg-&gt;glob, enc);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static int</div><div class='ctx'> push_glob(VALUE ary, VALUE str, int flags)</div><div class='ctx'> {</div><div class='del'>-    struct glob_args args;</div><div class='del'>-#ifdef __APPLE__</div><div class='del'>-    rb_encoding *enc = rb_utf8_encoding();</div><div class='del'>-</div><div class='del'>-    str = rb_str_encode_ospath(str);</div><div class='del'>-#else</div><div class='add'>+    struct push_glob_args args;</div><div class='ctx'>     rb_encoding *enc = rb_enc_get(str);</div><div class='ctx'> </div><div class='del'>-    if (enc == rb_usascii_encoding()) enc = rb_filesystem_encoding();</div><div class='del'>-    if (enc == rb_usascii_encoding()) enc = rb_ascii8bit_encoding();</div><div class='add'>+#if defined _WIN32 || defined __APPLE__</div><div class='add'>+    str = rb_str_encode_ospath(str);</div><div class='add'>+#endif</div><div class='add'>+    if (rb_enc_to_index(enc) == ENCINDEX_US_ASCII)</div><div class='add'>+	enc = rb_filesystem_encoding();</div><div class='add'>+    if (rb_enc_to_index(enc) == ENCINDEX_US_ASCII)</div><div class='add'>+	enc = rb_ascii8bit_encoding();</div><div class='add'>+    flags |= GLOB_VERBOSE;</div><div class='add'>+    args.glob.func = push_pattern;</div><div class='add'>+    args.glob.value = ary;</div><div class='add'>+    args.glob.enc = enc;</div><div class='add'>+    args.flags = flags;</div><div class='add'>+#if defined _WIN32 || defined __APPLE__</div><div class='add'>+    enc = rb_utf8_encoding();</div><div class='ctx'> #endif</div><div class='del'>-    args.func = push_pattern;</div><div class='del'>-    args.value = ary;</div><div class='del'>-    args.enc = enc;</div><div class='ctx'> </div><div class='ctx'>     RB_GC_GUARD(str);</div><div class='del'>-    return ruby_brace_glob0(RSTRING_PTR(str), flags | GLOB_VERBOSE,</div><div class='del'>-			    rb_glob_caller, (VALUE)&amp;args, enc);</div><div class='add'>+    return ruby_brace_expand(RSTRING_PTR(str), flags,</div><div class='add'>+			     push_caller, (VALUE)&amp;args, enc);</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> static VALUE</div><div class='hunk'>@@ -2211,7 +2364,7 @@ dir_s_glob(int argc, VALUE *argv, VALUE obj)</div><div class='ctx'> static VALUE</div><div class='ctx'> dir_open_dir(int argc, VALUE *argv)</div><div class='ctx'> {</div><div class='del'>-    VALUE dir = rb_funcall2(rb_cDir, rb_intern("open"), argc, argv);</div><div class='add'>+    VALUE dir = rb_funcallv(rb_cDir, rb_intern("open"), argc, argv);</div><div class='ctx'> </div><div class='ctx'>     rb_check_typeddata(dir, &amp;dir_data_type);</div><div class='ctx'>     return dir;</div><div class='hunk'>@@ -2486,6 +2639,73 @@ rb_dir_exists_p(VALUE obj, VALUE fname)</div><div class='ctx'> }</div><div class='ctx'> </div><div class='ctx'> /*</div><div class='add'>+ * call-seq:</div><div class='add'>+ *   Dir.empty?(path_name)  -&gt;  true or false</div><div class='add'>+ *</div><div class='add'>+ * Returns &lt;code&gt;true&lt;/code&gt; if the named file is an empty directory,</div><div class='add'>+ * &lt;code&gt;false&lt;/code&gt; if it is not a directory or non-empty.</div><div class='add'>+ */</div><div class='add'>+static VALUE</div><div class='add'>+rb_dir_s_empty_p(VALUE obj, VALUE dirname)</div><div class='add'>+{</div><div class='add'>+    DIR *dir;</div><div class='add'>+    struct dirent *dp;</div><div class='add'>+    VALUE result = Qtrue, orig;</div><div class='add'>+    const char *path;</div><div class='add'>+    enum {false_on_notdir = 1};</div><div class='add'>+</div><div class='add'>+    GlobPathValue(dirname, FALSE);</div><div class='add'>+    orig = rb_str_dup_frozen(dirname);</div><div class='add'>+    dirname = rb_str_encode_ospath(dirname);</div><div class='add'>+    dirname = rb_str_dup_frozen(dirname);</div><div class='add'>+    path = RSTRING_PTR(dirname);</div><div class='add'>+</div><div class='add'>+#if defined HAVE_GETATTRLIST &amp;&amp; defined ATTR_DIR_ENTRYCOUNT</div><div class='add'>+    {</div><div class='add'>+	u_int32_t attrbuf[SIZEUP32(fsobj_tag_t)];</div><div class='add'>+	struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, ATTR_CMN_OBJTAG,};</div><div class='add'>+	if (getattrlist(path, &amp;al, attrbuf, sizeof(attrbuf), 0) != 0)</div><div class='add'>+	    rb_sys_fail_path(orig);</div><div class='add'>+	if (*(const fsobj_tag_t *)(attrbuf+1) == VT_HFS) {</div><div class='add'>+	    al.commonattr = 0;</div><div class='add'>+	    al.dirattr = ATTR_DIR_ENTRYCOUNT;</div><div class='add'>+	    if (getattrlist(path, &amp;al, attrbuf, sizeof(attrbuf), 0) == 0) {</div><div class='add'>+		if (attrbuf[0] &gt;= 2 * sizeof(u_int32_t))</div><div class='add'>+		    return attrbuf[1] ? Qfalse : Qtrue;</div><div class='add'>+		if (false_on_notdir) return Qfalse;</div><div class='add'>+	    }</div><div class='add'>+	    rb_sys_fail_path(orig);</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+#endif</div><div class='add'>+</div><div class='add'>+    dir = opendir(path);</div><div class='add'>+    if (!dir) {</div><div class='add'>+	int e = errno;</div><div class='add'>+	switch (e) {</div><div class='add'>+	  case EMFILE: case ENFILE:</div><div class='add'>+	    rb_gc();</div><div class='add'>+	    dir = opendir(path);</div><div class='add'>+	    if (dir) break;</div><div class='add'>+	    e = errno;</div><div class='add'>+	    /* fall through */</div><div class='add'>+	  default:</div><div class='add'>+	    if (false_on_notdir &amp;&amp; e == ENOTDIR) return Qfalse;</div><div class='add'>+	    rb_syserr_fail_path(e, orig);</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+    errno = 0;</div><div class='add'>+    while ((dp = READDIR(dir, NULL)) != NULL) {</div><div class='add'>+	if (!to_be_skipped(dp)) {</div><div class='add'>+	    result = Qfalse;</div><div class='add'>+	    break;</div><div class='add'>+	}</div><div class='add'>+    }</div><div class='add'>+    closedir(dir);</div><div class='add'>+    return result;</div><div class='add'>+}</div><div class='add'>+</div><div class='add'>+/*</div><div class='ctx'>  *  Objects of class &lt;code&gt;Dir&lt;/code&gt; are directory streams representing</div><div class='ctx'>  *  directories in the underlying file system. They provide a variety of</div><div class='ctx'>  *  ways to list directories and their contents. See also</div><div class='hunk'>@@ -2536,6 +2756,7 @@ Init_Dir(void)</div><div class='ctx'>     rb_define_singleton_method(rb_cDir,"[]", dir_s_aref, -1);</div><div class='ctx'>     rb_define_singleton_method(rb_cDir,"exist?", rb_file_directory_p, 1);</div><div class='ctx'>     rb_define_singleton_method(rb_cDir,"exists?", rb_dir_exists_p, 1);</div><div class='add'>+    rb_define_singleton_method(rb_cDir,"empty?", rb_dir_s_empty_p, 1);</div><div class='ctx'> </div><div class='ctx'>     rb_define_singleton_method(rb_cFile,"fnmatch", file_s_fnmatch, -1);</div><div class='ctx'>     rb_define_singleton_method(rb_cFile,"fnmatch?", file_s_fnmatch, -1);</div><div class='hunk'>@@ -2579,4 +2800,11 @@ Init_Dir(void)</div><div class='ctx'>      *  0.</div><div class='ctx'>      */</div><div class='ctx'>     rb_file_const("FNM_SYSCASE", INT2FIX(FNM_SYSCASE));</div><div class='add'>+</div><div class='add'>+    /*  Document-const: File::Constants::FNM_SHORTNAME</div><div class='add'>+     *</div><div class='add'>+     *  Makes patterns to match short names if existing.  Valid only</div><div class='add'>+     *  on Microsoft Windows.</div><div class='add'>+     */</div><div class='add'>+    rb_file_const("FNM_SHORTNAME", INT2FIX(FNM_SHORTNAME));</div><div class='ctx'> }</div><div class='head'>diff --git a/dln.c b/dln.c<br/>index e5269ca441..5af9a57802 100644<br/>--- a/<a href='/ruby.git/tree/dln.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>dln.c</a><br/>+++ b/<a href='/ruby.git/tree/dln.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>dln.c</a></div><div class='hunk'>@@ -85,10 +85,6 @@ char *getenv();</div><div class='ctx'> # endif</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='del'>-#if defined(__BEOS__) || defined(__HAIKU__)</div><div class='del'>-# include &lt;image.h&gt;</div><div class='del'>-#endif</div><div class='del'>-</div><div class='ctx'> #ifndef dln_loaderror</div><div class='ctx'> static void</div><div class='ctx'> dln_loaderror(const char *format, ...)</div><div class='hunk'>@@ -106,7 +102,7 @@ dln_loaderror(const char *format, ...)</div><div class='ctx'> # define USE_DLN_DLOPEN</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='del'>-#if defined(__hp9000s300) || ((defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)) &amp;&amp; !defined(__ELF__)) || defined(__BORLANDC__) || defined(NeXT) || defined(__WATCOMC__) || defined(MACOSX_DYLD)</div><div class='add'>+#if defined(__hp9000s300) || ((defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)) &amp;&amp; !defined(__ELF__)) || defined(NeXT) || defined(MACOSX_DYLD)</div><div class='ctx'> # define EXTERNAL_PREFIX "_"</div><div class='ctx'> #else</div><div class='ctx'> # define EXTERNAL_PREFIX ""</div><div class='hunk'>@@ -1117,12 +1113,12 @@ dln_sym(const char *name)</div><div class='ctx'> #endif</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='del'>-#if defined _WIN32 &amp;&amp; !defined __CYGWIN__</div><div class='add'>+#ifdef _WIN32</div><div class='ctx'> #include &lt;windows.h&gt;</div><div class='ctx'> #include &lt;imagehlp.h&gt;</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='del'>-#if defined _WIN32 &amp;&amp; !defined __CYGWIN__</div><div class='add'>+#ifdef _WIN32</div><div class='ctx'> static const char *</div><div class='ctx'> dln_strerror(char *message, size_t size)</div><div class='ctx'> {</div><div class='hunk'>@@ -1249,12 +1245,15 @@ rb_w32_check_imported(HMODULE ext, HMODULE mine)</div><div class='ctx'> void*</div><div class='ctx'> dln_load(const char *file)</div><div class='ctx'> {</div><div class='add'>+#if (defined _WIN32 || defined USE_DLN_DLOPEN) &amp;&amp; defined RUBY_EXPORT</div><div class='add'>+    static const char incompatible[] = "incompatible library version";</div><div class='add'>+#endif</div><div class='ctx'> #if !defined(_AIX) &amp;&amp; !defined(NeXT)</div><div class='ctx'>     const char *error = 0;</div><div class='ctx'> #define DLN_ERROR() (error = dln_strerror(), strcpy(ALLOCA_N(char, strlen(error) + 1), error))</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='del'>-#if defined _WIN32 &amp;&amp; !defined __CYGWIN__</div><div class='add'>+#if defined _WIN32</div><div class='ctx'>     HINSTANCE handle;</div><div class='ctx'>     WCHAR *winfile;</div><div class='ctx'>     char message[1024];</div><div class='hunk'>@@ -1282,7 +1281,7 @@ dln_load(const char *file)</div><div class='ctx'> #if defined _WIN32 &amp;&amp; defined RUBY_EXPORT</div><div class='ctx'>     if (!rb_w32_check_imported(handle, rb_libruby_handle())) {</div><div class='ctx'> 	FreeLibrary(handle);</div><div class='del'>-	error = "incompatible library version";</div><div class='add'>+	error = incompatible;</div><div class='ctx'> 	goto failed;</div><div class='ctx'>     }</div><div class='ctx'> #endif</div><div class='hunk'>@@ -1331,7 +1330,6 @@ dln_load(const char *file)</div><div class='ctx'> 	}</div><div class='ctx'> # if defined RUBY_EXPORT</div><div class='ctx'> 	{</div><div class='del'>-	    static const char incompatible[] = "incompatible library version";</div><div class='ctx'> 	    void *ex = dlsym(handle, EXTERNAL_PREFIX"ruby_xmalloc");</div><div class='ctx'> 	    if (ex &amp;&amp; ex != ruby_xmalloc) {</div><div class='ctx'> </div><div class='hunk'>@@ -1442,54 +1440,6 @@ dln_load(const char *file)</div><div class='ctx'>     }</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='del'>-#if defined(__BEOS__) || defined(__HAIKU__)</div><div class='del'>-# define DLN_DEFINED</div><div class='del'>-    {</div><div class='del'>-      status_t err_stat;  /* BeOS error status code */</div><div class='del'>-      image_id img_id;    /* extension module unique id */</div><div class='del'>-      void (*init_fct)(); /* initialize function for extension module */</div><div class='del'>-</div><div class='del'>-      /* load extension module */</div><div class='del'>-      img_id = load_add_on(file);</div><div class='del'>-      if (img_id &lt;= 0) {</div><div class='del'>-	dln_loaderror("Failed to load add_on %.200s error_code=%x",</div><div class='del'>-	  file, img_id);</div><div class='del'>-      }</div><div class='del'>-</div><div class='del'>-      /* find symbol for module initialize function. */</div><div class='del'>-      /* The Be Book KernelKit Images section described to use</div><div class='del'>-	 B_SYMBOL_TYPE_TEXT for symbol of function, not</div><div class='del'>-	 B_SYMBOL_TYPE_CODE. Why ? */</div><div class='del'>-      /* strcat(init_fct_symname, "__Fv"); */  /* parameter nothing. */</div><div class='del'>-      /* "__Fv" dont need! The Be Book Bug ? */</div><div class='del'>-      err_stat = get_image_symbol(img_id, buf,</div><div class='del'>-				  B_SYMBOL_TYPE_TEXT, (void **)&amp;init_fct);</div><div class='del'>-</div><div class='del'>-      if (err_stat != B_NO_ERROR) {</div><div class='del'>-	char real_name[MAXPATHLEN];</div><div class='del'>-</div><div class='del'>-	strlcpy(real_name, buf, MAXPATHLEN);</div><div class='del'>-	strlcat(real_name, "__Fv", MAXPATHLEN);</div><div class='del'>-        err_stat = get_image_symbol(img_id, real_name,</div><div class='del'>-				    B_SYMBOL_TYPE_TEXT, (void **)&amp;init_fct);</div><div class='del'>-      }</div><div class='del'>-</div><div class='del'>-      if ((B_BAD_IMAGE_ID == err_stat) || (B_BAD_INDEX == err_stat)) {</div><div class='del'>-	unload_add_on(img_id);</div><div class='del'>-	dln_loaderror("Failed to lookup Init function %.200s", file);</div><div class='del'>-      }</div><div class='del'>-      else if (B_NO_ERROR != err_stat) {</div><div class='del'>-	char errmsg[] = "Internal of BeOS version. %.200s (symbol_name = %s)";</div><div class='del'>-	unload_add_on(img_id);</div><div class='del'>-	dln_loaderror(errmsg, strerror(err_stat), buf);</div><div class='del'>-      }</div><div class='del'>-</div><div class='del'>-      /* call module initialize function. */</div><div class='del'>-      (*init_fct)();</div><div class='del'>-      return (void*)img_id;</div><div class='del'>-    }</div><div class='del'>-#endif /* __BEOS__ || __HAIKU__ */</div><div class='del'>-</div><div class='ctx'> #ifndef DLN_DEFINED</div><div class='ctx'>     dln_notimplement();</div><div class='ctx'> #endif</div><div class='head'>diff --git a/dln_find.c b/dln_find.c<br/>index 56a19818cf..b08612764e 100644<br/>--- a/<a href='/ruby.git/tree/dln_find.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>dln_find.c</a><br/>+++ b/<a href='/ruby.git/tree/dln_find.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>dln_find.c</a></div><div class='hunk'>@@ -48,13 +48,6 @@ char *dln_argv0;</div><div class='ctx'> #   define S_ISDIR(m) (((m) &amp; S_IFMT) == S_IFDIR)</div><div class='ctx'> #endif</div><div class='ctx'> </div><div class='del'>-#ifdef HAVE_SYS_PARAM_H</div><div class='del'>-# include &lt;sys/param.h&gt;</div><div class='del'>-#endif</div><div class='del'>-#ifndef MAXPATHLEN</div><div class='del'>-# define MAXPATHLEN 1024</div><div class='del'>-#endif</div><div class='del'>-</div><div class='ctx'> #ifdef HAVE_UNISTD_H</div><div class='ctx'> # include &lt;unistd.h&gt;</div><div class='ctx'> #endif</div><div class='hunk'>@@ -276,13 +269,15 @@ dln_find_1(const char *fname, const char *path, char *fbuf, size_t size,</div><div class='ctx'> 	    }</div><div class='ctx'> 	    goto next;</div><div class='ctx'> 	}</div><div class='del'>-#endif /* _WIN32 or __EMX__ */</div><div class='add'>+#endif</div><div class='ctx'> </div><div class='del'>-	if (stat(fbuf, &amp;st) == 0) {</div><div class='add'>+#ifndef S_ISREG</div><div class='add'>+# define S_ISREG(m) (((m) &amp; S_IFMT) == S_IFREG)</div><div class='add'>+#endif</div><div class='add'>+	if (stat(fbuf, &amp;st) == 0 &amp;&amp; S_ISREG(st.st_mode)) {</div><div class='ctx'> 	    if (exe_flag == 0) return fbuf;</div><div class='ctx'> 	    /* looking for executable */</div><div class='del'>-	    if (!S_ISDIR(st.st_mode) &amp;&amp; eaccess(fbuf, X_OK) == 0)</div><div class='del'>-		return fbuf;</div><div class='add'>+	    if (eaccess(fbuf, X_OK) == 0) return fbuf;</div><div class='ctx'> 	}</div><div class='ctx'>       next:</div><div class='ctx'> 	/* if not, and no other alternatives, life is bleak */</div><div class='head'>diff --git a/dmydln.c b/dmydln.c<br/>index 25872efc98..0fc0a5325e 100644<br/>--- a/<a href='/ruby.git/tree/dmydln.c?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>dmydln.c</a><br/>+++ b/<a href='/ruby.git/tree/dmydln.c?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>dmydln.c</a></div><div class='hunk'>@@ -1,5 +1,6 @@</div><div class='ctx'> #include "ruby/ruby.h"</div><div class='ctx'> </div><div class='add'>+NORETURN(void *dln_load(const char *));</div><div class='ctx'> void*</div><div class='ctx'> dln_load(const char *file)</div><div class='ctx'> {</div><div class='head'>diff --git a/doc/ChangeLog-0.06_to_0.52 b/doc/ChangeLog-0.06_to_0.52<br/>new file mode 100644<br/>index 0000000000..63826081b3<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/doc/ChangeLog-0.06_to_0.52?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>doc/ChangeLog-0.06_to_0.52</a></div><div class='hunk'>@@ -0,0 +1,1147 @@</div><div class='add'>+Fri Oct 14 13:22:18 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.52: â€¦â€¦ãªã‚“ã¦ã“ã£ãŸã„.</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): returnã®å‡¦ç†ãŒé–“é•ã£ã¦ã„ãŸã®ã§, ãƒžã‚·ãƒ³ã«ã‚ˆã£ã¦</div><div class='add'>+	  ã¯returnã§é–¢æ•°ã‚’çµ‚äº†ã™ã‚‹ã ã‘ã§ãªãtoplevelã¾ã§ã¤ãæŠœã‘ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* object.c: Builtinã‚¯ãƒ©ã‚¹ã‚’æ–°è¨­. çµ„ã¿è¾¼ã¿é–¢æ•°ã‚’Kernelã‹ã‚‰ç§»ã—ãŸ.</div><div class='add'>+	  nilãŒçµ„ã¿è¾¼ã¿é–¢æ•°ã‚’ç†è§£ã™ã‚‹ã¨ãƒˆãƒ©ãƒ–ãƒ«ã®å…ƒã§ã‚ã‚‹.</div><div class='add'>+</div><div class='add'>+	* dbm.c: Dictã¨åŒæ§˜ã«eachãŒ[key,value]ã‚’è¿”ã™ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* version 0.51</div><div class='add'>+</div><div class='add'>+Thu Oct 13 12:13:48 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c(SETUP_ARGS): ä»˜åŠ æ¼”ç®—å­ãŒé…åˆ—ã§ãªã„æ™‚ã«ã¯é…åˆ—ã«å¤‰æ›ã™ã‚‹.</div><div class='add'>+</div><div class='add'>+	* parse.y: æ‹¬å¼§ãªã—ã®ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã§ã‚‚`*'ã«ã‚ˆã‚‹ä»˜åŠ å¼•æ•°ãŒä½¿ãˆã‚‹</div><div class='add'>+	  ã‚ˆã†ã«ã—ãŸ. ãŸã ã—, é€šå¸¸å¼•æ•°ãŒä¸€ã¤ã‚‚ãªã„å ´åˆã¯ä¹—ç®—æ¼”ç®—å­ã¨åŒºåˆ¥ãŒ</div><div class='add'>+	  ã¤ã‹ãªã„ã®ã§, å¿…ãšæ‹¬å¼§ãŒå¿…è¦.</div><div class='add'>+</div><div class='add'>+Wed Oct 12 10:09:07 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®è¨ˆç®—ã‚’inlineåŒ–. ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒŸã‚¹ãŒã‚</div><div class='add'>+	  ã‚Œã°é–¢æ•°å‘¼ã³å‡ºã—ã§ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æ¤œç´¢ã™ã‚‹. methods.cã¯ãªããªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_eval): ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ç”¨ã®é ˜åŸŸã‚’alloca()ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´.</div><div class='add'>+	  ã‚µã‚¤ã‚ºã®å¤‰æ›´ãŒå¿…è¦ã«ãªã‚Œã°æ”¹ã‚ã¦malloc()ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* parse.y: error recoveryã®éš›ã«lex_stateã‚’æ›´æ–°ã—ã¦ãŠãã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Tue Oct 11 17:10:46 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* socket.c(for_fd): ãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­(Fixnum)ã‹ã‚‰ã‚½ã‚±ãƒƒãƒˆã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹</div><div class='add'>+	  ã‚’å¾—ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰. ãŸã¨ãˆã°inetdã‹ã‚‰èµ·å‹•ã•ã‚ŒãŸã‚µãƒ¼ãƒã§æ¨™æº–å…¥å‡ºåŠ›ã«</div><div class='add'>+	  ã‚½ã‚±ãƒƒãƒˆæ“ä½œã‚’è¡Œãªã†ãŸã‚ã«ä½¿ã†. ã¤ã¾ã‚ŠSocket.for_fd($stdin)ã§æ¨™</div><div class='add'>+	  æº–å…¥åŠ›ã«å¯¾å¿œã™ã‚‹ã‚½ã‚±ãƒƒãƒˆã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒå¾—ã‚‰ã‚Œã‚‹.</div><div class='add'>+</div><div class='add'>+	* io.c(to_i): IOã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’æ•´æ•°ã«å¤‰æ›ã™ã‚‹ã¨ãã®ãƒ•ã‚¡ã‚¤ãƒ«</div><div class='add'>+	  è¨˜è¿°å­ã‚’è¿”ã™ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* numeric.c(num2int): to_iãƒ¡ã‚½ãƒƒãƒ‰ã‚’ä½¿ã£ã¦ã§ãã‚‹é™ã‚Šæ•´æ•°ã«å¤‰æ›ã™ã‚‹.</div><div class='add'>+	  ä»¥å‰ã¯num2fixã ã‘ãŒå…¨ã¦ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«å¯¾ã—ã¦to_iãƒ¡ã‚½ãƒƒãƒ‰ã‚’é©ç”¨</div><div class='add'>+	  ã—ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* sprintf.c(Fsprintf): æ•´æ•°è¡¨ç¤ºã®éš›, ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’ã§ãã‚‹é™ã‚Šæ•´æ•°</div><div class='add'>+	  ã«å¤‰æ›ã™ã‚‹ã‚ˆã†ã«(to_iãƒ¡ã‚½ãƒƒãƒ‰ã‚’ä½¿ã†).</div><div class='add'>+</div><div class='add'>+Fri Oct  7 14:06:32 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c(Fcaller): å¿…è¦æ€§ãŒã‚ˆãåˆ†ã‹ã‚‰ãªã„ã®ã§ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‹ã‚‰å‰Šé™¤.</div><div class='add'>+	  å°†æ¥ãƒ‡ãƒãƒƒã‚¬ã‚’ä½œã‚‹æ™‚ã«å¾©æ´»ã•ã›ã‚ˆã†.</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): Cã§è¨˜è¿°ã•ã‚ŒãŸãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã§ã¯ç’°å¢ƒã‚’ã‚¹ã‚¿ãƒƒã‚¯</div><div class='add'>+	  ã«ã‚»ãƒ¼ãƒ–ã—ãªã„ã“ã¨ã«ã‚ˆã£ã¦é«˜é€ŸåŒ–.</div><div class='add'>+</div><div class='add'>+Wed Oct  5 15:00:58 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ruby.h: ä¸€æ™‚env.hã«ç§»å‹•ã—ã¦ãŸQselfã®å®šç¾©ã‚’å¾©æ´». ãŸã ã—ä»Šå›žã¯é–¢æ•°</div><div class='add'>+	  ã¨ã—ã¦å®Ÿç¾(env.hã§ã¯å¤‰æ•°ã¨ã—ã¦å†å®šç¾©ã—ã¦ã‚ã‚‹).</div><div class='add'>+</div><div class='add'>+	* ruby.h: TRUEã§syntax errorã«ãªã‚‰ãªã„ã‚ˆã†#undefã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_eval): threadåŒ–ã«æŒ‘æˆ¦ã—ãŸãŒ, å¤±æ•—(é€Ÿããªã‚‰ãªã‹ã£ãŸ).</div><div class='add'>+	  ãŒ, Scopingãªã©ã®ç„¡é§„ãªã‚³ãƒ¼ãƒ‰ã®å‰Šé™¤ã¨ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã®å¼•æ•°ã‚»ãƒƒ</div><div class='add'>+	  ãƒˆã®inlineåŒ–ã§è‹¥å¹²ã®é«˜é€ŸåŒ–ã‚’å®Ÿç¾ã—ãŸ. å‰¯ä½œç”¨ã¨ã—ã¦, argc, argvå½¢</div><div class='add'>+	  å¼ã®é–¢æ•°å‘¼ã³å‡ºã—ã®ä»•æ§˜ãŒå¤‰åŒ–ã—ãŸ(argvã«selfã‚’å«ã¾ãªããªã£ãŸ).</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã®é«˜é€ŸåŒ–.</div><div class='add'>+</div><div class='add'>+Tue Oct  4 11:40:53 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ruby-mode.el: ä¿®é£¾å­ã«å¯¾å¿œã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: å¤šé‡ä»£å…¥ã«restã‚’ã¤ã‘ãŸ. ã“ã®æ©Ÿèƒ½ã‚’ä½¿ãˆã°optionalå¼•æ•°ã®</div><div class='add'>+	  è§£æžãŒç°¡å˜ã«ã§ãã‚‹(ã¯ãš).</div><div class='add'>+</div><div class='add'>+	* pack.c(unpack): uuencodeå½¢å¼ã®decodeã®éš›ã«æ–‡å­—åˆ—ã®é•·ã•ãŒé–“é•ã£ã¦</div><div class='add'>+	  ã„ãŸ.</div><div class='add'>+</div><div class='add'>+Mon Oct  3 15:58:41 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* file.c(type): ãƒ•ã‚¡ã‚¤ãƒ«ã‚¿ã‚¤ãƒ—ã‚’æ–‡å­—åˆ—ã§è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰.</div><div class='add'>+</div><div class='add'>+Fri Sep 30 11:36:07 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* object.c: ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®çœŸã®å€¤ã§ã‚ã‚‹%TRUEã®å€¤ã‚’1(Fixnum)ã‹ã‚‰tã«å¤‰</div><div class='add'>+	  æ›´ã—ãŸ. to_sã§æ–‡å­—åˆ—ã«å¤‰æ›ã—ãŸæ™‚ã«ã‚‚`t'ã¨è¡¨ç¤ºã•ã‚Œã‚‹. æ›´ã«è¸ã¿è¾¼</div><div class='add'>+	  ã‚“ã§`t'ã‚’äºˆç´„èªžã«ã—ã¦lispã®ã‚ˆã†ã«ã—ã‚ˆã†ã‹ã¨ã‚‚æ€ã£ãŸãŒ, ãã“ã¾ã§</div><div class='add'>+	  ã¯æ±ºå¿ƒã§ããªã‹ã£ãŸ. ä¸€æ–‡å­—ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯ã‹ãªã‚Šä½¿ã„ãã†ãªæ°—ãŒã™</div><div class='add'>+	  ã‚‹ã®ã§â€¦.</div><div class='add'>+</div><div class='add'>+	* array.c,dict.c: equalã‚’å†å®šç¾©ã—ã¦ã„ã‚‹ã‚¯ãƒ©ã‚¹ã§, hashã‚’æ­£ã—ãå®šç¾©</div><div class='add'>+	  ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Wed Sep 28 23:30:28 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c(Ffail): ä»Šã¾ã§failã¯ã‚«ãƒ¼ãƒãƒ«ã‚¯ãƒ©ã‚¹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚ã£ãŸãŒ,</div><div class='add'>+	  æ§‹æ–‡ã«çµ„ã¿è¾¼ã‚“ã . ã“ã®å¤‰æ›´ã«ã‚ˆã£ã¦, 1)`fail'ã¯äºˆç´„èªžã¨ãªã‚Š, ãƒ­ãƒ¼</div><div class='add'>+	  ã‚«ãƒ«å¤‰æ•°ã«ç”¨ã„ã‚‹ã“ã¨ãŒã§ããªããªã£ãŸ. 2)`fail'å˜ä½“ã§ä¾‹å¤–ã‚’ç™ºç”Ÿã™</div><div class='add'>+	  ã‚‹ã‚ˆã†ã«ãªã£ãŸ. 3)failã¯ãƒ¡ã‚½ãƒƒãƒ‰ã§ã¯ãªããªã£ãŸã®ã§å†å®šç¾©ã•ã‚Œã‚‹å¯</div><div class='add'>+	  èƒ½æ€§ãŒãªããªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* dic.c, dbm.c(indexes): Arrayã®indexesã¨åŒæ§˜ã®æ©Ÿèƒ½ã‚’æŒã¤ãƒ¡ã‚½ãƒƒãƒ‰</div><div class='add'>+	  ã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* array.c(indexes): å¼•æ•°ã‚’ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¨ã™ã‚‹è¦ç´ ã®é…åˆ—ã‚’è¿”ã™. æ•´æ•°</div><div class='add'>+	  ã®é…åˆ—ã‚’å¼•æ•°ã¨ã™ã‚‹æ™‚ã«ã¯å¼•æ•°ã®è¦ç´ ã‚’ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¨ã™ã‚‹è¦ç´ ã®é…åˆ—</div><div class='add'>+	  ã‚’è¿”ã™.</div><div class='add'>+</div><div class='add'>+Mon Sep 19 13:42:31 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* array.c(aset): éƒ¨åˆ†é…åˆ—ã«å¯¾ã™ã‚‹ä»£å…¥ã§é…åˆ—ä»¥å¤–ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæŒ‡</div><div class='add'>+	  å®šã•ã‚ŒãŸå ´åˆã«å¤šé‡ä»£å…¥ã¨åŒã˜ãƒ«ãƒ¼ãƒ«ã§é…åˆ—åŒ–ã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* io.c(print): å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸå„ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«print_onãƒ¡ãƒƒã‚»ãƒ¼</div><div class='add'>+	  ã‚¸ã‚’ä¸Žãˆã‚‹ã‚ˆã†ã«. å®Ÿè¡Œé€Ÿåº¦ã¯è½ã¡ã‚‹ãŒæŸ”è»Ÿæ€§ã¯å¢—ã™.</div><div class='add'>+</div><div class='add'>+Fri Sep 16 14:59:18 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* glob.c: ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã®å°Žå…¥. bashã«ä½¿ã‚ã‚Œã¦ã„ã‚‹GNUã®globãƒ«ãƒ¼ãƒ</div><div class='add'>+	  ãƒ³ã‚’æµç”¨ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Mon Sep 12 18:36:58 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y(value_expr): å¼ãŒnilã®æ™‚ã«å¯¾å¿œ.</div><div class='add'>+</div><div class='add'>+	* class.c: ICLASSã®classãŒå¿…ãšClass/Moduleã‚’æŒ‡ã™ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Tue Sep  6 16:23:28 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* re.c:	æ­£è¦è¡¨ç¾å†…ã§ã€Œ\æ•°å­—ã€å½¢å¼ãŒæŒ‡å®šã§ãã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* parse.y:ã€Œdo expr using var ... endã€å½¢å¼ã¯ãªããªã£ãŸ. å¯‚ã—ã„æ°—</div><div class='add'>+	  ã‚‚ã™ã‚‹. *BACKWARD INCOMPATIBILITY*</div><div class='add'>+</div><div class='add'>+Mon Sep  5 10:59:01 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* numeric.c(next): Numericã‚¯ãƒ©ã‚¹ã«ã‚‚nextã‚’æä¾›.</div><div class='add'>+</div><div class='add'>+	* string.c(upto): uptoã‚’æä¾›.</div><div class='add'>+</div><div class='add'>+	* range.c(each): nextã‚’ä½¿ã£ãŸã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã‹ã‚‰uptoã‚’ä½¿ã†ã‚ˆã†ã«å¤‰</div><div class='add'>+	  æ›´ã—ãŸ. ã“ã®æ–¹ãŒä¸€ã¤ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§å‡¦ç†ã‚’ã¾ã¨ã‚ã§è¡Œãªã†ã“ã¨ãŒã§ãã‚‹.</div><div class='add'>+</div><div class='add'>+Fri Sep  2 15:25:39 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* dict.c(each): æˆ»ã‚Šå€¤ã‚’[key, value]ã®ãƒšã‚¢ã«å¤‰æ›´. ä»Šã¾ã§ã®eachã¯</div><div class='add'>+	  each_valueã¨ã—ã¦æ®‹ã‚‹. *BACKWARD INCOMPATIBILITY*</div><div class='add'>+</div><div class='add'>+Thu Sep  1 10:49:04 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* æˆåŠŸã—ãŸ(ç‰¹åˆ¥ãªæˆ»ã‚Šå€¤ã‚’æŒãŸãªã„)ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«ã¯`0'ã‚’è¿”ã™ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Wed Aug 31 00:26:51 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* string.c: ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’å¾—ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰`sum'ã‚’ä½œã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* class.c(include_class_new): ICLASSã®classã‚’ã‚‚ã¨ã®ã‚¯ãƒ©ã‚¹ã«ã—ãŸ.</div><div class='add'>+	  gcã®éš›ã«å…ƒã‚¯ãƒ©ã‚¹ã‚’ãƒžãƒ¼ã‚¯ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã®ãŒ, ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’å¢—ã‚„ã™ä½™</div><div class='add'>+	  åœ°ãŒç„¡ã„ã®ã§, classãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’æµç”¨ã—ãŸ. ç§ã®è¦‹ç©ã‚ŠãŒé–“é•ã£ã¦ã„</div><div class='add'>+	  ã¦, ICLASSã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ã‚‹äº‹ãŒã‚ã‚Œã°, ãŠã‹ã—ãªå‹•</div><div class='add'>+	  ä½œã‚’ã™ã‚‹ã ã‚ã†.</div><div class='add'>+</div><div class='add'>+	* eval.c(masign): å¼(a,b = nil)ã®å€¤ã‚’[nil]ã‹ã‚‰nilã«å¤‰æ›´ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Mon Aug 29 11:56:09 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* class.c: rb_define_mfuncã‚’ç„¡ãã—ã¦, ãƒ¡ã‚¿ã‚¯ãƒ©ã‚¹ã«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’ã‚¤ãƒ³</div><div class='add'>+	  ã‚¯ãƒ«ãƒ¼ãƒ‰ã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* error.c(yyerror): åŒã˜è¡Œã§è¤‡æ•°ã®syntax errorã‚’ãƒªãƒãƒ¼ãƒˆã—ãªã„ã‚ˆã†</div><div class='add'>+	  ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* file.c: FileTestãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã«ãƒ•ã‚¡ã‚¤ãƒ«ãƒ†ã‚¹ãƒˆãƒ¡ã‚½ãƒƒãƒ‰ã‚’åˆ†é›¢ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: æ¼”ç®—å­ã‚’æŒ‡å®šã™ã‚‹æ™‚ã®lex_stateã‚’æ­£ã—ãè¨­å®šã—ãŸ.</div><div class='add'>+</div><div class='add'>+Sat Aug 27 01:23:34 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* parse.y: if/whileãªã©ã®è¤‡åˆå¼ã‚’primaryã«ç§»å‹•ã—ãŸ. ã“ã‚Œã«ã‚ˆã£ã¦ä¾‹</div><div class='add'>+	  ãˆã°ã€Œif cond then a else b end.message()ã€ã®ã‚ˆã†ãªå¼ãŒæ›¸ã‘ã‚‹ã‚ˆ</div><div class='add'>+	  ã†ã«ãªã£ãŸ.</div><div class='add'>+</div><div class='add'>+Fri Aug 26 10:46:30 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* spec: æ•´ç†ã•ã‚ŒãŸæ–‡æ³•ã«ã—ãŸãŒã£ã¦æ›¸ãç›´ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: ã“ã“æ•°æ—¥ã§æ··ä¹±ã—ã¦ã„ãŸæ–‡æ³•ã‚’æ•´ç†ã—ãŸ. æ‹¬å¼§ã‚’çœç•¥ã—ãŸãƒ¡</div><div class='add'>+	  ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ãŒã§ãã‚‹ã‚ˆã†ã«ãªã£ãŸã“ã¨, modifierãŒä»˜ã‘ã‚‰ã‚Œã‚‹ã‚ˆã†</div><div class='add'>+	  ã«ãªã£ãŸã“ã¨, returnã«ãƒªã‚¹ãƒˆãŒæ¸¡ã›ã‚‹ã‚ˆã†ã«ãªã£ãŸã“ã¨ãŒä¸»ãªå¤‰æ›´ç‚¹</div><div class='add'>+	  ã§ã‚ã‚‹.</div><div class='add'>+</div><div class='add'>+	* processå‘¨ã‚ŠãŒæ€ªã—ã„ãŒã¨ã«ã‹ãSolaris 2.3ã§å‹•ãã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* parse.y: æ›–æ˜§æ€§ãŒãªã„å ´åˆã«ã¯ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã®å¼•æ•°ã®æ‹¬å¼§ã‚’çœç•¥</div><div class='add'>+	  ã§ãã‚‹ã‚ˆã†ã«. çœç•¥ã§ãã‚‹ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã®æ¡ä»¶ã¯, 1)ã‹ãªã‚‰ãš1å€‹</div><div class='add'>+	  ä»¥ä¸Šã®å¼•æ•°ã‚’å¿…è¦ã¨ã™ã‚‹ã“ã¨, 2)ç¬¬1å¼•æ•°ãŒ`+', `-', `(', `[', `{',</div><div class='add'>+	  `/'ãªã©, å¼ã®å§‹ã¾ã‚Šã«ç½®ã‹ã‚ŒãŸæ™‚ã¨é€”ä¸­ã«ç¾ã‚ŒãŸæ™‚ã¨ã§è§£é‡ˆãŒé•ã†è¨˜</div><div class='add'>+	  å·ã§å§‹ã¾ã‚‰ãªã„ã“ã¨, ã§ã‚ã‚‹.</div><div class='add'>+</div><div class='add'>+Thu Aug 25 13:54:58 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y(cond): æ¡ä»¶å¼ã®å±•é–‹éƒ¨ã«bugãŒã‚ã£ãŸ.</div><div class='add'>+</div><div class='add'>+Wed Aug 24 00:01:15 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* parse.y: returnã¯ã‚³ãƒ³ãƒžã§åŒºåˆ‡ã£ãŸãƒªã‚¹ãƒˆã‚‚å—ã‘å–ã‚‹ã‚ˆã†ã«. ã¤ã¾ã‚Š,</div><div class='add'>+	  return a, b, cã¯return [a, b, c]ã¨åŒã˜æ„å‘³ã«ãªã‚‹.</div><div class='add'>+</div><div class='add'>+	* parse.y: yieldä»¥å¤–ã®å¤§åŸŸè„±å‡ºåˆ¶å¾¡å¼ã‚’exprã‹ã‚‰expr0ã«ç§»ã—ãŸ. ã‚ˆã£</div><div class='add'>+	  ã¦ãƒ¡ã‚½ãƒƒãƒ‰ã®å¼•æ•°ã«åˆ¶å¾¡å¼ã‚’ä½¿ãˆãªããªã‚‹(ã“ã‚Œã§å›°ã‚‹äººã¯ã„ãªã„ã¯ãš).</div><div class='add'>+</div><div class='add'>+	* parse.y: `+'ã®å®šæ•°å±•é–‹ã®éš›ã«æ¼”ç®—å­ã®å„ªå…ˆé †ä½ã‚’å¿˜ã‚Œã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* eval.c: untilã®æˆ»ã‚Šå€¤ã¯nilã«ãªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: modifierã¨ã—ã¦ã®if/unless/while/untilã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* parse.y: æ–‡æ³•ã‹ã‚‰endã®å¾Œã‚ã«ã¤ã‘ã‚‹ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã‚’å‰Šé™¤. ã»ã¨ã‚“ã©ä½¿ã‚</div><div class='add'>+	  ãªã‹ã£ãŸä¸Šã«, emacsã§ã¯ruby-modeãŒã‚ã‚Œã°å¯¾å¿œã®ãƒã‚§ãƒƒã‚¯ãŒæ©Ÿæ¢°çš„ã«</div><div class='add'>+	  å‡ºæ¥ã‚‹ãŸã‚.</div><div class='add'>+</div><div class='add'>+Tue Aug 23 18:08:33 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c: ã‚¹ã‚¯ãƒªãƒ—ãƒˆå®Ÿè¡Œé–‹å§‹å‰ã«ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸæ™‚ã«core dumpã—ãŸ.</div><div class='add'>+	  çµ„ã¿è¾¼ã¿ç”¨ã«ã‚³ãƒ¼ãƒ‰ã‚’å¤‰æ›´ã—ãŸæ™‚ã«enbugã—ã¦ã—ã¾ã£ãŸ.</div><div class='add'>+</div><div class='add'>+Tue Aug 23 00:07:17 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c: doã®æˆ»ã‚Šå€¤ãŒã„ã¤ã‚‚nilã«ãªã£ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: loopåˆ¶å¾¡å¤‰æ•°ã®å¤šé‡ä»£å…¥åŒ–ã«bugãŒã‚ã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y(expand_op): æ–‡å­—åˆ—ã‚‚ç•³ã¿è¾¼ã¿ã®å¯¾è±¡ã«.</div><div class='add'>+</div><div class='add'>+Mon Aug 22 10:50:01 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y(expand_op): `+'ã«é–¢ã—ã¦ã¯çµåˆå‰‡ã‚’ä½¿ã£ã¦, ã‚ˆã‚Šå¤šãå®šæ•°ç•³</div><div class='add'>+	  ã¿è¾¼ã¿ã‚’è¡Œãªã†ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* ruby.c(proc_options): argcãŒ0ã®æ™‚ã«ã‚‚å¯¾å¿œ.</div><div class='add'>+</div><div class='add'>+	* parse.y: forãªã©ã®åˆ¶å¾¡å¤‰æ•°ã«å¤šé‡ä»£å…¥ã‚‚ä½¿ãˆã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Sat Aug 20 00:59:40 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* parse.y(call_op): æ¼”ç®—å­`~'ã®å–ã‚Šæ‰±ã„ã‚’ãƒ«ãƒ¼ãƒ«éƒ¨ã¸ç§»å‹•.</div><div class='add'>+</div><div class='add'>+Fri Aug 19 11:44:13 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* main.c: rubyã‚’ã»ã‹ã®ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã«çµ„ã¿è¾¼ã‚ã‚‹ã‚ˆã†ã«main()ã‚’åˆ†å‰²ã—ãŸ.</div><div class='add'>+	  ãã‚Œã«ã¨ã‚‚ãªã„, ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã®å‘¼ã³å‡ºã—æ§‹é€ ã‚’ä¿®æ­£ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: æ¡ä»¶å¼ã®å®šç¾©ã‚’å¤‰æ›´. ifãªã©ã®æ¡ä»¶å¼ã®ä¸­ã§ã ã‘`&amp;&amp;'ã‚„`||'</div><div class='add'>+	  ãŠã‚ˆã³`!'ã®å¼•æ•°ãŒæ¡ä»¶å¼ã«ãªã‚‹ã‚ˆã†ã«. ã“ã®å¤‰æ›´ã«ã‚ˆã‚Šæ¡ä»¶å¼ä»¥å¤–ã®</div><div class='add'>+	  å ´æ‰€ã§ã® `&amp;&amp;', `||', `!'æ¼”ç®—å­ã®å‹•ä½œãŒç›´è¦³ã«ä¸€è‡´ã™ã‚‹.</div><div class='add'>+</div><div class='add'>+	* parse.y: å®Ÿå¼•æ•°ã®`*'ã®å¾Œã«ç¶šãå¼•æ•°ã¯exprã«åˆ¶é™ã—ãŸ. ä»Šã¾ã§ã¯å…¨ã¦</div><div class='add'>+	  ã®æ–‡ãŒæœ‰åŠ¹ã§ã‚ã£ãŸãŒ, ã“ã“ã§å®šç¾©æ–‡ãŒã‚ã£ã¦ã‚‚ã—ã‚‡ã†ãŒãªã„.</div><div class='add'>+</div><div class='add'>+Thu Aug 18 10:21:45 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* re.c: æ­£è¦è¡¨ç¾ãƒ«ãƒ¼ãƒãƒ³ã®åˆæœŸåŒ–éƒ¨åˆ†ã‚’å‰Šé™¤ã—ã¦ã—ã¾ã£ã¦ã„ãŸ. ã“ã‚Œã§</div><div class='add'>+	  ã¯emacsã®æ­£è¦è¡¨ç¾ã«ãªã£ã¦ã—ã¾ã†.</div><div class='add'>+</div><div class='add'>+	* version.c: copyrightè¡¨ç¤ºã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* version.c: ãƒãƒ¼ã‚¸ãƒ§ãƒ³è¡¨ç¤ºã‚’stderrã«.</div><div class='add'>+</div><div class='add'>+	* configure.in: gccãŒãªã„å ´åˆtestã«å¤±æ•—ã—ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+Fri Aug 12 14:12:23 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* array.c(astore): é…åˆ—ã®æ‹¡å¤§ã™ã‚‹æ™‚ã«ã‚ã‚‹ç¨‹åº¦ã®å¤§ãã•ã‚’ã¾ã¨ã‚ã¦æ‹¡</div><div class='add'>+	  å¤§ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* io.c(Fprint): é…åˆ—ã«å¯¾ã—ã¦ã¯ä¸€åº¦æ–‡å­—åˆ—ã«å¤‰æ›ã™ã‚‹ã“ã¨ãªã, ç›´æŽ¥å†…</div><div class='add'>+	  å®¹ã‚’å‡ºåŠ›ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* string.c(str_new): memmoveã‹ã‚‰memcpyã¸ç½®ãæ›ãˆãŸ. ã“ã‚Œã§ã‚‚ã‹ãªã‚Š</div><div class='add'>+	  é€Ÿåº¦ãŒé•ã†.</div><div class='add'>+</div><div class='add'>+	* ruby.h: ãƒ‡ãƒ¼ã‚¿ãƒ¡ãƒ³ãƒã®å–ã‚Šå‡ºã—ã§åå‰ã‚’æ–‡å­—åˆ—ã‹ã‚‰IDã§æŒ‡å®šã™ã‚‹ã‚ˆã†</div><div class='add'>+	  ã«ã—ãŸ. ã‹ãªã‚Šã®é«˜é€ŸåŒ–ã«ãªã‚‹.</div><div class='add'>+</div><div class='add'>+	* io.c: $ARGFã¨ã„ã†å¤‰æ•°ã§å¼•æ•°åˆ—ã‹ã‚‰ãªã‚‹ä»®æƒ³ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆ</div><div class='add'>+	  ã¨ã—ã¦æ‰±ãˆã‚‹ã‚ˆã†ã«ã—ãŸ. ä»Šã¾ã§ã¯ãƒˆãƒƒãƒ—ãƒ¬ãƒ™ãƒ«ã®gets()ãªã©ã‚’ä½¿ã£ã¦</div><div class='add'>+	  ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„ãŸãŒ, ã©ã†ã‚‚ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæŒ‡å‘çš„ã§ã¯ãªã‹ã£ãŸ.</div><div class='add'>+</div><div class='add'>+Thu Aug 11 11:43:15 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* gc.c: mark_location()ã®é–“é•ã£ãŸå‘¼ã³å‡ºã—æ–¹ã®è¡ŒãŒæ®‹ã£ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* method.c: ãƒ—ãƒ­ãƒˆã‚¿ã‚¤ãƒ—å®£è¨€ãŒè¶³ã‚Šãªã‹ã£ãŸ.</div><div class='add'>+</div><div class='add'>+Wed Aug 10 15:54:46 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* variable.c: -vã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹æ™‚ã¯åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„,</div><div class='add'>+	  å¤§åŸŸå¤‰æ•°, ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°, ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã‚’å‚ç…§ã—ãŸæ™‚ç‚¹ã§warning</div><div class='add'>+	  ã‚’å‡ºã™ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Tue Aug  9 11:50:48 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* bignum.c: å†ªä¹—ã«é–¢ã—ã¦ã‚‚å¤šå€é•·æ¼”ç®—ã‚’è¡Œãªã†ã‚ˆã†ã«. ç‰¹ã«æµ®å‹•å°æ•°ç‚¹</div><div class='add'>+	  æ•°ã®ç¯„å›²ã‚’è¶ŠãˆãŸæ™‚ã®å‡¦ç†ã‚’çš„ç¢ºã«è¡Œãªã†ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* eval.c: ãƒ¡ã‚½ãƒƒãƒ‰å®šç¾©å¾Œã¯æ§‹æ–‡æœ¨ã‹ã‚‰, ãƒ¡ã‚½ãƒƒãƒ‰å®šç¾©éƒ¨åˆ†ã‚’å¤–ã™. ç„¡é§„</div><div class='add'>+	  ãªå†å®šç¾©ãŒèµ·ã“ã‚‰ãªã„ã‚ˆã†ã«ã™ã‚‹ãŸã‚ã¨2é‡ã«free()ã•ã‚Œãªã„ãŸã‚.</div><div class='add'>+</div><div class='add'>+	* array.c(Fary_aref): å¼•æ•°ãŒ1ã¤ã§Fixnumã®æ™‚, Range checkã‚’è¡Œãªã‚ãª</div><div class='add'>+	  ã„ã‚ˆã†ã«ä¿®æ­£.</div><div class='add'>+</div><div class='add'>+	* eval.c: ãƒ¡ã‚½ãƒƒãƒ‰ã®å¼•æ•°ã®æ•°ã‚’ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«æ™‚ã«è¨ˆç®—ã—ã¦è‹¥å¹²ã®é«˜é€ŸåŒ–.</div><div class='add'>+</div><div class='add'>+Mon Aug  8 13:06:24 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* object.c: nilã«ã‚ˆã‚‹æ¯”è¼ƒé€£éŽ–ã‚’ãªãã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: bitæ¼”ç®—å­ã®å„ªå…ˆé †ä½ã‚’æ¯”è¼ƒæ¼”ç®—å­ã‚ˆã‚Šã‚‚å¼·ãã—ãŸ.  Cã¨ã¯ç•°</div><div class='add'>+	  ãªã‚‹ã“ã¨ã«ãªã‚‹ãŒ, ç›´è¦³ã«ã¯åˆè‡´ã™ã‚‹.</div><div class='add'>+</div><div class='add'>+	* gc.c: ã‚¯ãƒ©ã‚¹ã‚’è§£æ”¾ã™ã‚‹æ™‚, å€‹ã€…ã®ãƒ¡ã‚½ãƒƒãƒ‰æ¯Žã«ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’ã‚¯ãƒªã‚¢ã™</div><div class='add'>+	  ã‚‹ã®ã§ã¯ãªã, ã‚¯ãƒ©ã‚¹å˜ä½ã§ã‚¯ãƒªã‚¢ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Thu Aug  4 18:45:09 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* methods.c(method_free): è§£æ”¾ã•ã‚ŒãŸãƒ¡ã‚½ãƒƒãƒ‰ã«é–¢ã—ã¦ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’ã‚¯</div><div class='add'>+	  ãƒªã‚¢ã—ã¦ãŠãå¿…è¦ãŒã‚ã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* gc.c: Dataã‚¯ãƒ©ã‚¹ã®ãƒ‡ãƒ¼ã‚¿éƒ¨åˆ†ã‚’free()ã—å¿˜ã‚Œã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+Wed Aug  3 09:58:14 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: def func .. endå½¢å¼ã«ã‚ˆã‚‹é–¢æ•°ãƒ¡ã‚½ãƒƒãƒ‰ã®å®šç¾©ã¯ãªããªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* methods.c: funcå½¢å¼ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’ãªãã—ãŸ. ã‚ã£ã¦ã‚‚, ã‚ã¾ã‚Šæ„å‘³ãŒ</div><div class='add'>+	  ãªã„ã®ã§.</div><div class='add'>+</div><div class='add'>+	* eval.c: $0ã¸ã®ä»£å…¥ã§ps(1)ã®å‡ºåŠ›ãŒå¤‰åŒ–ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* io.c(Fsyscall): syscall()ã‚’å®Ÿç¾.</div><div class='add'>+</div><div class='add'>+Mon Aug  1 13:41:11 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: ãƒ€ãƒ–ãƒ«ã‚¯ã‚©ãƒ¼ãƒˆã§å›²ã¾ã‚ŒãŸæ–‡å­—åˆ—ã‚„æ­£è¦è¡¨ç¾ä¸­ã§"#{å¤‰æ•°å}"</div><div class='add'>+	  ã¾ãŸã¯"#å¤‰æ•°å"ã¨ã„ã†å½¢å¼ã§å¤‰æ•°ã®å†…å®¹ã‚’åŸ‹ã‚è¾¼ã‚€ã“ã¨ãŒã§ãã‚‹ã‚ˆã†</div><div class='add'>+	  ã«ãªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* io.c: é–¢æ•°ãƒ¡ã‚½ãƒƒãƒ‰system2()ã¯ãªããªã£ãŸ. ä»Šã¯ãƒãƒƒã‚¯ã‚¯ã‚©ãƒ¼ãƒˆãŒã‚</div><div class='add'>+	  ã‚‹ã‹ã‚‰ã­.</div><div class='add'>+</div><div class='add'>+	* parse.y: `cmd`ã«ã‚ˆã£ã¦ã‚³ãƒžãƒ³ãƒ‰ã‚’æ–‡å­—åˆ—ã«å±•é–‹ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã‚ˆã†</div><div class='add'>+	  ã«ãªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: __FILE__, __LINE__ã‚’è¿½åŠ . ãã‚Œãžã‚Œãƒ•ã‚¡ã‚¤ãƒ«å(æ–‡å­—åˆ—),</div><div class='add'>+	  è¡Œç•ªå·(æ•´æ•°)ã‚’å€¤ã¨ã™ã‚‹ç–‘ä¼¼å¤‰æ•°.</div><div class='add'>+</div><div class='add'>+Fri Jul 29 13:16:07 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* methods.h: ãƒ¡ã‚½ãƒƒãƒ‰ã‚’ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã¨ã—ã¦æ‰±ã†ã®ã‚’ã‚„ã‚ã‚‹. ãƒ¡ã‚½ãƒƒãƒ‰</div><div class='add'>+	  ã®ãƒ¡ãƒ¢ãƒªç®¡ç†ã«ã¯ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ã‚«ã‚¦ãƒ³ãƒˆã‚’ä½¿ã†ã“ã¨ã«ã—ãŸ. ã“ã‚Œã§ã‚ªãƒ–</div><div class='add'>+	  ã‚¸ã‚§ã‚¯ãƒˆã®æ•°ãŒæ¸›ã£ã¦ã»ã‚“ã®å°‘ã—ã ã‘GCãŒé€Ÿããªã‚‹(ã‹ãª).</div><div class='add'>+</div><div class='add'>+	* purifyã«ã‚ˆã£ã¦ãƒ¡ãƒ¢ãƒªé–¢ä¿‚ã®ãƒã‚°ã‚’æ¤œæŸ»ã—ãŸ(è¦‹ã¤ã‹ã‚‹,è¦‹ã¤ã‹ã‚‹â€¦).</div><div class='add'>+</div><div class='add'>+	* gc.c: GCã‚’ãƒ—ãƒ­ã‚°ãƒ©ãƒžãŒå¤‰æ•°ã‚’ãƒžãƒ¼ã‚¯ã™ã‚‹å½¢å¼ã‹ã‚‰, ã‚¹ã‚¿ãƒƒã‚¯ã¨ãƒ¬ã‚¸ã‚¹</div><div class='add'>+	  ã‚¿ã‹ã‚‰ãƒžãƒ¼ã‚¯ã™ã‚‹æ–¹æ³•ã«å¤‰æ›´. ç§»æ¤æ€§ãŒä¸‹ãŒã‚‹ã‚ˆã†ãªæ°—ã‚‚ã™ã‚‹ãŒ, siod</div><div class='add'>+	  ã‚„scmã§ã‚‚æŽ¡ç”¨ã•ã‚Œã¦ã„ã‚‹ã‹ã‚‰å¤šåˆ†å¤§ä¸ˆå¤«ã ã‚ã†. Linux on i486ã§ã‚‚å‹•</div><div class='add'>+	  ä½œã‚’ç¢ºèªã—ãŸ.</div><div class='add'>+</div><div class='add'>+Wed Jul 27 16:13:13 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c(Eval): ãƒˆãƒƒãƒ—ãƒ¬ãƒ™ãƒ«ã§ã¯æ§‹é€ æœ¨ã‚’freeã—ãªã„ã‚ˆã†ã«. ã©ã†ã›è§£</div><div class='add'>+	  æ”¾ã•ã‚Œã‚‹ã‹ã‚‰æ™‚é–“ã®ç„¡é§„ã§ã‚ã‚‹.</div><div class='add'>+</div><div class='add'>+	* array.c, dict.c: "=="ã‚’æ§‹é€ ä¸€è‡´ã«å¤‰æ›´.</div><div class='add'>+</div><div class='add'>+Fri Jul 22 10:14:09 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* error.c: çµ„ã¿è¾¼ã¿ã‚¿ã‚¤ãƒ—ã®åå‰ã‚’ç™»éŒ²ã—å¿˜ã‚Œã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+Thu Jul 21 14:06:48 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y(freenode),eval.c(Eval): è§£æžæœ¨ã‚’è§£æ”¾ã—å¿˜ã‚Œã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+Mon Jul 18 10:19:15 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: å¤šé‡ä»£å…¥ã‚’å‡¦ç†ã™ã‚‹ãƒ«ãƒ¼ãƒ«ã«ãƒã‚°ãŒã‚ã£ã¦, 3è¦ç´ ä»¥ä¸Šã®å¤šé‡</div><div class='add'>+	  ä»£å…¥ã«å¤±æ•—ã—ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_eval): å¤šé‡ä»£å…¥ã§, å³è¾ºãŒé…åˆ—ã§ãªã„æ™‚ã«ã¯`to_a'ãƒ¡ã‚½ãƒƒ</div><div class='add'>+	  ãƒ‰ã§é…åˆ—ã«å¤‰æ›ã—ã¦ä»£å…¥ã™ã‚‹ã‚ˆã†ã«ã—ãŸ. ä»Šã¾ã§ã®ä»•æ§˜ã ã¨å³è¾ºå€¤ãŒç¬¬</div><div class='add'>+	  1è¦ç´ ã«ãã®ã¾ã¾ä»£å…¥ã•ã‚Œã¦ã„ãŸãŒ, structãªã©é…åˆ—ã«å¤‰æ›ã§ãã‚‹ã‚‚ã®</div><div class='add'>+	  ã¯å¤‰æ›ã—ãŸæ–¹ãŒå¬‰ã—ã„æ°—ãŒã™ã‚‹.</div><div class='add'>+</div><div class='add'>+	* dbm.c,dict.c(delete_if): ãƒ¡ã‚½ãƒƒãƒ‰è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* process.c(wait,waitpid): ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«waitpidã¾ãŸã¯wait4ãŒã‚ã‚‹</div><div class='add'>+	  æ™‚ã¯ãã¡ã‚‰ã‚’ä½¿ã†ã‚ˆã†ã«. configureã‚‚ãã‚Œã‚‰ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´.</div><div class='add'>+</div><div class='add'>+	* dbm.c, dict.c(clear): ãƒ¡ã‚½ãƒƒãƒ‰è¿½åŠ .</div><div class='add'>+</div><div class='add'>+Fri Jul 15 10:54:45 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* array.c(Fary_fill,Fary_clear): ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* string.c(Fstr_split): $;ã®å€¤ãŒé•·ã•1ã®æ–‡å­—åˆ—ã§ã‚ã‚‹æ™‚, ã“ã‚Œã‚’æ­£è¦</div><div class='add'>+	  è¡¨ç¾åŒ–ã—ãªã„ã§, å˜ãªã‚‹æ–‡å­—ã¨ã—ã¦åˆ†å‰²ã™ã‚‹.</div><div class='add'>+</div><div class='add'>+	* string.c(Fstr_aset/Fstr_aref): ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãŒæ–‡å­—åˆ—ã®ç¯„å›²å¤–ã ã£</div><div class='add'>+	  ãŸæ™‚ã®å‹•ä½œã‚’Arrayã‚’å‚è€ƒã«ä¿®æ­£ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* array.c(astore,Fary_aset): é ˜åŸŸã‚’reallocã—ãŸå¾Œ, ã‚¼ãƒ­ã§ã‚¯ãƒªã‚¢ã™ã‚‹</div><div class='add'>+	  ã‚ˆã†ã«. ä»Šã¾ã§é…åˆ—ã«ã‚´ãƒŸãŒå…¥ã£ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* array.c: []/[]=ã§ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹é–¢ä¿‚ã‚’æ•´ç†. åŸºæœ¬çš„ã«è² ã®ã‚¤ãƒ³ãƒ‡ãƒƒ</div><div class='add'>+	  ã‚¯ã‚¹ã«ä»£å…¥ã—ãªã„é™ã‚Šä¾‹å¤–ã¯èµ·ããªã„ã‚ˆã†ã«å¤‰æ›´ã—ãŸ. å¿…è¦ã«å¿œã˜ã¦é©</div><div class='add'>+	  å½“ã«è§£é‡ˆã—ã¦, å¿…è¦ãªã‚‰ã°é ˜åŸŸã‚’æ‹¡å¼µã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Thu Jul 14 11:18:07 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* autoexec.c: å‰Šé™¤. autoloadé–¢ä¿‚ã®æ©Ÿèƒ½ã¯ä»Šå¾Œæ¤œè¨Žã—ã‚ˆã†.</div><div class='add'>+</div><div class='add'>+	* dict.c: è¾žæ›¸ã‚¯ãƒ©ã‚¹ã®æ­£å¼åç§°ã‚’Dictã«å¤‰æ›´ã—ãŸ. åˆ¥åã¨ã—ã¦Hashã‚’ç”¨</div><div class='add'>+	  æ„ã—ãŸ. ä»Šã¾ã§Dictionaryãªã©ã¨é•·ã„åå‰ã«ã—ã¦ã„ãŸãŒèª°ã‚‚ä½¿ã£ã¦ã„ãª</div><div class='add'>+	  ã‹ã£ãŸã—ã­. *BACKWARD INCOMPATIBILITY*</div><div class='add'>+</div><div class='add'>+	* parse.y: Dictã‚’ç”Ÿæˆã™ã‚‹æ§‹æ–‡ã‚’è¿½åŠ . ã“ã¡ã‚‰ã‚’{..}ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: é…åˆ—ã‚’ç”Ÿæˆã™ã‚‹æ§‹æ–‡ã‚’[..]ã«å¤‰æ›´ã—ãŸ. éŽåŽ»ã®Rubyã‚¹ã‚¯ãƒªãƒ—</div><div class='add'>+	  ãƒˆã¨ã®äº’æ›æ€§ãŒä¿ã¦ãªã„ãŒ, Dictã‚’ç”Ÿæˆã™ã‚‹æ§‹æ–‡ã‚’å°Žå…¥ã™ã‚‹ã«å½“ãŸã‚Š,</div><div class='add'>+	  perl5ã«åˆã‚ã›ã¦(æ„è­˜ã—ã¦), å¤‰æ›´ã™ã‚‹æ™‚æœŸã¯ä»Šã—ã‹ãªã„ã¨è€ƒãˆãŸ.</div><div class='add'>+	  *BACKWARD INCOMPATIBILITY*</div><div class='add'>+</div><div class='add'>+	* eval.c(Feval): eval()ã§ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®šç¾©ã™ã‚‹æ™‚, å®šç¾©ã•ã‚Œã‚‹ã‚¯ãƒ©ã‚¹ã‚’</div><div class='add'>+	  ãƒ¡ã‚½ãƒƒãƒ‰ã®æ‰€å±žã™ã‚‹ã‚¯ãƒ©ã‚¹ã«ã—ãŸ. ä»Šã¾ã§ã¯Objectã‚¯ãƒ©ã‚¹ã«å®šç¾©ã•ã‚Œã¦</div><div class='add'>+	  ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: ãƒ­ãƒ¼ã‚«ãƒ«å¼•æ•°ãŒãªã„æ™‚ã®eval()ã§è½ã¡ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+Tue Jul 12 09:41:28 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* pack.c: uuencodeå½¢å¼ã®ã‚µãƒãƒ¼ãƒˆ.</div><div class='add'>+</div><div class='add'>+	* `-0'ã‚’`-R'ã«. å‡ºåŠ›ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚»ãƒ‘ãƒ¬ãƒ¼ã‚¿ã‚’ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‹ã‚‰æŒ‡å®šã™ã‚‹</div><div class='add'>+	  æ–¹æ³•ã¯ãªããªã£ãŸ. ã©ã†ã‚‚, ä»•æ§˜ãŒã‚†ã‚Œã‚‹ãªã‚.</div><div class='add'>+</div><div class='add'>+Mon Jul 11 09:51:24 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ruby.c: `-r'ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¯`-0'ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã«ãªã£ãŸ. å½“é¢ã¯`-r'ã‚‚æœ‰åŠ¹</div><div class='add'>+	  ã ãŒå¤‰æ›´ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹. `-R'ã¯å½“é¢ã¯ãã®ã¾ã¾.</div><div class='add'>+</div><div class='add'>+	* version.c: versionè¡¨ç¤ºã«æ—¥ä»˜ã‚’å«ã‚ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: private methodã®å¾©æ´». Rubyã®privateãƒ¡ã‚½ãƒƒãƒ‰ã¯C++ã«ãŠã‘</div><div class='add'>+	  ã‚‹protected methodã«è©²å½“ã™ã‚‹ã‚‚ã®ã§, `@'ã§å§‹ã¾ã‚‹åå‰ã‚’æŒã¤.</div><div class='add'>+</div><div class='add'>+	* env.h: struct ENVIRONã®å®šç¾©ã‚’åˆ†é›¢.</div><div class='add'>+</div><div class='add'>+	* parse.y: `\$var', `\@var', `%var'ã‚‚è¨±ã™ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* variable.c(Fdefined): idã‚‚å¼•æ•°ã¨ã—ã¦å—ã‘ä»˜ã‘ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* parse.y: ifæ–‡/unlessæ–‡ã«ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰thenã‚’è¿½åŠ . thenãªã—ã¨ã„ã†ã®ã¯,</div><div class='add'>+	  æ„å¤–ã¨é–“é•ã„ãŒå¤šã„ã®ã§. ã‚‚ã¡ã‚ã‚“çœç•¥ã§ãã‚‹.</div><div class='add'>+</div><div class='add'>+Sat Jul  9 02:16:04 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_eval): class/moduleã®è©•ä¾¡ã§æ–°ã—ã„ã‚¹ã‚³ãƒ¼ãƒ—ã‚’å‰²ã‚Šå½“ã¦ã¦</div><div class='add'>+	  ã„ãªã‹ã£ãŸ. ã‚¹ã‚³ãƒ¼ãƒ—å‰²ã‚Šå½“ã¦éƒ¨åˆ†ã‚’rb_call()ã‹ã‚‰rb_eval()ã«ç§»ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): realloc()ã«æ¸¡ã•ã‚Œã‚‹äº‹ã®ã‚ã‚‹, ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ç”¨ã®é ˜</div><div class='add'>+	  åŸŸã‚’alloca()ã—ã¦ã„ãŸ. ãŸã¾ã«è½ã¡ã‚‹ã‚ã‘ã .</div><div class='add'>+</div><div class='add'>+	* string.c(Fstr_times): å‰²ã‚Šå½“ã¦ãŸé ˜åŸŸã‚’è¶ŠãˆãŸéƒ¨åˆ†ã‚’å¤‰æ›´ã—ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+Wed Jul  6 15:52:42 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* socket.c: Socket -&gt; BasicSocket, RawSocket -&gt; Socket ã«æ”¹å.</div><div class='add'>+</div><div class='add'>+	* string.c(ucfirst,lcfirst): æœ€åˆã®1æ–‡å­—ã ã‘ã®å¤§æ–‡å­—/å°æ–‡å­—å¤‰æ›.</div><div class='add'>+</div><div class='add'>+	* numeric.c(chr): æ•´æ•°ã®æ–‡å­—åˆ—åŒ–ãƒ¡ã‚½ãƒƒãƒ‰.</div><div class='add'>+</div><div class='add'>+	* inits.c, dbm.c: DBMãŒä½¿ãˆãªã„æ™‚ã¯ã‚¯ãƒ©ã‚¹ãã®ã‚‚ã®ã‚’å®šç¾©ã—ãªã„ã‚ˆã†</div><div class='add'>+	  ã«ã—ãŸ.  åˆ©ç”¨ã§ããªã„ã‚¯ãƒ©ã‚¹ã¯nilã¨ã™ã‚‹ã“ã¨ã‚’ä»Šå¾Œã®ãƒãƒªã‚·ãƒ¼ã¨ã—ã‚ˆ</div><div class='add'>+	  ã†(ã„ã¾ã¾ã§ã¯ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸæ™‚ç‚¹ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¦ã„ãŸ). autoexec()</div><div class='add'>+	  ã®ã‚ã‚Šæ–¹ã‚‚æ¤œè¨ŽãŒå¿…è¦ã«ãªã‚Šãã†ã .</div><div class='add'>+</div><div class='add'>+	* bignum.c(bigadd): ãƒã‚°ä¿®æ­£.</div><div class='add'>+</div><div class='add'>+Thu Jul  7 11:12:18 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c(Fload,Feval): eval_treeã‚’ã‚¯ãƒªã‚¢ã—å¿˜ã‚Œã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* _inspect: ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’å¯èª­å½¢å¼ã®æ–‡å­—åˆ—ã«å¤‰æ›ã™ã‚‹(ä¸»ã«ãƒ‡ãƒãƒƒã‚°</div><div class='add'>+	  å‡ºåŠ›ç”¨).</div><div class='add'>+</div><div class='add'>+Wed Jul  6 00:57:18 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* numeric.c, bignum.c: æ•´æ•°ã«å¯¾ã™ã‚‹`[]'æ¼”ç®—å­. nãƒ“ãƒƒãƒˆç›®ãŒã‚»ãƒƒãƒˆã•</div><div class='add'>+	  ã‚Œã¦ã„ã‚‹ã‹ã©ã†ã‹ã‚’è¿”ã™.</div><div class='add'>+</div><div class='add'>+Tue Jul  5 12:48:39 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* io.c(Feof): è¿½åŠ . ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‹ã‚‰ãªã‚‹ä»®æƒ³ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¤ã„ã¦ã‚‚</div><div class='add'>+	  EOFãŒæ¤œå‡ºã§ãã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* ruby.c: -l/-r/-R/-Xã‚ªãƒ—ã‚·ãƒ§ãƒ³ã®è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* ruby.c: -n/-pã‚ªãƒ—ã‚·ãƒ§ãƒ³ã®loopã®ä»˜åŠ ãªã©ã‚’ãƒ¡ã‚¤ãƒ³ãƒ«ãƒ¼ãƒãƒ³ã«ç§»å‹•ã—</div><div class='add'>+	  ãŸ. ã“ã‚Œã§, ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã®è§£æžé€”ä¸­ã§(`-c'ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã®ã›ã„ã§)çµ‚äº†ãª</div><div class='add'>+	  ã©ã¨ã„ã£ãŸã“ã¨ã¯ãªã„.</div><div class='add'>+</div><div class='add'>+	* io.c(Fgets): é«˜é€ŸåŒ–. å‡ã£ãŸã“ã¨ã‚’ã—ãªã„æ–¹ãŒé€Ÿã‹ã£ãŸ. è™šã—ã„.</div><div class='add'>+</div><div class='add'>+Mon Jul  4 15:55:48 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* Socket:getsockname/getpeername - ã‚ˆã†ã‚„ãä»•æ§˜ãŒå®‰å®šã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* io.c(Fgets): eachã§getsã‚’è¨˜è¿°ã™ã‚‹ã®ã§ã¯ãªã, getsã§eachã‚’è¨˜è¿°ã™</div><div class='add'>+	  ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Fri Jul  1 10:35:49 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* $ENV[env] = nil/$ENV.delete(env)ã§ç’°å¢ƒå¤‰æ•°ã‚’å‰Šé™¤ã§ãã‚‹ã‚ˆã†ã«ãªã£</div><div class='add'>+	  ãŸ. $ENV.deleteã¯ç’°å¢ƒå¤‰æ•°ã®ä»¥å‰ã®å€¤ã‚’è¿”ã™.</div><div class='add'>+</div><div class='add'>+	* !~ã®å®šç¾©ãŒé–“é•ã£ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* Dict,DBM:[]= - nilã®ä»£å…¥ã«ã‚ˆã£ã¦è¦ç´ ã‚’å‰Šé™¤ã§ãã‚‹ã‚ˆã†ã«ãªã£ãŸ. ã“</div><div class='add'>+	  ã‚Œã«ã¨ã‚‚ãªã„nilã¯Dictã®è¦ç´ ã«ãªã‚Œãªããªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* ã‚½ãƒ¼ã‚¹ã®æ•´ç†. ç›²è…¸ã®ã‚ˆã†ãªä½¿ã‚ã‚Œã¦ã„ãªã„ã‚³ãƒ¼ãƒ‰ã‚’ãªãã—ãŸã‚Š, å¤‰æ•°</div><div class='add'>+	  åã‚’ä»˜ã‘å¤‰ãˆãŸã‚Šã—ãŸ.</div><div class='add'>+</div><div class='add'>+Fri Jul  1 00:21:29 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* Array:join() - è¦ç´ æ•°0ã®é…åˆ—ã«å¯¾ã—ã¦ç©ºæ–‡å­—åˆ—ã‚’è¿”ã™.</div><div class='add'>+</div><div class='add'>+	* RawSocket:open(),socketpair() - æ–‡å­—åˆ—ã§æŒ‡å®šã§ãã‚‹ãƒ‰ãƒ¡ã‚¤ãƒ³ã¨ã‚¿ã‚¤</div><div class='add'>+	  ãƒ—ã‚’ã„ãã¤ã‹è¿½åŠ ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Thu Jun 30 13:51:29 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* -fã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’ãªãã—ãŸ. æ˜”(loadã®ãªã‹ã£ãŸé ƒ)ã®åæ®‹ãªã®ã§, ä»Šã¨ãªã£</div><div class='add'>+	  ã¦ã¯å¿…è¦ãªã„ã ã‚ã†.</div><div class='add'>+</div><div class='add'>+	* -sã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’è¿½åŠ . perlã®-sã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¨åŒã˜å‹•ãã‚’ã™ã‚‹.</div><div class='add'>+</div><div class='add'>+	* RawSocketã‚¯ãƒ©ã‚¹ã‚’æä¾›ã™ã‚‹. Socketã«å¯¾ã™ã‚‹ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«ãƒ¬ãƒ™ãƒ«ã®</div><div class='add'>+	  ã‚¢ã‚¯ã‚»ã‚¹ãŒå¯èƒ½ã«ãªã£ãŸ.</div><div class='add'>+</div><div class='add'>+Thu Jun 30 00:27:19 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* Socket - bug fixes.</div><div class='add'>+</div><div class='add'>+	* linuxã§ã¯syscall(SYS_select)ãŒæ­£å¸¸ã«å‹•ä½œã—ãªã„.</div><div class='add'>+</div><div class='add'>+	* Socket:addr,peeraddr - é…åˆ—ã¨ã—ã¦sockaddrã®æƒ…å ±ã‚’è¿”ã™.</div><div class='add'>+</div><div class='add'>+Wed Jun 29 00:14:20 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* Socket:setopt,getopt - setsockopt(2), getsockopt(2)ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹</div><div class='add'>+	  ã‚’å®Ÿç¾.</div><div class='add'>+</div><div class='add'>+	* sprintf() - rubyã«ã¯unsignedã¯ç„¡ã„ã®ã§, %uã‚’å–ã‚Šé™¤ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* sprintf() - %b, %x, %oã§ã¯2ã®è£œæ•°è¡¨ç¾, %B, %X, %Oã§ã¯ç¬¦å·ä»˜ãè¡¨</div><div class='add'>+	  ç¾ã§å‡ºåŠ›ã™ã‚‹ã‚ˆã†ã«. ã“ã“æ•°æ—¥ã§sprintf()ã®ä»•æ§˜ãŒã‚†ã‚‰ã„ã§ã„ãŸãŒ,</div><div class='add'>+	  ã“ã‚Œã§è½ã¡ç€ããã†ã .</div><div class='add'>+</div><div class='add'>+Tue Jun 28 14:42:03 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* Bignum:&lt;&lt;,&gt;&gt; - 2ã®è£œæ•°ã‚’ã¨ã‚‹å‡¦ç†ã‚’é™¤ã„ãŸ. ã‚·ãƒ•ãƒˆæ¼”ç®—ã«ã¯é–¢ä¿‚ãªã„</div><div class='add'>+	  å‡¦ç†ã ã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* Bignum:^ - bug fix. ç¬¦åˆãŒåå¯¾ã ã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* sprintf() - 2é€²å‡ºåŠ›å­"%b"ã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* sprintf() - %x, %oã§Fixnumã‚’å‡ºåŠ›ã™ã‚‹æ™‚, 2ã®è£œæ•°è¡¨ç¤ºã‚’è¡Œãªã‚ãªã„.</div><div class='add'>+</div><div class='add'>+	* sprintf() - %x, %oã¯ã‚„ã¯ã‚Šè² ã®æ•°ã®æ™‚ã¯`-'ã‚’å‡ºåŠ›ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Mon Jun 27 14:56:13 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* sprintf() - Bignumã«ã¤ã„ã¦ã‚‚%d, %oã¯(2ã®è£œæ•°è¡¨ç¾ã«å¤‰æ›ã—ã¦)æ­£ã®</div><div class='add'>+	  æ•´æ•°ã‚’è¡¨ç¤ºã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* Bignumã«å¯¾ã™ã‚‹è«–ç†æ¼”ç®—ã®å®šç¾©ã‚’ä¿®æ­£ã—ãŸ. è² ã®æ•°ã¯2ã®è£œæ•°è¡¨ç¾ã§ã‚</div><div class='add'>+	  ã‚‹ã¨ã¿ãªã—, ã‹ã¤ä»®æƒ³çš„ã«å·¦å´ã«ç„¡é™ã«1ãŒé€£ç¶šã—ã¦ã„ã‚‹ã‚ˆã†ãªæ¼”ç®—çµ</div><div class='add'>+	  æžœã‚’å¾—ã‚‹.</div><div class='add'>+</div><div class='add'>+	* Fixnum:&lt;&lt;,&gt;&gt; - ç¬¦åˆä»˜ã‚·ãƒ•ãƒˆã«å¤‰æ›´.</div><div class='add'>+</div><div class='add'>+	* Bignum:&gt;&gt; - è² ã®æ•´æ•°ã®ã‚·ãƒ•ãƒˆã«å¯¾å¿œã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* __END__, ^D, ^Zã§ã‚¹ã‚¯ãƒªãƒ—ãƒˆã‚’çµ‚äº†ã§ãã‚‹.</div><div class='add'>+</div><div class='add'>+	* -xã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’è¿½åŠ . #! ..rubyãªã‚‹è¡Œã¾ã§èª­ã¿é£›ã°ã™.</div><div class='add'>+</div><div class='add'>+	* -cã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’è¿½åŠ . ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã®ã¿ã‚’è¡Œã†.</div><div class='add'>+</div><div class='add'>+Sat Jun 25 01:37:21 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* Fixnum:&lt;&lt; - å¿…è¦ã«å¿œã˜ã¦Bignumã«æ‹¡å¼µã—ã¦å·¦ã‚·ãƒ•ãƒˆã™ã‚‹ã‚ˆã†ã«. ã‚ˆã£</div><div class='add'>+	  ã¦, ã‚·ãƒ•ãƒˆå¹…ãŒ32ã‚’è¶Šãˆã‚‹ã¨Cã‚„Perlã¨ã¯é•ã£ãŸå€¤ã‚’è¿”ã™.</div><div class='add'>+</div><div class='add'>+Fri Jun 24 10:01:28 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ioctl()/fcntl() - ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«ã‚’å‘¼ã³å‡ºã™å‰ã«ãƒãƒƒãƒ•ã‚¡ã®å¤§ãã•ã‚’</div><div class='add'>+	  èª¿ç¯€ã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* String:toupper/tolower - æ–‡å­—åˆ—ã‚’ç½®ãæ›ãˆãŸã‚³ãƒ”ãƒ¼ã‚’ä½œã‚‹ã®ã§ã¯ãª</div><div class='add'>+	  ã, å…ƒã®æ–‡å­—åˆ—ã®å†…å®¹ã‚’å¤‰æ›´ã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* inplace editã‚’å®Ÿç¾ã—ãŸ. perlã¨åŒã˜ã‚ˆã†ã«`-i'ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã§æŒ‡å®šã™ã‚‹.</div><div class='add'>+	  ã‚‚ã£ã¨ã‚‚, ã“ã¡ã‚‰ã¯MS-DOSã®ã“ã¨ã¨ã‹è€ƒãˆã¦ãªã„ã‘ã©.</div><div class='add'>+</div><div class='add'>+	* ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å‡ºåŠ›å…ˆã‚’è¿½åŠ ã—ãŸ. ä»Šã¾ã§ã¯$stdoutã«ä»£å…¥ã™ã‚‹ã—ã‹æ–¹æ³•</div><div class='add'>+	  ã¯ãªã‹ã£ãŸ.</div><div class='add'>+</div><div class='add'>+Fri Jun 17 10:55:08 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ç’°å¢ƒå¤‰æ•°ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹æ–¹æ³•ã¨ã—ã¦getenv()/setenv()ä»¥å¤–ã«$ENVã‚’ç”¨</div><div class='add'>+	  æ„ã—ãŸ. $ENVã¯æ–‡å­—åˆ—-æ–‡å­—åˆ—ã®è¾žæ›¸ã§ã‚ã‚‹ã‹ã®ã‚ˆã†ã«å‹•ä½œã™ã‚‹EnvDict</div><div class='add'>+	  ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒä»£å…¥ã•ã‚Œã¦ã„ã‚‹(eachã¯assocã‚’ä¸Žãˆã‚‹).</div><div class='add'>+</div><div class='add'>+	* nilã«ä»£å…¥ã™ã‚‹ã¨core dumpã—ãŸ. ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«æ™‚ã®ãƒã‚§ãƒƒã‚¯ã‚’å¼·åŒ–.</div><div class='add'>+</div><div class='add'>+	* Struct: struct_new()ã®å¼•æ•°ã‚’GCãƒ—ãƒ­ãƒ†ã‚¯ãƒˆã™ã‚‹å¿…è¦ãŒã‚ã‚‹. ã›ã‚ã¦ã‚¹</div><div class='add'>+	  ã‚¿ãƒƒã‚¯é ˜åŸŸã ã‘ã§ã‚‚ã‚¹ã‚­ãƒ£ãƒ³ã§ãã‚‹ã‚ˆã†ã«ã—ãªã‘ã‚Œã°ã„ã‘ãªã„ã‚“ã ã‚ã†</div><div class='add'>+	  ã‹? ã§ã‚‚, ç§»æ¤æ€§ãŒãªã‚.</div><div class='add'>+</div><div class='add'>+Fri Jun 17 01:01:46 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* Time::asctime() - æ—¥ä»˜ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã§æ—¥ãŒè½ã¡ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* Stat: Statã¯Etcãªã©ã¨åŒæ§˜ã«Structã§å®Ÿç¾ã—ãŸã®ã§, Statã‚¯ãƒ©ã‚¹ã¯ç„¡</div><div class='add'>+	  ããªã£ãŸ.</div><div class='add'>+</div><div class='add'>+Thu Jun 16 10:32:23 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* bignum.c: ã„ãã¤ã‹ã®ãƒã‚°ã‚’ä¿®æ­£ã—ãŸ. Fixnumã‚’æ¸¡ã™ã¹ãã¨ã“ã‚ã§æ™®é€š</div><div class='add'>+	  ã®intã‚’æ¸¡ã—ã¦ã„ãŸ. å¤±æ•—.</div><div class='add'>+</div><div class='add'>+	* big2str() - 1æ¡ãšã¤baseã§å‰²ã‚‹ä»£ã‚ã‚Šã«, 4æ¡ãšã¤å‰²ç®—ã‚’è¡Œãªã†ã‚ˆã†ã«</div><div class='add'>+	  ã—ãŸ. ã“ã‚Œã§å¤šå€é•·å‰²ç®—ã®å›žæ•°ãŒ1/4ã«ãªã‚‹. ã•ã‚‰ã«æ•´æ•°-&gt;æ•°(æ–‡å­—)ã¸</div><div class='add'>+	  ã®å¤‰æ›ã‚’ãƒ†ãƒ¼ãƒ–ãƒ«ã‚’ç”¨ã„ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* rb_ivar_get_1() - ã™ã§ã«ä½•ã‚‰ã‹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚’æŒã¤ã‚ªãƒ–ã‚¸ã‚§ã‚¯</div><div class='add'>+	  ãƒˆã§ã¯, æœªå®šç¾©ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã®å€¤ãŒä¸å®šå€¤ã«ãªã£ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* yylex() - ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã®èªè­˜ã«å¤±æ•—ã—ã¦ã„ãŸ. attr()ã¯æ­£ã—ãå‹•</div><div class='add'>+	  ä½œã—ã¦ã„ãŸã®ã§, æ··ç”¨ã™ã‚‹ã¨å‹•ä½œã—ãªã‹ã£ãŸ. å…¨éƒ¨é•ã£ã¦ã„ãŸã‹ã‚‰å‹•ã„</div><div class='add'>+	  ã¦ã„ãŸã®ã­.</div><div class='add'>+</div><div class='add'>+	* Object:attr() - ã™ã§ã«ã‚¢ã‚¯ã‚»ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ãŒå®šç¾©ã•ã‚Œã¦ã„ã‚‹æ™‚ã«ã¯ãƒ‡ãƒ•ã‚©</div><div class='add'>+	  ãƒ«ãƒˆã®ã‚¢ã‚¯ã‚»ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®šç¾©ã—ãªã„ã‚ˆã†ã«ã—ãŸ. ã‚‚ã£ã¨ã‚‚ã‚¢ã‚¯ã‚»ã‚¹ãƒ¡</div><div class='add'>+	  ã‚½ãƒƒãƒ‰ã¨åŒåã®ãƒ¡ã‚½ãƒƒãƒ‰ã®åŒºåˆ¥ã¯Rubyã«ã¯å­˜åœ¨ã—ãªã„ã‘ã©, ãã‚Œã¯ä»•æ–¹</div><div class='add'>+	  ãŒãªã„ã‚ˆã­.</div><div class='add'>+</div><div class='add'>+	* pack.c: ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã‚’autoconfã§åˆ¤å®šã™ã‚‹ã‚ˆã†ã«ã—ãŸã®ã§, v/VãŒä½¿</div><div class='add'>+	  ãˆã‚‹ã‚ˆã†ã«ãªã£ãŸ. ã¾ãŸntoh?()/hton?()ã‚‚è‡ªå‰ã§ç”¨æ„ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* Stat: st_rdevã‚’ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ . ã•ã‚‰ã«ã‚·ã‚¹ãƒ†ãƒ ãŒstat</div><div class='add'>+	  æ§‹é€ ä½“ã«st_blksize, st_blockã‚’æŒã£ã¦ã„ã‚‹ã‹ã‚’autoconfã§ãƒã‚§ãƒƒã‚¯ã™</div><div class='add'>+	  ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’å°‘ã—æ•´å‚™ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* INT2FIX()ã®ã†ã¡, 31bitå¹…ãŒä¿è¨¼ã§ããªã„ã‚‚ã®ã¯, int2inum()ã«ç½®ãæ›</div><div class='add'>+	  ãˆãŸ.</div><div class='add'>+</div><div class='add'>+Wed Jun 15 10:18:27 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* sprintf() - bignumã®å‡ºåŠ›ã®æ™‚, å‡ºåŠ›å¹…ã‚’æ­£ã—ãè¨ˆç®—ã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* str2inum() - baseãŒ0ã®æ™‚, baseã‚’è‡ªå‹•åˆ¤å®šã™ã‚‹ã‚ˆã†ã«(0xã§å§‹ã¾ã‚‹æ™‚</div><div class='add'>+	  16 é€², 0ã§å§‹ã¾ã‚‹æ™‚8é€²).</div><div class='add'>+</div><div class='add'>+Tue Jun 14 16:08:42 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* gc.c: Bignumåž‹ã‚’è¿½åŠ ã™ã‚‹ã®ã‚’å¿˜ã‚Œã¦ã„ãŸ. çµ„ã¿è¾¼ã¿åž‹ã‚’è¿½åŠ ã—ãŸæ™‚ã«</div><div class='add'>+	  ã¯å¿…ãšmark()ã¨sweep()ã«ãã®åž‹ã«é–¢ã™ã‚‹å‡¦ç†ã‚’è¿½åŠ ã™ã‚‹å¿…è¦ãŒã‚ã‚‹.</div><div class='add'>+</div><div class='add'>+	* bignum: å‰²ç®—ã‚‚å‹•ã„ãŸã‚ˆã†ãªæ°—ãŒã™ã‚‹. ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã‚’ç†è§£ã—ã¦ã„ãªã„</div><div class='add'>+	  ã®ã§, è‡ªä¿¡ãŒãªã„.</div><div class='add'>+</div><div class='add'>+Mon Jun 13 14:36:55 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ã¾ã ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ãƒ¡ã‚½ãƒƒãƒ‰ãªã©ãŒã‚ã‚‹ãŒ, æ›²ãŒã‚Šãªã‚Šã«ã‚‚Bignum</div><div class='add'>+	  ãŒä½¿ãˆã‚‹ã‚ˆã†ã«ãªã‚‹. ã“ã‚Œã§ioctlã‚‚ä½¿ãˆã‚‹.</div><div class='add'>+</div><div class='add'>+Fri Jun 10 17:26:42 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* Comparable: åŸºç¤Žã¨ãªã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’`=='ã¨`&gt;'ã‹ã‚‰`&lt;=&gt;'ã«å¤‰æ›´ã—ãŸ. ä»Š</div><div class='add'>+	  å¾ŒComparableã®ã‚µãƒ–ã‚¯ãƒ©ã‚¹ã¯`&lt;=&gt;'ã ã‘ã‚’å†å®šç¾©ã™ã‚‹å¿…è¦ãŒã‚ã‚‹.</div><div class='add'>+</div><div class='add'>+Wed Jun  8 13:12:18 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* Need_Fixnum()ã‚’ã»ã¨ã‚“ã©ãªãã—ã¦, NUM2INT()ã§ç›´æŽ¥intã«å¤‰æ›ã™ã‚‹ã“</div><div class='add'>+	  ã¨ã«ã—ãŸ. ã“ã‚Œã§31bitã«ä¸¸ã‚ã¦æ¡è½ã¡ã‚’ãŠã“ã™å•é¡ŒãŒãªããªã‚‹.</div><div class='add'>+</div><div class='add'>+Tue Jun  7 09:45:31 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ruby.h: ãƒžã‚¯ãƒ­FIXABLE(n)ã‚’è¿½åŠ . ã¤ã„ã§ã«FIXNUMå‘¨ã‚Šã®å®šç¾©ã‚’å¤‰æ›´ã—</div><div class='add'>+	  ã¦, ç§»æ¤æ€§ã‚’é«˜ã‚ãŸ(ã¤ã‚‚ã‚Š).</div><div class='add'>+</div><div class='add'>+	* C++ã®äºˆç´„èªžã§ã‚ã‚‹newã‚’å‰Šé™¤ã—ãŸ. ã—ã‹ã—, ã‚‚ã†ã²ã¨ã¤ã®äºˆç´„èªžã§ã‚ã‚‹</div><div class='add'>+	  classã«é–¢ã—ã¦ã¯, ç½®ãæ›ãˆã‚‹å˜èªžãŒæ€ã„ã¤ã‹ãªã„ã“ã¨ã‚‚ã‚ã£ã¦ãã®ã¾</div><div class='add'>+	  ã¾ã«ãªã£ã¦ã„ã‚‹.</div><div class='add'>+</div><div class='add'>+	* 31bitã‚’è¶Šãˆãã†ãªINT2FIX()ã‚’é–¢æ•°å‘¼ã³å‡ºã—ã«å¤‰ãˆãŸ. å°†æ¥bignumãŒå°Ž</div><div class='add'>+	  å…¥ã•ã‚ŒãŸæ™‚ã«ã¯è‡ªå‹•çš„ã«bignumã‚’è¿”ã™ã‚ˆã†ã«ã™ã‚‹.</div><div class='add'>+</div><div class='add'>+	* readline() - å¼•æ•°ã®`-'ã¯æ¨™æº–å…¥åŠ›ã‚’æ„å‘³ã™ã‚‹ã‚ˆã†ã«ãªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* ruby.h: å³ã‚·ãƒ•ãƒˆãŒè«–ç†ã‚·ãƒ•ãƒˆã‹ç®—è¡“ã‚·ãƒ•ãƒˆã‹ã¯å‡¦ç†ç³»ä¾å­˜ã®ã‚ˆã†ãªã®</div><div class='add'>+	  ã§, ruby.hã§cppã‚’ä½¿ã£ã¦ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã‚ˆã†ã«ã—ãŸ. ã“ã‚Œã§ã†ã¾ãã„ã</div><div class='add'>+	  ã¨æ€ã†ã®ã ãŒ, æ‰‹å…ƒã«ç¬¦åˆä»˜intã‚’è«–ç†ã‚·ãƒ•ãƒˆã™ã‚‹å‡¦ç†ç³»ãŒãªã„ã®ã§ç¢º</div><div class='add'>+	  èªã§ããªã„. NEWS-OSã®CCã¯ç¢ºã‹å³ã‚·ãƒ•ãƒˆã¯ã„ã¤ã‚‚è«–ç†ã‚·ãƒ•ãƒˆã ã£ãŸã‚ˆ</div><div class='add'>+	  ã†ãªæ°—ãŒã™ã‚‹ã‚“ã ã‘ã©â€¦.</div><div class='add'>+</div><div class='add'>+Mon Jun  6 10:10:22 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* FIX2INT()ã®å®šç¾©ã‚’å¤‰æ›´ã—ãŸ. ã©ã†ã—ã¦æ˜”ã¯ã†ã¾ãå‹•ã‹ãªã‹ã£ãŸã‚“ã ã‚</div><div class='add'>+	  ã†ã‹? ã‚‚ã—ã‹ã—ã¦, å³ã‚·ãƒ•ãƒˆã®ç¬¦å·æ‹¡å¼µã¯å‡¦ç†ç³»ä¾å­˜?</div><div class='add'>+</div><div class='add'>+	* FIX2INT()ã¨FIX2UINT()ã‚’ä½¿ã„åˆ†ã‘ã‚‹ã‚ˆã†ã«ã—ãŸ. ã‚‚ã£ã¨ã‚‚fixnumã¯31</div><div class='add'>+	  ãƒ“ãƒƒãƒˆã—ã‹ãªã„ã®ã§, æœ¬è³ªçš„ãªè§£æ±ºã«ã¯ãªã‚‰ãªã„ã®ã ãŒ(ioctlãŒçµ„ã¿è¾¼</div><div class='add'>+	  ã¿ãŸã‹ã£ãŸ).</div><div class='add'>+</div><div class='add'>+	* printã‚’é–¢æ•°çš„ãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰é€šå¸¸ãƒ¡ã‚½ãƒƒãƒ‰ã«å¤‰æ›´. å¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œãªã„</div><div class='add'>+	  æ™‚ã«ã¯ãƒ¬ã‚·ãƒ¼ãƒã‚’ãƒ—ãƒªãƒ³ãƒˆã™ã‚‹ã‚ˆã†ã«ã—ãŸ. ã“ã‚Œã§printã‚’ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸</div><div class='add'>+	  å½¢å¼ã§ã‚‚å®Ÿè¡Œã§ãã‚‹ã‚ˆã†ã«ãªã£ãŸ. ä¾‹:</div><div class='add'>+</div><div class='add'>+		ruby -e 'readlines().sort.print'</div><div class='add'>+</div><div class='add'>+	  ä¸Šã®ã‚¹ã‚¯ãƒªãƒ—ãƒˆã¯, å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸ(ã‚ã‚‹ã„ã¯æ¨™æº–å…¥åŠ›ã‹ã‚‰èª­ã¿</div><div class='add'>+	  è¾¼ã¾ã‚ŒãŸ)æ–‡å­—åˆ—ã‚’å„è¡Œæ¯Žã«ã‚½ãƒ¼ãƒˆã—ã¦è¡¨ç¤ºã™ã‚‹.</div><div class='add'>+</div><div class='add'>+	* eval.c: argc,argvãƒ‘ã‚¿ãƒ¼ãƒ³ã§å¼•æ•°ã‚’å—ã‘ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã«å¼•æ•°ãŒä¸€ã¤ã‚‚ä¸Ž</div><div class='add'>+	  ãˆã‚‰ã‚Œãªã„æ™‚, argvãŒnilã«ãªã£ã¦ã„ãŸ(argv[0]ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã¨è½ã¡</div><div class='add'>+	  ã¦ã—ã¾ã†).</div><div class='add'>+</div><div class='add'>+	* _exit()ã‚’è¿½åŠ . ã“ã¡ã‚‰ã¯ä¾‹å¤–å‡¦ç†ãªã©è¡Œãªã‚ãªã„.</div><div class='add'>+</div><div class='add'>+	* dbmã‚¯ãƒ©ã‚¹: ã‚¯ãƒ©ã‚¹åç§°ã‚’DBM(å¤§æ–‡å­—)ã«çµ±ä¸€ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Sat Jun  4 00:51:04 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* ãƒ«ãƒ¼ãƒ—å¤‰æ•°ã«ã‚‚å±žæ€§ã‚„é…åˆ—è¦ç´ ã‚’æŒ‡å®šã§ãã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Fri Jun  3 09:49:48 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* å¤šé‡ä»£å…¥ã«ãŠã„ã¦, å±žæ€§ä»£å…¥, é…åˆ—è¦ç´ ã¸ã®ä»£å…¥ã‚‚è¡Œãªãˆã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* Need_Fixnum(): nilã‚’0ã«å¤‰æ›ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* Enumerable:min, max, index, includes - è¿½åŠ . min, maxã¯è¦ç´ ãŒ</div><div class='add'>+	  `&lt;=&gt;'ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æŒã¤ã“ã¨ã‚’ä»®å®šã—ã¦ã„ã‚‹.</div><div class='add'>+</div><div class='add'>+	* Dict/Dbm:length - è¦ç´ æ•°ã‚’è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰.</div><div class='add'>+</div><div class='add'>+	* Dbmã‚¯ãƒ©ã‚¹ã«to_aãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* Sunã«ãŠã‘ã‚‹sortã®èª¤å‹•ä½œã®ä»¶, æ˜¨æ—¥ã®ä¿®æ­£ã§fixã•ã‚ŒãŸ. ã—ã‹ã—, ãã‚Œ</div><div class='add'>+	  ã§ãªãœå‹•ã‹ãªã‹ã£ãŸã®ã‹ã¯æ˜Žã‚‰ã‹ã§ã¯ãªã„ãŒâ€¦. æ¯”è¼ƒé–¢æ•°ãŒã©ã‚“ãªå€¤ã‚’</div><div class='add'>+	  è¿”ã—ã¦ã‚‚æŒ‡å®šã—ãŸé ˜åŸŸå¤–ã‚’ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã¯ãƒã‚°ã§ã¯ãªã„ã‹.</div><div class='add'>+</div><div class='add'>+	* ãƒ•ã‚¡ã‚¤ãƒ«ã®å…¨å†…å®¹ã‚’èª­ã‚“ã§, å„è¡Œã‚’é…åˆ—ã¨ã—ã¦è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰ã¯pythonã‚’</div><div class='add'>+	  å‚è€ƒã«ã—ã¦`readlines'ã¨ã„ã†åå‰ã«ã—ãŸ. ãã‚Œã«ã¨ã‚‚ãªã„getsã«å¯¾ã—</div><div class='add'>+	  ã¦readlineã¨ã„ã†åˆ¥åã‚’ç”¨æ„ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Fri Jun  3 00:08:38 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* Array:sort - åˆ¤åˆ¥é–¢æ•°ã®æˆ»ã‚Šå€¤ã¯Fixnumã§ã¯ãªã, Intã§ã‚ã‚‹ã¹ãã ã£</div><div class='add'>+	  ãŸ. é–“é•ã„. Sunã§å‹•ä½œãŒãŠã‹ã—ã‹ã£ãŸã®ã¯ã“ã®ã›ã„ã‹ã‚‚çŸ¥ã‚Œãªã„.</div><div class='add'>+</div><div class='add'>+Thu Jun  2 11:48:37 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* IO:read_all() - ã‚¹ãƒˆãƒªãƒ¼ãƒ ã®æœ€å¾Œã¾ã§å…¥åŠ›ã—ã¦, å„è¡Œã‚’è¦ç´ ã¨ã™ã‚‹é…</div><div class='add'>+	  åˆ—ã‚’è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ . ã¾ãŸé–¢æ•°ãƒ¡ã‚½ãƒƒãƒ‰ read_all()ã‚‚è¿½åŠ ã—ãŸ.</div><div class='add'>+  	  ã“ã‚Œã¯å¼•æ•°ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰èª­ã¿è¾¼ã‚“ã§å„è¡Œã‚’è¦ç´ ã¨ã™ã‚‹é…åˆ—ã‚’è¿”ã™. æ„</div><div class='add'>+	  å‘³çš„ã«ã¯</div><div class='add'>+</div><div class='add'>+		def read_all()</div><div class='add'>+	  	  ary = {}</div><div class='add'>+	  	  while gets()</div><div class='add'>+		    ary.push($_)</div><div class='add'>+		  end</div><div class='add'>+		end</div><div class='add'>+</div><div class='add'>+	  ã¨ã»ã¼ç­‰ä¾¡ã§ã‚ã‚‹.</div><div class='add'>+</div><div class='add'>+	* String:atoiãƒ¡ã‚½ãƒƒãƒ‰ã‚’å‰Šé™¤. to_aãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰aãŒé…åˆ—ã§ã‚ã‚‹ã¨ã®é€£æƒ³</div><div class='add'>+	  ã‚’å‘¼ã‚“ã§, æ··ä¹±ã‚’æ‹›ã‹ãªã„ãŸã‚. ä»£ã‚ã‚Šã«to_iãƒ¡ã‚½ãƒƒãƒ‰ã‚’ä½¿ã†ã“ã¨.</div><div class='add'>+</div><div class='add'>+	* é…åˆ—ã¸ã®å¤‰æ›ãƒ¡ã‚½ãƒƒãƒ‰to_aã‚’å°Žå…¥ã—ãŸ. é€šå¸¸ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã¯è‡ªåˆ†è‡ªèº«</div><div class='add'>+	  ã‚’å”¯ä¸€ã®è¦ç´ ã¨ã™ã‚‹é•·ã•1ã®é…åˆ—ã‚’è¿”ã™. é…åˆ—ã¯è‡ªåˆ†è‡ªèº«ã‚’, è¾žæ›¸ã¯ã‚­ãƒ¼</div><div class='add'>+	  ã¨å€¤ã®ãƒšã‚¢ã®é…åˆ—ã‚’è¿”ã™. Enumeratedã‚’includeã—ãŸã‚¯ãƒ©ã‚¹ã¯, eachãŒ</div><div class='add'>+	  è¿”ã™å„è¦ç´ ã‚’å«ã‚€é…åˆ—ã‚’è¿”ã™.</div><div class='add'>+</div><div class='add'>+	* file.c: ä¸å®šå€‹ã®å¼•æ•°ã‚’å—ã‘ã¨ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰(chmod,chown,utimes)ã‚’æ›¸ã</div><div class='add'>+	  æ›ãˆã¦, æ•´ç†ã—ãŸ. ãã‚Œã«ä¼´ã„, æœ€åˆã«å…¨ã¦ã®å¼•æ•°ã®åž‹ãƒã‚§ãƒƒã‚¯ã‚’è¡Œãª</div><div class='add'>+	  ã†ã‚ˆã†ã«ã—ãŸ. åž‹ãƒã‚§ãƒƒã‚¯ã«å¤±æ•—ã™ã‚‹ã¨å‡¦ç†ã‚’è¡Œãªã‚ãšã«ä¾‹å¤–ã‚’ç™ºç”Ÿã•</div><div class='add'>+	  ã›ã‚‹.</div><div class='add'>+</div><div class='add'>+	* configure.in: ä¸å¿…è¦ãªãƒ†ã‚¹ãƒˆã‚’è¡Œãªã‚ãªã„ã‚ˆã†ã«ä¿®æ­£ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Tue May 31 10:41:08 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* String:pack(): 2é€²æ•°ã®æ–‡å­—åˆ—å¤‰æ›(B,b)ã§0ã¨1ãŒé€†ã ã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* Math.c: å®Ÿæ•°ç³»ã®ãƒ¡ã‚½ãƒƒãƒ‰ã«å¼•æ•°ã¨ã—ã¦æ•´æ•°ãŒæ¸¡ã•ã‚ŒãŸæ™‚ã«è‡ªå‹•çš„ã«å¤‰</div><div class='add'>+	  æ›ã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* toupper(), tolower(): æ–‡å­—åˆ—ã®åˆ¤å®šãƒŸã‚¹ã§å¤‰æ›ã•ã‚Œã¦ã„ãªã‹ã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* getopt_long()ã®ä»•æ§˜ã«ã‚ˆã£ã¦, ã‚¹ã‚¯ãƒªãƒ—ãƒˆã¸ã®å¼•æ•°ãŒã‚¤ãƒ³ã‚¿ãƒ—ãƒªã‚¿ã®</div><div class='add'>+	  å¼•æ•°ã ã¨è§£é‡ˆã•ã‚Œã¦ã„ãŸ. å¼•æ•°ãƒ‘ã‚¿ãƒ¼ãƒ³æ–‡å­—åˆ—ã®å…ˆé ­ã«`+'ã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* config.hã‚’å‰Šé™¤ã—ãŸ. DEFINEã¯Makefileã§ä¸Žãˆã‚‰ã‚Œã‚‹.</div><div class='add'>+</div><div class='add'>+	* sprintf(): "%d"ã«æ–‡å­—åˆ—ãŒä¸Žãˆã‚‰ã‚ŒãŸæ™‚ã«ã¯ã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã¯ãªãå†…å®¹ã‚’</div><div class='add'>+	  æ•´æ•°ã«å¤‰æ›ã™ã‚‹ã‚ˆã†ã«ã—ãŸ. ã¤ã„ã§ã«æµ®å‹•å°æ•°ç‚¹æ•°ã‚‚å¤‰æ›ã™ã‚‹ã‚ˆã†ã«å¤‰</div><div class='add'>+	  æ›´ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* regexp.c: rubyã®æ‹¡å¼µæ­£è¦è¡¨ç¾(\d, \D, \s, \S)ã®å‡¦ç†ã§å‰²ã‚Šå½“ã¦ãŸé ˜</div><div class='add'>+	  åŸŸã‚’è¶Šãˆã¦ãƒãƒƒãƒ•ã‚¡ã«æ›¸ãè¾¼ã‚“ã§ã„ãŸ. å‡¦ç†å‰ã«ãƒãƒƒãƒ•ã‚¡ã‚’ãã¡ã‚“ã¨æ‹¡</div><div class='add'>+	  å¼µã™ã‚‹ã‚ˆã†ã«ã—ãŸ. ã“ã‚Œã§æ˜¨æ—¥å•é¡Œã«ã—ã¦ã„ãŸãƒ¡ãƒ¢ãƒªã®å•é¡Œã¯è§£æ±ºã§ã</div><div class='add'>+	  ãŸã¨æ€ã†.</div><div class='add'>+</div><div class='add'>+	* yylex(): ãƒ€ãƒ–ãƒ«ã‚¯ã‚©ãƒ¼ãƒˆæ–‡å­—åˆ—ä¸­ã§ãƒ€ãƒ–ãƒ«ã‚¯ã‚©ãƒ¼ãƒˆã‚’è¡¨ç¾ã™ã‚‹ãŸã‚</div><div class='add'>+	  ã®ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥è¡¨ç¾ãŒã§ããªã‹ã£ãŸ.</div><div class='add'>+</div><div class='add'>+Mon May 30 10:07:42 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* æ¼”ç®—å­`!'ã®å³è¾ºã‚‚æ¡ä»¶å¼ã§ã‚ã‚‹ã¨ã—ãŸ. ã“ã‚Œã«ã‚ˆã£ã¦, ã“ã®æ¼”ç®—å­ã‚’</div><div class='add'>+	  å†å®šç¾©ã™ã‚‹äººã¯æ··ä¹±ã™ã‚‹ã‹ã‚‚çŸ¥ã‚Œãªã„ãŒ, å¤§å¤šæ•°ã®ã“ã®æ¼”ç®—å­ã‚’ä½¿ã†äºº</div><div class='add'>+	  ã¯æ··ä¹±ã‚’é¿ã‘ã‚‹ã“ã¨ãŒã§ãã‚‹ã¨æ€ã†.</div><div class='add'>+</div><div class='add'>+	* autoconfã‚’ä½¿ã£ã¦, è‡ªå‹•çš„ã«Makefile, config.hã‚’ç”Ÿæˆã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+	  ã“ã‚Œã§, å¤šãã®ãƒžã‚·ãƒ³ã§ã¯`configure'ã‚’å®Ÿè¡Œã—ãŸå¾Œ, `make'ä¸€ç™ºã§ã‚³</div><div class='add'>+	  ãƒ³ãƒ‘ã‚¤ãƒ«ã§ãã‚‹ã¨æ€ã†.</div><div class='add'>+</div><div class='add'>+	* clone: ã‚µãƒ–ã‚¯ãƒ©ã‚¹ã«å¯¾ã—ã¦ç”¨ã„ã‚‰ã‚ŒãŸå ´åˆ, å…ƒã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã¨åŒã˜</div><div class='add'>+	  ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”ã™ã‚ˆã†ã«(ä»¥å‰ã¯ãƒ“ãƒ«ãƒˆã‚¤ãƒ³ã‚¯ãƒ©ã‚¹ã®å ´åˆã‚’</div><div class='add'>+	  è€ƒãˆã¦ãªã‹ã£ãŸ).</div><div class='add'>+</div><div class='add'>+	* ãƒ“ãƒ«ãƒˆã‚¤ãƒ³ã‚¯ãƒ©ã‚¹ã®ã‚µãƒ–ã‚¯ãƒ©ã‚¹ã‚‚ä½œã‚Œã‚‹ã‚ˆã†ã«, ãƒªãƒ†ãƒ©ãƒ«ã®ã‚ã‚‹ã‚¯ãƒ©ã‚¹</div><div class='add'>+	  ã«ã‚‚newãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* malloc()ã§è½ã¡ã‚‹. purifyãŒå¿…è¦ã‹ã‚‚çŸ¥ã‚Œãªã„.</div><div class='add'>+</div><div class='add'>+	* re.c: rb_global_variable()ã®å‘¼ã³ã ã—å½¢å¼ã®é–“é•ã„. å¤‰æ•°ã¸ã®ãƒã‚¤ãƒ³</div><div class='add'>+	  ã‚¿ã‚’æ¸¡ã•ãªã‘ã‚Œã°ã„ã‘ãªã„.</div><div class='add'>+</div><div class='add'>+	* parse.y: ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã®æ‰±ã„ã«å¼•æ•°ã®è©•ä¾¡é †ã«ä¾å­˜ã™ã‚‹ç§»æ¤æ€§ã®ãªã„</div><div class='add'>+	  éƒ¨åˆ†ãŒã‚ã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* attr(): å±žæ€§è¨­å®šã®ãƒã‚°ã‚’ç›´ã—ãŸ. ã„ã¤å†…éƒ¨ä»•æ§˜ãŒå¤‰ã‚ã£ãŸã‚“ã ã‚ã†â€¦?</div><div class='add'>+</div><div class='add'>+Sat May 28 23:08:18 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* æ­£è¦è¡¨ç¾ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®æ–‡å­—åˆ—ä¸€è‡´åˆ¤å®šã‚’ãƒã‚¤ãƒ³ã‚¿ä¸€è‡´ã‹ã‚‰å†…å®¹ä¸€è‡´ã«å¤‰</div><div class='add'>+	  æ›´ã—ãŸ. ãã†ã„ãˆã°æ–‡å­—åˆ—ãƒªãƒ†ãƒ©ãƒ«ã¯ä¸€å›žæ¯Žã«æ–°ã—ãã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒç”Ÿ</div><div class='add'>+	  æˆã•ã‚Œã‚‹ã®ã ã£ãŸ.</div><div class='add'>+</div><div class='add'>+Fri May 27 11:42:00 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* trã‹ã‚‰æ–‡å­—å‰Šé™¤(delete), æ–‡å­—åœ§ç¸®(squeeze)ã‚’åˆ†é›¢ã—ãŸ. ãã‚Œã«ã¨ã‚‚</div><div class='add'>+	  ãªã„trã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³å¼•æ•°ã¯ãªããªã£ãŸ.</div><div class='add'>+</div><div class='add'>+Thu May 26 10:32:55 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ã‚¹ã‚¯ãƒªãƒ—ãƒˆèª­ã¿è¾¼ã¿ãƒ«ãƒ¼ãƒãƒ³ã‚’æ›¸ãç›´ã—ã¦, é€šå¸¸ãƒ•ã‚¡ã‚¤ãƒ«ä»¥å¤–ã®ãƒ•ã‚¡ã‚¤</div><div class='add'>+	  ãƒ«åã‚„ç©ºæ–‡å­—åˆ—ãŒã‚¹ã‚¯ãƒªãƒ—ãƒˆã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã«å¯¾å¿œã—ãŸ. ã¾ãŸ,</div><div class='add'>+	  æ¨™æº–å…¥åŠ›ã‹ã‚‰ã‚¹ã‚¯ãƒªãƒ—ãƒˆã‚’èª­ã¿è¾¼ã‚€æ™‚ã«, ä¸€æ™‚ãƒ•ã‚¡ã‚¤ãƒ«ãŒ/tmpã«æ®‹ã‚‰ãª</div><div class='add'>+	  ã„ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* Fixnum:id2name - IDã‹ã‚‰æ–‡å­—åˆ—ã«æˆ»ã™é–¢æ•°. String:internã®é€†.</div><div class='add'>+</div><div class='add'>+	* Array: é…åˆ—ã®ç¯„å›²å¤–ã®è¦ç´ ã‚’ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸæ™‚ã«ä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ãšã«,</div><div class='add'>+	  nilã‚’è¿”ã™ã‚ˆã†ã«ã—ãŸ. é…åˆ—ã¯è‡ªå‹•çš„ã«æ‹¡å¼µã•ã‚Œã‚‹.</div><div class='add'>+</div><div class='add'>+	* string:stripã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* -nã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒ-eã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’è¤‡æ•°æŒ‡å®šã—ãŸæ™‚ã‚‚å‹•ä½œã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* parse.yã§&lt;sys/types.h&gt;ã‚‚ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* fnameå‘¨ã‚Šã®ç´°ã‹ã„bugã‚’ä¿®æ­£.</div><div class='add'>+</div><div class='add'>+Wed May 26 11:45:10 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* å®šæ•°ã‚’ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã™ã‚‹ã‚ˆã†ã«ã—ãŸ. ç¹°ã‚Šè¿”ã—ãŒå¤šã„å ´åˆã«ã¯æœ‰åŠ¹ã®ã¯ãš</div><div class='add'>+	  ã ãŒ, ä¸€åº¦ã—ã‹ã‚¢ã‚¯ã‚»ã‚¹ã—ãªã„å ´åˆã¯é…ããªã‚‹ãªã‚.</div><div class='add'>+</div><div class='add'>+Wed May 25 00:42:24 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* å¤šé‡ä»£å…¥æ–‡(foo, bar = 1, 2)ã®æŽ¡ç”¨.</div><div class='add'>+</div><div class='add'>+	* æ¡ä»¶å¼éƒ¨ã«æ–‡å­—åˆ—ã‚ã‚‹ã„ã¯æ­£è¦è¡¨ç¾ãƒªãƒ†ãƒ©ãƒ«ã‚’ãŠãã¨`=~'æ¼”ç®—å­ã«ã‚ˆã£</div><div class='add'>+	  ã¦`$_'ã¨æ¯”è¼ƒã•ã‚Œã‚‹. æ›´ã«`...'ã®ä¸¡è¾ºã§ã¯æ•´æ•°ãƒªãƒ†ãƒ©ãƒ«ãŒ`$.'ã¨æ¯”è¼ƒ</div><div class='add'>+	  ã•ã‚Œã‚‹.</div><div class='add'>+</div><div class='add'>+Mon May 23 23:27:03 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* &amp;å¼ å½¢å¼ã¯ãªããªã£ãŸ. ä»£ã‚ã‚Šã«kernel:apply(id, args..)ã‚’å°Žå…¥.</div><div class='add'>+</div><div class='add'>+	* def op () ..å½¢å¼ã®å°Žå…¥. opã¯å†å®šç¾©å¯èƒ½ãªæ¼”ç®—å­.</div><div class='add'>+</div><div class='add'>+	* constantã®ä»£å…¥æ™‚ãƒã‚§ãƒƒã‚¯. æ—¢ã«åˆæœŸåŒ–ã•ã‚Œã¦ã„ã‚‹å®šæ•°ã«ä»£å…¥ã—ãŸå ´åˆ</div><div class='add'>+	  ã¯ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹.</div><div class='add'>+</div><div class='add'>+	* å¤šé‡ä»£å…¥æ–‡.</div><div class='add'>+</div><div class='add'>+Thu May 19 22:57:07 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* è¤‡åˆæ–‡ã§ã‚‚void valueã®ãƒã‚§ãƒƒã‚¯ã‚’è¡Œã†ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* untilã®å‹•ä½œã®ä¿®æ­£(do..untilåž‹ã ã£ãŸ).</div><div class='add'>+</div><div class='add'>+Wed May 18 01:06:25 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* ç§»æ¤ã«é–¢ã™ã‚‹è‹¥å¹²ã®å•é¡Œã‚’ä¿®æ­£.</div><div class='add'>+</div><div class='add'>+	* åˆ¥åã®æ§‹æ–‡ã‚’ã€Œdef a bã€ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* until/unless: æ¼”ç®—å­ã‹ã‚‰åˆ¶å¾¡æ–‡ã¸. ä¾‹å¤–ã‚’æ•æ‰ã™ã‚‹æ©Ÿèƒ½ã¯ãã®ã¾ã¾.</div><div class='add'>+</div><div class='add'>+	* é¸æŠžå¯èƒ½ãªæ©Ÿèƒ½ã‚’config.hã‹ã‚‰defines.hã«ç§»å‹•.</div><div class='add'>+</div><div class='add'>+Fri May 13 23:20:21 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* -yã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’æ–°è¨­. -dã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‹ã‚‰ã‚³ãƒ³ãƒ‘ã‚¤ãƒ©ã®ãƒ‡ãƒãƒƒã‚°éƒ¨åˆ†ã‚’åˆ†</div><div class='add'>+	  é›¢ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Tue Apr 25 20:17:33 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* ãƒžãƒ«ãƒãƒã‚¤ãƒˆæ–‡å­—åˆ—ã‚’è­˜åˆ¥å­ã«ä½¿ãˆã‚‹ã‚ˆã†ã«. å€‹äººçš„ã«ã¯ä½¿ã„ãŸãã¯ç„¡</div><div class='add'>+	  ã„ã‘ã©ãªã‚.</div><div class='add'>+</div><div class='add'>+	* `-v'ãƒ•ãƒ©ã‚°ã®çŠ¶æ…‹ã‚’$verboseã§ã‚¢ã‚¯ã‚»ã‚¹ã§ãã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* CVSã®å°Žå…¥ã«ä¼´ã„, ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç®¡ç†ã®æ–¹æ³•ã‚’å¤‰æ›´.</div><div class='add'>+</div><div class='add'>+	* çœŸé¢ç›®ã«ChangeLogã‚’ã¤ã‘ã‚‹äº‹ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Tue Mar  8 10:09:25 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* %å¤‰æ•°å ã«ã‚ˆã‚‹ã‚¯ãƒ©ã‚¹å®šæ•°ã‚’å°Žå…¥.</div><div class='add'>+</div><div class='add'>+	* undef ãƒ¡ã‚½ãƒƒãƒ‰ ã«ã‚ˆã‚‹ãƒ¡ã‚½ãƒƒãƒ‰å®šç¾©ã®å–ã‚Šæ¶ˆã—ã‚’å°Žå…¥.</div><div class='add'>+</div><div class='add'>+	* rb_get_method_bodyã§ã¯the_envã‚’å¤‰æ›´ã›ãš, rb_call()ã§æ˜Žç¤ºçš„ã«å¤‰æ›´</div><div class='add'>+	  ã™ã‚‹ã‚ˆã†ã«. ã“ã‚Œã§responds_toãªã©ã§ç’°å¢ƒãŒç ´å£Šã•ã‚Œãªã„.</div><div class='add'>+</div><div class='add'>+Mon Mar  7 17:46:15 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* ã€Œ&amp;æ–‡å­—åˆ—ã€å½¢å¼. ã€Œå¼.æ–‡å­—åˆ—ã€åž‹ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚»ãƒ³ãƒ‰ã¯ãªããªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* è‡ªå·±ä»£å…¥å½¢å¼(+=. -=, ...)</div><div class='add'>+</div><div class='add'>+	* obj.attr = exprå½¢å¼ã®æŽ¡ç”¨.</div><div class='add'>+</div><div class='add'>+Thu Feb 24 16:23:28 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* toint, tofloat, print_stringã‚’ãã‚Œãžã‚Œto_i, to_f, to_sã«å¤‰æ›´.</div><div class='add'>+</div><div class='add'>+	* String:clone - Copy on Writeã®å®Ÿç¾.</div><div class='add'>+</div><div class='add'>+Tue Feb 22 11:11:44 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* re.c: ãƒžãƒƒãƒã—ãŸæ–‡å­—åˆ—ã®ä¿å­˜ã«å¤±æ•—ã—ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* trap: å¯èƒ½ãªã‚‰ã°å‡¦ç†ã«æ™‚é–“ã®ã‹ã‹ã‚‹ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«(read, wait,</div><div class='add'>+	  sigpause, select)ã‚’ãƒ•ãƒƒã‚¯ã—ã¦å‰²ã‚Šè¾¼ã¿å‡¦ç†ã®å³ç­”æ€§ã‚’é«˜ã‚ã‚‹(DOSãª</div><div class='add'>+	  ã©ã§ã¯ç„¡ç†ã ãªã‚).</div><div class='add'>+</div><div class='add'>+	* trap: å‰²ã‚Šè¾¼ã¿ã‚’ãã®å ´ã§å‡¦ç†ã™ã‚‹ã‹(è¿…é€Ÿã ãŒå±é™º), å®‰å…¨ãªã‚¿ã‚¤ãƒŸãƒ³</div><div class='add'>+	  ã‚°ã§å‡¦ç†ã™ã‚‹ã‹ã‚’é¸æŠžã§ãã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Tue Feb 17 11:11:12 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* trap: å‰²ã‚Šè¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©.</div><div class='add'>+</div><div class='add'>+Wed Feb 16 12:29:12 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* String:crypt: æš—å·åŒ–ãƒ«ãƒ¼ãƒãƒ³</div><div class='add'>+</div><div class='add'>+	* "::"æ¼”ç®—å­ã®è¿½åŠ . a::b ã¯ {a, b}ã¨åŒç¾©. a::b::c ã¯ {a, {b, c}}ã¨</div><div class='add'>+	  åŒç¾©(å³çµåˆ). åŒç¾©ã¨ã¯ã„ã†ã‚‚ã®ã®, "::"æ¼”ç®—å­ã‚’ä½¿ã£ãŸæ–¹ãŒå°‘ã—ã ã‘</div><div class='add'>+	  ãƒ¡ãƒ¢ãƒªåŠ¹çŽ‡ãŒè‰¯ã„.</div><div class='add'>+</div><div class='add'>+	* Dir.rmdir(), File.unlink(), File.utime() -- å„ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«ã¸ã®</div><div class='add'>+	  ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹.</div><div class='add'>+</div><div class='add'>+	* kill -- kill(2) I/F</div><div class='add'>+</div><div class='add'>+	* select(): readã®ãƒã‚§ãƒƒã‚¯ã§ã¯stdioã«ãƒãƒƒãƒ•ã‚¡ãƒªãƒ³ã‚°ã•ã‚Œã¦ã„ã‚‹ã‹ã©</div><div class='add'>+	  ã†ã‹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Tue Feb 15 15:08:31 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* file.c: statã‚’ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* File:utime()ã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* unliteralize(): ãƒ•ãƒ©ã‚°ã‚’ç ´å£Šã—ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* Bug(): coreã‚’åãã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* String:tr -- tr(1)äº’æ›. å¼•æ•°ãƒ‘ã‚¿ãƒ¼ãƒ³ãŒã¡ã‚‡ã£ã¨é•ã†ã‘ã©â€¦.</div><div class='add'>+</div><div class='add'>+Mon Feb 14 18:24:13 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* unless, untilãŒä¾‹å¤–ã‚‚å½ã¨è¦‹ãªã™ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* select() -- select(2) I/F</div><div class='add'>+</div><div class='add'>+	* Array:pack, String:unpack: perlã®pack/unpackã®åŒç­‰å“</div><div class='add'>+</div><div class='add'>+Tue Feb  8 17:11:10 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* setenv()ã®ãªã„ã‚·ã‚¹ãƒ†ãƒ ã®ãŸã‚ã«putenv()ã‚’ä½¿ã£ãŸã‚³ãƒ¼ãƒ‰ã‚‚ç”¨æ„ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Mon Feb  7 09:52:44 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* å¼•æ•°ã®ä¸€ç•ªæœ€å¾Œã«`*'ã‚’ç½®ã‘ã‚‹ã‚ˆã†ã«ã—ãŸ. ã“ã‚Œã§restå¼•æ•°ã®ãƒªã‚¹ãƒˆã‚’</div><div class='add'>+	  æ“ä½œã™ã‚‹å¿…è¦ãŒå°‘ãªããªã‚‹.</div><div class='add'>+</div><div class='add'>+Fri Feb  4 18:23:26 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* ruby-mode.elã‚’æ›¸ãç›´ã™. ãšã„ã¶ã‚“ã¾ã—ã«ãªã£ãŸã¨æ€ã†.</div><div class='add'>+</div><div class='add'>+	* æ–‡å­—åˆ—ãƒªãƒ†ãƒ©ãƒ«ã®Copy on Writeã‚’å®Ÿç¾. ã“ã‚Œã§æ–‡å­—åˆ—ãŒãƒªãƒ†ãƒ©ãƒ«ã§ã‚</div><div class='add'>+	  ã‚‹ã‹ã‚‰ã¨ã„ã£ã¦ã„ã¡ã„ã¡cloneã—ãªãã¦ã‚‚æ¸ˆã‚€.</div><div class='add'>+</div><div class='add'>+Tue Feb  1 09:21:09 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* sub(), gsub()ã§, ãƒžãƒƒãƒã—ãŸæ–‡å­—åˆ—ã‚’$&amp;, $1..$9ã§ã‚¢ã‚¯ã‚»ã‚¹ã§ãã‚‹ã‚ˆ</div><div class='add'>+	  ã†ã«ã—ãŸ. åŒæ™‚ã«ãƒžãƒƒãƒã—ãŸéƒ¨åˆ†æ–‡å­—åˆ—ã‚’ã‚³ãƒ”ãƒ¼ã—ã¦ãŠãã‚ˆã†ã«(å…ƒã®</div><div class='add'>+	  æ–‡å­—åˆ—ãŒå¤‰æ›´ã•ã‚Œã¦ã‚‚çŠ¶æ…‹ã‚’ä¿å­˜ã™ã‚‹ãŸã‚).</div><div class='add'>+</div><div class='add'>+Mon Jan 31 15:16:58 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* ãƒ—ãƒ©ã‚¤ãƒ™ãƒ¼ãƒˆãƒ¡ã‚½ãƒƒãƒ‰ã®ä»•æ§˜ã‚’å¤‰æ›´. ä»Šã¾ã§ã¯åŒã˜ã‚¯ãƒ©ã‚¹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‹</div><div class='add'>+	  ã‚‰ã—ã‹ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã‹ã£ãŸãŒ, ã‚µãƒ–ã‚¯ãƒ©ã‚¹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰ã‚‚ã‚¢ã‚¯ã‚»ã‚¹</div><div class='add'>+	  ã§ãã‚‹ã‚ˆã†ã«ã—ãŸ(C++ã«ãŠã‘ã‚‹protected ãƒ¡ãƒ³ãƒé–¢æ•°).</div><div class='add'>+</div><div class='add'>+	* ãƒ¡ã‚½ãƒƒãƒ‰ã‚µãƒ¼ãƒã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã‚’æ”¹å–„ã—, 10%ç¨‹åº¦ã®é«˜é€ŸåŒ–ã‚’è¡Œãªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* é«˜é€ŸåŒ–. Cã§è¨˜è¿°ã•ã‚ŒãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’å‘¼ã³å‡ºã™æ™‚ã«ã¯setjmpã‚’å‘¼ã°ãªã„ã‚ˆ</div><div class='add'>+	  ã†ã«ã—ãŸ. ã“ã‚Œã§Cãƒ¡ã‚½ãƒƒãƒ‰ã‚’å¤šç”¨ã™ã‚‹å ´åˆã«ã¯3å€ç¨‹åº¦é«˜é€Ÿã«ãªã£ãŸ.</div><div class='add'>+</div><div class='add'>+Fri Jan 28 15:44:04 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* sh-modeã‚’å…ƒã«ruby-mode.elã‚’ä½œã‚‹. æ¼”ç®—å­ã§çµ‚ã‚‹, 2è¡Œã«æ¸¡ã‚‹æ–‡ã«ã¯å¯¾</div><div class='add'>+	  å¿œã—ã¦ã„ãªã„ã‘ã©â€¦.</div><div class='add'>+</div><div class='add'>+Thu Jan 27 11:35:19 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* freenode(): NODE_NILã®è§£æ”¾å¿˜ã‚Œ.</div><div class='add'>+</div><div class='add'>+	* å­—å¥è§£æžéƒ¨ã®ãƒã‚°ä¿®æ­£(ã‚³ãƒ¡ãƒ³ãƒˆã®å¾Œã®çŠ¶æ…‹ã‚’æˆ»ã—å¿˜ã‚Œ).</div><div class='add'>+</div><div class='add'>+	* protect .. endã®ãƒã‚°ä¿®æ­£. GC_LINKã®ãƒã‚¹ãƒˆãŒä¸æ­£ã ã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* joinã®ãƒã‚°ä¿®æ­£(ä½¿ã£ã¦ã„ã‚‹ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’freeã—ã¦ã„ãŸ).</div><div class='add'>+</div><div class='add'>+	* splitã®ãƒã‚°ä¿®æ­£(ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ãŒãŠã‹ã—ã‹ã£ãŸ).</div><div class='add'>+</div><div class='add'>+	* fork()ã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+Wed Jan 26 17:09:56 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* ãƒ•ã‚¡ã‚¤ãƒ«ãƒ†ã‚¹ãƒˆãƒ¡ã‚½ãƒƒãƒ‰ã®è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* rb_autoexec(): ã‚¯ãƒ©ã‚¹ã‚’åˆã‚ã¦ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸæ™‚ã®æŒ™å‹•ã‚’åˆ¶å¾¡ã§ãã‚‹ã‚ˆ</div><div class='add'>+	  ã†ã«ã—ãŸ. ã“ã‚Œã§autoloadã‚‚å®Ÿç¾ã§ãã‚‹. ã“ã‚Œã«ã¨ã‚‚ãªã„ãƒ¡ã‚½ãƒƒãƒ‰</div><div class='add'>+	  unknownã¯ãªããªã£ãŸ.</div><div class='add'>+</div><div class='add'>+Tue Jan 25 15:51:36 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* Dbmã‚¯ãƒ©ã‚¹, Mathãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’ä½œæˆ.</div><div class='add'>+</div><div class='add'>+	* -Iã‚ªãƒ—ã‚·ãƒ§ãƒ³ã§ã‚µãƒ¼ãƒãƒ‘ã‚¹ã«è¿½åŠ ã§ãã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* ã‚µãƒ¼ãƒãƒ‘ã‚¹ã‚’å¤‰æ•°$load_pathã«è¨­å®šã§ãã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* load(): ãƒ€ã‚¤ãƒŠãƒŸãƒƒã‚¯ãƒ­ãƒ¼ãƒ‰ã‚’ä½¿ãˆã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Tue Jan 18 14:14:01 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* Comparable:"&lt;=&gt;"</div><div class='add'>+</div><div class='add'>+	* Float,Fixnum:"**"</div><div class='add'>+</div><div class='add'>+	* Array:sort</div><div class='add'>+</div><div class='add'>+Fri Jan 14 16:53:37 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* version 0.07</div><div class='add'>+</div><div class='add'>+	* ãƒ¡ã‚½ãƒƒãƒ‰ã«é–¢ã™ã‚‹ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’å……å®Ÿã•ã›ãŸ.</div><div class='add'>+</div><div class='add'>+	* String:index(): å¼•æ•°positionã‚’å¢—ã‚„ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Thu Jan 13 15:13:52 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* æœªåˆæœŸåŒ–ã®å¤‰æ•°ã‚¢ã‚¯ã‚»ã‚¹ã‚’ãªãã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* ç„¡é§„ãªhash tableã®ã‚¢ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’å‰Šé™¤.</div><div class='add'>+</div><div class='add'>+	* Purify'd(on Sun)</div><div class='add'>+</div><div class='add'>+	* ~RE ã¨ ~STRã®ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«æ™‚å±•é–‹ã®æŠ‘åˆ¶.</div><div class='add'>+</div><div class='add'>+	* Sunã¸ç§»æ¤. signal()ã®æˆ»ã‚Šå€¤. RDataã®bugä¿®æ­£.</div><div class='add'>+</div><div class='add'>+	* parse.y: nlsãƒ«ãƒ¼ãƒ«ã‚’å‰Šé™¤.</div><div class='add'>+</div><div class='add'>+	* yylex(): æ”¹è¡Œã¨ç¬¦åˆã®è§£æžéƒ¨åˆ†ã‚’å¤‰æ›´.</div><div class='add'>+</div><div class='add'>+	* missing/strftime.c: ç§»æ¤ç”¨.</div><div class='add'>+</div><div class='add'>+	* Time:strftime: ãã®ä»–ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚‚strftimeã‚’åˆ©ç”¨ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* ãƒ¡ã‚½ãƒƒãƒ‰å†å®šç¾©æ™‚ã«ãƒ¡ã‚½ãƒƒãƒ‰ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’ã‚¯ãƒªã‚¢ã™ã‚‹.</div><div class='add'>+</div><div class='add'>+Fri Jan  7 15:23:20 1994  Yukihiro Matsumoto  (matz at nws119)</div><div class='add'>+</div><div class='add'>+	* Float:coerce(): Fixnumã¨Floatä»¥å¤–ã®å¼•æ•°ã‚’ä¸Žãˆã‚‰ã‚Œã‚‹ãŸæ™‚ã«ã¯ä¾‹å¤–</div><div class='add'>+	  ã‚’ç™ºç”Ÿã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* Stat: statæ§‹é€ ä½“ã®å…¨ã¦ã®ãƒ¡ãƒ³ãƒã«å¯¾ã™ã‚‹ã‚¢ã‚¯ã‚»ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’ç”¨æ„.</div><div class='add'>+</div><div class='add'>+	* æœªå®šç¾©ã®ã‚¯ãƒ©ã‚¹/ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¸ã®å‚ç…§ãŒunknownãƒ¡ã‚½ãƒƒãƒ‰ã‚’å‘¼ã³å‡ºã™ã‚ˆã†</div><div class='add'>+	  ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* baseline - version 0.06.</div><div class='head'>diff --git a/doc/ChangeLog-0.50_to_0.60 b/doc/ChangeLog-0.50_to_0.60<br/>new file mode 100644<br/>index 0000000000..5f5b03ff40<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/doc/ChangeLog-0.50_to_0.60?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>doc/ChangeLog-0.50_to_0.60</a></div><div class='hunk'>@@ -0,0 +1,462 @@</div><div class='add'>+Thu Dec  8 00:32:21 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* io.c($&lt;.file,$&lt;.filename): ãã¡ã‚“ã¨åˆæœŸåŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y(rb_class2name): includeã—ã¦ã„ã‚‹ã‚¯ãƒ©ã‚¹åã‚’æ­£å¸¸ã«è¡¨ç¤ºã§ã</div><div class='add'>+	  ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Dec  7 15:40:36 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* dln.c: config.hã‚’includeã—ã¦ã„ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* missing/strdup.c: å¿˜ã‚Œã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Dec  2 15:21:44 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* é–¢æ•°ã®å‘½åãƒ«ãƒ¼ãƒ«ã‚’å¤‰ãˆãŸ(ã‚¯ãƒ©ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰: Sxxx_xxxï¼Œãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£</div><div class='add'>+	  ãƒ¡ã‚½ãƒƒãƒ‰xxx_xxxãªã©)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* re.c(casefold): å€‹ã€…ã®æ­£è¦è¡¨ç¾ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒå¤§æ–‡å­—å°æ–‡å­—ã‚’ç„¡è¦–ã™</div><div class='add'>+	  ã‚‹ã‹ã©ã†ã‹ã‚’è¨­å®šã§ãã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Dec  1 01:44:51 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* missing.c: ã‚·ã‚¹ãƒ†ãƒ ã§æä¾›ã•ã‚Œãªã„ãƒ•ã‚¡ã‚¤ãƒ«ã®æ‰±ã„ã‚’å¤‰æ›´ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c($&lt;): å¤‰æ•°`$&lt;'ãŒæŒ‡ã—ã¦ã„ã‚‹ã‚‚ã®ã‚’ç¾åœ¨èª­ã¿è¾¼ã¿ä¸­ã®ãƒ•ã‚¡ã‚¤ãƒ«åã‹</div><div class='add'>+	  ã‚‰ä»®æƒ³ãƒ•ã‚¡ã‚¤ãƒ«($ARGF)ã«å¤‰æ›´ã—ãŸï¼Žã¾ãŸï¼Œç¾åœ¨èª­ã¿è¾¼ã¿ä¸­ã®ãƒ•ã‚¡ã‚¤ãƒ«</div><div class='add'>+	  åã¨ãƒ•ã‚¡ã‚¤ãƒ«ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚‚ç”¨æ„ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* ruby.h(data_new): Dataã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®å‰²ã‚Šå½“ã¦æ–¹æ³•ã‚’æ”¹å–„ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Nov 30 15:36:13 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* Makefile: ãƒ«ãƒ¼ãƒ«ã‚’æ•´ç†ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Nov 29 00:09:26 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* array.c(`|'): å¼•æ•°ãŒé…åˆ—ã§ãªãï¼Œã‹ã¤ãã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒè¦ç´ ã¨ã—ã¦</div><div class='add'>+	  å«ã¾ã‚Œã¦ã„ãªã„æ™‚ï¼Œãã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è¿½åŠ ã™ã‚‹ï¼Žã‚ã‚Œã°ãªã«ã‚‚ã—ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* process.c(gid,egid): GIDã‚’ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c(print): æ–‡å­—åˆ—ã¨é…åˆ—ã«å¯¾ã™ã‚‹å‡¦ç†ã‚’çµ„ã¿è¾¼ã‚“ã§è‹¥å¹²ã®é«˜é€ŸåŒ–ã‚’</div><div class='add'>+	  å›³ã£ãŸï¼Žå‡ºåŠ›ãŒå¤šã„å ´åˆã«åŠ¹ã„ã¦ãã‚‹ã‚ˆã†ã ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y(parse_string): ""ã§å›²ã¾ã‚ŒãŸæ–‡å­—åˆ—å†…ã§ã¯å¯¾å¿œã™ã‚‹ã‚¨ã‚¹ã‚±ãƒ¼</div><div class='add'>+	  ãƒ—ãŒãªã„`\'ã‚’æ®‹ã•ãªã„ã‚ˆã†ã«ï¼Žã¤ã¾ã‚Šï¼Œä»Šå¾Œã¯"\k" -&gt; "k"ã§ã‚ã‚‹(ä»¥</div><div class='add'>+	  å‰ã¯"\k"ã ã£ãŸ)ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Nov 28 18:02:31 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* re.c(re_regsub): ç½®æ›æ–‡å­—åˆ—ã®ç½®æ›ãˆãŒä¸å®Œå…¨ã ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* ä¸€æ™‚ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®è§£æ”¾ã‚’ã™ã¹ã¦GCã«ä»»ã›ãŸï¼Žä»Šã®ã¾ã¾ã§ã¯ã¾ãšã„ã‚¿ã‚¤</div><div class='add'>+	  ãƒŸãƒ³ã‚°ã§ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è§£æ”¾ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã£ãŸï¼Žæ˜”ã®GCã®æ™‚ã«ã¯ã“ã‚Œ</div><div class='add'>+	  ã§ã‚‚è‰¯ã‹ã£ãŸã®ã ãŒï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Nov 22 00:15:24 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c($"): æ—¢ã«ãƒ­ãƒ¼ãƒ‰ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«åã®é…åˆ—ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Nov 21 01:09:50 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* array.c(&amp;,|): é›†åˆã¨ã—ã¦ã®ç©æ¼”ç®—ã¨å’Œæ¼”ç®—ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c($&lt;): æ–‡å­—åˆ—ã‚’ä»£å…¥ã—ãŸæ™‚ã«ã¯è‡ªå‹•çš„ã«openã™ã‚‹ã‚ˆã†ã«ï¼ŽIOã®ã‚µãƒ–</div><div class='add'>+	  ã‚¯ãƒ©ã‚¹ã‹ã©ã†ã‹ã®ãƒã‚§ãƒƒã‚¯ã‚‚è¡Œã†ï¼Ž</div><div class='add'>+</div><div class='add'>+Sun Nov 19 23:02:27 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c($:): $LOAD_PATHã®åˆ¥åï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c($&gt;): ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå‡ºåŠ›å…ˆï¼ŽIO.defaultã¯ç„¡ããªã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c($&lt;): $FILENAMEã®åˆ¥å</div><div class='add'>+</div><div class='add'>+	* glob.c(each): ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã«ãƒžãƒƒãƒã™ã‚‹ã‚‚ã®ãŒãªã„å ´åˆï¼Œãƒ‘ã‚¿ãƒ¼ãƒ³</div><div class='add'>+	  ãã®ã‚‚ã®ã‚’ä¸Žãˆã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* file.c(chmod,chown,unlink,utime): `\'ã§ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚’ã‚¨ã‚¹ã‚±ãƒ¼</div><div class='add'>+	  ãƒ—ã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Nov 18 00:20:42 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.55 released</div><div class='add'>+</div><div class='add'>+	* file.c(chmod,chown,unlink,utime): å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸæ–‡å­—åˆ—ã«ãƒ¯</div><div class='add'>+	  ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã«ã¯Globã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«å¤‰æ›ã™ã‚‹.</div><div class='add'>+</div><div class='add'>+Wed Nov 16 17:33:48 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* file.c(chmod,chown,unlink,utime): å¼•æ•°ã¨ã—ã¦ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚‚å—ã‘</div><div class='add'>+	  ä»˜ã‘ã‚‹ã‚ˆã†ã«. ãã®å ´åˆã¯ãƒžãƒƒãƒã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«å…¨ä½“ã«é©ç”¨ã•ã‚Œã‚‹.</div><div class='add'>+</div><div class='add'>+Fri Nov 11 00:07:28 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* string.c(strip): æ–‡å­—åˆ—ãã®ã‚‚ã®ã‚’å¤‰æ›´ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_cal): ç’°å¢ƒã‚’ã‚¹ã‚¿ãƒƒã‚¯ã«ç©ã‚€ã‚¿ã‚¤ãƒŸãƒ³ã‚°ãŒé–“é•ã£ã¦ã„ãŸã®ã§ï¼Œ</div><div class='add'>+	  ä¸é©åˆ‡ãªã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå‡ºã‚‹æ™‚ãŒã‚ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_undefined): ãƒ¡ã‚½ãƒƒãƒ‰ãŒç„¡ã„æ™‚ã¨ãƒ¡ã‚½ãƒƒãƒ‰ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããª</div><div class='add'>+	  ã„æ™‚ã¨ã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ›¿ãˆãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c: toupper/tolowerã¯upcase/downcaseã‚’ä½¿ã£ã¦å®Ÿç¾ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c: lcfirst/ucfirstã¯å‰Šé™¤ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Nov 10 16:15:16 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* string.c: sub/gsubã¯ç½®æ›å¾Œã®æ–‡å­—åˆ—ã‚’è¿”ã™ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* string.c: toupper/tolower/lcfirstãªã©ã‚’æ–‡å­—åˆ—ã‚’å¤‰æ›´ã™ã‚‹ã‚‚ã®ã¨ã—</div><div class='add'>+	  ãªã„ã‚‚ã®ã®2 ç¨®é¡žã‚’æä¾›ã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Tue Nov  1 17:52:09 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c: å¤‰æ•°å±•é–‹ã«ãƒã‚°ãŒã‚ã£ã¦å…ƒã®æ–‡å­—åˆ—ã‚’ç ´å£Šã—ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+Thu Oct 27 09:56:48 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c: restå¼•æ•°ã®å‡¦ç†ãŒé–“é•ã£ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* env.c(rb_yield): ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã®è¨­å®šãŒé–“é•ã£ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+Wed Oct 26 19:01:43 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c: å¼•æ•°ã‚»ãƒƒãƒˆã®é«˜é€ŸåŒ–.</div><div class='add'>+</div><div class='add'>+	* process.c: sleepã®ãƒã‚°.</div><div class='add'>+</div><div class='add'>+	* parse.y, gnuglob.c: Sunã®ccã§ã‚‚ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã§ãã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Tue Oct 25 00:36:16 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c: è‹¥å¹²ã®é«˜é€ŸåŒ–. ã‚¹ã‚¿ãƒƒã‚¯ã®å‡¦ç†ã«ã‚ˆã£ã¦rb_call()ãŒå°‘ã—é…ã</div><div class='add'>+	  ãªã£ãŸåˆ†ã®ç©´åŸ‹ã‚ãã‚‰ã„ã‹.</div><div class='add'>+</div><div class='add'>+	* eval.c: blockã‚’envã‹ã‚‰å¤–ã™ãªã©ã—ã¦ã‚¹ã‚¿ãƒƒã‚¯ã‚’è»½ãã—ãŸ.</div><div class='add'>+</div><div class='add'>+Mon Oct 24 11:47:54 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* re.c: æ­£è¦è¡¨ç¾ã‚¢ã‚¯ã‚»ã‚¹ç”¨ã®å¤‰æ•°($`, $', $+)ã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* re.c($KANJI): å‡¦ç†ã™ã‚‹æ¼¢å­—ã‚³ãƒ¼ãƒ‰ã‚’rubyãƒ—ãƒ­ã‚°ãƒ©ãƒ å†…ã‹ã‚‰è¨­å®šã§ãã‚‹</div><div class='add'>+	  ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Sat Oct 22 00:42:41 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c: ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿å†…ã®redoã¨retryã®å‡¦ç†ã«ãƒã‚°ãŒã‚ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Oct 21 00:53:21 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* string.c(swapcase): æ–‡å­—åˆ—ã®å¤§æ–‡å­—å°æ–‡å­—ã‚’ç½®ãæ›ãˆã‚‹.</div><div class='add'>+</div><div class='add'>+	* string.c(ljust,rjust,center): æ–‡å­—åˆ—ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆç”¨ãƒ¡ã‚½ãƒƒãƒ‰.</div><div class='add'>+	  sprintf()ã§ã‚‚åŒã˜ã‚ˆã†ãªã“ã¨ã¯ã§ãã‚‹ãŒ.</div><div class='add'>+</div><div class='add'>+	* socket.c(recv,recvfrom): flagså¼•æ•°ã‚’çœç•¥å¯èƒ½ã«ã—ãŸ. çœç•¥æ™‚ã®å€¤ã¯</div><div class='add'>+	  0ã§ã‚ã‚‹.</div><div class='add'>+</div><div class='add'>+	* socket.c(recvfrom): recvã¨åŒæ§˜ã ãŒ, ãƒ‡ãƒ¼ã‚¿ã¨ç›¸æ‰‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ãƒšã‚¢ã‚’</div><div class='add'>+	  è¿”ã™.</div><div class='add'>+</div><div class='add'>+	* socket.c(accept): æˆ»ã‚Šå€¤ã‚’ã¤ãªãŒã£ãŸã‚½ã‚±ãƒƒãƒˆã‹ã‚‰, ã‚½ã‚±ãƒƒãƒˆã¨ã‚¢ãƒ‰</div><div class='add'>+	  ãƒ¬ã‚¹ã®ãƒšã‚¢ã«å¤‰æ›´ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* eval.c(eval): the_classã‚’ã‚»ãƒƒãƒˆã™ã‚‹æ™‚ã«, last_moduleãŒincludeã•</div><div class='add'>+	  ã‚Œã¦ã„ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«(T_ICLASS)ã§ã‚ã‚Œã°, å®šç¾©å…ƒã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®æ–¹ã‚’ã‚»ãƒƒ</div><div class='add'>+	  ãƒˆã™ã‚‹ã‚ˆã†ã«. ã“ã®ä¿®æ­£ãŒãªã„ã¨ICLASSã«å¯¾ã—ã¦ãƒ¡ã‚½ãƒƒãƒ‰ãŒå‘¼ã°ã‚Œã‚‹å¯</div><div class='add'>+	  èƒ½æ€§ãŒã‚ã‚Š, ä¸å¯©ãªå‹•ä½œã‚’ã™ã‚‹(ã¯ãš).</div><div class='add'>+</div><div class='add'>+	* class.c: ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®cloneã®éš›ã«ç‰¹ç•°ã‚¯ãƒ©ã‚¹(ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ç”¨ã®ã‚¯</div><div class='add'>+	  ãƒ©ã‚¹)ã‚’ãã¡ã‚“ã¨ã‚³ãƒ”ãƒ¼ã™ã‚‹ã‚ˆã†ã«ã—ãŸ. ä»Šã¾ã§ã¯å€‹ã€…ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®ã‚³</div><div class='add'>+	  ãƒ”ãƒ¼ã‚’å¿˜ã‚Œã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* numeric.c: Numericã®newã¨cloneã‚’undefã—ãŸ.</div><div class='add'>+</div><div class='add'>+Thu Oct 20 11:30:00 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.53 released.</div><div class='add'>+</div><div class='add'>+	* parse.y: TopLevelã®defæ–‡ã¯é–¢æ•°ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å®šç¾©ã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: defæ–‡ã®privateæŒ‡å®šã¯ãªããªã£ãŸ. export/noexportãƒ¡ã‚½ãƒƒãƒ‰</div><div class='add'>+	  ã‚’ä½¿ã£ã¦ã‚‚ã‚‰ã†ã“ã¨ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: caseæ–‡ã«thenã‚’å«ã‚€ã“ã¨ãŒã§ãã‚‹ã‚ˆã†ã«ãªã£ãŸ.</div><div class='add'>+</div><div class='add'>+Wed Oct 19 13:09:58 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* object.c(export,unexport): é–¢æ•°ãƒ¡ã‚½ãƒƒãƒ‰ã®è¨­å®šç”¨ãƒ¡ã‚½ãƒƒãƒ‰.</div><div class='add'>+</div><div class='add'>+	* eval.c, class.c: é–¢æ•°çš„ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å¾©æ´»ã•ã›(ã¾ãŸã‹â€¦), `@'ã«ã‚ˆã‚‹</div><div class='add'>+	  privateãƒ¡ã‚½ãƒƒãƒ‰ã‚’ãªãã—ãŸ. ã‚„ã¯ã‚Š, é–¢æ•°çš„ãªã‚‚ã®ã¯é–¢æ•°çš„ã«å‘¼ã³ãŸ</div><div class='add'>+	  ã„æ°—ãŒã—ã¦ããŸ. ã“ã†ä»•æ§˜ãŒå¤‰å‹•ã—ã¦ã¦ã¯ã„ã‘ãªã„ã‚ˆã†ãªæ°—ã‚‚ã™ã‚‹ãªã‚.</div><div class='add'>+	   *BACKWARD INCOMPATIBILITY*</div><div class='add'>+</div><div class='add'>+	* eval.c: ãƒ¡ã‚½ãƒƒãƒ‰ã®æ§‹æˆã‚’å¤‰æ›´ã—, åˆ¥åç®¡ç†ã¨é–¢æ•°ãƒ¡ã‚½ãƒƒãƒ‰ã®ç®¡ç†ã‚’åˆ†</div><div class='add'>+	  é›¢ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* eval.c: the_env-&gt;last_funcã‚’Cãƒ¡ã‚½ãƒƒãƒ‰ã®æ™‚ã«ã‚‚æ›´æ–°ã™ã‚‹. ã“ã‚ŒãŒãª</div><div class='add'>+	  ã„ã¨Structã®ã‚¢ã‚¯ã‚»ã‚¹ãŒå‹•ä½œã—ãªã„.</div><div class='add'>+</div><div class='add'>+Fri Oct 14 13:22:18 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.52 released: â€¦â€¦ãªã‚“ã¦ã“ã£ãŸã„.</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): returnã®å‡¦ç†ãŒé–“é•ã£ã¦ã„ãŸã®ã§, ãƒžã‚·ãƒ³ã«ã‚ˆã£ã¦</div><div class='add'>+	  ã¯returnã§é–¢æ•°ã‚’çµ‚äº†ã™ã‚‹ã ã‘ã§ãªãtoplevelã¾ã§ã¤ãæŠœã‘ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* dbm.c: Dictã¨åŒæ§˜ã«eachãŒ[key,value]ã‚’è¿”ã™ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* version 0.51 released</div><div class='add'>+</div><div class='add'>+Thu Oct 13 12:13:48 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c(SETUP_ARGS): ä»˜åŠ å¼•æ•°ãŒé…åˆ—ã§ãªã„æ™‚ã«ã¯é…åˆ—ã«å¤‰æ›ã™ã‚‹.</div><div class='add'>+</div><div class='add'>+	* parse.y: æ‹¬å¼§ãªã—ã®ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã§ã‚‚`*'ã«ã‚ˆã‚‹ä»˜åŠ å¼•æ•°ãŒä½¿ãˆã‚‹</div><div class='add'>+	  ã‚ˆã†ã«ã—ãŸ. ãŸã ã—, é€šå¸¸å¼•æ•°ãŒä¸€ã¤ã‚‚ãªã„å ´åˆã¯ä¹—ç®—æ¼”ç®—å­ã¨åŒºåˆ¥ãŒ</div><div class='add'>+	  ã¤ã‹ãªã„ã®ã§, å¿…ãšæ‹¬å¼§ãŒå¿…è¦.</div><div class='add'>+</div><div class='add'>+Wed Oct 12 10:09:07 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®è¨ˆç®—ã‚’inlineåŒ–. ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒŸã‚¹ãŒã‚</div><div class='add'>+	  ã‚Œã°é–¢æ•°å‘¼ã³å‡ºã—ã§ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æ¤œç´¢ã™ã‚‹. methods.cã¯ãªããªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_eval): ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ç”¨ã®é ˜åŸŸã‚’alloca()ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´.</div><div class='add'>+	  ã‚µã‚¤ã‚ºã®å¤‰æ›´ãŒå¿…è¦ã«ãªã‚Œã°æ”¹ã‚ã¦malloc()ã™ã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* parse.y: error recoveryã®éš›ã«lex_stateã‚’æ›´æ–°ã—ã¦ãŠãã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Tue Oct 11 17:10:46 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* socket.c(for_fd): ãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­(Fixnum)ã‹ã‚‰ã‚½ã‚±ãƒƒãƒˆã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹</div><div class='add'>+	  ã‚’å¾—ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰. ãŸã¨ãˆã°inetdã‹ã‚‰èµ·å‹•ã•ã‚ŒãŸã‚µãƒ¼ãƒã§æ¨™æº–å…¥å‡ºåŠ›ã«</div><div class='add'>+	  ã‚½ã‚±ãƒƒãƒˆæ“ä½œã‚’è¡Œãªã†ãŸã‚ã«ä½¿ã†. ã¤ã¾ã‚ŠSocket.for_fd($stdin)ã§æ¨™</div><div class='add'>+	  æº–å…¥åŠ›ã«å¯¾å¿œã™ã‚‹ã‚½ã‚±ãƒƒãƒˆã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒå¾—ã‚‰ã‚Œã‚‹.</div><div class='add'>+</div><div class='add'>+	* io.c(to_i): IOã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’æ•´æ•°ã«å¤‰æ›ã™ã‚‹ã¨ãã®ãƒ•ã‚¡ã‚¤ãƒ«</div><div class='add'>+	  è¨˜è¿°å­ã‚’è¿”ã™ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* numeric.c(num2int): to_iãƒ¡ã‚½ãƒƒãƒ‰ã‚’ä½¿ã£ã¦ã§ãã‚‹é™ã‚Šæ•´æ•°ã«å¤‰æ›ã™ã‚‹.</div><div class='add'>+	  ä»¥å‰ã¯num2fixã ã‘ãŒå…¨ã¦ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«å¯¾ã—ã¦to_iãƒ¡ã‚½ãƒƒãƒ‰ã‚’é©ç”¨</div><div class='add'>+	  ã—ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* sprintf.c(Fsprintf): æ•´æ•°è¡¨ç¤ºã®éš›, ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’ã§ãã‚‹é™ã‚Šæ•´æ•°</div><div class='add'>+	  ã«å¤‰æ›ã™ã‚‹ã‚ˆã†ã«(to_iãƒ¡ã‚½ãƒƒãƒ‰ã‚’ä½¿ã†).</div><div class='add'>+</div><div class='add'>+Fri Oct  7 14:06:32 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c(Fcaller): å¿…è¦æ€§ãŒã‚ˆãåˆ†ã‹ã‚‰ãªã„ã®ã§ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‹ã‚‰å‰Šé™¤.</div><div class='add'>+	  å°†æ¥ãƒ‡ãƒãƒƒã‚¬ã‚’ä½œã‚‹æ™‚ã«å¾©æ´»ã•ã›ã‚ˆã†.</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): Cã§è¨˜è¿°ã•ã‚ŒãŸãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã§ã¯ç’°å¢ƒã‚’ã‚¹ã‚¿ãƒƒã‚¯</div><div class='add'>+	  ã«ã‚»ãƒ¼ãƒ–ã—ãªã„ã“ã¨ã«ã‚ˆã£ã¦é«˜é€ŸåŒ–.</div><div class='add'>+</div><div class='add'>+Wed Oct  5 15:00:58 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ruby.h: ä¸€æ™‚env.hã«ç§»å‹•ã—ã¦ãŸQselfã®å®šç¾©ã‚’å¾©æ´». ãŸã ã—ä»Šå›žã¯é–¢æ•°</div><div class='add'>+	  ã¨ã—ã¦å®Ÿç¾(env.hã§ã¯å¤‰æ•°ã¨ã—ã¦å†å®šç¾©ã—ã¦ã‚ã‚‹).</div><div class='add'>+</div><div class='add'>+	* ruby.h: TRUEã§syntax errorã«ãªã‚‰ãªã„ã‚ˆã†#undefã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_eval): threadåŒ–ã«æŒ‘æˆ¦ã—ãŸãŒ, å¤±æ•—(é€Ÿããªã‚‰ãªã‹ã£ãŸ).</div><div class='add'>+	  ãŒ, Scopingãªã©ã®ç„¡é§„ãªã‚³ãƒ¼ãƒ‰ã®å‰Šé™¤ã¨ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã®å¼•æ•°ã‚»ãƒƒ</div><div class='add'>+	  ãƒˆã®inlineåŒ–ã§è‹¥å¹²ã®é«˜é€ŸåŒ–ã‚’å®Ÿç¾ã—ãŸ. å‰¯ä½œç”¨ã¨ã—ã¦, argc, argvå½¢</div><div class='add'>+	  å¼ã®é–¢æ•°å‘¼ã³å‡ºã—ã®ä»•æ§˜ãŒå¤‰åŒ–ã—ãŸ(argvã«selfã‚’å«ã¾ãªããªã£ãŸ).</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã®é«˜é€ŸåŒ–.</div><div class='add'>+</div><div class='add'>+Tue Oct  4 11:40:53 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ruby-mode.el: ä¿®é£¾å­ã«å¯¾å¿œã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: å¤šé‡ä»£å…¥ã«restã‚’ã¤ã‘ãŸ. ã“ã®æ©Ÿèƒ½ã‚’ä½¿ãˆã°optionalå¼•æ•°ã®</div><div class='add'>+	  è§£æžãŒç°¡å˜ã«ã§ãã‚‹(ã¯ãš).</div><div class='add'>+</div><div class='add'>+	* pack.c(unpack): uuencodeå½¢å¼ã®decodeã®éš›ã«æ–‡å­—åˆ—ã®é•·ã•ãŒé–“é•ã£ã¦</div><div class='add'>+	  ã„ãŸ.</div><div class='add'>+</div><div class='add'>+Mon Oct  3 15:58:41 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* file.c(type): ãƒ•ã‚¡ã‚¤ãƒ«ã‚¿ã‚¤ãƒ—ã‚’æ–‡å­—åˆ—ã§è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰.</div><div class='add'>+</div><div class='add'>+Fri Sep 30 11:36:07 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* object.c: ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®çœŸã®å€¤ã§ã‚ã‚‹%TRUEã®å€¤ã‚’1(Fixnum)ã‹ã‚‰tã«å¤‰</div><div class='add'>+	  æ›´ã—ãŸ. to_sã§æ–‡å­—åˆ—ã«å¤‰æ›ã—ãŸæ™‚ã«ã‚‚`t'ã¨è¡¨ç¤ºã•ã‚Œã‚‹. æ›´ã«è¸ã¿è¾¼</div><div class='add'>+	  ã‚“ã§`t'ã‚’äºˆç´„èªžã«ã—ã¦lispã®ã‚ˆã†ã«ã—ã‚ˆã†ã‹ã¨ã‚‚æ€ã£ãŸãŒ, ãã“ã¾ã§</div><div class='add'>+	  ã¯æ±ºå¿ƒã§ããªã‹ã£ãŸ. ä¸€æ–‡å­—ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¯ã‹ãªã‚Šä½¿ã„ãã†ãªæ°—ãŒã™</div><div class='add'>+	  ã‚‹ã®ã§â€¦.</div><div class='add'>+</div><div class='add'>+	* array.c,dict.c: equalã‚’å†å®šç¾©ã—ã¦ã„ã‚‹ã‚¯ãƒ©ã‚¹ã§, hashã‚’æ­£ã—ãå®šç¾©</div><div class='add'>+	  ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Wed Sep 28 23:30:28 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c(Ffail): ä»Šã¾ã§failã¯ã‚«ãƒ¼ãƒãƒ«ã‚¯ãƒ©ã‚¹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚ã£ãŸãŒ,</div><div class='add'>+	  æ§‹æ–‡ã«çµ„ã¿è¾¼ã‚“ã . ã“ã®å¤‰æ›´ã«ã‚ˆã£ã¦, 1)`fail'ã¯äºˆç´„èªžã¨ãªã‚Š, ãƒ­ãƒ¼</div><div class='add'>+	  ã‚«ãƒ«å¤‰æ•°ã«ç”¨ã„ã‚‹ã“ã¨ãŒã§ããªããªã£ãŸ. 2)`fail'å˜ä½“ã§ä¾‹å¤–ã‚’ç™ºç”Ÿã™</div><div class='add'>+	  ã‚‹ã‚ˆã†ã«ãªã£ãŸ. 3)failã¯ãƒ¡ã‚½ãƒƒãƒ‰ã§ã¯ãªããªã£ãŸã®ã§å†å®šç¾©ã•ã‚Œã‚‹å¯</div><div class='add'>+	  èƒ½æ€§ãŒãªããªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* dic.c, dbm.c(indexes): Arrayã®indexesã¨åŒæ§˜ã®æ©Ÿèƒ½ã‚’æŒã¤ãƒ¡ã‚½ãƒƒãƒ‰</div><div class='add'>+	  ã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* array.c(indexes): å¼•æ•°ã‚’ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¨ã™ã‚‹è¦ç´ ã®é…åˆ—ã‚’è¿”ã™. æ•´æ•°</div><div class='add'>+	  ã®é…åˆ—ã‚’å¼•æ•°ã¨ã™ã‚‹æ™‚ã«ã¯å¼•æ•°ã®è¦ç´ ã‚’ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¨ã™ã‚‹è¦ç´ ã®é…åˆ—</div><div class='add'>+	  ã‚’è¿”ã™.</div><div class='add'>+</div><div class='add'>+Mon Sep 19 13:42:31 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* array.c(aset): éƒ¨åˆ†é…åˆ—ã«å¯¾ã™ã‚‹ä»£å…¥ã§é…åˆ—ä»¥å¤–ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæŒ‡</div><div class='add'>+	  å®šã•ã‚ŒãŸå ´åˆã«å¤šé‡ä»£å…¥ã¨åŒã˜ãƒ«ãƒ¼ãƒ«ã§é…åˆ—åŒ–ã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* io.c(print): å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸå„ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«print_onãƒ¡ãƒƒã‚»ãƒ¼</div><div class='add'>+	  ã‚¸ã‚’ä¸Žãˆã‚‹ã‚ˆã†ã«. å®Ÿè¡Œé€Ÿåº¦ã¯è½ã¡ã‚‹ãŒæŸ”è»Ÿæ€§ã¯å¢—ã™.</div><div class='add'>+</div><div class='add'>+Fri Sep 16 14:59:18 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* glob.c: ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã®å°Žå…¥. bashã«ä½¿ã‚ã‚Œã¦ã„ã‚‹GNUã®globãƒ«ãƒ¼ãƒ</div><div class='add'>+	  ãƒ³ã‚’æµç”¨ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Mon Sep 12 18:36:58 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y(value_expr): å¼ãŒnilã®æ™‚ã«å¯¾å¿œ.</div><div class='add'>+</div><div class='add'>+	* class.c: ICLASSã®classãŒå¿…ãšClass/Moduleã‚’æŒ‡ã™ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Tue Sep  6 16:23:28 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* re.c:	æ­£è¦è¡¨ç¾å†…ã§ã€Œ\æ•°å­—ã€å½¢å¼ãŒæŒ‡å®šã§ãã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* parse.y:ã€Œdo expr using var ... endã€å½¢å¼ã¯ãªããªã£ãŸ. å¯‚ã—ã„æ°—</div><div class='add'>+	  ã‚‚ã™ã‚‹. *BACKWARD INCOMPATIBILITY*</div><div class='add'>+</div><div class='add'>+Mon Sep  5 10:59:01 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* numeric.c(next): Numericã‚¯ãƒ©ã‚¹ã«ã‚‚nextã‚’æä¾›.</div><div class='add'>+</div><div class='add'>+	* string.c(upto): uptoã‚’æä¾›.</div><div class='add'>+</div><div class='add'>+	* range.c(each): nextã‚’ä½¿ã£ãŸã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã‹ã‚‰uptoã‚’ä½¿ã†ã‚ˆã†ã«å¤‰</div><div class='add'>+	  æ›´ã—ãŸ. ã“ã®æ–¹ãŒä¸€ã¤ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§å‡¦ç†ã‚’ã¾ã¨ã‚ã§è¡Œãªã†ã“ã¨ãŒã§ãã‚‹.</div><div class='add'>+</div><div class='add'>+Fri Sep  2 15:25:39 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* dict.c(each): æˆ»ã‚Šå€¤ã‚’[key, value]ã®ãƒšã‚¢ã«å¤‰æ›´. ä»Šã¾ã§ã®eachã¯</div><div class='add'>+	  each_valueã¨ã—ã¦æ®‹ã‚‹. *BACKWARD INCOMPATIBILITY*</div><div class='add'>+</div><div class='add'>+Thu Sep  1 10:49:04 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* æˆåŠŸã—ãŸ(ç‰¹åˆ¥ãªæˆ»ã‚Šå€¤ã‚’æŒãŸãªã„)ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«ã¯`0'ã‚’è¿”ã™ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Wed Aug 31 00:26:51 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* string.c: ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’å¾—ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰`sum'ã‚’ä½œã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* class.c(include_class_new): ICLASSã®classã‚’ã‚‚ã¨ã®ã‚¯ãƒ©ã‚¹ã«ã—ãŸ.</div><div class='add'>+	  gcã®éš›ã«å…ƒã‚¯ãƒ©ã‚¹ã‚’ãƒžãƒ¼ã‚¯ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã®ãŒ, ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’å¢—ã‚„ã™ä½™</div><div class='add'>+	  åœ°ãŒç„¡ã„ã®ã§, classãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’æµç”¨ã—ãŸ. ç§ã®è¦‹ç©ã‚ŠãŒé–“é•ã£ã¦ã„</div><div class='add'>+	  ã¦, ICLASSã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ã‚‹äº‹ãŒã‚ã‚Œã°, ãŠã‹ã—ãªå‹•</div><div class='add'>+	  ä½œã‚’ã™ã‚‹ã ã‚ã†.</div><div class='add'>+</div><div class='add'>+	* eval.c(masign): å¼(a,b = nil)ã®å€¤ã‚’[nil]ã‹ã‚‰nilã«å¤‰æ›´ã—ãŸ.</div><div class='add'>+</div><div class='add'>+Mon Aug 29 11:56:09 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* class.c: rb_define_mfuncã‚’ç„¡ãã—ã¦, ãƒ¡ã‚¿ã‚¯ãƒ©ã‚¹ã«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’ã‚¤ãƒ³</div><div class='add'>+	  ã‚¯ãƒ«ãƒ¼ãƒ‰ã™ã‚‹ã‚ˆã†ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* error.c(yyerror): åŒã˜è¡Œã§è¤‡æ•°ã®syntax errorã‚’ãƒªãƒãƒ¼ãƒˆã—ãªã„ã‚ˆã†</div><div class='add'>+	  ã«ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* file.c: FileTestãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã«ãƒ•ã‚¡ã‚¤ãƒ«ãƒ†ã‚¹ãƒˆãƒ¡ã‚½ãƒƒãƒ‰ã‚’åˆ†é›¢ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: æ¼”ç®—å­ã‚’æŒ‡å®šã™ã‚‹æ™‚ã®lex_stateã‚’æ­£ã—ãè¨­å®šã—ãŸ.</div><div class='add'>+</div><div class='add'>+Sat Aug 27 01:23:34 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* parse.y: if/whileãªã©ã®è¤‡åˆå¼ã‚’primaryã«ç§»å‹•ã—ãŸ. ã“ã‚Œã«ã‚ˆã£ã¦ä¾‹</div><div class='add'>+	  ãˆã°ã€Œif cond then a else b end.message()ã€ã®ã‚ˆã†ãªå¼ãŒæ›¸ã‘ã‚‹ã‚ˆ</div><div class='add'>+	  ã†ã«ãªã£ãŸ.</div><div class='add'>+</div><div class='add'>+Fri Aug 26 10:46:30 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* spec: æ•´ç†ã•ã‚ŒãŸæ–‡æ³•ã«ã—ãŸãŒã£ã¦æ›¸ãç›´ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: ã“ã“æ•°æ—¥ã§æ··ä¹±ã—ã¦ã„ãŸæ–‡æ³•ã‚’æ•´ç†ã—ãŸ. æ‹¬å¼§ã‚’çœç•¥ã—ãŸãƒ¡</div><div class='add'>+	  ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ãŒã§ãã‚‹ã‚ˆã†ã«ãªã£ãŸã“ã¨, modifierãŒä»˜ã‘ã‚‰ã‚Œã‚‹ã‚ˆã†</div><div class='add'>+	  ã«ãªã£ãŸã“ã¨, returnã«ãƒªã‚¹ãƒˆãŒæ¸¡ã›ã‚‹ã‚ˆã†ã«ãªã£ãŸã“ã¨ãŒä¸»ãªå¤‰æ›´ç‚¹</div><div class='add'>+	  ã§ã‚ã‚‹.</div><div class='add'>+</div><div class='add'>+	* processå‘¨ã‚ŠãŒæ€ªã—ã„ãŒã¨ã«ã‹ãSolaris 2.3ã§å‹•ãã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* parse.y: æ›–æ˜§æ€§ãŒãªã„å ´åˆã«ã¯ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã®å¼•æ•°ã®æ‹¬å¼§ã‚’çœç•¥</div><div class='add'>+	  ã§ãã‚‹ã‚ˆã†ã«. çœç•¥ã§ãã‚‹ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã®æ¡ä»¶ã¯, 1)ã‹ãªã‚‰ãš1å€‹</div><div class='add'>+	  ä»¥ä¸Šã®å¼•æ•°ã‚’å¿…è¦ã¨ã™ã‚‹ã“ã¨, 2)ç¬¬1å¼•æ•°ãŒ`+', `-', `(', `[', `{',</div><div class='add'>+	  `/'ãªã©, å¼ã®å§‹ã¾ã‚Šã«ç½®ã‹ã‚ŒãŸæ™‚ã¨é€”ä¸­ã«ç¾ã‚ŒãŸæ™‚ã¨ã§è§£é‡ˆãŒé•ã†è¨˜</div><div class='add'>+	  å·ã§å§‹ã¾ã‚‰ãªã„ã“ã¨, ã§ã‚ã‚‹.</div><div class='add'>+</div><div class='add'>+Thu Aug 25 13:54:58 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y(cond): æ¡ä»¶å¼ã®å±•é–‹éƒ¨ã«bugãŒã‚ã£ãŸ.</div><div class='add'>+</div><div class='add'>+Wed Aug 24 00:01:15 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* parse.y: returnã¯ã‚³ãƒ³ãƒžã§åŒºåˆ‡ã£ãŸãƒªã‚¹ãƒˆã‚‚å—ã‘å–ã‚‹ã‚ˆã†ã«. ã¤ã¾ã‚Š,</div><div class='add'>+	  return a, b, cã¯return [a, b, c]ã¨åŒã˜æ„å‘³ã«ãªã‚‹.</div><div class='add'>+</div><div class='add'>+	* parse.y: yieldä»¥å¤–ã®å¤§åŸŸè„±å‡ºåˆ¶å¾¡å¼ã‚’exprã‹ã‚‰expr0ã«ç§»ã—ãŸ. ã‚ˆã£</div><div class='add'>+	  ã¦ãƒ¡ã‚½ãƒƒãƒ‰ã®å¼•æ•°ã«åˆ¶å¾¡å¼ã‚’ä½¿ãˆãªããªã‚‹(ã“ã‚Œã§å›°ã‚‹äººã¯ã„ãªã„ã¯ãš).</div><div class='add'>+</div><div class='add'>+	* parse.y: `+'ã®å®šæ•°å±•é–‹ã®éš›ã«æ¼”ç®—å­ã®å„ªå…ˆé †ä½ã‚’å¿˜ã‚Œã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* eval.c: untilã®æˆ»ã‚Šå€¤ã¯nilã«ãªã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: modifierã¨ã—ã¦ã®if/unless/while/untilã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+	* parse.y: æ–‡æ³•ã‹ã‚‰endã®å¾Œã‚ã«ã¤ã‘ã‚‹ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã‚’å‰Šé™¤. ã»ã¨ã‚“ã©ä½¿ã‚</div><div class='add'>+	  ãªã‹ã£ãŸä¸Šã«, emacsã§ã¯ruby-modeãŒã‚ã‚Œã°å¯¾å¿œã®ãƒã‚§ãƒƒã‚¯ãŒæ©Ÿæ¢°çš„ã«</div><div class='add'>+	  å‡ºæ¥ã‚‹ãŸã‚.</div><div class='add'>+</div><div class='add'>+Tue Aug 23 18:08:33 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c: ã‚¹ã‚¯ãƒªãƒ—ãƒˆå®Ÿè¡Œé–‹å§‹å‰ã«ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸæ™‚ã«core dumpã—ãŸ.</div><div class='add'>+	  çµ„ã¿è¾¼ã¿ç”¨ã«ã‚³ãƒ¼ãƒ‰ã‚’å¤‰æ›´ã—ãŸæ™‚ã«enbugã—ã¦ã—ã¾ã£ãŸ.</div><div class='add'>+</div><div class='add'>+Tue Aug 23 00:07:17 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c: doã®æˆ»ã‚Šå€¤ãŒã„ã¤ã‚‚nilã«ãªã£ã¦ã„ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: loopåˆ¶å¾¡å¤‰æ•°ã®å¤šé‡ä»£å…¥åŒ–ã«bugãŒã‚ã£ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y(expand_op): æ–‡å­—åˆ—ã‚‚ç•³ã¿è¾¼ã¿ã®å¯¾è±¡ã«.</div><div class='add'>+</div><div class='add'>+Mon Aug 22 10:50:01 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y(expand_op): `+'ã«é–¢ã—ã¦ã¯çµåˆå‰‡ã‚’ä½¿ã£ã¦, ã‚ˆã‚Šå¤šãå®šæ•°ç•³</div><div class='add'>+	  ã¿è¾¼ã¿ã‚’è¡Œãªã†ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+	* ruby.c(proc_options): argcãŒ0ã®æ™‚ã«ã‚‚å¯¾å¿œ.</div><div class='add'>+</div><div class='add'>+	* parse.y: forãªã©ã®åˆ¶å¾¡å¤‰æ•°ã«å¤šé‡ä»£å…¥ã‚‚ä½¿ãˆã‚‹ã‚ˆã†ã«.</div><div class='add'>+</div><div class='add'>+Sat Aug 20 00:59:40 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* parse.y(call_op): æ¼”ç®—å­`~'ã®å–ã‚Šæ‰±ã„ã‚’ãƒ«ãƒ¼ãƒ«éƒ¨ã¸ç§»å‹•.</div><div class='add'>+</div><div class='add'>+Fri Aug 19 11:44:13 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* main.c: rubyã‚’ã»ã‹ã®ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã«çµ„ã¿è¾¼ã‚ã‚‹ã‚ˆã†ã«main()ã‚’åˆ†å‰²ã—ãŸ.</div><div class='add'>+	  ãã‚Œã«ã¨ã‚‚ãªã„, ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã®å‘¼ã³å‡ºã—æ§‹é€ ã‚’ä¿®æ­£ã—ãŸ.</div><div class='add'>+</div><div class='add'>+	* parse.y: æ¡ä»¶å¼ã®å®šç¾©ã‚’å¤‰æ›´. ifãªã©ã®æ¡ä»¶å¼ã®ä¸­ã§ã ã‘`&amp;&amp;'ã‚„`||'</div><div class='add'>+	  ãŠã‚ˆã³`!'ã®å¼•æ•°ãŒæ¡ä»¶å¼ã«ãªã‚‹ã‚ˆã†ã«. ã“ã®å¤‰æ›´ã«ã‚ˆã‚Šæ¡ä»¶å¼ä»¥å¤–ã®</div><div class='add'>+	  å ´æ‰€ã§ã® `&amp;&amp;', `||', `!'æ¼”ç®—å­ã®å‹•ä½œãŒç›´è¦³ã«ä¸€è‡´ã™ã‚‹.</div><div class='add'>+</div><div class='add'>+	* parse.y: å®Ÿå¼•æ•°ã®`*'ã®å¾Œã«ç¶šãå¼•æ•°ã¯exprã«åˆ¶é™ã—ãŸ. ä»Šã¾ã§ã¯å…¨ã¦</div><div class='add'>+	  ã®æ–‡ãŒæœ‰åŠ¹</div><div class='head'>diff --git a/doc/ChangeLog-0.60_to_1.1 b/doc/ChangeLog-0.60_to_1.1<br/>new file mode 100644<br/>index 0000000000..33b0326892<br/>--- /dev/null<br/>+++ b/<a href='/ruby.git/tree/doc/ChangeLog-0.60_to_1.1?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>doc/ChangeLog-0.60_to_1.1</a></div><div class='hunk'>@@ -0,0 +1,3955 @@</div><div class='add'>+Tue Aug 12 16:02:18 1997  Yukihiro Matsumoto  &lt;matz@netlab.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* variable.c: option variables: $-0, $-p(readonly), $-v,</div><div class='add'>+	  $-I(load_path), $-a(readonly), $-K, $-d, $-F, $-i, $-l.</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): ignore rd (ruby document) in the code.</div><div class='add'>+</div><div class='add'>+Mon Aug 11 12:37:58 1997  Yukihiro Matsumoto  &lt;matz@netlab.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* re.c (Init_Regexp): $-K as alias to the $KCODE.</div><div class='add'>+</div><div class='add'>+	* io.c (Init_IO): new virtual variable $-i for the value of -i</div><div class='add'>+ 	  option.</div><div class='add'>+</div><div class='add'>+	* enum.c (Init_Enumerable): include? as alias of member?</div><div class='add'>+</div><div class='add'>+Fri Aug  8 11:16:50 1997  Yukihiro Matsumoto  &lt;matz@netlab.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (io_foreach): now the record separator can be specified.</div><div class='add'>+</div><div class='add'>+	* io.c (io_s_readlines): new method to read in whole file (or</div><div class='add'>+ 	  command output) from path.</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (Init_socket): recvfrom did not work.</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (sock_send): forgot to check nil for false</div><div class='add'>+	  value.</div><div class='add'>+</div><div class='add'>+Thu Aug  7 11:40:01 1997  Yukihiro Matsumoto  &lt;matz@netlab.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* variable.c (mod_constants): lists constants defiend in the</div><div class='add'>+	  modules/classes.</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_const_set): no longer warns about constant</div><div class='add'>+	  overriding by subclasses.</div><div class='add'>+</div><div class='add'>+	* eval.c (mod_eval): does eval() on module's context. local</div><div class='add'>+	  variables are shared with outer scope.</div><div class='add'>+</div><div class='add'>+	* object.c (Init_Object): remove private_attr/public_attr.</div><div class='add'>+</div><div class='add'>+Wed Aug  6 14:21:36 1997  Yukihiro Matsumoto  &lt;matz@netlab.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* object.c (mod_attr): forgot to check nil for false value.</div><div class='add'>+</div><div class='add'>+Mon Aug  4 11:50:28 1997  Yukihiro Matsumoto  &lt;matz@netlab.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* object.c (class_s_new): need not to specify names to create</div><div class='add'>+	  classes (or modules) dynamically.</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_class_path): scan class constants for anonymous</div><div class='add'>+	  classes/modules to make up pathes.</div><div class='add'>+</div><div class='add'>+Wed Jul 30 08:45:12 1997  Yukihiro Matsumoto  &lt;matz@netlab.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): stop to cache const value in nodes.</div><div class='add'>+</div><div class='add'>+Sat Jul 26 03:17:22 1997  WATANABE Hirofumi  &lt;watanabe@ase.ptg.sony.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* numeric.c (flo_to_s): wrong .0 at end.</div><div class='add'>+</div><div class='add'>+Sat Jul 26 00:36:36 1997  Yukihiro Matsumoto  &lt;matz@netlab.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (error_print): always print exception type in the</div><div class='add'>+ 	  toplevel exception handler.</div><div class='add'>+</div><div class='add'>+	* string.c (str_hash): wrong hash value.</div><div class='add'>+</div><div class='add'>+Thu Jul 24 11:05:51 1997  Yukihiro Matsumoto  &lt;matz@netlab.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (uscore_get): proper error message for unset $_.</div><div class='add'>+</div><div class='add'>+Wed Jul 23 09:56:55 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* object.c (obj_methods): returns list of method names of the</div><div class='add'>+	  specified object.</div><div class='add'>+</div><div class='add'>+	* class.c (mod_instance_methods): returns list of method names of</div><div class='add'>+	  the class instnace.</div><div class='add'>+</div><div class='add'>+Fri Jul 11 22:38:55 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* object.c (class_superclass): returns class's superclass</div><div class='add'>+ 	  itself. (1.1)</div><div class='add'>+</div><div class='add'>+	* object.c (obj_type): returns object's class itself. (1.1)</div><div class='add'>+</div><div class='add'>+	* class.c (mod_included_modules): list included modules.</div><div class='add'>+</div><div class='add'>+	* object.c (class_superclass): raises error for Object.</div><div class='add'>+</div><div class='add'>+Thu Jul  3 09:54:02 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (SETUP_ARGS): save source position, remove nd_line().</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_call): replace modulo by bit-masking.</div><div class='add'>+</div><div class='add'>+	* eval.c (POP_SCOPE): force recycle scope object to reduce gc rate.</div><div class='add'>+</div><div class='add'>+	* gc.c (obj_free): aboid calling run_final() when no finalizer is set.</div><div class='add'>+</div><div class='add'>+	* eval.c (PUSH_VARS): do not allocate the dynamic scope's end-mark</div><div class='add'>+	  object.</div><div class='add'>+</div><div class='add'>+Wed Jul  2 14:25:07 1997  KIMURA Koichi  &lt;kkimura@pure.cpdc.canon.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* Native mswin32 support.</div><div class='add'>+</div><div class='add'>+Tue Jul  1 09:59:00 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970701</div><div class='add'>+</div><div class='add'>+	* parse.y (mrhs): allow rest-star(*) in right hand side.</div><div class='add'>+</div><div class='add'>+Tue Jun 24 19:04:31 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970624</div><div class='add'>+</div><div class='add'>+Sat Jun 20 22:22:51 1997  Michio "Karl" Jinbo  &lt;karl@marcer.nagaokaut.ac.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c: freebsd 3.0 &lt;sys/select.h&gt; support.</div><div class='add'>+</div><div class='add'>+Fri Jun 20 01:24:45 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970620</div><div class='add'>+</div><div class='add'>+	* gc.c: eliminate uninitilalized field of Hash, Array etc., to</div><div class='add'>+	  avoid dumping core.</div><div class='add'>+</div><div class='add'>+Thu Jun 19 01:29:44 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970619</div><div class='add'>+</div><div class='add'>+	* string.c (str_split_method): wrong limit.</div><div class='add'>+</div><div class='add'>+Sat Jun 14 01:54:16 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* class.c (rb_singleton_class): no singleton for special</div><div class='add'>+	  constants (now raises exception).</div><div class='add'>+</div><div class='add'>+	* eval.c (ruby_init): cbase in TOPLEVEL_BINDING need to be</div><div class='add'>+	  initialized.</div><div class='add'>+</div><div class='add'>+Sat Jun 14 01:01:16 1997  maeda shugo  &lt;shugo@po.aianet.ne.jp&gt;</div><div class='add'>+</div><div class='add'>+	* array.c (sort_2): wrong comparison.</div><div class='add'>+</div><div class='add'>+Sat Jun 14 00:53:44 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* hash.c (hash_foreach): safe iteration.</div><div class='add'>+</div><div class='add'>+Fri Jun 13 14:04:56 1997  Michio "Karl" Jinbo  &lt;karl@marcer.nagaokaut.ac.jp&gt;</div><div class='add'>+</div><div class='add'>+	* configure.in: -Bshareable option for netbsd.</div><div class='add'>+</div><div class='add'>+Fri Jun 13 01:16:22 1997  WATANABE Hirofumi  &lt;watanabe@ase.ptg.sony.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (pipe_open): call io_unbuffered() only for writable pipes.</div><div class='add'>+</div><div class='add'>+Thu Jun 12 01:14:15 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970612</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (sock_new): use io_unbuffered().</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (w_long): compact long format, which</div><div class='add'>+	  supports 64 bit architectures (unless longs are &gt;32 bit size).</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c: allows recursive data for marshaling.</div><div class='add'>+</div><div class='add'>+	* parse.y (rb_intern): raise exception for non-internable string.</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (marshal_load): allows direct loading from</div><div class='add'>+ 	  strings.</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (marshal_dump): allows direct dump to strings.</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (marshal_dump): interface changed.</div><div class='add'>+</div><div class='add'>+Wed Jun 11 18:26:00 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* gc.c (rb_newobj): remove needless memset().</div><div class='add'>+</div><div class='add'>+Mon Jun  9 13:03:43 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): reduce condition checks from while/until loop.</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): wrong jump point for `next'.</div><div class='add'>+</div><div class='add'>+Fri Jun  6 11:47:39 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.c (ruby_set_argv): initialize dln_argv0 for dln_a_out.</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (open_unix): display path name for exceptions.</div><div class='add'>+</div><div class='add'>+	* ruby.c (proc_options): option -S did not work well.</div><div class='add'>+</div><div class='add'>+Fri May 30 02:14:44 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970530</div><div class='add'>+</div><div class='add'>+	* eval.c (eval): set $! properly if exception raised in eval().</div><div class='add'>+</div><div class='add'>+	* io.c (io_write): now handles non T_FILE object.</div><div class='add'>+</div><div class='add'>+	* io.c (io_defset): $&lt; can be anything which has `write' method.</div><div class='add'>+</div><div class='add'>+Thu May 29 15:40:22 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (eval): $@ is always an array (not string).</div><div class='add'>+</div><div class='add'>+	* pack.c (pack_unpack): avoid corrupting memory for unexpected</div><div class='add'>+	  input strings.</div><div class='add'>+</div><div class='add'>+Wed May 28 12:46:13 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970528</div><div class='add'>+</div><div class='add'>+	* process.c (rb_waitpid): do not block other threads.</div><div class='add'>+</div><div class='add'>+Tue May 27 12:02:31 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (ruby_init): split initialize and processing command line</div><div class='add'>+	  options.</div><div class='add'>+</div><div class='add'>+	* ruby.c (ruby_options): ruby_init(0, 0, envp) dumps core.</div><div class='add'>+</div><div class='add'>+Tue May 20 18:59:45 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_ivar_set): invalid instance variable access for</div><div class='add'>+	  built-in object raises TypeError.</div><div class='add'>+</div><div class='add'>+Fri May 16 17:32:21 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970516</div><div class='add'>+</div><div class='add'>+	* dir.c (push_globs): was freeing non heap pointer.</div><div class='add'>+</div><div class='add'>+	* gc.c: remove some duplicated prototypes.</div><div class='add'>+</div><div class='add'>+	* ext/kconv/kconv.c: fix prototypes.</div><div class='add'>+</div><div class='add'>+Fri May  9 11:38:59 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970509</div><div class='add'>+</div><div class='add'>+	* gc.c (obj_free): avoid free(NULL).</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_check_safe_str): argument missing for TypeError().</div><div class='add'>+</div><div class='add'>+Thu May  8 01:14:28 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c (file_s_dirname): need to return "." for path without</div><div class='add'>+	  slashes.</div><div class='add'>+</div><div class='add'>+Wed May  7 19:18:48 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* process.c (f_fork): child processe does not inherit parent's</div><div class='add'>+ 	  itimer setting on linux.  call setitimer() again in the child</div><div class='add'>+	  process.</div><div class='add'>+</div><div class='add'>+Sat May  3 02:49:43 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/curses/curses.c: modified for portability and add to the</div><div class='add'>+ 	  standard distribution.</div><div class='add'>+</div><div class='add'>+Wed Apr 30 00:34:00 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c (file_s_size): returns 0 for empty files (not FALSE).</div><div class='add'>+</div><div class='add'>+Fri Apr 25 02:17:50 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970425</div><div class='add'>+</div><div class='add'>+	* eval.c (f_load): free unused name-table.</div><div class='add'>+</div><div class='add'>+	* eval.c (f_load): copy local variable name-table.</div><div class='add'>+</div><div class='add'>+	* gc.c (obj_free): avoid free(NULL).</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): forgot to make link from the scope object to</div><div class='add'>+	  NODE_SCOPE.  It may crash the interpreter.</div><div class='add'>+</div><div class='add'>+Thu Apr 24 00:35:09 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* random.c (f_srand): save old seed anyway.  srand() returns no</div><div class='add'>+ 	  value on some systems.</div><div class='add'>+</div><div class='add'>+	* gc.c (obj_free): avoid double free of the local variable name</div><div class='add'>+	  table.</div><div class='add'>+</div><div class='add'>+	* parse.y (top_local_setup): modify realloc to handle offset.</div><div class='add'>+</div><div class='add'>+Tue Apr 22 12:58:26 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970422</div><div class='add'>+</div><div class='add'>+Thu Apr 17 00:40:51 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* configure.in (rb_cv_bsdpgrp): proper check for BSD</div><div class='add'>+	  setpgrp/setpgrp.</div><div class='add'>+</div><div class='add'>+Wed Apr 16 16:14:02 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (proc_call): proc called in other thread must be orphan.</div><div class='add'>+</div><div class='add'>+Tue Apr 15 10:46:31 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970415</div><div class='add'>+</div><div class='add'>+	* gc.c (obj_free): NODE_SCOPE marked from SCOPE object.</div><div class='add'>+</div><div class='add'>+	* gc.c (gc_mark): some nodes marked wrong.</div><div class='add'>+</div><div class='add'>+	* process.c (proc_getpgrp): wrong argument</div><div class='add'>+</div><div class='add'>+Fri Apr 14 18:32:42 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970414</div><div class='add'>+</div><div class='add'>+Fri Apr 12 01:20:12 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.h: String pointer changed to unsigned char.</div><div class='add'>+</div><div class='add'>+Fri Apr 11 10:27:29 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970411</div><div class='add'>+</div><div class='add'>+	* Makefile.in: create libruby.a before linking ruby.</div><div class='add'>+</div><div class='add'>+	* string.c (str_strip_bang): &gt;0x80 characters for isspace().</div><div class='add'>+</div><div class='add'>+	* eval.c (proc_call): set safe-level temporally</div><div class='add'>+</div><div class='add'>+	* eval.c (proc_s_new): save safe-level in the proc context.</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): no class/module extension in safe mode.</div><div class='add'>+</div><div class='add'>+Thu Apr 10 02:10:41 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* gc.c (gc_mark): remove some pointer checks for speeding up.</div><div class='add'>+</div><div class='add'>+	* ruby.c (ruby_options): set $0 temporally for -r option.</div><div class='add'>+</div><div class='add'>+	* eval.c: built-in security feature.</div><div class='add'>+</div><div class='add'>+	* gc.c (gc_sweep): do not free nodes during compile.</div><div class='add'>+</div><div class='add'>+	* parse.y (yycompile): set flag when compiling.</div><div class='add'>+</div><div class='add'>+Wed Apr  9 10:19:02 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.c: forgot to include &lt;ctype.h&gt; for isspace().</div><div class='add'>+</div><div class='add'>+	* file.c: provide S_ISREG for some platforms.</div><div class='add'>+</div><div class='add'>+	* io.c (Init_IO): added some $&lt; operations.</div><div class='add'>+</div><div class='add'>+	* lib/ping.rb: check host upness using TCP echo.</div><div class='add'>+</div><div class='add'>+Tue Apr  8 00:10:15 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (arg_read): bug with 0 length input.</div><div class='add'>+</div><div class='add'>+Mon Apr  7 11:36:16 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/fcntl/fcntl.c: module for fcntl constants.</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_alias): bug when original was an alias.</div><div class='add'>+</div><div class='add'>+	* parse.y (primary): syntax to access singleton class.</div><div class='add'>+</div><div class='add'>+	* eval.c (mod_public_method): method's to specify visibitily of</div><div class='add'>+	  the class methods.  make_method_{public,private} removed.</div><div class='add'>+</div><div class='add'>+Fri Apr  4 21:43:57 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970404</div><div class='add'>+</div><div class='add'>+	* gc.c (obj_free): finalizer added for experiment.</div><div class='add'>+</div><div class='add'>+Thu Apr  3 02:12:31 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_schedule): make Fatal rise on main_thread on</div><div class='add'>+	  deadlocks.</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_join): raise ThreadError instead of Fatal, in</div><div class='add'>+	  case of deadlock.</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_fastmap): uninitialized local variable.</div><div class='add'>+</div><div class='add'>+	* parse.y (parse_regx): new option //[nes] to specify character</div><div class='add'>+	  code for regexp literals.  Last specified code option is valid.</div><div class='add'>+</div><div class='add'>+	* re.c (reg_s_new): additional 3rd argument to specify compiled</div><div class='add'>+ 	  regexp's character code.</div><div class='add'>+</div><div class='add'>+	* re.c (reg_new_1): regexp character code can be specified for</div><div class='add'>+	  each regexp object.</div><div class='add'>+</div><div class='add'>+Wed Apr  2 14:51:06 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_create): handle uncaught throw.</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_create): halt on some deadlock conditions.</div><div class='add'>+</div><div class='add'>+	* regex.c (is_in_list): wrong result for non-mbc higher-byte</div><div class='add'>+	  characters.</div><div class='add'>+</div><div class='add'>+	* regex.c (re_match): wrong skip for multi-byte characters.</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_fastmap): wrong fastmap in non-mbc mode.</div><div class='add'>+</div><div class='add'>+	* hash.c (Init_Hash): hash compatible features added to ENV.</div><div class='add'>+</div><div class='add'>+Tue Apr  1 15:24:06 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (obj_extend): remove Object#extend as an iterator which</div><div class='add'>+ 	  is in experimental state, since it unveils internal singleton</div><div class='add'>+ 	  classes.</div><div class='add'>+</div><div class='add'>+Mon Mar 31 14:29:39 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970331</div><div class='add'>+</div><div class='add'>+Sun Mar 30 19:40:57 1997  WATANABE Hirofumi  &lt;watanabe@ase.ptg.sony.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (terms): avoided win32 gcc's optimization bug.</div><div class='add'>+</div><div class='add'>+Sat Mar 29 11:21:58 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* struct.c (make_struct): St[val,..] creates new structure.</div><div class='add'>+</div><div class='add'>+Fri Mar 28 11:24:51 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (obj_make_private): new method make_method_{public,private}</div><div class='add'>+	  to change visibility of singleton methods.</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_pattern): enables numeric literal &gt;= 0x80 in</div><div class='add'>+	  the character class.</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_pattern): enabled numeric literal &gt;= 0x80,</div><div class='add'>+	  in multibyte mode.</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_fastmap): modified exantn and charset(_not)</div><div class='add'>+	  to set fastmap for higher bytes properly.</div><div class='add'>+</div><div class='add'>+	* regex.c (is_in_list): now matches numeric literals.</div><div class='add'>+</div><div class='add'>+Thu Mar 27 13:34:20 1997  WATANABE Hirofumi  &lt;watanabe@ase.ptg.sony.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* pack.c (pack_unpack): extra null byte after unpacked string.</div><div class='add'>+</div><div class='add'>+Wed Mar 26 15:20:34 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_pattern): register numbers must be fit in a</div><div class='add'>+ 	  byte (0 &lt;= regnum &lt;= 0xff).</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_fastmap): forgot to set mbchar map for</div><div class='add'>+ 	  charset_not if RE_MBCTYPE is on.</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_pattern): set list bits for multi-byte</div><div class='add'>+	  characters for \W, \S, \D in range expression.</div><div class='add'>+</div><div class='add'>+	* object.c (obj_is_kind_of): defined that nil itself is kind of</div><div class='add'>+ 	  nil.  TRUE is kind of TRUE, FALSE is kind of FALSE likewise.</div><div class='add'>+  	  This change makes `obj.kind_of?(eval(obj.type))' always true.</div><div class='add'>+</div><div class='add'>+Tue Mar 25 14:08:43 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* lib/English.rb: provides nicer English alias for the variables.</div><div class='add'>+</div><div class='add'>+	* parse.y (expr): alias $var1 $var2 makes alias of the global</div><div class='add'>+	  variable.</div><div class='add'>+</div><div class='add'>+Mon Mar 24 18:23:20 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970324</div><div class='add'>+</div><div class='add'>+Thu Mar 20 22:04:59 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (mod_modfunc): forget to clear method cache.</div><div class='add'>+</div><div class='add'>+Wed Mar 19 17:06:55 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (program): set methods' default private/public status</div><div class='add'>+	  correctly under eval().</div><div class='add'>+</div><div class='add'>+	* eval.c (eval): set the_class correctly while evaluating string.</div><div class='add'>+</div><div class='add'>+Tue Mar 18 12:23:53 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (eval): yield can be called from eval().</div><div class='add'>+</div><div class='add'>+	* version 1.0-970318</div><div class='add'>+</div><div class='add'>+	* parse.y (program): regexp in condition expression should do</div><div class='add'>+	  matching operation with $_.</div><div class='add'>+</div><div class='add'>+	* re.c (reg_regsub): wrong substitution.</div><div class='add'>+</div><div class='add'>+Fri Mar 14 14:36:28 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* hash.c (hash_invert): returns value to key mapping of the</div><div class='add'>+	  associative array.</div><div class='add'>+</div><div class='add'>+	* ext/socket/extconf.rb: set environment variable SOCKS_SERVER to</div><div class='add'>+	  compile with libsocks.a.</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (socks_s_open): SOCKSsocket class to access</div><div class='add'>+	  internet via SOCKS library.</div><div class='add'>+</div><div class='add'>+	* sprintf.c (f_sprintf): unsigned formats display leading double</div><div class='add'>+ 	  dots for imaginary sequence of signed bit to the left.</div><div class='add'>+</div><div class='add'>+	* sprintf.c (f_sprintf): correct width and precision formatting</div><div class='add'>+	  for big integers.</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): enables negative hex/octal numbers and `_' in</div><div class='add'>+	  non-decimal numbers.</div><div class='add'>+</div><div class='add'>+	* sprintf.c (f_sprintf): %u added for unsigned decimal format.</div><div class='add'>+</div><div class='add'>+Thu Mar 13 10:24:27 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sprintf.c (f_sprintf): wrong output for bignums.</div><div class='add'>+</div><div class='add'>+	* array.c (ary_reverse_each): iterates in reverse order.</div><div class='add'>+</div><div class='add'>+	* pack.c (pack_unpack): L unpacked signed long.</div><div class='add'>+</div><div class='add'>+	* io.c (f_backquote): now returns an empty string for no output.</div><div class='add'>+</div><div class='add'>+Wed Mar 12 10:20:30 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/socks/socks.c: socket module with socks library.</div><div class='add'>+</div><div class='add'>+Mon Mar 10 20:44:22 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* re.c (reg_regsub): \&amp; for substitution.  \`, \', and \+ are</div><div class='add'>+	  avaiable also.</div><div class='add'>+</div><div class='add'>+Thu Mar  6 01:47:03 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970306</div><div class='add'>+</div><div class='add'>+	* sample/rubydb.el (gud): ruby debugger emacs interface</div><div class='add'>+</div><div class='add'>+	* lib/debug.rb: ruby debugger</div><div class='add'>+</div><div class='add'>+	* parse.y (exprs): more accurate line number display.</div><div class='add'>+</div><div class='add'>+Wed Mar  5 21:31:46 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970305</div><div class='add'>+</div><div class='add'>+Tue Mar  4 12:28:32 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.c (proc_options): search through RUBYPATH and PATH for</div><div class='add'>+	  option -S.</div><div class='add'>+</div><div class='add'>+Mon Mar  3 22:44:55 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_status): returns nil for exception terminated</div><div class='add'>+	  threads.</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_value): re-raise exceptions.</div><div class='add'>+</div><div class='add'>+Sat Mar  1 00:59:47 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): restore $! value after rescue clause, to</div><div class='add'>+	  re-raise exceptions correctly.</div><div class='add'>+</div><div class='add'>+Fri Feb 28 16:43:38 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970228</div><div class='add'>+</div><div class='add'>+Thu Feb 27 11:23:41 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_yield_0): redo raises exception</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_schedule): bug in interrupt handling by rescue.</div><div class='add'>+</div><div class='add'>+Wed Feb 26 00:55:36 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (eval): forgot to restore dynamic local variable</div><div class='add'>+	  bindings.</div><div class='add'>+</div><div class='add'>+Tue Feb 25 11:22:08 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/aix_ld.rb: AIX dynamic load support (not tested).</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): wrong return value for defined? super.</div><div class='add'>+</div><div class='add'>+	* error.c (exception): more error check.</div><div class='add'>+</div><div class='add'>+	* re.c (reg_regsub): wrong substitution when sub expanded to null</div><div class='add'>+ 	  string.</div><div class='add'>+</div><div class='add'>+Fri Feb 21 13:01:47 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970221</div><div class='add'>+</div><div class='add'>+	* eval.c (f_require): volatile added.  register variable was</div><div class='add'>+ 	  recycled, so that GC did not mark that variable.</div><div class='add'>+</div><div class='add'>+	* object.c (Init_Object): forget to mark main object (was mostly</div><div class='add'>+	  ok, but made trouble with early GC.)</div><div class='add'>+</div><div class='add'>+Thu Feb 20 11:50:50 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970220</div><div class='add'>+</div><div class='add'>+Thu Feb 20 11:25:50 1997  Yasuo OHBA  &lt;jammy@shljapan.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* lib/date.rb: update</div><div class='add'>+</div><div class='add'>+Thu Feb 20 08:25:57 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): forgot tokfix() before rb_intern().</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb (TkVariable): give up using trace_var.</div><div class='add'>+</div><div class='add'>+Wed Feb 19 00:24:35 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970219</div><div class='add'>+</div><div class='add'>+	* pack.c (pack_pack): packed by null for A specifier. must be</div><div class='add'>+	  space filled.</div><div class='add'>+</div><div class='add'>+	* pack.c (pack_unpack): bug in skipping spaces</div><div class='add'>+</div><div class='add'>+	* gc.c (xmalloc): garbage collect for every 4 Meg. allocation.</div><div class='add'>+</div><div class='add'>+	* string.c (str_split_method): limit worked wrong way.</div><div class='add'>+</div><div class='add'>+	* io.c (io_gets_method): misunderstand 0xff in binary files when</div><div class='add'>+	  $/ == nil.</div><div class='add'>+</div><div class='add'>+	* re.c (reg_regsub): re-implement.</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (thread_connect): remove O_NONBLOCK, which</div><div class='add'>+	  is not defined on some platform like NeXT.</div><div class='add'>+</div><div class='add'>+Mon Feb 17 13:08:30 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970217</div><div class='add'>+</div><div class='add'>+	* object.c (mod_eqq): === extended for subclass check (to use case</div><div class='add'>+	  as typecase).</div><div class='add'>+</div><div class='add'>+Sat Feb 15 02:07:22 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_pattern): wrong match backref at end of pattern.</div><div class='add'>+</div><div class='add'>+	* io.c (arg_read): now works beyond end of file.</div><div class='add'>+</div><div class='add'>+Thu Feb 13 16:21:24 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (expr): return/yield now accept normal argument format.</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): a star in `yield *x' must not be multiplication</div><div class='add'>+	  operator.</div><div class='add'>+</div><div class='add'>+Wed Feb 12 15:06:44 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* time.c (time_plus): bug in simple addition.</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_raise): raise exceptions from outside.</div><div class='add'>+</div><div class='add'>+	* eval.c (Init_Thread): Thread#alive? -- alias for Thread#status.</div><div class='add'>+</div><div class='add'>+Mon Feb 10 00:38:55 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.h (Data_Make_Struct): rename macros.</div><div class='add'>+</div><div class='add'>+Sun Feb  8 11:48:13 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (f_syscall): argument offset was wrong.</div><div class='add'>+</div><div class='add'>+Fri Feb  7 18:01:17 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970207</div><div class='add'>+</div><div class='add'>+	* eval.c: add volatiles to avoid variable crobbering by longjmp().</div><div class='add'>+</div><div class='add'>+	* eval.c (f_raise): 1st argument can be the GlobalExit object now.</div><div class='add'>+</div><div class='add'>+	* array.c (ary_unshift): no longer accept more than 2 args.</div><div class='add'>+</div><div class='add'>+	* eval.c (f_raise): bug if 2nd argument is the exception.</div><div class='add'>+</div><div class='add'>+Tue Feb  4 00:37:29 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970204</div><div class='add'>+</div><div class='add'>+	* eval.c (eval): check compile errors by nerrs.</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): check syntax error by nerrs, not by the return</div><div class='add'>+ 	  value, which may be NULL.</div><div class='add'>+</div><div class='add'>+	* eval.c (compile): Do not clear errinfo.</div><div class='add'>+</div><div class='add'>+Mon Feb  3 10:13:06 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (obj_extend): move real inclusion to Module#extend_object</div><div class='add'>+	  to allow redfinition.</div><div class='add'>+</div><div class='add'>+	* object.c (Init_Object): Kernel class is now Module. Object class</div><div class='add'>+	  became the true root class.</div><div class='add'>+</div><div class='add'>+	* object.c (obj_inspect): remove useless buffer.</div><div class='add'>+</div><div class='add'>+	* hash.c (any_cmp): disable interrupts and context switching.</div><div class='add'>+</div><div class='add'>+	* st.c: remove ALLOW_INTS to disable interrupt during operations.</div><div class='add'>+</div><div class='add'>+Fri Jan 31 22:10:08 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* hash.c (hash_rehash): re-register all key-value.</div><div class='add'>+</div><div class='add'>+Thu Jan 30 02:14:49 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (io_reopen): re-implement according to clone() way.</div><div class='add'>+</div><div class='add'>+	* io.c (io_clone): copy IO object.</div><div class='add'>+</div><div class='add'>+	* struct.c (struct_eql): compare elements by eql?.</div><div class='add'>+</div><div class='add'>+	* io.c (io_mode_flags): detect "rb", "wb" etc.</div><div class='add'>+</div><div class='add'>+	* io.h (FMODE_BINMODE): added.</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (Init_socket): undef BasicSocket.new</div><div class='add'>+</div><div class='add'>+	* file.c (Init_File): File.new(path[,mode])</div><div class='add'>+</div><div class='add'>+	* io.c (Init_IO): IO.new(fd[,mode])</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_method_boundp): forgot to enable priv argument.</div><div class='add'>+</div><div class='add'>+	* object.c (Init_Object): remove `=~' from Kernel class.</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (open_inet): initialize sockaddr before</div><div class='add'>+	  calling bind(2).</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-calculate-indent): skip comment lines</div><div class='add'>+</div><div class='add'>+Wed Jan 29 18:43:22 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (Init_Thread): DEFER_INTS during initializing threads.</div><div class='add'>+</div><div class='add'>+	* hash.c (Init_Hash): Hash#eql? checks for object identity.</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_set_critical): wrong value assigned.</div><div class='add'>+</div><div class='add'>+Mon Jan 27 16:10:51 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (io_print): remove print_on().</div><div class='add'>+</div><div class='add'>+	* eval.c (f_missing): proper error message for undefined method</div><div class='add'>+	  without argument</div><div class='add'>+</div><div class='add'>+Sat Jan 25 23:32:32 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub_s): false alert - sub() does not modify string.</div><div class='add'>+</div><div class='add'>+	* array.c (ary_times): negative multiplication detected</div><div class='add'>+</div><div class='add'>+	* string.c (str_times): negative multiplication detected</div><div class='add'>+</div><div class='add'>+Fri Jan 24 10:51:39 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* time.c (time_arg): month -&gt; 0 == "jan" == "1" == "01", little bit</div><div class='add'>+	  confusing but wanted to conform japanese style.</div><div class='add'>+</div><div class='add'>+	* version 1.0-970124</div><div class='add'>+</div><div class='add'>+Fri Jan 24 09:52:49 1997  WATANABE Hirofumi  &lt;watanabe@ase.ptg.sony.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* util.c (_fixpath): supports SJIS filenames on DJGPP.</div><div class='add'>+</div><div class='add'>+Thu Jan 23 16:52:06 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* README.EXT: update. partially translated into English.</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in: inherit $LDFLAGS to the final link.</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (Init_socket): add various constants.</div><div class='add'>+</div><div class='add'>+Mon Jan 23 11:40:59 1997  WATANABE Hirofumi  &lt;watanabe@ase.ptg.sony.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (Init_Thread): allocate main_thread first to avoid crash.</div><div class='add'>+</div><div class='add'>+Thu Jan 23 02:09:26 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* gc.c (ObjectSpace): API modified. each_object method will do all</div><div class='add'>+ 	  the iteration.</div><div class='add'>+</div><div class='add'>+	* eval.c (proc_call): wrong return from nested lambda.</div><div class='add'>+</div><div class='add'>+	* ext/GD/GD.c: debugged.</div><div class='add'>+</div><div class='add'>+Wed Jan 22 16:12:25 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970122</div><div class='add'>+</div><div class='add'>+	* gc.c (gc_mark): forgot to mark match-&gt;str.</div><div class='add'>+</div><div class='add'>+	* ext/GD/GD.c: GD interface module.</div><div class='add'>+</div><div class='add'>+	* eval.c (PUSH_BLOCK): wrong value pushed as the block level.</div><div class='add'>+</div><div class='add'>+Mon Jan 20 14:01:31 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_run): no context switch in the critical section.</div><div class='add'>+</div><div class='add'>+Mon Jan 20 09:40:59 1997  WATANABE Hirofumi  &lt;watanabe@ase.ptg.sony.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* utils.c: supports 8+3 filenames</div><div class='add'>+</div><div class='add'>+Sat Jan 18 01:23:03 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970118</div><div class='add'>+</div><div class='add'>+	* regex.c (PATFETCH): need cast to unsigned char.</div><div class='add'>+</div><div class='add'>+	* io.c (io_ctl): bug in case when arg is not a string.</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb: forgot that Kernel#type returns the class name now.</div><div class='add'>+</div><div class='add'>+	* regex.c (re_search): "abc\n" =~ "^$" should not match.</div><div class='add'>+</div><div class='add'>+Fri Jan 17 12:31:37 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970117</div><div class='add'>+</div><div class='add'>+	* ruby.c (ruby_options): constant PLATFORM, which is in the {cpu}-{os}</div><div class='add'>+	  form, defined.</div><div class='add'>+</div><div class='add'>+	* configure.in: platform information embedded in the interpreter.</div><div class='add'>+</div><div class='add'>+	* regex.c (re_search): /^$/ did not match to "" by wrong exit condition.</div><div class='add'>+</div><div class='add'>+	* lib/thread.rb: re-write Mutex/Queue based on Thread.critical.</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_set_critical): remove Thread.exclusive, add</div><div class='add'>+	  Thread.critical = TRUE/FALSE instead.</div><div class='add'>+</div><div class='add'>+	* re.c (reg_search): re-compile pattern if needed</div><div class='add'>+</div><div class='add'>+	* regex.c (PATFETCH): do translate at compile time</div><div class='add'>+</div><div class='add'>+Thu Jan 16 00:49:10 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* gc.c (gc_mark_frame): forgot to mark frame-&gt;cbase.</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_pattern): /a$|b)/ causes error.</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_pattern): /(^|b)/ causes error.</div><div class='add'>+</div><div class='add'>+	* version 1.0-970116</div><div class='add'>+</div><div class='add'>+	* re.c (Init_Regexp): set RE_CONTEXTUAL_INVALID_OPS flag.</div><div class='add'>+</div><div class='add'>+Tue Jan 14 02:09:06 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (proc_call): Proc#callã‚’ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã‚“ã æ™‚ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* configure.in: nextstepå¯¾å¿œï¼Ÿ</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): a[b]=cã§ç„¡é§„ãªé…åˆ—ã‚’å‰²ã‚Šå½“ã¦ãªã„</div><div class='add'>+</div><div class='add'>+	* eval.c (f_send): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã°ã‚ŒãŸã‚‰ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦ãƒ¡ã‚½ãƒƒ</div><div class='add'>+	  ãƒ‰ã‚’å‘¼ã¶ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c (str_new4): matchå…±æœ‰ç”¨ã®ç”Ÿæˆé–¢æ•°</div><div class='add'>+</div><div class='add'>+	* re.c (reg_search): matchã®å®Ÿä½“(æ–‡å­—åˆ—)ã‚’ãƒžãƒƒãƒã‚’è¡Œã£ãŸæ–‡å­—åˆ—ã¨</div><div class='add'>+	  copy-on-writeã§å…±æœ‰</div><div class='add'>+</div><div class='add'>+	* string.c (str_hash): toupperã‚’ã‹ã‘ã‚‹æ¡ä»¶ãŒé•ã£ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* array.c (sort_2): Fixnumã¨Stringã‚’ç‰¹åˆ¥æ‰±ã„ã—ã¦é«˜é€ŸåŒ–</div><div class='add'>+</div><div class='add'>+Mon Jan 13 11:03:53 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_create): threadãŒç”Ÿæˆã•ã‚Œã‚‹ã¾ã§å‰²è¾¼ã¿ã‚’è¨­å®šã—ãªã„</div><div class='add'>+</div><div class='add'>+	* eval.c (Init_Thread): å‰²è¾¼ã¿ã‚¿ã‚¤ãƒŸãƒ³ã‚°ã‚’100msecã«</div><div class='add'>+</div><div class='add'>+Sat Jan 11 00:17:05 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* regex.c (re_search): ãƒžãƒƒãƒã«å¤±æ•—ã™ã‚‹å ´åˆãŒã‚ã£ãŸ(æœ¬å½“ã«ç›´ã£ãŸã‹ï¼Ÿ)</div><div class='add'>+</div><div class='add'>+	* io.c (io_ioctl,io_fcntl): ç¬¬2å¼•æ•°ã‚’çœç•¥å¯èƒ½ã«</div><div class='add'>+</div><div class='add'>+	* io.c (io_ioctl,io_fcntl): æˆ»ã‚Šå€¤ãŒIOã ã£ãŸï¼Žæ•´æ•°(ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«</div><div class='add'>+	  ã®æˆ»ã‚Šå€¤)ã‚’è¿”ã™ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (io_ctl): å¼•æ•°ãŒæ•´æ•°ã®æ™‚ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* io.c (io_fcntl): file.cã‹ã‚‰ç§»å‹•</div><div class='add'>+</div><div class='add'>+Fri Jan 10 17:01:47 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-970110</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (thread_connect): open(connect(2))ã§ä»–ã®</div><div class='add'>+	  threadã‚’ãƒ–ãƒ­ãƒƒã‚¯ã—ãªã„ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_create): exitã§ãªã„ã¨ãã«exitã ã¨æ€ã„è¾¼ã‚€</div><div class='add'>+</div><div class='add'>+Mon Jan  6 17:42:22 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub_s): æ–‡å­—åˆ—é•·ã‚ˆã‚Šé•·ã„offsetã®æ¤œå‡º</div><div class='add'>+</div><div class='add'>+	* regex.c (re_search): ç©ºã«ãƒžãƒƒãƒã™ã‚‹ãƒ‘ã‚¿ãƒ¼ãƒ³å¾Œã®$ã§å¤±æ•—</div><div class='add'>+</div><div class='add'>+Thu Jan  2 16:36:23 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c (file_reopen): Fileã®reopen(pathã¾ãŸã¯IOã§æŒ‡å®š)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (io_reopen): IOã®reopen(IOã§æŒ‡å®š) -- change classã¤ã</div><div class='add'>+</div><div class='add'>+Wed Jan  1 11:09:01 1997  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (f_select): timeoutã§nilã‚’è¿”ã™</div><div class='add'>+</div><div class='add'>+Fri Dec 27 13:06:44 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c (file_s_open): ã‚µãƒ–ã‚¯ãƒ©ã‚¹ã§ã¯ãã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”</div><div class='add'>+	  ã™ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Dec 27 08:58:27 1996  &lt;ono@isl.nara.sharp.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* numeric.c (flo_to_s): index()ã‚’ä½¿ã‚ãªã„ï¼Žstrstr()ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Dec 26 01:34:17 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb: placeãŒä½¿ãˆã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* pack.c (endian): ãƒžã‚¯ãƒ­DYNAMIC_ENDIANã‚’æŒ‡å®šã™ã‚‹ã¨å®Ÿè¡Œæ™‚ã«endian</div><div class='add'>+	  ã‚’åˆ¤å®šã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_alloc): åˆæœŸåŒ–å¿˜ã‚Œã®ãƒ¡ãƒ³ãƒãŒã‚ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Dec 25 00:33:19 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 1.0-961225</div><div class='add'>+</div><div class='add'>+	* io.c (Init_IO): newã‚’ç„¡åŠ¹åŒ–</div><div class='add'>+</div><div class='add'>+	* lib/tkthcore.rb: tk_call "global $foo; set foo 5"ãªã©ã‚‚ã§ãã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_restore_context): $~, $_ã§ã‚¹ã‚¿ãƒƒã‚¯ã‚’å£Šã—ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* process.c (rb_waitpid): threadã«ä¸€å¿œå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Tue Dec 24 15:20:58 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.4-961224</div><div class='add'>+</div><div class='add'>+	* configure.in: charãŒunsignedã‹ã©ã†ã‹ã‚‚ãƒã‚§ãƒƒã‚¯</div><div class='add'>+</div><div class='add'>+	* regex.c (SIGN_EXTEND_CHAR): __CHAR_UNSIGNED__ã«ã‚‚å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* pack.c (pack_unpack): æ˜Žç¤ºçš„ã«signed charã‚’æŒ‡å®šï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Dec 23 14:41:23 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.c (load_file): æ¨™æº–å…¥åŠ›ã‹ã‚‰ã®ã‚¹ã‚¯ãƒªãƒ—ãƒˆã§ä¸€æ™‚ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä½¿ã‚</div><div class='add'>+	  ãªã„ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* object.c (f_integer): `0x', `0'ãªã©ã§baseã‚’è§£é‡ˆã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Dec 20 01:44:39 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* Makefile.in (flock.o): flockã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Thu Dec 19 20:13:32 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.4-961219</div><div class='add'>+</div><div class='add'>+Wed Dec 18 00:06:48 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* glob.c (glob_filename): strrchrãŒãƒžã‚¯ãƒ­ã®å ´åˆã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* configure.in: &lt;sys/select.h&gt;ã‚’ãƒã‚§ãƒƒã‚¯</div><div class='add'>+</div><div class='add'>+	* ext/kconv/kconv.c: 1.62ãƒ™ãƒ¼ã‚¹ã«</div><div class='add'>+</div><div class='add'>+	* ext/kconv/kconv.c: Kconvãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«</div><div class='add'>+</div><div class='add'>+	* string.c (str_substr): lenãŒå…ƒã®æ–‡å­—åˆ—ã‚ˆã‚Šé•·ã„æ™‚ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* parse.y (iterator): ã€Œ$bar do .. endã€ãªã©ã¯è¨±ã•ãªã„ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* parse.y (iterator): FID(foo!,foo?)ã‚’doå½¢å¼ã®ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã«ã§ãã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* missing/flock.c (flock): lockf()ã‚’ä½¿ã£ã¦ä»£æ›¿</div><div class='add'>+</div><div class='add'>+	* file.c (file_flock): flockã‚’å®Ÿè£…</div><div class='add'>+</div><div class='add'>+Tue Dec 17 12:13:38 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.4-961217</div><div class='add'>+</div><div class='add'>+Fri Dec 13 02:05:03 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* configure.in: RUBYLIBã®ã‚«ãƒ¬ãƒ³ãƒˆã‚’å¾Œå›žã—(@mix/awk offline)</div><div class='add'>+</div><div class='add'>+	* dln.c: AIXã«å¯¾å¿œã—ãŸï¼Ÿ(@mix/awk offline)</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_schedule): critical sectionã§ã‚‚æ˜Žç¤ºçš„ãªã‚³ãƒ³ãƒ†ã‚­ã‚¹</div><div class='add'>+	  ãƒˆã‚¹ã‚¤ãƒƒãƒã¯èµ·ããªã„ã¨ã¾ãšã„</div><div class='add'>+</div><div class='add'>+	* re.c (reg_search): matchã«å¤±æ•—ã—ãŸæ™‚ã«$~ã‚’nilã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* re.c (reg_search): æ¯Žå›žmatchã‚’ç”Ÿæˆã™ã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Thu Dec 12 17:03:30 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* numeric.c (flo_to_s): 2.0.to_s -&gt; 2.0ã«</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_save_context): $_, $~ã‚’threadæ¯Žã«ä¿å­˜</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_kill): main threadã§ã¯exit(0)</div><div class='add'>+</div><div class='add'>+	* string.c (str_split_method): é–“é•ã£ãŸçµæžœã‚’è¿”ã—ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+Thu Dec 12 15:32:48 1996  WATANABE Hirofumi  &lt;watanabe@ase.ptg.sony.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* dir.c: CYGWIN32å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c: CYGWIN32å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* io.c: CYGWIN32å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Thu Dec 12 14:43:51 1996  Jun Kuroda  &lt;j_kuro@pluto.ai.kutech.ac.jp&gt;</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb: wish4.2ã‚‚æŽ¢ç´¢å€™è£œã«å«ã‚ã‚‹</div><div class='add'>+</div><div class='add'>+	* config.guess: JCCå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Thu Dec 12 00:41:17 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.4-961212</div><div class='add'>+</div><div class='add'>+	* parse.y (parse_string): """..."""ã¯ã‚„ã¯ã‚Šç„¡ãã™ã“ã¨ã«ã—ãŸ</div><div class='add'>+</div><div class='add'>+	* parse.y (parse_regx): %r|...|ã§terminatorã‚’ \ ã§ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã§ãã‚‹</div><div class='add'>+	  ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* signal.c (posix_signal): sigactionã‚’ä½¿ã†signal</div><div class='add'>+</div><div class='add'>+	* configure.in: posix signal/bsd signalã®æ¤œå‡º</div><div class='add'>+</div><div class='add'>+Wed Dec 11 17:47:35 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_schedule): critical sectionã§ã¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚¹ã‚¤ãƒƒ</div><div class='add'>+	  ãƒãŒèµ·ããªã„ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* lib/thread.rb: SharedMutexã‚¯ãƒ©ã‚¹</div><div class='add'>+</div><div class='add'>+	* lib/jcode.rb: String#scanã‚’ä½¿ã†ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Tue Dec 10 12:21:28 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961210</div><div class='add'>+</div><div class='add'>+	* string.c (str_split_method): æ­£è¦è¡¨ç¾ã«()ã‚’å«ã‚€æ™‚ã«ãƒã‚°</div><div class='add'>+</div><div class='add'>+	* lib/jcode.rb: ã¡ã‚‡ã£ã¨ã¾ã—ã«ãªã£ãŸ</div><div class='add'>+</div><div class='add'>+	* string.c (tr_setup_table): ç½®æ›æ–‡å­—ãŒçŸ­ã™ãŽã‚‹(2æ–‡å­—)ã®ã¨ãã®ãƒã‚°</div><div class='add'>+</div><div class='add'>+Mon Dec  9 11:38:04 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_scan): æ–‡å­—åˆ—ã®ãƒžãƒƒãƒã‚’è¡Œã†ï¼Žã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦ã‚‚å‹•</div><div class='add'>+	  ä½œã™ã‚‹</div><div class='add'>+</div><div class='add'>+	* regex.c (re_copy_registers): allocatedãŒåˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã‹ã£ãŸ</div><div class='add'>+</div><div class='add'>+	* re.c (match_to_s): $~ã®æ–‡å­—åˆ—åŒ–</div><div class='add'>+</div><div class='add'>+	* re.c (match_to_a): $~ã‚’é…åˆ—åŒ–ã§ãã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* re.c (match_getter): ãƒ¬ã‚¸ã‚¹ã‚¿ãŒåˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã‹ã£ãŸ</div><div class='add'>+</div><div class='add'>+Thu Dec  5 11:06:10 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_split_method): ãƒžãƒƒãƒã—ãªã‹ã£ãŸæ‹¬å¼§ã¯ç©ºæ–‡å­—åˆ—ã‚’</div><div class='add'>+	  pushã™ã‚‹ã¹ãã§ã¯ãªã„</div><div class='add'>+</div><div class='add'>+	* string.c (str_succ): ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆã‚’å«ã¾ãªã„æ–‡å­—ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Wed Dec  4 10:48:09 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961204</div><div class='add'>+</div><div class='add'>+	* io.c (io_binmode): DJGPPã§ã®binmodeå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* sprintf.c (f_sprintf): intã®ç¯„å›²ã®æ•°å€¤ã¯ç›´æŽ¥sprintfã§å¤‰æ›ã™ã‚‹</div><div class='add'>+</div><div class='add'>+	* sprintf.c (f_sprintf): "%02s"ã«é ¼ã‚‰ãªã„</div><div class='add'>+</div><div class='add'>+	* re.c (reg_search): indexã§SEGV</div><div class='add'>+</div><div class='add'>+Tue Dec  3 10:09:36 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961203</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (install): INSTALL_DATAã‹ã‚‰INSTALLã«å¤‰æ›´</div><div class='add'>+</div><div class='add'>+	* dln.c: hpuxå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* string.c (str_aset_method): è² ã®å€¤ã‚’å«ã‚€ç¯„å›²ã§ã‚‚ä¾‹å¤–ã‚’èµ·ã“ã•ãªã„</div><div class='add'>+</div><div class='add'>+	* array.c (ary_replace): è² ã®å€¤ã‚’å«ã‚€ç¯„å›²ã§ã‚‚ä¾‹å¤–ã‚’èµ·ã“ã•ãªã„</div><div class='add'>+</div><div class='add'>+	* array.c (beg_len): beg==endã®æ™‚ï¼Œé•·ã•0ã«</div><div class='add'>+</div><div class='add'>+Mon Dec  2 14:07:12 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* configure.in: HP shlå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* string.c (str_upto): beg &gt; endã®æ™‚ç„¡é™ãƒ«ãƒ¼ãƒ—ã«è½ã¡ã‚‹ã®ã‚’æ­¢ã‚ãŸ</div><div class='add'>+</div><div class='add'>+	* range.c (range_each): String#uptoãŒå†å®šç¾©ã•ã‚ŒãŸå ´åˆã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* string.c (str_split_method): "ABC".split(/(B)/)ãŒèª¤å‹•ä½œ</div><div class='add'>+</div><div class='add'>+Sat Nov 30 01:43:52 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): undefã§SEGV</div><div class='add'>+</div><div class='add'>+Fri Nov 29 12:17:59 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-parse-region): %Q#..#ãªã©ã«å¯¾å¿œï¼Žã—ã‹</div><div class='add'>+	  ã—ï¼ŒåŒºåˆ‡ã‚Šæ–‡å­—ãŒæ¼”ç®—å­ã§è¡Œæœ«ã«ã‚ã‚‹å ´åˆã«ã¯å¯¾å¿œã§ããªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* re.c (reg_raise): ä¾‹å¤–ã§ã‚‚ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚’ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—</div><div class='add'>+</div><div class='add'>+	* re.c (reg_inspect): ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚’ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—</div><div class='add'>+</div><div class='add'>+	* parse.y (parse_string): `%[QqXxRr](.)..\1'ãªã‚‹æ–‡å­—åˆ—å½¢å¼(ãƒ†ã‚¹ãƒˆ</div><div class='add'>+	  æŽ¡ç”¨)</div><div class='add'>+</div><div class='add'>+	* parse.y (parse_qstring): '''...'''ã®å½¢å¼</div><div class='add'>+</div><div class='add'>+	* ext/dbm/dbm.c (Init_dbm): è¿°èªžkey?,value?ã®è¿½åŠ </div><div class='add'>+</div><div class='add'>+	* ext/dbm/dbm.c (Init_dbm): includes-&gt;include?</div><div class='add'>+</div><div class='add'>+	* hash.c (Init_Hash): è¿°èªžkey?,value?,include?ã®è¿½åŠ </div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): unlessã§elseç¯€ãŒå®Ÿè¡Œã•ã‚Œãªã„(ã†ãƒ¼ã‚“)</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub_iter_s): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯å†…ã§ãƒžãƒƒãƒãŒè¡Œã‚ã‚Œ</div><div class='add'>+	  ã‚‹ã¨ä½ç½®ãŒãšã‚Œã‚‹(æ™‚ã«ç„¡é™ãƒ«ãƒ¼ãƒ—ã«è½ã¡ã‚‹)</div><div class='add'>+</div><div class='add'>+	* string.c (str_resize): lenãŒ0ã®æ™‚sizeã®èª¿æ•´ãŒè¡Œã‚ã‚Œãªã‹ã£ãŸ</div><div class='add'>+</div><div class='add'>+Thu Nov 28 00:59:54 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961128</div><div class='add'>+</div><div class='add'>+	* parse.y (parse_string): 3-quote styleã®æ–‡å­—åˆ—(ä¾‹:"""abc"d"e""")</div><div class='add'>+</div><div class='add'>+	* configure.in (EXTSTATIC): extã‚’é™çš„ã«ãƒªãƒ³ã‚¯ã™ã‚‹æ™‚ã«ã¯rubyã¯dllã‚’</div><div class='add'>+	  ä½¿ã†ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* io.c (Init_IO): getsã®å¼•æ•°ãŒé–“é•ã£ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* string.c (str_each_line): RSã‚’æ˜Žç¤ºçš„ã«æŒ‡å®šã§ãã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Wed Nov 27 12:37:46 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961127</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): iver defined? ã§selfã‚’æŒ‡å®šã™ã‚‹ã®ã‚’å¿˜ã‚ŒãŸ</div><div class='add'>+</div><div class='add'>+	* io.c: getsç­‰ã§RSã‚’æ˜Žç¤ºçš„ã«æŒ‡å®šã§ãã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (install): static linkã«å¤±æ•—</div><div class='add'>+</div><div class='add'>+Tue Nov 26 10:33:04 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961126</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub_s): ç½®æ›å¾Œã®æ–‡å­—åˆ—é•·ã•ãŒé–“é•ã£ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+Mon Nov 25 09:11:22 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* numeric.c (fix_rshift): 32ä»¥ä¸Šã®å³ã‚·ãƒ•ãƒˆã§0ã‚’è¿”ã™ã‚ˆã†ã«(Cã®</div><div class='add'>+	  rshiftã¯(x&gt;&gt;(y%32))ã‚’è¿”ã—ã¦ã„ãŸ)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c (str_gsub): ç½®æ›ãŒè¡Œã‚ã‚Œãªã„å ´åˆãŒã‚ã£ãŸ</div><div class='add'>+</div><div class='add'>+	* string.c (str_resize): æœ¬å½“ã«å¿…è¦ãªæ™‚ã ã‘realloc</div><div class='add'>+</div><div class='add'>+Thu Nov 21 04:13:21 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* configure.in (EXTSTATIC): --with-static-linked-extã§å…¨ã¦ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼</div><div class='add'>+	  ãƒ«ã‚’é™çš„ãƒªãƒ³ã‚¯ã™ã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* pack.c (pack_unpack): è¡Œæœ«ã®æ”¹è¡ŒãŒãªã„æ™‚ã«ã‚‚ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’ã‚¹ã‚­ãƒƒ</div><div class='add'>+	  ãƒ—ã™ã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Wed Nov 20 21:42:51 1996  Yasuo OHBA  &lt;jammy@shljapan.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* configure.in: freebsdå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Wed Nov 20 10:24:24 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (install): é€šå¸¸ãƒªãƒ³ã‚¯ç”¨ã®LDFLAGSã¨ãƒ€ã‚¤ãƒŠãƒŸãƒƒã‚¯ãƒª</div><div class='add'>+	  ãƒ³ã‚¯ç”¨ã®DLDFALGSã‚’åˆ†é›¢</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (install): ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã®æˆåŠŸã—ãŸã‚‚ã®ã‚’é™çš„ãƒªãƒ³ã‚¯</div><div class='add'>+	  ã®ãƒªã‚¹ãƒˆã«è¿½åŠ ã™ã‚‹</div><div class='add'>+</div><div class='add'>+	* eval.c (f_missing): ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ–‡å­—åˆ—è¡¨ç¾ãŒé•·ã™ãŽã‚‹æ™‚ãƒãƒƒãƒ•ã‚¡</div><div class='add'>+	  ã‚’æ›¸ãæ½°ã—ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* process.c (proc_exec_v): forkã—ãŸå¾Œä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ã¦ã¯ã„ã‘ãªã„</div><div class='add'>+</div><div class='add'>+Tue Nov 19 13:28:15 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961119</div><div class='add'>+</div><div class='add'>+	* eval.c (mod_method_defined): Module#method_defined? ã®è¿½åŠ </div><div class='add'>+</div><div class='add'>+	* parse.y (call_args): å¼•æ•°ãŒå”¯ä¸€ã®ã‚³ãƒžãƒ³ãƒ‰ã‚³ãƒ¼ãƒ«ã§ã‚ã‚‹æ™‚ã®ãƒã‚°(æˆ»</div><div class='add'>+	  ã‚Šå€¤ãŒå±•é–‹ã•ã‚Œã¦ã—ã¾ã†)</div><div class='add'>+</div><div class='add'>+Mon Nov 18 13:28:18 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub): å¤±æ•—ã—ãŸæ™‚ã«nilã‚’è¿”ã—ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* string.c (str_split_method): æ¤œç´¢é–‹å§‹ä½ç½®ãŒç§»å‹•ã—ã¦ãªã‹ã£ãŸ</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (sock_s_getservbyaname): ã¾ã é–“é•ã£ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961118</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub_s): å…ƒã®æ–‡å­—åˆ—ã‚’ç½®æ›ã™ã‚‹ã®ã‚’æ­¢ã‚ãŸ</div><div class='add'>+</div><div class='add'>+	* pack.c (encodes): é ˜åŸŸå¤–ã‚’ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+Fri Nov 15 17:10:35 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* bignum.c (big_divmod): BignumãŒå¼•æ•°ã®å ´åˆã®å¯¾å¿œå¿˜ã‚Œ</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-expr-beg): word?å½¢å¼ã¸ã®å¯¾å¿œãŒä¸å®Œå…¨</div><div class='add'>+</div><div class='add'>+Wed Nov 13 15:42:40 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_tr_s_bang): tr_sã§trãŒè¡Œã‚ã‚Œã¦ã„ãªã‹ã£ãŸ</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): autoloadã‚¯ãƒ©ã‚¹ã®ãƒã‚§ãƒƒã‚¯</div><div class='add'>+</div><div class='add'>+	* string.c (f_sub): subãŒsub!ã¨åŒã˜å‹•ä½œã«ãªã£ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_sleep): stopã¨sleepã®åˆ†é›¢</div><div class='add'>+</div><div class='add'>+Mon Nov 11 13:53:19 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961111</div><div class='add'>+</div><div class='add'>+	* numeric.c (fix_step): to, stepãŒæ•´æ•°ä»¥å¤–ã®å ´åˆã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_call): dynamic varãŒdynamic scopingã«ãªã£ã¦ã„ãŸ(ã“ã‚Œ</div><div class='add'>+	  ã¯ã¾ãšã„)</div><div class='add'>+</div><div class='add'>+	* string.c (str_chop_bang): é•·ã•0ã®æ–‡å­—åˆ—ã®chopã§ï¼Œé ˜åŸŸå¤–ã®ã‚¢ã‚¯ã‚»</div><div class='add'>+	  ã‚¹ãŒç™ºç”Ÿã—ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (yyerror): å‰²ã‚Šå½“ã¦ãŸé ˜åŸŸå¤–ã‚’ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+Fri Nov  8 11:54:46 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_yield): scopeã‚’heapã«ã‚³ãƒ”ãƒ¼</div><div class='add'>+</div><div class='add'>+Thu Nov  7 09:56:53 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* numeric.c (num_coerce): ã¨ã‚Šã‚ãˆãšä¸¡è¾ºã‚’Floatã«å¤‰æ›ã™ã‚‹ã“ã¨ã«</div><div class='add'>+</div><div class='add'>+Wed Nov  6 10:45:13 1996  Yasuo OHBA  &lt;jammy@shljapan.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* lib/parsearg.rb: ç¬¬2å¼•æ•°ã‚’å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Nov  5 14:21:09 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961105</div><div class='add'>+</div><div class='add'>+Sat Nov  2 01:11:40 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* bignum.c (big_pow): typo (dy -&gt; dx)</div><div class='add'>+</div><div class='add'>+	* bignum.c (big_divmod): çŸ¥ã‚‰ãªã„åž‹ã¯floatã«å¤‰æ›ã—ã¦ã¿ã‚‹</div><div class='add'>+</div><div class='add'>+	* numeric.c (fix_lshift): å¢ƒç•Œæ¡ä»¶ã®ãƒã‚°(è² ã«ãªã£ã¦ã„ãŸ)</div><div class='add'>+</div><div class='add'>+	* bignum.c (big_pow): ç„¡é§„ãªfloatã¸ã®å¤‰æ›ã‚’ãªãã—ãŸ</div><div class='add'>+</div><div class='add'>+	* math.c (math_atan2): typo(x -&gt; y)</div><div class='add'>+</div><div class='add'>+Fri Nov  1 15:30:59 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (sock_gethostname): gethostnameãŒãªã„æ™‚ã«ã¯</div><div class='add'>+	  unameã‚’ä½¿ã£ã¦ãƒ›ã‚¹ãƒˆåã‚’å¾—ã‚‹</div><div class='add'>+</div><div class='add'>+	* ext/etc/etc.c (etc_getlogin): getloginãŒNULLã‚’è¿”ã—ã¦ã‚‚ç’°å¢ƒå¤‰æ•°ã‚’</div><div class='add'>+	  èª¿ã¹ã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* object.c (krn_clone): ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®ãƒ•ãƒ©ã‚°ã‚‚ã‚³ãƒ”ãƒ¼</div><div class='add'>+</div><div class='add'>+	* hash.c (rb_cmp): ãƒãƒƒã‚·ãƒ¥ã®æ¯”è¼ƒã‚’`=='ã§ãªã`eql?'ã«å¤‰æ›´</div><div class='add'>+</div><div class='add'>+	* math.c (Need_Float): Float()ã‚’ä½¿ã£ã¦å¤‰æ›ã™ã‚‹</div><div class='add'>+</div><div class='add'>+	* compar.c (cmp_gt): ä»¥å‰ã®å³è¾ºã‚’è¿”ã™ä»•æ§˜ã®åæ®‹ãŒæ®‹ã£ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+Thu Oct 31 12:55:51 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961031</div><div class='add'>+</div><div class='add'>+	* numeric.c (Init_Numeric): typo</div><div class='add'>+</div><div class='add'>+	* eval.c (error_print): é•·ã™ãŽã‚‹trace backã‚’é€”ä¸­çœç•¥ã™ã‚‹</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_pattern): å…¨è§’ã®rangeã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Wed Oct 30 03:03:18 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.3-961030</div><div class='add'>+</div><div class='add'>+	* io.c (f_ungetc): é–¢æ•°ã‚’è¿½åŠ </div><div class='add'>+</div><div class='add'>+	* eval.c (dyna_var_asgn): returnå€¤å¿˜ã‚Œ</div><div class='add'>+</div><div class='add'>+Tue Oct 29 10:05:28 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (f_split): é–¢æ•°splitã‚’è¿½åŠ </div><div class='add'>+</div><div class='add'>+	* eval.c (rb_call): ãƒã‚¹ãƒˆã—ãŸå¤–å´ã®ã‚¯ãƒ©ã‚¹/ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®å®šæ•°ã‚’å‚ç…§</div><div class='add'>+	  ã§ãã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Mon Oct 28 09:51:03 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub): offsetãŒæ–‡å­—ã®æœ«å°¾ã«ã‚ã‚‹æ™‚ã®ãƒã‚§ãƒƒã‚¯</div><div class='add'>+</div><div class='add'>+	* regex.c (re_match): å‰²ã‚Šå½“ã¦ã‚‹ãƒ¬ã‚¸ã‚¹ã‚¿ã®æ•°ãŒ1å¤šã‹ã£ãŸ</div><div class='add'>+</div><div class='add'>+	* io.c (io_gets): $/ = ""ã®å‹•ä½œã‚’perlã«åˆã‚ã›ã‚‹(awkã¨ã¯ã¡ã‚‡ã£ã¨é•</div><div class='add'>+	  ã†ã‚‰ã—ã„)</div><div class='add'>+</div><div class='add'>+	* io.c (io_gets): $/ = nilã®æ™‚å°‘ã—é«˜é€ŸåŒ–</div><div class='add'>+</div><div class='add'>+	* string.c (str_split_method): æ‹¬å¼§ãŒnullã«ãƒžãƒƒãƒã—ãŸæ™‚ã«ã‚‚ç„¡è¦–ã—</div><div class='add'>+	  ãªã„ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* string.c (str_split_method): æ‹¬å¼§ã«ãƒžãƒƒãƒã—ãŸåˆ†ã¯limitã®æ•°ã«å«ã‚</div><div class='add'>+	  ãªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* numeric.c (num_coerce_bin): coerceã®å®šç¾©ã‚’å¤‰æ›´ï¼Œ2è¦ç´ ã®é…åˆ—</div><div class='add'>+	  [x,y]ã‚’è¿”ã™ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-calculate-indent): "do |aa|"ã®å¯¾å¿œã‚’æ”¹</div><div class='add'>+	  å–„ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Oct 26 01:43:51 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (w_object): ãƒ“ãƒ«ãƒˆã‚¤ãƒ³ã‚¯ãƒ©ã‚¹ã®ã‚µãƒ–ã‚¯ãƒ©ã‚¹ã‚’</div><div class='add'>+	  æ­£ã—ãå¾©æ—§ã§ãã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (w_object): ãƒ¦ãƒ¼ã‚¶å®šç¾©dumpã®å„ªå…ˆ</div><div class='add'>+</div><div class='add'>+	* numeric.c (flo_coerce): Float()ã‚’ä½¿ã£ã¦å®šç¾©</div><div class='add'>+</div><div class='add'>+	* numeric.c (Init_Numeric): Numericã®newã®undefã¯ã¾ãšã„</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (w_symbol): ã‚·ãƒ³ãƒœãƒ«ã®å†…å®¹(æ–‡å­—åˆ—)ã¯ä¸€åº¦ã—</div><div class='add'>+	  ã‹ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ãå‡ºã•ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-parse-region): if/whileä¿®é£¾å­ã«å¯¾å¿œã—</div><div class='add'>+	  ãªããªã£ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* bignum.c (Init_Bignum): Bignum.newã‚’é™¤ã</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): å¼•æ•°è©•ä¾¡å¾Œã«ãƒ•ã‚¡ã‚¤ãƒ«åã¨è¡Œç•ªå·ã‚’å†è¨­å®š</div><div class='add'>+</div><div class='add'>+	* numeric.c (flo_div): typo</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-parse-region): def /, def `ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Fri Oct 25 09:26:29 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-calculate-indent): "do |aa|"ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* array.c (ary_aset): indexãŒfixnumã®å ´åˆã¡ã‚‡ã£ã¨é«˜é€ŸåŒ–</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_fd_writable): æ›¸ãè¾¼ã¿å‰ã®selectãƒã‚§ãƒƒã‚¯</div><div class='add'>+</div><div class='add'>+	* array.c (ary_assoc): ç„¡é™ãƒ«ãƒ¼ãƒ—ã«è½ã¡ãŸ</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_wait_for): selectãŒã‚¨ãƒ©ãƒ¼çµ‚äº†ã—ãŸæ™‚ï¼Œlinuxä»¥å¤–ã§</div><div class='add'>+	  ã®å‹•ä½œãŒæ­£ã—ããªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Oct 24 08:26:48 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (backtrace): `$@'ã‚’æ–‡å­—åˆ—ã‹ã‚‰é…åˆ—ã«å¤‰æ›´ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (eval): evalä¸­ã®ä¾‹å¤–ç™ºç”Ÿä½ç½®ã‚’ä¿å­˜ã™ã‚‹</div><div class='add'>+</div><div class='add'>+	* bignum.c (bigsub): ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å¤§å°æ¯”è¼ƒã®å¤±æ•—</div><div class='add'>+</div><div class='add'>+	* re.c (reg_search): ç›´æŽ¥å‚ç…§ãŒãªã„æ™‚ã«ã‚‚`$~'ãŒã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Wed Oct 23 10:40:10 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.2-961023</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (r_bytes): mallocã‚’ã‚„ã‚ï¼Œallocaã‚’ä½¿ã†</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-calculate-indent): æ‹¬å¼§ã®å¯¾å¿œã‚’å¤‰æ›´ï¼Ž</div><div class='add'>+	  ()å†…ã§ã¯ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚’ãƒ¬ãƒ™ãƒ«ã‚’åˆã‚ã›ã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Tue Oct 22 12:59:11 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* hash.c (hash_s_new): sizeã‚’æŒ‡å®šã§ãã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (w_object): dumpã™ã‚‹æ·±ã•åˆ¶é™ã‚’æŒ‡å®šã§ãã‚‹ã‚ˆ</div><div class='add'>+	  ã†ã«</div><div class='add'>+</div><div class='add'>+	* array.c (ary_s_new): sizeã‚’æŒ‡å®šã—ãŸæ™‚ã®åˆæœŸåŒ–å¿˜ã‚Œ</div><div class='add'>+</div><div class='add'>+	* object.c (f_float): big2dblã®å®£è¨€å¿˜ã‚Œï¼Ž</div><div class='add'>+</div><div class='add'>+	* bignum.c (bigsub): å¤§ãã•ã®è¿‘ã„BignumåŒå£«ã®æ¼”ç®—ã§çµæžœãŒè² ã«ãªã‚‹</div><div class='add'>+	  å ´åˆã«é–“é•ã„ãŒã‚ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* array.c (ary_aset): ç½®æ›å…ˆã¨ç½®æ›å…ƒãŒåŒã˜é•·ã•ã®æ™‚å†…å®¹ã‚’</div><div class='add'>+	  shift(memmove)ã—ãªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (marshal_dump): ãƒ•ã‚¡ã‚¤ãƒ«ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã«ãƒãƒ¼</div><div class='add'>+	  ã‚¸ãƒ§ãƒ³ã‚’åŸ‹ã‚è¾¼ã‚€ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (tmpnam): linux-aout-dlnç”¨ã«å®šç¾©</div><div class='add'>+</div><div class='add'>+Mon Oct 21 08:40:20 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (sock_s_gethostbyname): hostentæ§‹é€ ä½“ã®æƒ…å ±</div><div class='add'>+	  ã‚’è¿”ã™</div><div class='add'>+	  (sock_s_gethostbyaddr): IPã‚¢ãƒ‰ãƒ¬ã‚¹ã‹ã‚‰hostentæ§‹é€ ä½“ã‚’å¾—ã‚‹</div><div class='add'>+	  (sock_s_getservbyaname): getservbyname(3)</div><div class='add'>+</div><div class='add'>+Fri Oct 18 10:37:36 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-indent-to): ç§»å‹•å…ˆã‚«ãƒ©ãƒ ãŒè² ã«ãªã‚‹ãƒã‚°</div><div class='add'>+</div><div class='add'>+	* eval.c (compile): evalã§å…ƒã‚½ãƒ¼ã‚¹ã®è¡Œç•ªå·ã§ã‚¨ãƒ©ãƒ¼ã‚’è¡¨ç¤ºã™ã‚‹</div><div class='add'>+</div><div class='add'>+Thu Oct 17 09:52:28 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (eval): evalã§æ–‡æ³•ã‚¨ãƒ©ãƒ¼ãŒã‚ã£ãŸæ™‚ã«SEGV</div><div class='add'>+</div><div class='add'>+	* lib/safe.rb: Restricted.evalã®ä¸­ã ã‘åˆ¶é™ã‚’åŠ ãˆã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (error_print): ãƒãƒƒã‚¯ãƒˆãƒ¬ãƒ¼ã‚¹ã®å‡ºåŠ›ï¼Žcallerã§ä¾‹å¤–ç™ºç”Ÿä½ç½®</div><div class='add'>+	  ã‚’èª¿æ•´ã—ãŸæ™‚ã«å•é¡ŒãŒå‡ºã‚‹(ãã‚“ãªã“ã¨ã‚’ã—ãªã‘ã‚Œã°è‰¯ã„ã®ã ãŒâ€¦)</div><div class='add'>+</div><div class='add'>+	* eval.c (make_backtrace): ãƒãƒƒã‚¯ãƒˆãƒ¬ãƒ¼ã‚¹ã®ç”Ÿæˆ</div><div class='add'>+</div><div class='add'>+Wed Oct 16 12:56:22 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby-man-0.99.2-jp/index.html: æ—¥æœ¬èªžç‰ˆãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®å®Œæˆ(é•·ã‹ã£ãŸâ€¦)</div><div class='add'>+</div><div class='add'>+	* re.c (reg_regcomp): $=ãŒnilã®æ™‚ã®å‡¦ç†</div><div class='add'>+</div><div class='add'>+	* string.c (f_chop): $_ã«å¯¾ã™ã‚‹chop</div><div class='add'>+</div><div class='add'>+Tue Oct 15 11:04:23 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.2-961015</div><div class='add'>+</div><div class='add'>+Mon Oct 14 18:22:38 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_schedule): BOWå¯¾å¿œï¼ŽselectãŒ-1ã‚’è¿”ã—ãŸæ™‚ã«ãƒã‚°(å®Ÿ</div><div class='add'>+	  ã¯do .. whileãŒcontinueã§å…ˆé ­ã«ã‚¸ãƒ£ãƒ³ãƒ—ã™ã‚‹ã¨æ€ã„è¾¼ã‚“ã§ã„ãŸï¼Žæ¡</div><div class='add'>+	  ä»¶ã®ç›´å‰ã ã£ãŸã®ã­ ^^);;;;;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-mode-syntax-table): ?ã®syntaxãŒ"/"ã§ã¯</div><div class='add'>+	  ã¾ãšã„ã‚‰ã—ã„</div><div class='add'>+</div><div class='add'>+	* hash.c (rb_hash): name conflict</div><div class='add'>+</div><div class='add'>+Fri Oct 11 00:23:05 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.2-961011</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (w_object): çµå±€å‹•ã„ã¦ã„ãªã‹ã£ãŸå¾ªç’°ã‚ªãƒ–ã‚¸ã‚§</div><div class='add'>+	  ã‚¯ãƒˆå¯¾å¿œã‚’å¤–ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* hash.c (rb_hash): Fixnumã¨æ–‡å­—åˆ—ã®é«˜é€ŸåŒ–</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (w_object): ç„¡é§„ãªãƒ‡ãƒ¼ã‚¿ã®å‰Šé™¤(ãƒ•ã‚©ãƒ¼ãƒžãƒƒ</div><div class='add'>+	  ãƒˆã®éžäº’æ›æ€§)</div><div class='add'>+</div><div class='add'>+	* io.c (io_readline): æˆ»ã‚Šå€¤ã®ä¸å‚™</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (marshal_dumps): MSDOSå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* ruby.c (load_file): MSDOSå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Wed Oct  9 17:46:27 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (install): ç„¡é§„ãªã‚³ãƒ”ãƒ¼ã‚’é¿ã‘ã‚‹</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub_method): ãƒžãƒƒãƒãŒãªã‹ã£ãŸæ™‚ã®String#subã®å€¤ãŒ</div><div class='add'>+	  é•ã£ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (obj_extend): extendã—ãŸæ™‚ã«object_extendedã‚’å‘¼ã¶ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Tue Oct  8 00:55:38 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_alloc): å‰²å½“ã®å¹³å‡åŒ–</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_schedule): joinã®ãƒã‚°ã‚’ä¿®æ­£</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_wait_for): selectã¸ã®å‰²è¾¼ã¿ãªã©ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_select): linuxã®selectã®æŒ™å‹•ã«å¯¾å¿œ(timeoutãŒå¤‰åŒ–</div><div class='add'>+	  ã™ã‚‹)</div><div class='add'>+</div><div class='add'>+Mon Oct  7 09:47:19 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.2-961007</div><div class='add'>+</div><div class='add'>+	* eval.c (PUSH_BLOCK): the_classã®ä¿å­˜ã‚’å¿˜ã‚Œã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/dbm/dbm.c (fdbm_store): sizeã®ä¿å­˜ã™ã‚‹å ´æ‰€ãŒé–“é•ã£ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (s_accept): threadå¯¾å¿œã—ã¦ã„ãªã‹ã£ãŸ</div><div class='add'>+</div><div class='add'>+Sat Oct  5 01:32:27 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (io_readchar): EOFã§ä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ã‚‹</div><div class='add'>+</div><div class='add'>+Fri Oct  4 11:59:54 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (w_object): Hashã¨Objectã®å¾©æ—§ã«å¿…è¦ãªãƒãƒƒ</div><div class='add'>+	  ã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ãƒ«ãŒæ¸¡ã•ã‚Œã¦ã„ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_path2class): ãƒ¦ãƒ¼ã‚¶å®šç¾©ã‚¯ãƒ©ã‚¹ã®å¾©æ—§ã«å¤±æ•—ã—ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_path2class): ã‚¯ãƒ©ã‚¹ãŒå­˜åœ¨ã—ãªã„æ™‚ã®ã‚¨ãƒ©ãƒ¼ã‚’Fatal</div><div class='add'>+	  ã‹ã‚‰NameErrorã¸ï¼Ž</div><div class='add'>+</div><div class='add'>+	* range.c (range_s_new): first,lastãŒä¸¡æ–¹Numericã®æ™‚ã‚¨ãƒ©ãƒ¼ã«ãªã£ã¦</div><div class='add'>+	  ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* range.c: start-&gt;first, end-&gt;last</div><div class='add'>+</div><div class='add'>+Wed Oct  2 02:02:46 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c: DJGPPã§chmod,chownã‚’ä½¿ãˆã‚‹ã‚ˆã†ã«(ã£ã¦DOSã«chownãŒã‚ã‚‹ã®ã‹?)</div><div class='add'>+</div><div class='add'>+	* class.c (rb_singleton_class): ãƒ“ãƒ«ãƒˆã‚¤ãƒ³ã‚¯ãƒ©ã‚¹ã‚‚extendã—ãŸã‚Šç‰¹ç•°</div><div class='add'>+	  ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã—ãŸã‚Šã§ãã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_set_class_path): ãƒ¦ãƒ¼ã‚¶å®šç¾©ã®ãƒˆãƒƒãƒ—ãƒ¬ãƒ™ãƒ«ã‚¯ãƒ©ã‚¹ã«</div><div class='add'>+	  pathã‚’è¨­å®šã—ãªã„</div><div class='add'>+</div><div class='add'>+	* eval.c (eval): ä¾‹å¤–ãŒRuntimeErrorã«åŒ–ã‘ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* eval.c (eval): evalä¸­ã®ä¾‹å¤–ã®è¡¨ç¾ã®æ”¹å–„</div><div class='add'>+</div><div class='add'>+	* eval.c (eval): eval_with_bindingã¨ã®ä¸€æœ¬åŒ–</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): ã‚¯ãƒ©ã‚¹/ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«å®šç¾©ã®ä¸­ã‹ã‚‰å®šç¾©ä¸­ã®ã‚¯ãƒ©ã‚¹/ãƒ¢</div><div class='add'>+	  ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒå‚ç…§ã§ãã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Tue Oct  1 01:40:09 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.2-961001</div><div class='add'>+</div><div class='add'>+	* parse.y: cur_crefãŒ2åº¦å®£è¨€ã•ã‚Œã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* signal.c (trap): SIGSEGVï¼ŒSIGBUSã®ãªã„æ©Ÿç¨®ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* io.c (Init_IO): å¼•æ•°ã‚¿ã‚¤ãƒ—ã®æŒ‡å®šé–“é•ã„</div><div class='add'>+</div><div class='add'>+Mon Sep 30 15:28:00 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.2-960930</div><div class='add'>+</div><div class='add'>+	* config.guess,config.sub: $host_osãŒæ­£ã—ãè¨­å®šã•ã‚Œãªã„</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): yieldã§æ­£ã—ããªã„selfãŒè¨­å®šã•ã‚Œã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* eval.c (ruby_run): toplevelã®ä¾‹å¤–å‡¦ç†ã®ãƒã‚°</div><div class='add'>+</div><div class='add'>+Mon Sep 30 09:13:26 1996  WATANABE Hirofumi  &lt;watanabe@ase.ptg.sony.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* djgppå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Sat Sep 28 02:45:10 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.2-960928</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-beginning-of-block): ãƒ–ãƒ­ãƒƒã‚¯ã®å…ˆé ­ã«</div><div class='add'>+	  ç§»å‹•(æ­£ã—ãã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã—ã¦ã„ãªã„ã¨å‹•ä½œã—ãªã„)</div><div class='add'>+	  (ruby-end-of-block): åŒä¸Š</div><div class='add'>+</div><div class='add'>+	* eval.c (class_s_new): Class#newãŒã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã°ã‚ŒãŸæ™‚ã¯</div><div class='add'>+	  initializeã‚‚ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã°ã‚Œã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* signal.c (sigsegv): SEGVã§backtraceã‚’è¡¨ç¤ºã™ã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Fri Sep 27 09:51:07 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.2-960927</div><div class='add'>+</div><div class='add'>+	* eval.c (error_print): å¼•æ•°ã®ãªã„raiseã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒæ­£ã—ãè¡¨ç¤ºã•</div><div class='add'>+	  ã‚Œã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_longjmp): mesgãŒnilã®æ™‚RuntimeErrorã‚’ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (f_raise): å¼•æ•°ãŒãªã„æ™‚ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_mark): stackä¸Šã«ãªã„ãƒ‡ãƒ¼ã‚¿ã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¤‰æ›ã‚’è¡Œã£ã¦</div><div class='add'>+	  ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (Init_Thread): å‰²è¾¼ã¿ã®é–“éš”ãŒ1ç§’ã¨é•·ã™ãŽãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Sep 26 16:02:45 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_schedule): ä¸€åº¦ãƒšãƒ³ãƒ‡ã‚£ãƒ³ã‚°ã«ãªã‚‹ã¨ãƒ•ãƒ©ã‚°ãŒã‚¯ãƒªã‚¢</div><div class='add'>+	  ã•ã‚Œã¦ã„ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* process.c (rb_proc_exec): system/execã®å¼•æ•°ãŒç©ºæ–‡å­—åˆ—ã§ã‚ã£ãŸå ´</div><div class='add'>+	  åˆï¼Œä¾‹å¤–ã‚’ç™ºç”Ÿã™ã¹ãã ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* config.sub/config.guess: æ–°ã—ã„ã‚‚ã®ã«ç½®ãæ›ãˆ</div><div class='add'>+</div><div class='add'>+Thu Sep 26 15:41:35 1996  WATANABE Hirofumi  &lt;watanabe@ase.ptg.sony.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (next_argv): -i.bakã‚’BOWã¨DOSã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Sep 26 01:31:43 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (io_sysread): EOFã§ä¾‹å¤–</div><div class='add'>+</div><div class='add'>+	* io.c (f_readline): EOFã§ä¾‹å¤–ã‚’ç™ºç”Ÿã™ã‚‹ã‚ˆã†ã«ï¼Žgetsã¯äº’æ›æ€§ã®ãŸã‚</div><div class='add'>+	  nilã‚’è¿”ã™ã¾ã¾ã«ã™ã‚‹</div><div class='add'>+</div><div class='add'>+	* eval.c (proc_call): lambdaã‹ã‚‰ã®returnã§IN_BLOCKãƒ•ãƒ©ã‚°ãŒç«‹ã£ãŸã¾</div><div class='add'>+	  ã¾ã ã£ãŸ</div><div class='add'>+</div><div class='add'>+	* eval.c (PUSH_BLOCK2): threadã«å¯¾å¿œã™ã‚‹ãŸã‚Blockã‚’ä¸€åº¦stackã«ã‚³ãƒ”ãƒ¼</div><div class='add'>+</div><div class='add'>+Wed Sep 25 11:54:11 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (method_call): Const::method()å½¢å¼ã‚’ä½¿ãˆã‚‹ã‚ˆã†ã«ã—ã¦ã¿ãŸï¼Ž</div><div class='add'>+	  å¼•æ•°æ‹¬å¼§ã¯çœç•¥ã§ããªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* sample/test.rb: Process.killã®å­˜åœ¨ã‚’ç¢ºã‹ã‚ã¦ã‹ã‚‰ãƒ†ã‚¹ãƒˆã‚’è¡Œã†</div><div class='add'>+</div><div class='add'>+	* eval.c (eval_with_binding): ç¬¬2å¼•æ•°ã¨ã—ã¦binding(ã¾ãŸã¯lambda)ã‚’</div><div class='add'>+	  ä¸Žãˆã‚‹ã¨ãã®ç’°å¢ƒã§evalã‚’å®Ÿè¡Œã™ã‚‹ã‚ˆã†ã«ã—ãŸ</div><div class='add'>+</div><div class='add'>+	* eval.c (f_binding): ç¾åœ¨ã®bindingã‚’è¿”ã™é–¢æ•°</div><div class='add'>+</div><div class='add'>+	* eval.c: blockæ§‹é€ ä½“ã«the_classã‚’ä¿å­˜ã™ã‚‹ãƒ¡ãƒ³ãƒã‚’è¿½åŠ </div><div class='add'>+</div><div class='add'>+	* process.c (Init_process): kill,wait,waitpidã‚’Processã«ç§»å‹•</div><div class='add'>+</div><div class='add'>+Tue Sep 24 02:44:43 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el: ã„ã‚ã„ã‚å•é¡ŒãŒå¤šã„ã®ã§ä»¥å‰ã®é«˜é€ŸåŒ–ã¯ç ´æ£„ï¼Ž</div><div class='add'>+	  åˆ¥ã®ã‚¢ãƒ—ãƒ­ãƒ¼ãƒã‚’ä½¿ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb (Tk.pack): è¤‡æ•°ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’å—ã‘ä»˜ã‘ã‚‹pack</div><div class='add'>+</div><div class='add'>+Sat Sep 21 11:08:09 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (exprs): ç©ºæ–‡ã‚‚å—ã‘ä»˜ã‘ã‚‹ã‚ˆã†ã«æ–‡æ³•ã‚’å¤‰æ›´ï¼Žä»Šã¾ã§ã¯æ”¹è¡Œ</div><div class='add'>+	  ã®é€£ç¶šã ã‘ãŒè¨±ã•ã‚Œã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Sep 20 11:39:18 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* Failã®å¤§åŠã‚’åå‰ã¤ãä¾‹å¤–ã«å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* re.c (Init_Regexp): åå‰ã¤ãä¾‹å¤–ã‚’å°Žå…¥ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (f_missing): Objectã¯inspectã—ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c (inspect_i): Object#inspectã§loopã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* regex.c (re_search): /^$/ãŒ""ã«ãƒžãƒƒãƒã—ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Sep 19 19:25:12 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* regex.c (re_search): /^$/ãŒéžç©ºè¡Œã«ãƒžãƒƒãƒã—ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Sep 17 10:28:11 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.2-960917</div><div class='add'>+</div><div class='add'>+Mon Sep 16 10:47:56 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-calculate-indent): æ¼”ç®—å­ç¶™ç¶šã®å ´åˆã®</div><div class='add'>+	  æ–‡å­—åˆ—ã®åˆ¤å®šã®ãƒã‚°</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-calculate-indent): elseãªã©ã®æ¬¡ã®è¡Œã®</div><div class='add'>+	  ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆè¨ˆç®—ã‚’æ­£ã—ãï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Sep 14 08:37:19 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.2-960914</div><div class='add'>+</div><div class='add'>+Fri Sep 13 08:06:03 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (tcpaddr): portç•ªå·ã«ntohsã‚’ã¤ã‘å¿˜ã‚Œ</div><div class='add'>+</div><div class='add'>+	* dln.c (link_undef): ãƒ†ãƒ¼ãƒ–ãƒ«ã®ç¨®é¡žãŒé–“é•ã£ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* bignum.c (bigadd): å¼•ãç®—ãŒç™ºç”Ÿã™ã‚‹æ™‚ã«è¨ˆç®—é•ã„ãŒèµ·ãã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (iter_do_block): do..endã§ã‚‚dynamic variableã‚’ï¼Ž</div><div class='add'>+</div><div class='add'>+	* bignum.c (big_pow): ã‚ˆã‚Šæ­£ç¢ºãªè¨ˆç®—ã‚’(æ•´æ•°åŒå£«ã§ã¯floatã«å¤‰æ›ã—ãª</div><div class='add'>+	  ã„)ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Sep 12 13:11:55 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_set_class_path): Stringã‚¯ãƒ©ã‚¹ãŒåˆæœŸåŒ–ã•ã‚Œã‚‹å‰ã«</div><div class='add'>+	  Stringã‚’ä½œã£ã¦ã„ãŸï¼Žçµ„è¾¼ã¿ã‚¯ãƒ©ã‚¹ã«ã¯pathã¯ã„ã‚‰ãªã„</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): 0.1ãŒ0ã«ãªã£ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): è¡Œç•ªå·ã®ä¸æ•´åˆ</div><div class='add'>+</div><div class='add'>+	* gc.c (oblist_live_obj): ä»Šã€Œç”Ÿãã¦ã„ã‚‹ã€å…¨éƒ¨ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è¿”ã™</div><div class='add'>+	  ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ï¼Žãã®ã‚¯ãƒ©ã‚¹(ã¾ãŸã¯ã‚µãƒ–ã‚¯ãƒ©ã‚¹)ã®å…¨éƒ¨ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”</div><div class='add'>+	  ã™each_object_ofã‚‚å®šç¾©ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* class.c (rb_define_class_id): ç„¡é§„ãªã‚¯ãƒ©ã‚¹ã‚’å‰²ã‚Šå½“ã¦ã¦ã„ãŸï¼Žçµæžœ</div><div class='add'>+	  ã¨ã—ã¦æœªåˆæœŸåŒ–ã®ã‚¯ãƒ©ã‚¹ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒå­˜åœ¨ã—ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Sep 11 00:56:23 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): octalã®å®šæ•°ã®æ¤œå‡ºã‚’ã‚ˆã‚Šæ­£ç¢ºã«(090ã¯ã‚¨ãƒ©ãƒ¼ã¨ã‹)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* bignum.c (big_minus): yãŒxã‚ˆã‚Šå¤§ãã„å ´åˆã«ã‚¨ãƒ©ãƒ¼ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): ã‚¨ãƒ©ãƒ¼è¡Œç•ªå·ã®è¡¨ç¤ºã‚’ã‚ˆã‚Šæ­£ç¢ºã«</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-expr-beg): å¤‰æ•°åãŒ1æ–‡å­—ã®æ™‚èª¤å‹•ä½œã—ã¦</div><div class='add'>+	  ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-calculate-indent): ?/ã§ãƒ«ãƒ¼ãƒ—ã«è½ã¡ã„</div><div class='add'>+	  ãŸãƒã‚°ã‚’ä¿®æ­£ï¼Ž</div><div class='add'>+</div><div class='add'>+	* enum.c (enum_min,enum_max): sortã®ã‚ˆã†ã«ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦ã‚‚å‹•ä½œã™</div><div class='add'>+	  ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* enum.c (enum_find_all): typo</div><div class='add'>+</div><div class='add'>+Tue Sep 10 12:07:12 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* node.h (nd_line): NODEã®lineã‚’flagsã«æŠ¼ã—è¾¼ã‚ã¦ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚µã‚¤</div><div class='add'>+	  ã‚ºã‚’å°ã•ãã—ãŸï¼Žåˆ¶é™:32bit intã®ãƒžã‚·ãƒ³ã®å ´åˆï¼Œãƒ•ã‚¡ã‚¤ãƒ«ã®è¡Œæ•°ãŒ</div><div class='add'>+	  32767ã‚’è¶Šãˆã‚‹ã¨æ­£å¸¸ã«è¡¨ç¤ºã•ã‚Œãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* st.c: hashã¨compareã®é–¢æ•°ãƒ¡ãƒ³ãƒã‚’æ§‹é€ ä½“ã«ãƒ‘ãƒƒã‚¯ï¼Œã‚¯ãƒ©ã‚¹çš„ãªä½¿ã„</div><div class='add'>+	  æ–¹ã‚’è¡Œã†ï¼Ž1 tableã‚ãŸã‚Š4 byteã®ç¯€ç´„ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Sep  9 16:35:54 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c (file_truncate): æä¾›ã•ã‚Œãªã„æ™‚ã«ã¯ç‰¹åˆ¥ãªä¾‹å¤–ã‚’ç™ºç”Ÿã™ã‚‹ã‚ˆ</div><div class='add'>+	  ã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (Init_Proc): ä¸é©åˆ‡ãªä½ç½®ã®local-jumpã‚’ä¾‹å¤–ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Sep  7 17:06:15 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (proc_call): ã¾ã ã‚¹ã‚³ãƒ¼ãƒ—ãŒã‚¹ã‚¿ãƒƒã‚¯ä¸Šã«ã‚ã‚‹æ™‚ã«ã¯å±€æ‰€è„±å‡º</div><div class='add'>+	  ã‚’æœ‰åŠ¹ã«ã™ã‚‹ï¼Žã“ã‚Œã§ï¼Œprocã‚’ç”Ÿæˆã—ã¦callã™ã‚‹ã“ã¨ã¯ï¼Œã‚¹ã‚³ãƒ¼ãƒ—ã‚’è„±</div><div class='add'>+	  å‡ºã—ãªã„é™ã‚Šï¼Œyieldã¨åŒã˜æ„å‘³ã‚’æŒã¤ã“ã¨ã«ãªã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Sep  6 13:30:59 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-indent-to): ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆãŒå¤‰ã‚ã‚‰ãªã„æ™‚ã«</div><div class='add'>+	  ã¯ãƒãƒƒãƒ•ã‚¡ã‚’å¤‰æ›´ã—ãªã„ï¼Ž</div><div class='add'>+	  (ruby-calculate-indent): ã¾ãšæ–‡å­—åˆ—ã®å†…éƒ¨ã‹åˆ¤æ–­ã—ã¦ã‹ã‚‰ï¼Œå‰ã®è¡Œ</div><div class='add'>+	  ã‹ã‚‰ãƒ‘ãƒ¼ã‚ºã‚’è¡Œã†ï¼ŽdefunãŒå¤§ãããªã£ãŸæ™‚ã®é«˜é€ŸåŒ–ï¼Ž</div><div class='add'>+	  (ruby-in-string-p): æ–‡å­—åˆ—ã®å†…éƒ¨ã‹ã©ã†ã‹ã‚’åˆ¤æ–­ã™ã‚‹é–¢æ•°(ä»¥å‰ã®</div><div class='add'>+	  parseã‹ã‚‰åˆ†é›¢)</div><div class='add'>+	  (ruby-parse-region): æ–‡å­—åˆ—ã«å¯¾ã™ã‚‹å‡¦ç†ã‚’ã¯ãšã™ï¼Ž</div><div class='add'>+	  (ruby-beginning-of-block): ãƒ–ãƒ­ãƒƒã‚¯ã®å…ˆé ­ã«</div><div class='add'>+	  (ruby-end-of-block): ãƒ–ãƒ­ãƒƒã‚¯ã®æœ«å°¾ã«(é…ã„â€¦)</div><div class='add'>+</div><div class='add'>+Thu Sep  5 14:23:07 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c (file_s_split): [dirname,basename]ã«splitã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): evalã®ä¸­ã§ã‚‚å®šæ•°ã®å€¤ãŒæ­£ã—ããªã‚‹ã‚ˆã†ã«ï¼Žã“ã‚Œã§</div><div class='add'>+	  å®šæ•°ã«é–¢ã—ã¦ã¯é™çš„ãªã‚¹ã‚³ãƒ¼ãƒ—ãŒä¿è¨¼ã•ã‚Œã‚‹ã‚ˆã†ã«ãªã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* st.c (rehash): ãƒãƒƒã‚·ãƒ¥æ‹¡å¤§ã®ç³»æ•°ã‚’2ã‹ã‚‰1.79ã«ï¼Žå‰²ç®—ãŒã‚ˆã‚Šè‰¯ã„å€¤</div><div class='add'>+	  ã‚’è¿”ã™ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Sep  5 00:32:07 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (class_superclass) ã‚¯ãƒ©ã‚¹ã®ã‚¹ãƒ¼ãƒ‘ãƒ¼ã‚¯ãƒ©ã‚¹ã‚’è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Sep  4 16:54:56 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* random.c (f_rand): Bignumã‚„longã®ç¯„å›²ã‚’è¶Šãˆã‚‹Floatã«å¯¾ã™ã‚‹ä¹±æ•°ã‚‚</div><div class='add'>+	  ç™ºç”Ÿã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* struct.c (struct_alloc): Fatalã§ã¯ãªãä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ã‚‹ã‚ˆã†ã«(é€š</div><div class='add'>+	  å¸¸ã®ä½¿ç”¨ã§ç™ºç”Ÿã—ã†ã‚‹)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* struct.c (struct_s_members): Structã®ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã§ã¯ãªãï¼Œç”Ÿæˆ</div><div class='add'>+	  ã•ã‚ŒãŸStructã‚¯ãƒ©ã‚¹ã®ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* st.c (st_init_table): rubyå°‚ç”¨ã«ãƒ‘ãƒ©ãƒ¡ã‚¿ã‚’å›ºå®šã«ã—ãŸ(ã‚µã‚¤</div><div class='add'>+	  ã‚ºãŒæ¸›ã£ãŸ)</div><div class='add'>+</div><div class='add'>+Mon Sep  2 11:37:59 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* array.c (ary_shift): capaãŒã‚ã¾ã‚Šã«ã‚‚å¤§ãã„æ™‚ã«ã¯é ˜åŸŸã‚’REALLOC</div><div class='add'>+	(ary_pop): åŒä¸Š</div><div class='add'>+</div><div class='add'>+	* string.c (str_inspect): multibyte character å¯¾å¿œã«ãƒŸã‚¹ï¼Ž</div><div class='add'>+	(str_inspect): unsigned charã«ã—ãªã„ã¨ç¬¦å·å±•é–‹ã•ã‚Œã¦ã—ã¾ã†</div><div class='add'>+</div><div class='add'>+	* parse.y (primary): `::'ã‚’primaryã«ç§»å‹• Foo::Bar.BazãŒã‚¨ãƒ©ãƒ¼ã«ãª</div><div class='add'>+	  ã‚‰ãªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (primary): ã‚ªãƒšãƒ¬ãƒ¼ã‚¿å½¢å¼ã®ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ãŒå®šç¾©ã§ããªã„</div><div class='add'>+</div><div class='add'>+	* random.c (f_rand): maxãŒ0ã®æ™‚ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* io.c (io_printf): é–¢æ•°ã‚’å®šç¾©ã—ã¦ã„ãŸãŒã‚¤ãƒ³ã‚¿ãƒ—ãƒªã‚¿ã«ç™»éŒ²ã—ã¦ã„ãª</div><div class='add'>+	  ã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* file.c (file_s_basename): ç¬¬2å¼•æ•°ãŒç„¡ã„æ™‚ã«ã‚¨ãƒ©ãƒ¼ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Aug 29 10:49:40 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (expr): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã®æ–°å½¢å¼ã«ã€Œmethod do .. endã€å½¢å¼ã‚’æŽ¡</div><div class='add'>+	  ç”¨ã—ãŸï¼Žã‚‚ã¡ã‚ã‚“æ˜”ã®å½¢å¼ã‚‚æœ‰åŠ¹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-calculate-indent): endã®æ•°ã®æ–¹ãŒå¤šã„å ´</div><div class='add'>+	  åˆã«ã‚‚ã‚¨ãƒ©ãƒ¼ã‚’èµ·ã“ã•ãªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Aug 28 09:41:36 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* numeric.c (upto,downto,step,times): å¯¾è±¡ãŒfixnumã®ç¯„å›²ã‚’è¶Šãˆã¦ã‚‚</div><div class='add'>+	  å‹•ä½œã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Aug 26 10:04:37 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* missing/setenv.c (envix): typo(missing `== 0' for memcmp)</div><div class='add'>+</div><div class='add'>+	* dir.c (dir_foreach): foreach(dir open -&gt; read loop -&gt; closeã¾ã§)</div><div class='add'>+</div><div class='add'>+	* io.c (io_foreach): foreach(file open -&gt; read loop -&gt; closeã¾ã§)</div><div class='add'>+</div><div class='add'>+	* Fatalã®ã†ã¡æ•æ‰å¯èƒ½ãªã„ãã¤ã‹ã‚’ä¾‹å¤–ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Aug 24 23:56:37 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* bignum.c (bigdivmod): FIX2INT -&gt; INT2FIX å¤§é–“é•ã„</div><div class='add'>+</div><div class='add'>+Fri Aug 23 18:13:03 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* regex.c (re_free_registers): allocateã—ã¦ã„ãªã„æ™‚ã«ã¯å½“ç„¶ free</div><div class='add'>+	  ã—ã¦ã¯ã„ã‘ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Aug 22 01:20:35 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_create): å¤–å´ã‹ã‚‰å¼·åˆ¶çµ‚äº†ã•ã›ã‚‰ã‚ŒãŸthreadã¯</div><div class='add'>+	  cleanupã™ã‚‹å¿…è¦ãŒç„¡ã„ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Aug 21 09:57:28 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_create): threadã‚’çµ‚äº†ã•ã›ãŸå¤§åŸŸè„±å‡ºã®æƒ…å ±ã‚’</div><div class='add'>+	  main_threadã«æ¸¡ã™ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (call_args): æœ€çµ‚å¼•æ•°ã«æ‹¬å¼§ã‚’çœç•¥ã—ãŸãƒ¡ã‚½ãƒƒãƒ‰å‘¼å‡ºã—ã‚’ç½®</div><div class='add'>+	  ã‘ã‚‹ã‚ˆã†ã«(ä¾‹: print foo bar, baz == print(foo(bar,baz)))</div><div class='add'>+</div><div class='add'>+Tue Aug 20 13:37:16 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (masign): å¤šé‡ä»£å…¥ã¨restå¼•æ•°ã®å‹•ä½œã‚’åˆã‚ã›ã¦ç©ºã®é…åˆ—ã‚’ä»£</div><div class='add'>+	  å…¥ã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (arg): defined?ã®å¼·åº¦ã‚’ã‚‚ã†ã¡ã‚‡ã£ã¨å¼·ã</div><div class='add'>+</div><div class='add'>+	* eval.c (error_print): -wã§ä¾‹å¤–åã‚‚è¡¨ç¤ºã™ã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): æ–°æ§‹æ–‡ã«å¯¾å¿œ</div><div class='add'>+	(handle_rescue): æ•æ‰ã™ã‚‹ä¾‹å¤–ã‚’ kind_of? ã§åŒå®š</div><div class='add'>+</div><div class='add'>+	* parse.y (primary): rescueã®æ§‹æ–‡ã‚’å¤‰æ›´(åŒå®šå¼•æ•°ã®è¿½åŠ ï¼Œè¤‡æ•°rescue)</div><div class='add'>+</div><div class='add'>+	* Fail()ã®ã‹ãªã‚Šã‚’é©å½“ãªä¾‹å¤–ã‚’ä½¿ã†ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_interrupt): Interrupt(ä»Šã¯non-local jump)ã¯</div><div class='add'>+	  main-threadã«é€ã‚‰ã‚Œã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_longjmp): $! ã®å†…å®¹ã‚’æ–‡å­—åˆ—ã‹ã‚‰ä¾‹å¤–ã‚¯ãƒ©ã‚¹ã«å¤‰æ›´</div><div class='add'>+	(rb_raise): rb_fail ã‹ã‚‰åç§°å¤‰æ›´</div><div class='add'>+	(rb_interrupt): ä¾‹å¤–åŒ–</div><div class='add'>+	(rb_exit): ä¾‹å¤–åŒ–</div><div class='add'>+</div><div class='add'>+	* error.c (Init_Exception): ä¾‹å¤–ã‚¯ãƒ©ã‚¹ã®æ–°è¨­(æ–‡å­—åˆ—ã®ã‚µãƒ–ã‚¯ãƒ©ã‚¹)</div><div class='add'>+</div><div class='add'>+Mon Aug 19 19:40:52 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* signal.c (trap): å¤ã„ãƒãƒ³ãƒ‰ãƒ©ã‚’è¿”ã™ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Aug 14 00:07:18 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_trap_eval): ãƒãƒ³ãƒ‰ãƒ©ã®ãŸã‚ã«threadã‚’forkã™ã‚‹ã“ã¨ã‚’æ­¢</div><div class='add'>+	  ã‚ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_mark): threadæ¯Žã® $!, $@ ã‚’ãƒžãƒ¼ã‚¯ã—å¿˜ã‚Œ</div><div class='add'>+</div><div class='add'>+	* ext/dbm/dbm.c (fdbm_delete): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã°ã‚ŒãŸå ´åˆï¼Œè¦ç´ </div><div class='add'>+	  ãŒç„¡ã‘ã‚Œã°ãƒ–ãƒ­ãƒƒã‚¯ã‚’è©•ä¾¡ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* hash.c (hash_delete): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã°ã‚ŒãŸå ´åˆï¼Œè¦ç´ ãŒç„¡ã‘ã‚Œ</div><div class='add'>+	  ã°ãƒ–ãƒ­ãƒƒã‚¯ã‚’è©•ä¾¡ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* array.c (ary_delete): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã°ã‚ŒãŸå ´åˆï¼Œè¦ç´ ãŒç„¡ã‘ã‚Œ</div><div class='add'>+	  ã°ãƒ–ãƒ­ãƒƒã‚¯ã‚’è©•ä¾¡ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_interrupt): SIGINTã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚’exitã‹ã‚‰ç‰¹åˆ¥ãªå¤§åŸŸè„±</div><div class='add'>+	  å‡ºã«ï¼Žã‚„ã¯ã‚Šå‰²ã‚Šè¾¼ã¾ã‚ŒãŸä½ç½®ã®è¡¨ç¤ºãŒç„¡ã„ã®ã¯å¯‚ã—ã„ã®ã§ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Aug 13 01:34:00 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_exit): sub-threadå†…ã§ã®exitã‚‚statusã‚’ä¿å­˜ã™ã‚‹ã‚ˆã†ã«</div><div class='add'>+	(thread_create): è‡ªthreadå†…ã®exitã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* signal.c (sighandle): SIGINTã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒãƒ³ãƒ‰ãƒ©ã¯exitã™ã‚‹ã‚ˆã†ã«</div><div class='add'>+	  (ä»¥å‰ã¯ä¾‹å¤–ã‚’ç™ºç”Ÿã—ã¦ã„ãŸ)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ä¾‹å¤–ã®ä¸€éƒ¨ã‚’Fatalã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c (str_aset): æ–‡å­—åˆ—ã®ç½®æ›ã®å¯¾è±¡ãŒéƒ¨åˆ†æ–‡å­—åˆ—ã§ãªã‹ã£ãŸæ™‚ï¼Œ</div><div class='add'>+	  ä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ãªã„ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* eval.c (proc_call): Procã®ä¸­ã‹ã‚‰break/nextã¯é€šã—ï¼Œä»–ã®ã‚‚ã®ã¯é€šã•</div><div class='add'>+	  ãªã„ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Mon Aug 12 14:15:09 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* object.c (krn_type): æ–‡å­—åˆ—ã‚’è¿”ã™</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_create): sub-threadå†…ã§ã®exitã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* numeric.c (fix_type): æ–‡å­—åˆ—ã‚’è¿”ã™</div><div class='add'>+</div><div class='add'>+	* io.c (f_p): ãƒ‡ãƒãƒƒã‚°ç”¨ãƒ‡ãƒ¼ã‚¿è¡¨ç¤ºãƒ¡ã‚½ãƒƒãƒ‰</div><div class='add'>+</div><div class='add'>+	* eval.c (f_missing): nil/TRUE/FALSEã‚’ç‰¹åˆ¥æ‰±ã„</div><div class='add'>+</div><div class='add'>+	* string.c (str_inspect): é•·ã„æ–‡å­—åˆ—ã‚’çŸ­ç¸®è¡¨ç¤ºï¼Žinspectã®åƒãã‚’</div><div class='add'>+	  human readable stringã®ç”Ÿæˆã«çµ±ä¸€(re-generatable string ã¯æ­£å¼ã«</div><div class='add'>+	  ç„¡ããªã£ãŸ)ï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Aug 10 16:54:21 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* object.c (Init_Object): kernel/nil/false/trueã®ã‚¯ãƒ©ã‚¹åã‚’å¤‰æ›´(å°</div><div class='add'>+	  æ–‡å­—ã«)ï¼Œrubyã‚¹ã‚¯ãƒªãƒ—ãƒˆã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): CONSTANTã®ã‚¢ã‚¯ã‚»ã‚¹å…ˆã‚’å˜ç´”åŒ–ï¼Žcrefã‚’ä½¿ã‚ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (f_eval): ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰å†…ã§ã‚‚å®šæ•°ã®å€¤ãŒæ­£ã—ããªã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Fri Aug  9 12:23:17 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* array.c (ary_concat): append -&gt; concat Stringã«åˆã‚ã›ãŸ</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): `$;'ãŒä½¿ãˆãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* array.c (ary_push_method): è¤‡æ•°å¼•æ•°ã‚’å—ã‘ä»˜ã‘ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+	(ary_unshift): è¤‡æ•°å¼•æ•°ã‚’å—ã‘ä»˜ã‘ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (io_popen): IO.popenã§command pipeãŒé–‹ã‘ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c (Init_Object): Kernelã¨Nilã‚’ruby scriptã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ã</div><div class='add'>+	  ãªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Aug  8 01:21:47 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* object.c (f_integer): æ•´æ•°ã¸ã®å¤‰æ›é–¢æ•°</div><div class='add'>+	(f_float): å®Ÿæ•°ã¸ã®å¤‰æ›é–¢æ•°</div><div class='add'>+	(f_string): æ–‡å­—åˆ—ã¸ã®å¤‰æ›é–¢æ•°</div><div class='add'>+	(f_array): é…åˆ—ã¸ã®å¤‰æ›é–¢æ•°</div><div class='add'>+</div><div class='add'>+	* bignum.c (big_to_i): FIXNUMã®ç¯„å›²ã§ãªã„æ™‚ã¯Bignumã®ã¾ã¾è¿”ã™ã‚ˆã†</div><div class='add'>+	  ã«å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Aug  7 09:28:38 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99.1-960807</div><div class='add'>+</div><div class='add'>+	* parse.y (mlhs): ã€Œ*foo = 1,2,3ã€ã‚¿ã‚¤ãƒ—ã®å¤šé‡ä»£å…¥ã‚‚å¯èƒ½ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c (Init_Object): ã‚¯ãƒ©ã‚¹True/Falseã‚’ruby scriptã‹ã‚‰ã‚¢ã‚¯ã‚»</div><div class='add'>+	  ã‚¹ã§ããªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c (nil_inspect): inspectè¡¨ç¾ã¯"nil"ã«</div><div class='add'>+</div><div class='add'>+	* io.c (io_print): nilã®printã‚’nilã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c (nil_to_s): nilã®æ–‡å­—åˆ—è¡¨ç¾ã‚’""ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Aug  6 01:12:32 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* dir.c (dir_s_open): file descripterãŒè¶³ã‚Šãªã„æ™‚ã«ã¯gcã—ã¦ã‹ã‚‰ã‚‚</div><div class='add'>+	  ã†ä¸€åº¦openã—ã¦ã¿ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (rb_fopen): ã™ã¹ã¦ã®fopen()ã«ã¤ã„ã¦file descripterãŒè¶³ã‚Šãª</div><div class='add'>+	  ã„æ™‚ã«ã¯gcã—ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦openã—ã¦ã¿ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (Init_socket): å®šæ•°ã®è¿½åŠ ï¼Ž</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-indent-to): ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆå¾Œã®ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®</div><div class='add'>+	  ã®èª¿æ•´ã‚’æ­£ã—ãï¼Ž</div><div class='add'>+</div><div class='add'>+	* gc.c (gc): å‰²è¾¼ã¿ãƒã‚§ãƒƒã‚¯ã‚’è¡Œã‚ãªã„(Cã‚³ãƒ¼ãƒ‰ã®ä¸­ã§å®‰å¿ƒã—ã¦</div><div class='add'>+	  malloc()ãŒä½¿ãˆãªããªã‚‹ã®ã§)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* st.c (call_hash_func): signalã¨threadã«ã‚ˆã‚‹å‰²è¾¼ã¿ã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* sig.h (DEFER_INTS): å‰²è¾¼ã¿ç¦æ­¢åŒºé–“ã®æŒ‡å®š</div><div class='add'>+</div><div class='add'>+	* eval.c (f_require): threadã«ã‚ˆã‚‹requireã®ç«¶åˆã«å¯¾å¿œ(æœ€åˆã®</div><div class='add'>+	  requireãŒçµ‚äº†ã™ã‚‹ã¾ã§ä»–ã®threadã¯å¾…ã¤)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* bignum.c (str2inum): 0x80000000ã®å€¤ãŒè² ã«ãªã£ã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* sprintf.c (f_sprintf): æ–‡å­—åˆ—æœ«å°¾ï¼Œè¡Œæœ«ã®å˜ç‹¬ã®`%'ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* bignum.c (big_cmp): æ¯”è¼ƒã®çµæžœãŒé€†ã«ãªã‚‹æ™‚ãŒã‚ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Aug  5 10:58:13 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* process.c (proc_exec_v): ä¾‹å¤–ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’åˆ†ã‹ã‚Šã‚„ã™ãï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/dbm/dbm.c (fdbm_store): nilã‚’æ ¼ç´ã™ã‚‹ã¨è¦ç´ ã®å‰Šé™¤ã«ãªã‚‹</div><div class='add'>+</div><div class='add'>+	* ext/dbm/dbm.c: ã‚µã‚¤ã‚ºã‚’ã‚­ãƒ£ãƒƒã‚·ãƒ¥ï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Aug  3 01:52:52 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_fail): `fail'ãŒå¼•æ•°ç„¡ã—ã§å‘¼ã°ã‚ŒãŸæ™‚ã ã‘ä»¥å‰ã®`$@'ã‚’ä¿</div><div class='add'>+	  å­˜ã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (f_fail): frameã®èª¿æ•´</div><div class='add'>+</div><div class='add'>+Fri Aug  2 11:26:21 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (bsock_setopt): valã¨ã—ã¦TRUE/FALSE/Fixnumã‚‚</div><div class='add'>+	  å—ã‘ä»˜ã‘ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (Init_socket): SO_REUSEADDRç­‰ã®å®šæ•°ã®è¿½åŠ </div><div class='add'>+</div><div class='add'>+	* ext/md5/md5init.c: md5ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«(åˆã®è¤‡æ•°ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ãªã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼</div><div class='add'>+	  ãƒ«ã§ã‚‚ã‚ã‚‹)</div><div class='add'>+</div><div class='add'>+	* ruby.h (Make_Data_Struct): Data: objectã®instanceå¤‰æ•°ã«æ ¼ç´ -&gt;</div><div class='add'>+	  Dataåž‹ã®Objectã«(Dir,Time,Proc,Thread,DBM)</div><div class='add'>+</div><div class='add'>+Thu Aug  1 11:38:44 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/dbm/dbm.c (fdbm_store): valueãŒæ–‡å­—ã§ç„¡ã„æ™‚ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Wed Jul 31 10:53:42 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (open_inet): htonsãŒå¿…è¦ã§ã‚ã£ãŸ</div><div class='add'>+	(tcpaddr): ntohlã§å¤‰æ›ã—ãŸ</div><div class='add'>+</div><div class='add'>+	* process.c (rb_proc_exec): execvp -&gt; execv</div><div class='add'>+</div><div class='add'>+Tue Jul 30 17:48:33 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c: `$?'ã‚’thread localã«</div><div class='add'>+</div><div class='add'>+	* Makefile.in (install): installæ™‚ã«stripã‚’è¡Œã†</div><div class='add'>+</div><div class='add'>+	* configure.in: installæ™‚ã®stripã®æ¤œå‡º</div><div class='add'>+</div><div class='add'>+	* configure.in: NEXTSTEPå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* version 0.99.1-960730</div><div class='add'>+</div><div class='add'>+Tue Jul 30 16:40:35 1996  SHIROYAMA Takayuki  &lt;psi@fortune.nest.or.jp&gt;</div><div class='add'>+</div><div class='add'>+	* dln.c (dln_load): NeXT dln(mach-o)å¯¾å¿œï¼Žconfigureã¯æœªå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Tue Jul 30 09:46:51 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* process.c (f_system): è¤‡æ•°å¼•æ•°ã‚‚ã¨ã‚Œã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* process.c (f_exec): è¤‡æ•°å¼•æ•°ã‚‚ã¨ã‚Œã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* array.c (ary_append): é…åˆ—(ã¾ãŸã¯Enum)ã®è¦ç´ ã‚’ç ´å£Šçš„ã«è¿½åŠ </div><div class='add'>+</div><div class='add'>+	* array.c (ary_plus): Enumã¯ãã®è¦ç´ ã‚’è¿½åŠ </div><div class='add'>+</div><div class='add'>+	* file.c (file_s_open): File.openã‚’è¿½åŠ </div><div class='add'>+</div><div class='add'>+	* struct.c (struct_new): FIX2INTã‚’å¿˜ã‚Œã¦ã„ãŸ</div><div class='add'>+</div><div class='add'>+	* file.c (Init_File): exists? -&gt; exist?</div><div class='add'>+</div><div class='add'>+	* object.c (obj_is_kind_of): is_kind_of? -&gt; kind_of?, is_a?</div><div class='add'>+</div><div class='add'>+	* object.c (obj_is_instance_of): is_instance_of? -&gt; instance_of?</div><div class='add'>+</div><div class='add'>+Mon Jul 29 16:40:02 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (parse_regx): å¼å±•é–‹ã‚’è¡Œã£ãŸå ´åˆï¼Œcasefoldã®è¨­å®šãŒã§ãã¦</div><div class='add'>+	  ã„ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c (true_type): TRUE/FALSEã«typeã‚’å®Ÿè£…ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (read_escape): 3æ–‡å­—ä»¥å†…ã®octalã«å¯¾å¿œ(\0ã¨ã‹)</div><div class='add'>+</div><div class='add'>+Fri Jul 26 00:31:45 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* array.c (ary_reverse_bang): in-placeã§é…åˆ—ã‚’åè»¢ã•ã›ã‚‹</div><div class='add'>+	(ary_sort_bang): in-placeã§sortã™ã‚‹</div><div class='add'>+	(ary_sort): sortã—ãŸé…åˆ—ã‚’è¿”ã™ã‚ˆã†ã«</div><div class='add'>+	(ary_delete_at): æŒ‡å®šã—ãŸä½ç½®ã®è¦ç´ ã‚’å‰Šé™¤ã™ã‚‹</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_call): stackæ·±ã•ãƒã‚§ãƒƒã‚¯ã‚’æ¯Žå›žã¯è¡Œã‚ãªã„ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* error.c (Warning): å®Ÿè¡Œä¸­ã®warningãŒè¡¨ç¤ºã•ã‚Œã¦ã„ãªã‹ã£ãŸ</div><div class='add'>+</div><div class='add'>+	* eval.c (compile): ä¾‹å¤–ç™ºç”Ÿã‚’åˆ†é›¢ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (f_eval): å¤‰æ•°rb_in_evalã‚’æ­£ã—ãç®¡ç†ã™ã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* ext/dbm/dbm.c (fdbm_store): æ ¼ç´ã™ã‚‹keyã‚’æ–‡å­—åˆ—ã«å¤‰æ›</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_call): ç„¡é™å†å¸°ã®ãƒã‚§ãƒƒã‚¯ã‚’å¤§åŸŸè„±å‡ºã‚’è¡Œã†C methodã«ã‚‚</div><div class='add'>+	  å¯¾å¿œã•ã›ãŸï¼Žthreadã®stackæ·±ã•ãƒã‚§ãƒƒã‚¯ãƒ«ãƒ¼ãƒãƒ³ã‚’æµç”¨ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): ç¬¬1å¼•æ•°ã®unary -/+ã®åˆ¤å®šãŒé–“é•ã£ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): unary +ã§æ•°å­—ã‚’ä½™è¨ˆã«èª­ã‚“ã§ã„ãŸ(ex. +5 -&gt; 55)</div><div class='add'>+</div><div class='add'>+Thu Jul 25 12:15:04 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): æ›–æ˜§ã§ãªã„å¼•æ•°ã«å¯¾ã—ã¦è­¦å‘Šã‚’å‡ºã—ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (iterator_p): å¼•æ•°ã§å‘¼ã‚“ã§ã‚‚æ­£ã—ã„çµæžœã‚’è¿”ã™ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: break/next/redo/retryã®ãƒ¡ã‚½ãƒƒãƒ‰åŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-calculate-indent): nestã®ãƒã‚§ãƒƒã‚¯ãƒŸã‚¹</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-parse-region): äºˆç´„èªžã®ãƒã‚§ãƒƒã‚¯ã‚’å¼·åŒ–</div><div class='add'>+</div><div class='add'>+	* parse.y (primary): unless/untilã®å¾©æ´»</div><div class='add'>+</div><div class='add'>+Tue Jul 23 18:50:10 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* array.c (Array#empty?), Hash.c (Hash#empty?), ext/dbm/dbm.c (DBM#empty?):</div><div class='add'>+	  ç©ºã®åˆ¤å®šè¿°èªž</div><div class='add'>+</div><div class='add'>+	* eval.c (f_unless): ifã®é€†ã‚’ã™ã‚‹ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿</div><div class='add'>+</div><div class='add'>+	* eval.c (f_until): whileã®é€†ã‚’ã™ã‚‹ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿</div><div class='add'>+</div><div class='add'>+	* parse.y: notã®å„ªå…ˆé †ä½ã‚’and/orã‚ˆã‚Šé«˜ã</div><div class='add'>+</div><div class='add'>+	* parse.y (expr): `!'ã‚’å¼•æ•°æ‹¬å¼§ã‚’çœç•¥ã—ãŸcallã§ã‚‚æœ‰åŠ¹ã«</div><div class='add'>+</div><div class='add'>+Mon Jul 22 10:15:38 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99-960722</div><div class='add'>+</div><div class='add'>+	* array.c (ary_print_on): OFSã®NILãƒã‚§ãƒƒã‚¯ãŒä¸å®Œå…¨</div><div class='add'>+</div><div class='add'>+	* ruby.c  (load_file): æ¨™æº–å…¥åŠ›ã‹ã‚‰ã®ã‚¹ã‚¯ãƒªãƒ—ãƒˆãŒç©ºã®æ™‚ã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* ruby.c (proc_options): -wã§ã¯å¼•æ•°ç„¡ã—ã®æ™‚ã«ã¯æ¨™æº–å…¥åŠ›ã‹ã‚‰ã‚¹ã‚¯ãƒª</div><div class='add'>+	  ãƒ—ãƒˆã‚’ã¨ã‚‹(-vã§ã¯ãŸã‚“ã«çµ‚äº†ã™ã‚‹)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* array.c (ary_compact): nilã®è¦ç´ ã‚’å–ã‚Šé™¤ããƒ¡ã‚½ãƒƒãƒ‰</div><div class='add'>+</div><div class='add'>+	* array.c (ary_nitems): nilã§ãªã„è¦ç´ ã‚’æ•°ãˆã‚‹ãƒ¡ã‚½ãƒƒãƒ‰</div><div class='add'>+</div><div class='add'>+Sun Jul 20 00:51:53 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.c (proc_options): -w optionã‚’è¿½åŠ </div><div class='add'>+</div><div class='add'>+	* parse.y: {}ãŒé–‰ã˜ã¦ã„ãªã„æ™‚ã«ã¯å±•é–‹ã—ãªã„æ–‡å­—åˆ—ã‚’</div><div class='add'>+</div><div class='add'>+Fri Jul 19 16:16:05 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99-960719</div><div class='add'>+</div><div class='add'>+	* lib/find.rb: çŸ³å¡šç‰ˆ(pruneã®æ‹¡å¼µä»˜ã)</div><div class='add'>+</div><div class='add'>+	* file.c (test_l): lstatã§èª¿ã¹ãªã„ã¨ã­ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (f_throw): ç¬¬2å¼•æ•°ã‚’çœç•¥å¯èƒ½ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (str_extend): {}ã®ãƒã‚¹ãƒˆã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Thu Jul 18 18:25:46 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99-960718</div><div class='add'>+</div><div class='add'>+	* parse.y (str_extend): æ–‡å­—åˆ—ä¸­ã®å¼å±•é–‹ã« \" ' ` / ã‚’å«ã‚€äº‹ãŒã§ã</div><div class='add'>+	  ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Jul 16 15:55:31 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-parse-region): æ­£è¦è¡¨ç¾å†…ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—</div><div class='add'>+	  ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* version 0.99-960716</div><div class='add'>+</div><div class='add'>+Fri Jul 12 10:06:19 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (f_select): å¼•æ•°ã®close check.</div><div class='add'>+</div><div class='add'>+	* ruby.c (load_file): #!è¡Œã®å¼•æ•°ãƒã‚§ãƒƒã‚¯ã‚’ç¬¬1å¼•æ•°ã«é™å®š(å®Ÿã‚’ã„ã†ã¨</div><div class='add'>+	  DOSæ”¹è¡Œå¯¾ç­–)</div><div class='add'>+</div><div class='add'>+Wed Jul 10 17:18:35 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99-960710</div><div class='add'>+</div><div class='add'>+	* time.c (time_s_timegm/time_s_timelocal): æ™‚é–“ã‚’ç”Ÿæˆã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰</div><div class='add'>+</div><div class='add'>+Mon Jun 17 15:59:20 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99-960617</div><div class='add'>+</div><div class='add'>+	* parse.y (yyerror): ã‚¨ãƒ©ãƒ¼è¡¨ç¤ºã®ç°¡ç•¥åŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Jun 12 14:11:01 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* signal.c (rb_trap_exit): trap 0ã¯threadã‚’ç”Ÿæˆã›ãšã«å‡¦ç†ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Jun  7 10:17:01 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* array.c/hash.c (indexes): é…åˆ—1å¼•æ•°ã®ãƒ‘ã‚¿ãƒ¼ãƒ³ã‚’ç„¡ãã—ãŸï¼Žé…åˆ—ã®</div><div class='add'>+	  å ´åˆã¯`*ary'ã‚’ä½¿ã£ã¦ã‚‚ã‚‰ãŠã†ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_wait_threads): main_threadãŒçµ‚äº†ã™ã‚‹å‰ã«ä»–ã®</div><div class='add'>+	  threadã‚’å¾…ã¤(å¼·åˆ¶çš„ã«ã¯çµ‚äº†ã•ã›ãªã„)ï¼Ž</div><div class='add'>+	  (ruby_run): ä»–ã®threadã‚’å¾…ã£ã¦ã„ã‚‹é–“ã«ã‚·ã‚°ãƒŠãƒ«ãŒæ¥ãŸã‚‰ï¼Œå…¨thread</div><div class='add'>+	  ã‚’å¼·åˆ¶çµ‚äº†ã•ã›ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_fail): ãƒ¡ã‚½ãƒƒãƒ‰åã‚’`$!'ã«åŸ‹ã‚è¾¼ã‚€ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_create): main_threadã®ã‚³ãƒ³ãƒ†ã‚¯ã‚¹ãƒˆãŒã‚»ãƒ¼ãƒ–ã•ã‚Œãª</div><div class='add'>+	  ã„å ´åˆãŒã‚ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* process.c (f_sleep): æ™‚é–“ã‚’æŒ‡å®šã›ãšï¼ŒthreadãŒã²ã¨ã¤ã—ã‹ãªã„çŠ¶æ³</div><div class='add'>+	  ã«ã‚‚å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_create): createå¾Œï¼Œfnã‚’å‘¼ã³å‡ºã™å‰ã«context switch</div><div class='add'>+	  ãŒèµ·ãã‚‹ã¨é•ã†contextã§fnãŒå®Ÿè¡Œã•ã‚Œã¦ã—ã¾ã†ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Jun  3 08:03:17 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* struct.c (struct_s_def): ãƒ¡ãƒ³ãƒã®æŒ‡å®šã‚’æ–‡å­—åˆ—ï¼Œã‚·ãƒ³ãƒœãƒ«(FIXNUM)</div><div class='add'>+	  åŒæ–¹ã§å¯èƒ½ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/etc/etc.c (Init_etc): æ§‹é€ ä½“ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’GCã‹ã‚‰ä¿è­·ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* error.c (rb_sys_fail): nil/FALSEã‚’å¼•æ•°ã¨ã—ã¦å—ã‘ä»˜ã‘ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu May 30 16:19:08 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_select): EINTRã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+Wed May 29 11:04:51 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (f_catch): catch/throwã‚’å®Ÿè£…ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue May 28 13:30:52 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99-960528</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_cleanup): main threadãŒçµ‚äº†ã™ã‚‹ã¨ä»–ã®threadã‚‚çµ‚äº†</div><div class='add'>+	  ã™ã‚‹ã“ã¨ã®æ˜Žç¢ºåŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* signal.c (trap): SIGINTã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®è¨­å®šãƒŸã‚¹(æœ¬å½“ã«SIG_DFLã§ã¯</div><div class='add'>+	  ã¾ãšã‹ã£ãŸ)ï¼Žrubyã§ã¯ã¡ã‚ƒã‚“ã¨ãƒãƒ³ãƒ‰ãƒ«ã—ãªã„ã¨ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_interrupt): SIGINTã¯main_threadã«ä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ã‚‹</div><div class='add'>+	  ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon May 27 15:13:31 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_status): threadã®çŠ¶æ…‹ã‚’è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰ï¼Žthreadã®çµ‚äº†</div><div class='add'>+	  ã‚’å¾…ãŸãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_value): ä¸€ç¨®ã®promiseã‚’å®Ÿè£…ã™ã‚‹ãŸã‚ã®ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_join): å¾…ã£ã¦ã„ã‚‹threadãŒä¾‹å¤–ã‚’èµ·ã“ã—ãŸæ™‚ã«ã¯ï¼Œ</div><div class='add'>+	  joinãŒãã®ä¾‹å¤–ã‚’ç™ºç”Ÿã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_create): threadã§ã®ä¾‹å¤–ã‚’propagateã—ãªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri May 24 10:47:53 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* enum.c (Init_Enumerable): `size' as alias to the `length'</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_save_context): `$@', `$!'ã‚’ã‚¹ãƒ¬ãƒƒãƒ‰æ¯Žã«ã‚»ãƒ¼ãƒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (superclass): ã‚¨ãƒ©ãƒ¼è¡¨ç¤ºã‚’ã‚ˆã‚Šè¦ªåˆ‡ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu May 23 10:38:41 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.99-960523</div><div class='add'>+</div><div class='add'>+	* eval.c (superclass): ã‚¨ãƒ©ãƒ¼æ™‚ã«ã‚¹ãƒ¼ãƒ‘ãƒ¼ã‚¯ãƒ©ã‚¹åã‚’(åˆ†ã‹ã‚Œã°)è¡¨ç¤º</div><div class='add'>+	  ã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed May 22 19:48:42 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (superclass): ã‚¹ãƒ¼ãƒ‘ãƒ¼ã‚¯ãƒ©ã‚¹ã®æŒ‡å®šå­ã‚’`:'ã‹ã‚‰`&lt;'ã«å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue May 21 09:27:59 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* lib/thread.rb: threadã‚’ã‚µãƒãƒ¼ãƒˆã™ã‚‹ã‚¯ãƒ©ã‚¹(Mutex, Queue)ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon May 20 09:39:49 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* time.c (time_cmp): æµ®å‹•å°æ•°ç‚¹æ•°ã‚‚æ‰±ãˆã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+	(time_minus): Time - TimeãŒæµ®å‹•å°æ•°ç‚¹æ•°ã‚’è¿”ã™ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri May 17 15:40:10 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* process.c (rb_proc_exec): Threadå¯¾å¿œæ™‚ã«execã®ç›´å‰ã«</div><div class='add'>+	  ITIMER_VIRTUALã‚’ãƒªã‚»ãƒƒãƒˆã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue May 14 02:12:44 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* signal.c (sighandle): SIGINTã«å¯¾ã—ã¦ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ã‚‹</div><div class='add'>+	  ã®ã‚’ã‚„ã‚ï¼Œstatus 130ã§exitã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_schedule): Threadã®ãƒã‚°ã¯ã»ã¨ã‚“ã©ã¨ã‚ŒãŸã‚ˆã†ã ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri May 10 11:21:08 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (thread_schedule): ãƒ¦ãƒ¼ã‚¶ãƒ¬ãƒ™ãƒ«Threadæ©Ÿèƒ½ï¼ŽåŠ¹çŽ‡ã¯ã¨ã‚‚ã‹ã</div><div class='add'>+	  ç§»æ¤æ€§ã¯ã‚ã‚‹ï¼Žä»Šå¾Œï¼Œthreadé–“ã®é€šä¿¡æ©Ÿèƒ½ã‚’å®Ÿè£…ã™ã‚‹äºˆå®šï¼Ž</div><div class='add'>+</div><div class='add'>+Thu May  2 21:22:31 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* time.c (time_timeval): struct timevalã‚’ç›´æŽ¥è¿”ã™ã‚ˆã†ã«(staticå¤‰æ•°</div><div class='add'>+	  ã‚’ä½¿ã‚ãªã„)ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed May  1 17:27:32 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* process.c (f_sleep): æ•´æ•°ä»¥å¤–ã®timeã‚’æŒ‡å®šã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Apr 25 08:19:15 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c (file_s_dirname): ãƒ•ã‚¡ã‚¤ãƒ«åãŒ"/"ã‚’å«ã¾ãªã„æ™‚ï¼Œ"."ã‚’è¿”ã™</div><div class='add'>+	  ã‚ˆã†ã«(GNU dirnameã®ä»•æ§˜)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* file.c (file_s_basename): ã¾ã nilã¨0ã‚’æ··åŒã—ã¦ã„ã‚‹ã‚½ãƒ¼ã‚¹ãŒæ®‹ã£ã¦</div><div class='add'>+	  ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (exprs): ã‚¨ãƒ©ãƒ¼ãƒªã‚«ãƒãƒªã‚’è¿½åŠ ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Apr 24 15:51:05 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_chop_bang): CRLFã®å ´åˆ2 bytesã‚’chop!ã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/socket/socket.c (tcp_svr_s_open): ã¾ã nilã¨0ã‚’æ··åŒã—ã¦ã„ã‚‹ã‚½ãƒ¼</div><div class='add'>+	  ã‚¹ãŒæ®‹ã£ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Apr 23 18:14:25 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* pack.c (pack_pack): "A/a"ã®ãƒã‚°ï¼Žä½™è¨ˆãªpaddingãŒå…¥ã£ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Apr 18 13:02:11 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* configure.in: ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ä¾å­˜éƒ¨ã‚’åˆ¥ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«</div><div class='add'>+	  ã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (yyerror): ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿæ™‚ã«ã‚¨ãƒ©ãƒ¼è¡Œã¨ãã®ä½ç½®ã‚’è¡¨ç¤ºã™ã‚‹ã‚ˆ</div><div class='add'>+	  ã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Apr 17 14:22:42 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* defines.h: SAFE_SIGHANDLEã‚’ç„¡ãã—ï¼Œå±é™ºãªé¸æŠžã¯ã§ããªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (io_ungetc): æ–°æ©Ÿèƒ½ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ruby.c (load_file): ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã®èª­ã¿è¾¼ã¿æ–¹å¼ãŒå¤‰ã‚ã£ãŸã®ã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (compile_file): ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã®å…¥åŠ›ã‚’ä¸€åº¦å…¨éƒ¨èª­ã¿è¾¼ã‚€ã®ã‚’</div><div class='add'>+	  æ­¢ã‚ã¦ï¼Œgetsã‚’ä½¿ã†ã“ã¨ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Apr 10 17:40:11 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.98</div><div class='add'>+</div><div class='add'>+Tue Apr  9 09:54:30 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (iter_block): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯ã®æŒ‡å®šã‚’ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—</div><div class='add'>+	  ã«é™å®šï¼Žæ–‡æ³•ã®æ˜Žç¢ºåŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): æ¡ä»¶å¼ã®æ­£è¦è¡¨ç¾ã®æ¯”è¼ƒã‚’inlineåŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): defined? ã® å®šç¾©æƒ…å ±(ç¨®åˆ¥)ã‚’æ–‡å­—åˆ—ã§è¿”ã™ï¼Ž</div><div class='add'>+</div><div class='add'>+	* node.h: NODE_BEGIN -&gt; NODE_RESCUE, NODE_ENSUREã«åˆ†é›¢ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): option -n/-pã®ãƒˆãƒƒãƒ—ãƒ¬ãƒ™ãƒ«ãƒ«ãƒ¼ãƒ—ã®inlineå±•é–‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (cond0): æ¡ä»¶å¼ä¸­ã®æ–‡å­—åˆ—ã¯æ¯”è¼ƒã®å¯¾è±¡ã¨ã—ãªã„</div><div class='add'>+</div><div class='add'>+Wed Mar 27 12:33:54 1996  Tairo Nomura  &lt;tairo@hucom.tp.titech.ac.jp&gt;</div><div class='add'>+</div><div class='add'>+	* defines.h: NeXTå¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Wed Mar 27 10:02:44 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y: äºˆç´„èªžã®å¤‰æ›´ continue -&gt; next</div><div class='add'>+</div><div class='add'>+Mon Mar 25 07:34:37 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (parse_regx): o(once)ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’è¿½åŠ ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Mar 22 14:25:35 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.97d</div><div class='add'>+</div><div class='add'>+	* eval.c (dyna_var_defined): å‹•çš„ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã®å®šç¾©ãƒã‚§ãƒƒã‚¯ç”¨ãƒ«ãƒ¼</div><div class='add'>+	  ãƒãƒ³ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (gettable): eval()ã®ä¸­ã§ã®å‹•çš„ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°(æ—¢ã«å€¤ã‚’æŒã£</div><div class='add'>+	  ã¦ã„ã‚‹ã‚‚ã®)ã®æ¤œå‡ºã«å¤±æ•—ã—ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Mar 19 10:46:47 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.97c</div><div class='add'>+</div><div class='add'>+	* re.c (reg_s_new): compileæ™‚ã«segmentation faultï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (str_extend): ã„ã¤ã‚‚evalã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Mar 13 11:00:42 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (str_extend): æ–‡å­—åˆ—ä¸­ã®å¼å±•é–‹ã®ä¸å‚™ã‚’ç„¡ãã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: ä¸‹æ‰‹ãªã‚¨ãƒ©ãƒ¼ãƒªã‚«ãƒãƒªã‚’å¤–ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Mar 12 12:30:20 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rescue): é–“é•ã£ã¦ensureã§ã‚‚ä¾‹å¤–ã‚’æ•æ‰ã—ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Mar  6 12:11:03 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (var_extend): å¤‰æ•°å±•é–‹"#{}"ã§ï¼Œä»»æ„ã®å¼ã‚’æ›¸ã‘ã‚‹ã‚ˆã†ã«ã—</div><div class='add'>+	  ãŸï¼Œã“ã‚Œã§ã€Œå¤‰æ•°ã€å±•é–‹ã§ã¯ç„¡ããªã£ã¡ã‚ƒã£ãŸãªã‚ï¼Ž</div><div class='add'>+</div><div class='add'>+	* regex.c (init_syntax_once): `_'ã‚’wordã«è¿½åŠ ï¼Ž</div><div class='add'>+</div><div class='add'>+	* regex.c (re_compile_pattern): `\w',`\W'ã®åˆ¤å®šã‚’syntax tableã‚’ä½¿</div><div class='add'>+	  ã†ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Feb 27 10:15:32 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* object.c (obj_inspect): è¡¨ç¤ºã™ã‚‹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ãŒç„¡ã„æ™‚ã«ã¯ï¼Œ</div><div class='add'>+	  to_sã‚’ä½¿ã†ï¼Ž</div><div class='add'>+</div><div class='add'>+	* configure.in: dlnã®æ¤œå‡ºã‚’è‡ªå‹•çš„ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Feb 26 19:55:33 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.c (readin): read(2)ã§ä¸€åº¦ã«ãƒ•ã‚¡ã‚¤ãƒ«ãŒèª­ã¿è¾¼ã‚ãªã„å ´åˆã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Feb 24 14:47:18 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.97b</div><div class='add'>+</div><div class='add'>+Fri Feb 23 11:26:02 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* class.c (rb_define_module): Cè¨€èªžã§å®šç¾©ã•ã‚ŒãŸãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®PATHã®</div><div class='add'>+	  è¨­å®šå¿˜ã‚Œï¼Žæ–‡å­—åˆ—åŒ–ã§core dumpï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (mod_include): æˆ»ã‚Šå€¤ã‚’nilã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* version 0.97a</div><div class='add'>+</div><div class='add'>+Thu Feb 22 21:03:42 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* array.c (ary_times): ã€Œé…åˆ—*æ–‡å­—åˆ—ã€ãŒjoinã¨åŒã˜åƒãã‚’ã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Feb 21 11:18:09 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* configure.in : fileCountã‚’cacheï¼Ž</div><div class='add'>+</div><div class='add'>+	* configure.in : Linuxã§ELFç’°å¢ƒã‚’è‡ªå‹•çš„ã«æ¤œå‡ºã§ãã‚‹ã‚ˆã†ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Feb 20 11:18:09 1996  Mitsuhide Satou  &lt;mit-sato@aries.bekkoame.or.jp&gt;</div><div class='add'>+</div><div class='add'>+	* FreeBSD dynamic linkå¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Feb 16 08:50:01 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* object.c (obj_inspect): ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚’æŒãŸãªã„ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚‚</div><div class='add'>+	  æ­£ã—ãè¡¨ç¤ºã•ã‚Œã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Feb 14 16:56:44 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): æ¡ä»¶å¼ã®`2..2'ãªã©å·¦è¾ºæˆç«‹ç›´å¾Œã«å³è¾ºãŒæˆç«‹ã™ã‚‹</div><div class='add'>+	  ãƒ‘ã‚¿ãƒ¼ãƒ³ã«ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Feb 13 18:22:22 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.97</div><div class='add'>+</div><div class='add'>+Fri Feb  9 21:32:55 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* lib/tkscrollbox.rb: ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã§tclã®è¨­å®šã‚’è¡Œã„ï¼Œruby&lt;-&gt;wishã®ä¸</div><div class='add'>+	  è¦ãªé€šä¿¡ã‚’ç„¡ãã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Feb  7 10:26:52 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_aref): indexã‚’unsigned intã§ã¨ã£ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c (str_aref): ç¯„å›²å¤–ã®indexã«å¯¾ã—ã¦nilã‚’è¿”ã™ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (special_local_set): `$_'ãŒå®£è¨€ç„¡ã—ã«ä½¿ã‚ã‚ŒãŸå ´åˆã«å¯¾å¿œï¼Ž</div><div class='add'>+	  é–¢æ•°ã‚’variable.cã‹ã‚‰ç§»å‹•ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub): ç½®æ›é–‹å§‹ä½ç½®ãŒé–“é•ã£ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Feb  6 16:17:31 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-parse-region): ã‚³ãƒ¡ãƒ³ãƒˆã®èª­ã¿é£›ã°ã—ã®</div><div class='add'>+	  ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Feb  2 18:35:28 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* variable.c (lastline_get): `$_'ã‚’`$~'ã¨åŒã˜ã‚ˆã†ã«SCOPEãƒ­ãƒ¼ã‚«ãƒ«ãª</div><div class='add'>+	  å¤‰æ•°ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Feb  1 14:14:07 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c: statã®cacheã‚’ã‚„ã‚ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Jan 31 07:13:08 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (proc_s_new): procã®ä¸­ã§yieldã‚’å‘¼ã°ã‚ŒãŸæ™‚ã«core dumpã—ã¦</div><div class='add'>+	  ã„ãŸï¼Žã¨ã‚Šã‚ãˆãšä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_class2path): singleton classã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/etc/etc.c (Init_etc): struct_defineã®ã‚¿ãƒ¼ãƒŸãƒãƒ¼ã‚¿ãŒnilã ã£ãŸ</div><div class='add'>+	  (0ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c: TRUE/FALSEã‚’åãå‡ºã›ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_get_method_body): ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®aliaså¯¾å¿œï¼Œã„ã¾ã¾ã§ã¯</div><div class='add'>+	  aliasã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«å…¥ã£ã¦ã„ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Jan 30 09:55:13 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): NODE_BLOCK - tail recursive(ã¨ã„ã†ã»ã©ã§ã‚‚ãªã„</div><div class='add'>+	  ãŒ)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (io_pipe): pipe(2)ã‚’å®Ÿè£…ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): Qselfã‚’ãªãã—ãŸï¼Žthreadå¯¾å¿œã¸ã®ç¬¬ä¸€æ­©ï¼Žå…ˆã¯é </div><div class='add'>+	  ã„ãŒâ€¦ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (proc_call): procã®ä¸­ã§ã®returnã¯procã®çµ‚äº†ã‚’æ„å‘³ã™ã‚‹ã‚ˆã†</div><div class='add'>+	  ã«ï¼ŽãŸã ã—ï¼Œprocã‹ã‚‰ã®yieldã®ä¸­ã§ã®returnã¯ä¾‹å¤–ã‚’ç™ºç”Ÿã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Jan 24 11:33:48 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.96a</div><div class='add'>+</div><div class='add'>+	* dir.c (dir_each): `$_'ã®å€¤ã‚’å¤‰æ›´ã™ã‚‹ã®ã‚’ã‚„ã‚ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (f_readlines): nilã¨FALSEã®åˆ†é›¢ã®ã‚ãŠã‚Šã§ç„¡é™ãƒ«ãƒ¼ãƒ—ã«è½ã¡ã¦</div><div class='add'>+	  ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* ruby.c (ruby_options): $0ã®è¨­å®šãƒŸã‚¹ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Jan 23 15:28:21 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): ``ã¯æ–‡å­—åˆ—ã‚’å¼•æ•°ã¨ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰(`)å‘¼ã³å‡ºã—ã®ã‚·</div><div class='add'>+	  ãƒ³ã‚¿ãƒƒã‚¯ã‚¹ã‚·ãƒ¥ã‚¬ãƒ¼ã§ã‚ã‚‹ã¨ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* ruby.c (addpath): `-I'ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒã€Œå‰ã«ã€è¿½åŠ ã•ã‚Œ</div><div class='add'>+	  ã‚‹ã‚ˆã†ã«å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Jan 19 11:23:12 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* dln.c (load_1): N_INDRå¯¾å¿œ(å‡ºæ¥ãŸã‚ˆã†ãªæ°—ãŒã™ã‚‹)ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Jan 18 18:14:20 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.texi: FALSEã¨nilã®åˆ†é›¢ã‚’åæ˜ ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Jan 16 17:39:23 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.96 - ã¨ã‚Šã‚ãˆãšnilã¨FALSEã‚’åŒºåˆ¥ã™ã‚‹ç‰ˆ</div><div class='add'>+</div><div class='add'>+Wed Jan 10 15:31:48 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* re.c (reg_match): ãƒžãƒƒãƒã—ãªã‹ã£ãŸæ™‚ã®æˆ»ã‚Šå€¤ã¯FALSEï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c (rb_equal): `0 == nil'ãŒTRUEã«ãªã‚‹ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Jan  9 00:44:58 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* nilã¨FALSEãŒåˆ†é›¢å¯èƒ½ã«å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* nilã¨FALSEã¨0ã®åŒºåˆ¥ã‚’åŽ³å¯†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* struct.c (struct_new): å¼•æ•°ã‚’0ã§çµ‚ã‚‹å¿…è¦ãŒç„¡ããªã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c (inspect_i): ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®ãƒã‚§ãƒƒã‚¯ã®ãƒã‚°(Fixnumã§core</div><div class='add'>+	  dumpã—ã¦ã„ãŸ)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* range.c (range_to_s): Rangeã®è¡¨ç¤ºã‚’æ”¹å–„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c (true_inspect): TRUEã®è¡¨ç¤ºã‚’`TRUE'ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Jan  8 15:02:33 1996  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* numeric.c (fix_mul): divide by zero errorãŒç™ºç”Ÿã—ãŸ(ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼</div><div class='add'>+	  æ¤œå‡ºã®ãƒã‚°)</div><div class='add'>+</div><div class='add'>+	* texinfo.texã‚’ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã«å«ã‚ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Sun Dec 31 00:08:49 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): `::'ã§ã¯ï¼Œãã®ã‚¯ãƒ©ã‚¹ã§å®šç¾©ã•ã‚ŒãŸå®šæ•°ã‚’å‚ç…§ã™ã‚‹</div><div class='add'>+	  ã‚ˆã†ã«å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c (Init_String): eachã‚’each_lineã«æˆ»ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Dec 28 12:31:55 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): caseã®æ¼”ç®—å­ã‚’`=~'ã‹ã‚‰`==='ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_const_set): ã‚¯ãƒ©ã‚¹å®šæ•°ã®å†å®šç¾©ã‚’è¨±ã™(åŒã˜ã‚¯ãƒ©ã‚¹ã§</div><div class='add'>+	  ã¯ä¸å¯)ï¼Žè­¦å‘Šã¯å‡ºã™ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Dec 27 13:27:52 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.95c</div><div class='add'>+</div><div class='add'>+	* ext/tkutil/tkutil.c: wishãŒã‚ã£ã¦ã‚‚ãªãã¦ã‚‚ä¸€å¿œã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã ã‘ã¯</div><div class='add'>+	  ã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb: ç’°å¢ƒå¤‰æ•°PATHã‹ã‚‰{wish|wish4.0}ã‚’æŽ¢ã™ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Dec 26 01:03:42 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-parse-region): æ­£è¦è¡¨ç¾ã®æ¤œå‡ºå¼·åŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* numeric.c (fix_mul): ä¹—ç®—ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼æ¤œå‡ºã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã®ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in: ./install-shã‚’ä½¿ã†å ´åˆã®PATHã‚’èª¿æ•´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* Makefile.in (install): lib/*.rbã‚’ä¸€ã¤ãšã¤ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (io_each_line): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã®æˆ»ã‚Šå€¤ã‚’nilã§çµ±ä¸€ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Dec 22 10:34:32 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.95b</div><div class='add'>+</div><div class='add'>+	* variable.c (f_untrace_var): ç¬¬2å¼•æ•°ã‚’æŒ‡å®šã™ã‚‹ã¨ç‰¹å®šã®traceã‚’å‰Šé™¤</div><div class='add'>+	  ã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c (f_trace_var): ç¬¬2å¼•æ•°ãŒnilã®æ™‚ï¼Œtraceã‚’å‰Šé™¤ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb (file_readable/file_writable): ç¬¬2å¼•æ•°ã‚’nilã«ã™ã‚‹ã“ã¨</div><div class='add'>+	  ã«ã‚ˆã‚‹event handlerã®å‰Šé™¤ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (variable): ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã«`__FILE__'ã¨`__LINE__'ãŒæ®‹ã£ã¦</div><div class='add'>+	  ã„ãŸï¼Ž`caller(0)'ã§ä»£ç”¨ã—ãŸã¯ãšã ã£ãŸã®ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (f_eval): $!ã®ãƒªã‚»ãƒƒãƒˆï¼Ž</div><div class='add'>+</div><div class='add'>+	* error.c (err_sprintf): å‹æ‰‹ã«"\n"ã‚’ä»˜åŠ ã™ã‚‹ã®ã‚’æ­¢ã‚ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (f_arglist): å¼•æ•°ãƒªã‚¹ãƒˆç›´å¾Œã®if/whileã®èª­ã¿é–“é•ã„ï¼Ž</div><div class='add'>+	  lex_stateã®å€¤ãŒè¨­å®šã•ã‚Œã¦ã„ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Dec 21 00:56:57 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.95a - ^^;;;</div><div class='add'>+</div><div class='add'>+	* lib/tkscrollbox.rb: ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã«å…¥ã£ã¦ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* configure.in: FILE structureã®ãƒã‚§ãƒƒã‚¯ã«ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* Makefile.in (clean): extä»¥ä¸‹ã‚’installã—ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/socket/extconf.rb: Solarisã«ãŠã‘ã‚‹-lnlsã®ãƒã‚§ãƒƒã‚¯ï¼Ž</div><div class='add'>+</div><div class='add'>+	* array.c (beg_len): ãƒã‚°ãŒã‚ã£ãŸâ€¦ï¼Žæ‚²ã—ã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* version 0.95 - fj.sourcesã«</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): rescueã®ãƒ­ã‚¸ãƒƒã‚¯ã‚’rb_rescue()ã«ä¸€å…ƒåŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Dec 20 19:30:58 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* Makefile.in: ä¸è¦ãªã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã®å›žé¿(ã‚ˆã‚Šå®Œå…¨ã«)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* class.c (singleton_class_new): `single'-&gt;`singleton'</div><div class='add'>+</div><div class='add'>+Tue Dec 19 07:14:33 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* io.c (closed?): IOãŒcloseã•ã‚Œã¦ã„ã‚‹ã‹ã©ã†ã‹ã‚’çŸ¥ã‚‹è¿°èªžï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (primary): ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã®å¼•æ•°ã®lex_stateãŒä¸é©åˆ‡ï¼Ž</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb: tcl-&gt;rubyã®å¤‰æ›é–¢æ•°ã®ç”¨æ„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (install): installã®2é‡ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã®å›žé¿ï¼Ž</div><div class='add'>+</div><div class='add'>+	* array.c (range_beg_len): rangeæŒ‡å®šã®ä¸é©åˆ‡ãªã‚¨ãƒ©ãƒ¼ã‚’è¨‚æ­£ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c (str_aref): rangeæŒ‡å®šã®ãƒã‚°ã‚’å‰Šé™¤ï¼Ž</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb (tk_split_list): Tclã®ãƒªã‚¹ãƒˆã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Dec 18 09:58:12 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.94</div><div class='add'>+</div><div class='add'>+	* dln.c (dln_load): HPå¯¾å¿œ(æœªç¢ºèª)</div><div class='add'>+</div><div class='add'>+	* eval.c (Init_Proc): Blockã‚’Procã«æ”¹åï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Dec 16 13:46:14 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): retryã§ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã®å†å®Ÿè¡ŒãŒã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Dec 15 17:14:30 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c: proc:lambdaã®è¦ªã—ã¿ã‚„ã™ã„åˆ¥å</div><div class='add'>+</div><div class='add'>+Thu Dec 14 17:21:55 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (dyna_var_asgn): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯å†…ã§æœ€åˆã«åˆæœŸåŒ–ã•ã‚ŒãŸ</div><div class='add'>+	  ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã®æœ‰åŠ¹ç¯„å›²ã‚’ãã®ãƒ–ãƒ­ãƒƒã‚¯å†…ã«é™å®šï¼Žã“ã‚Œã§lambdaã¨å‘¼ã¹</div><div class='add'>+	  ãªã„ã“ã¨ã¯ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Dec 13 02:30:58 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* gc.c: autoloadã®ãƒžãƒ¼ã‚¯ãƒŸã‚¹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb: wishã‹ã‚‰ã®è¤‡æ•°è¡Œã®æˆ»ã‚Šå€¤ã«å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* lib/tkcomposite.rb: è¤‡åˆwidget</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_class2path): ICLASSã«å¯¾å¿œã—ã¦ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (ruby_run): exit(0)ã®ãƒã‚°</div><div class='add'>+</div><div class='add'>+Sat Dec  9 01:21:24 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c (dumps|load): æ–‡å­—åˆ—ã«å¯¾ã™ã‚‹å…¥å‡ºåŠ›ã‚’å¯èƒ½ã«</div><div class='add'>+	  ã—ãŸ(ãŸã ã—å®Ÿã¯ãƒ•ã‚¡ã‚¤ãƒ«çµŒç”±ãªã®ã )ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Dec  8 18:29:11 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c: ã‚·ãƒ³ãƒœãƒ«ã‚’ä¸€åº¦ã ã‘åˆæœŸåŒ–ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Dec  7 07:58:50 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): ç¬¬1å¼•æ•°ã®æ­£è¦è¡¨ç¾ã®èªè­˜ã«ã‚¨ãƒ©ãƒ¼ãŒã‚ã£ãŸï¼ŽåŒæ™‚ã«</div><div class='add'>+	  çŠ¶æ…‹æ•°ã‚’æ¸›ã‚‰ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub): ç½®æ›ã§ã‚¹ã‚­ãƒƒãƒ—å¹…ãŒå¤§ãã™ãŽãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Dec  6 15:14:23 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub_method): sub/gsub(!ãªã—)ã¯ç½®æ›ãŒè¡Œãªã‚ã‚Œãªã‹ã£</div><div class='add'>+	  ãŸæ™‚ï¼Œç½®æ›å‰ã®æ–‡å­—åˆ—ã‚’è¿”ã™ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Dec  5 00:55:15 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): æ‹¬å¼§ã‚’çœç•¥ã—ãŸæ™‚ã®å¼•æ•°å±•é–‹ã®`*'ã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (ruby_run): EXITãƒãƒ³ãƒ‰ãƒ©å†…ã§ã®ä¾‹å¤–ã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* bignum.c (big_cmp): Bignumã¨Fixnumã®æ¯”è¼ƒã§è½ã¡ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Dec  4 14:21:18 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (call_op): ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«æ™‚ã®å®šæ•°å¼ã®å±•é–‹ã‚’ã‚„ã‚ãŸï¼ŽåŠ´å¤šãã—</div><div class='add'>+	  ã¦ç›Šå°‘ãªã„ã¨åˆ¤æ–­ã—ãŸã®ã§ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Nov 30 01:35:15 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb: {Radio,Check}Buttonã®variableã®å®Ÿè£…ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_yield_0): Block.callãŒãƒã‚¹ãƒˆã—ãŸæ™‚ã®ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (f_select): å¸¸ã«é…åˆ—3ã¤ã‚’ãµãã‚€é…åˆ—ã‚’è¿”ã™ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb: fileeventã‚’rubyå´ã§å®Ÿè£…ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Nov 29 17:53:23 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_ivar_get): selfã‚’å¸¸ã«æŒ‡å®šã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Nov 14 00:07:29 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb: Tk4.0å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+Mon Nov 13 16:23:32 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.93</div><div class='add'>+</div><div class='add'>+Thu Nov  9 23:26:01 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* gc.c (gc_mark): ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®Mixinã®ãƒžãƒ¼ã‚¯å¿˜ã‚Œï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (f_arglist): ãƒ¡ã‚½ãƒƒãƒ‰å®šç¾©ã®å¼•æ•°ã‚’æ‹¬å¼§ã§æ‹¬ã‚‰ãªãã¦ã‚‚è‰¯ã„</div><div class='add'>+	  ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Nov  8 00:17:51 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_yield_0): æœªåˆæœŸåŒ–ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ãŒã‚ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): pendig signalã®ãƒã‚§ãƒƒã‚¯ã‚’evalå®Ÿè¡Œå¾Œã«è¡Œã†ã‚ˆã†</div><div class='add'>+	  ã«ã—ãŸï¼Žã§ãªã„ã¨ã‚·ã‚°ãƒŠãƒ«ã®ç™ºç”Ÿã¨æ¤œå‡ºãŒé ãé›¢ã‚Œã¦ã—ã¾ã†äº‹ãŒã‚ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: classæ–‡ã®superclasséƒ¨ã‚’å®šæ•°ã‹ã‚‰å¼ã«æ‹¡å¼µã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb: Tkã®ã»ã¼å…¨ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚¯ãƒ©ã‚¹ã«å¯¾å¿œï¼Žã‚­ãƒ£ãƒ³ãƒã‚¹ã¨ãƒ†ã‚­ã‚¹</div><div class='add'>+	  ãƒˆä¸Šã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæ®‹ã£ã¦ã„ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Nov  7 08:18:37 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* signal.c (trap): ãƒ–ãƒ­ãƒƒã‚¯ã‚’æŒ‡å®šã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Nov  6 16:44:00 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (f_caller): å‘¼å‡ºå…ƒã®æƒ…å ±ã‚’å¾—ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/tkutil/tkutil.c: wishã®stderrå‡ºåŠ›ã‚’ç›£è¦–ã™ã‚‹ã“ã¨ã§ï¼Œã‚¨ãƒ©ãƒ¼å‡¦</div><div class='add'>+	  ç†ã‚’è¡Œã†ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/tkutil/tkutil.c: wishã¨ã®é€šä¿¡éƒ¨ã‚’Cã§è¨˜è¿°ï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Nov  4 01:12:59 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-calculate-indent): ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã®è¨ˆç®—ã‚’</div><div class='add'>+	  ã‚‚ã†å°‘ã—ã‚¹ãƒžãƒ¼ãƒˆã«ã—ãŸ(æ­£è¦è¡¨ç¾ã®ãƒã‚§ãƒƒã‚¯ï¼Œç¶™ç¶šè¡Œã®ãƒã‚§ãƒƒã‚¯)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_call): ç„¡é™å†å¸°ã‚’é¿ã‘ã‚‹ãŸã‚ï¼Œé–¢æ•°ã®ãƒã‚¹ãƒˆãƒ¬ãƒ™ãƒ«ã®åˆ¶é™</div><div class='add'>+	  ã‚’è¡Œãªã†ï¼Ž</div><div class='add'>+</div><div class='add'>+	* lib/tk.rb: Tkã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ï¼Žã¾ã ä¸å®Œå…¨ã ãŒï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_yield_0): ç©ºã®Blockã®ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el (ruby-calculate-indent): è¡Œæœ«ã®æ¼”ç®—å­ã«ã‚ˆã‚‹</div><div class='add'>+	  è¡Œç¶™ç¶šã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Nov  3 12:56:21 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_call): æœ¬ä½“ãŒç©ºã®é–¢æ•°ã®å®Ÿè¡Œã«ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (var_extend): æ–‡å­—åˆ—ã®æœ«å°¾ã®å¤‰æ•°å±•é–‹ã®ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_gvar_set): traceã®è©•ä¾¡æ™‚ã«ã«å¤‰æ•°å€¤ã‚’ä¸Žãˆã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (f_require): ruby scriptã®requireã«bugï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_const_get): ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®includeå¯¾ç­–ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Oct 19 13:56:06 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* dln.c (dln_load): HPå¯¾å¿œã§ã®typo.</div><div class='add'>+</div><div class='add'>+Wed Oct 18 17:39:39 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.92</div><div class='add'>+</div><div class='add'>+	* object.c (krn_type): ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®å‹•çš„ãªåž‹ã‚’è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Oct 17 00:48:18 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.c (proc_options): -X ã‚ªãƒ—ã‚·ãƒ§ãƒ³ï¼Žchdirã ã‘ã‚’è¡Œã†ï¼Ž</div><div class='add'>+</div><div class='add'>+	* re.c (reg_search): æ¼¢å­—ã‚³ãƒ¼ãƒ‰ã‚’é€”ä¸­ã§å¤‰æ›´ã§ãã‚‹ã‚ˆã†ã«ï¼Žã‚³ãƒ³ãƒ‘ã‚¤</div><div class='add'>+	  ãƒ«æ™‚ã®ã‚³ãƒ¼ãƒ‰ãŒå¤‰æ›´ã•ã‚ŒãŸæ™‚ã«ã¯ãƒžãƒƒãƒã®ç›´å‰ã«æ­£è¦è¡¨ç¾ã®å†ã‚³ãƒ³ãƒ‘ã‚¤</div><div class='add'>+	  ãƒ«ã‚’è¡Œã†ï¼Žå®šæ•°KCODEã‹ã‚‰å¤‰æ•°$KCODEã¸ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: ()ã®ãªã‹ã«compexprã‚’è¨±ã™ï¼Ž</div><div class='add'>+</div><div class='add'>+	* re.c (reg_search): ãƒ¡ãƒ¢ãƒªãƒªãƒ¼ã‚¯ã‚’ç›´ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Oct 13 13:19:19 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (str_sub): æ–‡å­—åˆ—ç½®æ›ã«ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c (str_strip_bang): æ–‡å­—åˆ—ã®å¾Œã‚ã®é•·ã•ã®èª¿æ•´ãŒè¡Œã‚ã‚Œã¦ã„</div><div class='add'>+	  ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* re.c (reg_search): $&amp;, $1...ã¯ãƒ­ãƒ¼ã‚«ãƒ«ã«æŸç¸›ã™ã‚‹ã‚ˆã†ã«ãªã£ãŸï¼Žå‘¼</div><div class='add'>+	  ã³å‡ºã—ãŸãƒ¡ã‚½ãƒƒãƒ‰ã§ã®ãƒžãƒƒãƒã¯ç¾ã‚¹ã‚³ãƒ¼ãƒ—ã®$&amp;ãªã©ã®å€¤ã«å½±éŸ¿ã—ãªã„ï¼Ž</div><div class='add'>+	  ãƒžãƒƒãƒã®æƒ…å ±ã‚’ã‚¹ã‚³ãƒ¼ãƒ—å¤–ã§å¾—ãŸã„ã¨ãã«ã¯$~ã‚’ä½¿ã£ã¦æŸç¸›æƒ…å ±ã‚’æŒã¡</div><div class='add'>+	  å‡ºã™å¿…è¦ãŒã‚ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Oct 12 00:33:33 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* re.c (reg_search): String:split, String:indexã§ã¯$&amp;, $1...ãŒå¤‰åŒ–</div><div class='add'>+	  ã—ãªã„ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (rb_str_setter): setterã®ä»•æ§˜ãŒå¤‰æ›´ã«ãªã£ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c (f_trace_var): ç¬¬2å¼•æ•°ã‚’çœç•¥ã—ã¦ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã¹</div><div class='add'>+	  ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Oct 11 11:50:59 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.91</div><div class='add'>+</div><div class='add'>+	* variable.c (var_setter): å¼•æ•°ãŒé–“é•ã£ã¦ã„ãŸï¼Žè‡´å‘½çš„ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (pipe_open): $stderrã®å€¤ãŒå¤‰æ›´ã•ã‚Œã¦ã„ã‚‹æ™‚ã«ã¯ãã¡ã‚‰ã‚’</div><div class='add'>+	  å­ãƒ—ãƒ­ã‚»ã‚¹ã®stderrã«è¨­å®šã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Oct  9 13:06:33 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* object.c (mod_to_s): ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«å†…ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯`::'ã‚’ä½¿ã£ãŸè¡¨ç¾</div><div class='add'>+	  ã§è¡¨ç¤ºã•ã‚Œã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_gvar_set): ä»£å…¥ã«ã‚ˆã‚‹ãƒ«ãƒ¼ãƒ—ãŒç™ºç”Ÿã—ãªã„ã‚ˆã†ã«ï¼Œ</div><div class='add'>+	  traceå†…ã§ã®ä»£å…¥ã§ã¯traceã‚’è©•ä¾¡ã—ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* struct.c (struct_equal): structã®equalåˆ¤å®šã«ã‚¯ãƒ©ã‚¹ã®ä¸€è‡´ã‚’å«ã‚ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Oct  7 00:18:32 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): defined?ã®æ©Ÿèƒ½ã‚’æ‹¡å¼µ(yieldã®ãƒã‚§ãƒƒã‚¯ï¼Œsuperã®</div><div class='add'>+	  å­˜åœ¨ãªã©)ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Oct  6 12:06:47 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.90</div><div class='add'>+</div><div class='add'>+	* st.c (st_foreach): è¦ç´ ã‚’å‰Šé™¤ã—ãŸæ™‚ã«è¦ç´ æ•°ãŒå¤‰åŒ–ã—ã¦ã„ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* hash.c (hash_values): ãƒã‚°ä¿®æ­£ï¼Žkeysã‚’è¿”ã—ã¦ã„ãŸâ€¦ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (call_op): defined? ã®å¼•æ•°ã§ã¯å®šæ•°ã®ç•³ã¿è¾¼ã¿ã‚’è¡Œã‚ãªã„</div><div class='add'>+	  (ãƒã‚§ãƒƒã‚¯ã™ã‚‹å‰ã«ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã‚¨ãƒ©ãƒ¼ã«ãªã£ã¦ã¯å›°ã‚‹)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ã‚¹ã‚³ãƒ¼ãƒ—ç”Ÿæˆã®ä¸€éƒ¨è¦‹ç›´ã—ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Oct  5 00:29:43 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* é–¢æ•°ã¨ã‚¯ãƒ©ã‚¹ã®å‘½åè¦å‰‡ã‚’å¤‰æ›´ã—ãŸï¼Žé–¢æ•°åï¼Œå¤‰æ•°åã®å…¨é¢æ›¸ãæ›ãˆï¼Ž</div><div class='add'>+</div><div class='add'>+	* gc.c (looks_pointerp): ãƒ’ãƒ¼ãƒ—ãƒã‚§ãƒƒã‚¯ã®é«˜é€ŸåŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* struct.c (Fstruct_aset): æ§‹é€ ä½“ã«å¯¾ã™ã‚‹`[]='ï¼Ž</div><div class='add'>+	(struct_set): æ§‹é€ ä½“ãƒ¡ãƒ³ãƒã«å¯¾ã™ã‚‹ä»£å…¥ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Oct  4 09:54:07 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.89</div><div class='add'>+</div><div class='add'>+	* eval.c (Frequire): ãƒ€ã‚¤ãƒŠãƒŸãƒƒã‚¯ãƒ­ãƒ¼ãƒ‰ã®ã‚¨ãƒ©ãƒ¼ãƒã‚§ãƒƒã‚¯ã‚’åŽ³ã—ãï¼Ž</div><div class='add'>+</div><div class='add'>+	* struct.c: structã®æ§‹é€ ã‚’å®Œå…¨ã«æ›¸ãæ›ãˆãŸï¼Žä»¥å‰ã¯é †åºä»˜ãã®</div><div class='add'>+	  id-&gt;valueã®é€£æƒ³é…åˆ—ã§ã‚ã£ãŸãŒï¼Œä»Šåº¦ã¯æ§‹é€ ä½“æ¯Žã«æ–°ã—ã„ã‚¯ãƒ©ã‚¹ã‚’ç”Ÿ</div><div class='add'>+	  æˆã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: `::'ã®æ„å‘³ã‚’Assocã®ç”Ÿæˆã‹ã‚‰ã‚¯ãƒ©ã‚¹(ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«)å†…ã®å®šæ•°ã‚¢</div><div class='add'>+	  ã‚¯ã‚»ã‚¹ã¸å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* assoc.c: ãªãã™ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Oct  3 13:31:08 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* variable.c (Ftrace_var): trace_var, å¤§åŸŸå¤‰æ•°ã¸ã®æ›¸ãè¾¼ã¿hookã‚’è¨­</div><div class='add'>+	  å®šã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c: global_entryã®æ§‹æˆã‚’æ›¸ãæ›ãˆãŸï¼Žã“ã‚Œã§trace_varã‚’å®Ÿ</div><div class='add'>+	  è£…ã§ãã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* file.c (Ffile_stat): "&amp;"ã§ç›´å‰ã®fstatã®çµæžœã‚‚å‚ç…§ã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Sep 29 14:15:13 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.88</div><div class='add'>+</div><div class='add'>+	* dln.c (dln_load): AIXã¨HPã«å¯¾å¿œã—ãŸã‚³ãƒ¼ãƒ‰ã‚’å…¥ã‚ŒãŸ(å‹•ä½œã¯æœªç¢ºèª)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in: å¿…è¦ã«å¿œã˜ã¦ï¼Œå®šæ•°EXTLIBã‚’å®šç¾©ã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* dln.c (dln_load): dlnç‹¬ç«‹ã«æ›¸ãæ›ãˆã‚‹ï¼Žå°†æ¥ã®æ‹¡å¼µç”¨ï¼Ž</div><div class='add'>+	(load_1): dln_a_outã«ãŠã„ã¦ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã§ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã‚’æ˜Žç¤ºçš„ã«ãƒ­ãƒ¼</div><div class='add'>+	ãƒ‰ã™ã‚‹å¿…è¦ãŒãªã„ã‚ˆã†ã«å¤‰æ›´ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Sep 28 13:31:37 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/ruby-mode.el: ã‚‚ã£ã¨ã¾ã—ãªhilit19å¯¾å¿œ(æ­£è¦è¡¨ç¾)ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Sep 27 04:12:44 1995  Takahasi Mamoru  &lt;taka@soum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/test.rb: echoã§-nã‚’ä½¿ã‚ãªã„ã‚ˆã†ã«(SysVå¯¾ç­–)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in: sub -&gt; sub!</div><div class='add'>+</div><div class='add'>+Tue Sep 26 19:12:42 1995  Yasuo OHBA  &lt;jammy@csg.mes.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* dln.c (dln_find_1): `.', `..'ã‹ã‚‰å§‹ã¾ã‚‹ãƒ‘ã‚¹ã«å¯¾å¿œã—ãŸ.</div><div class='add'>+</div><div class='add'>+Mon Sep 25 12:33:03 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.87</div><div class='add'>+</div><div class='add'>+Sat Sep 23 10:00:18 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (Fmod_modfunc): ãƒ¡ã‚½ãƒƒãƒ‰ã‚’privateã«ã—ï¼ŒåŒæ™‚ã«ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰</div><div class='add'>+	  ã‚‚å®šç¾©ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ï¼Žãƒ‘ãƒƒã‚±ãƒ¼ã‚¸çš„ä½¿ã„æ–¹ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ç”¨ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Sep 22 11:02:44 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* lib/find.rb: findã‚’æä¾›ã™ã‚‹ãƒ©ã‚¤ãƒ–ãƒ©ãƒª</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_define_variable): hookã®è¨­å®šã‚’åˆ†é›¢ï¼Ž</div><div class='add'>+	(add_hook): 1å¤‰æ•°ã«å¯¾ã—ã¦è¤‡æ•°ã®hookã‚’è¨­å®šã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Sep 21 00:22:11 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (Fstr_frozen): æ–‡å­—åˆ—ãŒæ›´æ–°ä¸å¯ã‹ã©ã†ã‹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹è¿°</div><div class='add'>+	  èªžãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž</div><div class='add'>+</div><div class='add'>+	* hash.c (Fhash_aset): keyãŒæ–‡å­—åˆ—ã®æ™‚ï¼Œã‚­ãƒ¼ã®å†…å®¹ãŒå¤‰åŒ–ã—ãªã„ã‚ˆã†</div><div class='add'>+	  ã«ï¼Œdupã—ã¦freezeã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Sep 20 16:12:44 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.86</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (have_header): ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (have_library): å¼•æ•°ã®é †åºãŒå¤‰ã‚ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Sep 14 18:00:59 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* object.c (obj_is_instance_of): is_member_ofã‹ã‚‰åç§°å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	Wed Sep 13 15:44:35 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (Fstr_tr_bang): ç¯„å›²å¤–ã®æ–‡å­—ã«å¯¾ã™ã‚‹å¤‰æ›ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Sep 12 14:27:58 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c (Sfile_expand_path): expand_file_name -&gt; expand_pathã«å</div><div class='add'>+	  ç§°å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* enum.c (Fenum_member): includes? -&gt; member? ã«åç§°å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c (Fstr_each_byte): Stringã¯ByteArrayã§ã‚ã‚‹ã¨ã„ã†åŸºæœ¬ã«æˆ»ã£</div><div class='add'>+	  ã¦ï¼Œeachã®å®šç¾©ã‚’each_byteã«å¤‰æ›´ã—ãŸï¼Žä»Šã¾ã§ã®eachã¯each_lineã§ã‚¢</div><div class='add'>+	  ã‚¯ã‚»ã‚¹ã§ãã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Sep 11 18:31:17 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c (cache_stat): ãƒ•ã‚¡ã‚¤ãƒ«åã¨ã—ã¦"&amp;"ã‚’æŒ‡å®šã™ã‚‹ã¨ç›´å‰ã®</div><div class='add'>+	  stat(2)ã®çµæžœã‚’å†åˆ©ç”¨ã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Sep  8 14:18:51 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.texi: `!', `?'ã«å¯¾å¿œã—ã¦ã‚¢ãƒƒãƒ—ãƒ‡ãƒ¼ãƒˆï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: defined -&gt; defined?</div><div class='add'>+</div><div class='add'>+	* file.c: FileOpã®ä¸€æ–‡å­—ãƒ¡ã‚½ãƒƒãƒ‰ã‚’ãªãã™ï¼Žä¸€æ–‡å­—ãƒ†ã‚¹ãƒˆã¯testãƒ¡ã‚½ãƒƒ</div><div class='add'>+	  ãƒ‰ã«ã¾ã‹ã›ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): å¤‰æ•°åã®å¾Œã‚ã«`?'ã‚‚è¨±ã™ï¼Žè¿°èªžãƒ¡ã‚½ãƒƒãƒ‰ã®å¾Œã‚ã«</div><div class='add'>+	  `?'ã‚’è¿½åŠ ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Sep  7 20:01:33 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c: æ–‡å­—åˆ—ã®ä¸­èº«ã‚’æ›´æ–°ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®åå‰ã®çµ‚ã‚Šã«`!'ã‚’ä»˜åŠ ï¼Ž</div><div class='add'>+	  `!'ã®ç„¡ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚‚ç”¨æ„ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: å¤‰æ•°åã®å¾Œã‚ã«`!'ã‚’è¨±ã™ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Sep  6 14:12:19 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.85</div><div class='add'>+</div><div class='add'>+	* string.c (Fstr_dup): æ–‡å­—åˆ—ã®è¤‡è£½ã‚’ä½œã‚‹</div><div class='add'>+	(Fstr_freeze): æ–‡å­—åˆ—ã®æ›´æ–°ä¸å¯å±žæ€§ã‚’è¨­å®šã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+	(Fsub/Fgsub): $_ã®å†…å®¹ã‚’dupã—ã¦ã‹ã‚‰ç½®æ›ã‚’è¡Œã†ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ruby.h (CLONESETUP): flagsã®çŠ¶æ…‹ã‚‚ã‚³ãƒ”ãƒ¼</div><div class='add'>+</div><div class='add'>+Tue Sep  5 01:27:50 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* sample/test.rb: å¤±æ•—ã®æ¤œå‡ºã‚’åŽ³ã—ãï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Aug 25 14:31:02 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* process.c (Ffork): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦ã‚‚å‹•ä½œã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* version 0.84</div><div class='add'>+</div><div class='add'>+	* signal.c (sig_beg): ãƒãƒ³ãƒ‰ãƒ©ãŒè¨­å®šã•ã‚Œã¦ã„ã‚‹æ™‚ã«ã¯å†è¨­å®šã—ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (create_makefile): shared objectã®ãƒªãƒ³ã‚¯ã®éš›ã«</div><div class='add'>+	  `-l'ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’æŒ‡å®šã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* signal.c (trap): `EXIT'ã§çµ‚äº†å‡¦ç†ã‚’è¡Œã†è¨­å®šãŒå‡ºæ¥ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Aug 16 00:13:22 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* signal.c (sig_beg): ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã¯beginç¯€ã®ä¸­ã§ã ã‘SIGINTã‚’æ•æ‰</div><div class='add'>+	  ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (io_ctl): fcntlã‚’æŒãŸãªã„ã‚·ã‚¹ãƒ†ãƒ ã«ã‚‚å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* å„ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«åˆ†æ•£ã—ã¦ã„ãŸMANIFESTã‚’ã¾ã¨ã‚ãŸï¼Žæ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«æ¯Ž</div><div class='add'>+	  ã«ã¯å¿…è¦ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c (Sstr_new,str_sub,Fstr_crypt): å¼•æ•°ã‚’è‡ªå‹•çš„ã«æ–‡å­—åˆ—ã«å¤‰</div><div class='add'>+	  æ›ã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Aug 12 00:44:02 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (Fstr_crypt): PD cryptã‚’ç”¨æ„ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Aug 11 14:37:03 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* assoc.c (Fassoc_clone): assocã‚‚cloneã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c: ãƒžã‚¯ãƒ­READ_DATA_PENDINGã®å®šç¾©ã‚’å¤‰æ›´(Linuxå¯¾å¿œ)</div><div class='add'>+</div><div class='add'>+	* io.c (io_fptr_finalize): fptrã®é–‹æ”¾æ™‚ã®å‡¦ç†ã‚’æŒ‡å®šã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Aug  9 16:52:41 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_provided): è¤‡æ•°ã®featureã‚’ãƒ­ãƒ¼ãƒ‰ã™ã‚‹ã¨ç„¡é™ãƒ«ãƒ¼ãƒ—ã«è½</div><div class='add'>+	  ã¡ã‚‹ã¨ã„ã†å˜ç´”ãª(ã—ã‹ã—å‡¶æ‚ªãª)ãƒŸã‚¹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (install): dlopenå¯¾å¿œã‚’è¡Œã£ãŸï¼Žä»Šã¾ã§dlnã«ã—ã‹å</div><div class='add'>+	  åˆ†ã«å¯¾å¿œã—ã¦ã„ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Aug  8 14:17:06 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.83</div><div class='add'>+</div><div class='add'>+Mon Aug  7 12:47:41 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y: resque -&gt; rescueï¼Žæ¥ãšã‹ã—ã„ãŒtypoã‚’æ®‹ã—ã¦ãŠãã‚ã‘ã«ã¯</div><div class='add'>+	  ã„ã‹ãªã„ã‚ˆãªã‚ï¼Žãªã‚“ã§ä»Šã¾ã§æ°—ãŒã¤ã‹ãªã‹ã£ãŸã®ã‹â€¦ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Aug  3 18:18:05 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* missing/nt.c: NTç§»æ¤ç”¨ã®é–¢æ•°ç¾¤ã‚’ã¾ã¨ã‚ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_const_get): ã¾ãŸä¾‹å¤–ã‚’ç™ºç”Ÿã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ždefined</div><div class='add'>+	  ãŒã‚ã‚‹ä»¥ä¸Šä¾‹å¤–ã‚’ç™ºç”Ÿã•ã›ãªã„ç†ç”±ãŒãªã„ã®ã§(ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸæ–¹ãŒã‚¿</div><div class='add'>+	  ã‚¤ãƒ—ãƒŸã‚¹ã®æ¤œå‡ºãªã©ã®ç‚¹ã§æœ‰åˆ©)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c (Fautoload): autoloadã‚’å®Ÿè£…ï¼Žä»Šåº¦ã¯ä½¿ãˆã‚‹ã‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Jul 31 15:44:21 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (arg_ambiguous): ç¬¬1å¼•æ•°ã®ã‚ã„ã¾ã„ã•ã‚’è­¦å‘Š(-vã‚ªãƒ—ã‚·ãƒ§ãƒ³</div><div class='add'>+	  ã§æœ‰åŠ¹)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): `-v'ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’ã¤ã‘ã¦`def'ãŒå‘¼ã°ã‚Œã‚‹ã¨ä¸å¿…è¦</div><div class='add'>+	  ãªã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå‡ºãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): ãƒ¡ã‚½ãƒƒãƒ‰ã®ç¬¬1å¼•æ•°ã®åˆ¤å®šã‚’ã‚‚ã†ã¡ã‚‡ã£ã¨è³¢ãã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Jul 28 19:04:43 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (yylex): `+/-/['ã®ç›´å‰ã«ç©ºç™½ãŒæ¥ã‚‹ã‹ã©ã†ã‹ã§å‹•ä½œã‚’å¤‰æ›´ã—</div><div class='add'>+	  ãŸ(æ··ä¹±ã®ã‚‚ã¨ã‹?)</div><div class='add'>+</div><div class='add'>+Wed Jul 26 09:21:23 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.82a</div><div class='add'>+</div><div class='add'>+	* sprintf.c (Fsprintf): `%s'ã§'\0'ã‚’å«ã‚€æ–‡å­—åˆ—ã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* pack.c (Fpck_pack): packã®è¦ç´ ç¢ºä¿ã®ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (Floop): ç„¡é™ãƒ«ãƒ¼ãƒ—ã®ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (next_argv): å­˜åœ¨ã—ãªã„ãƒ•ã‚¡ã‚¤ãƒ«åãŒæŒ‡å®šã•ã‚ŒãŸæ™‚ã®ã‚¨ãƒ©ãƒ¼å‡¦ç†</div><div class='add'>+	  ãŒè¡Œã‚ã‚Œã¦ã„ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Jul 24 17:37:34 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.82</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (install): æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’static linkã™ã‚‹å ´åˆã¯</div><div class='add'>+	  ãã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒæ—¢ã«requireã•ã‚ŒãŸã®ã¨åŒã˜ã‚ˆã†ã«featureã‚’è¨­å®šã™ã‚‹ï¼Ž</div><div class='add'>+	  ã“ã‚Œã§æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®æ©Ÿèƒ½ãŒå¿…è¦ãªæ™‚ã«ã¯(static linkã•ã‚Œã¦ã„ã‚‹ã‹</div><div class='add'>+	  ã©ã†ã‹ã«ã‹ã‹ã‚ã‚‰ãš)requireã™ã‚Œã°ã‚ˆããªã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (Frequire): `$"'ã«æ ¼ç´ã™ã‚‹æ–‡å­—åˆ—ã‚’ãƒ•ãƒ«ãƒ‘ã‚¹ã§ãªããƒ•ã‚£ãƒ¼ãƒãƒ£</div><div class='add'>+	  åã¨ã™ã‚‹ï¼Žrubyã‚¹ã‚¯ãƒªãƒ—ãƒˆã‚’ãƒ­ãƒ¼ãƒ‰ã—ãŸæ™‚ã«ã¯`.rb'ï¼Œã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’</div><div class='add'>+	  ãƒ­ãƒ¼ãƒ‰ã—ãŸæ™‚ã«ã¯`.o'ã‚’ãƒ•ã‚£ãƒ¼ãƒãƒ£åã«ä»˜åŠ ã™ã‚‹ï¼Žlispã®requireã¨</div><div class='add'>+	  provideã®åƒãã«(å°‘ã—)è¿‘ã„ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Jul 20 12:50:05 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* Makefile.in (test): make testãŒã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* struct.c (struct_new): typo.</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): `defined'ã‚’è¿½åŠ ï¼Žãƒ¡ã‚½ãƒƒãƒ‰/å¤‰æ•°/å®šæ•°ã®å®šç¾©çŠ¶æ…‹</div><div class='add'>+	  ã‚’çŸ¥ã‚‹äº‹ãŒå‡ºæ¥ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Jul 19 18:04:01 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.81</div><div class='add'>+</div><div class='add'>+Mon Jul 17 14:53:51 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* variable.c (rb_const_get): æœªåˆæœŸåŒ–ã®CONSTANTã®å€¤ã‚’nilã«ã—ãŸï¼Žã—</div><div class='add'>+	  ã‹ã—ï¼Œä»Šå¾Œã¾ãŸä¾‹å¤–ã«æˆ»ã™å¯èƒ½æ€§ã¯ã‚ã‚‹ï¼Žè¦ã¯optionalãªã‚¯ãƒ©ã‚¹/ãƒ¢ã‚¸ãƒ¥ãƒ¼</div><div class='add'>+	  ãƒ«ãŒå­˜åœ¨ã™ã‚‹ã‹ãƒã‚§ãƒƒã‚¯ã—ãŸã„ã ã‘ãªã‚“ã ãªï¼Ž</div><div class='add'>+</div><div class='add'>+	* st.c (int): grow_factorã‚’å›ºå®šã«ã—ãŸ(å¤§å¶‹ã•ã‚“ã®ãƒžã‚·ãƒ³ã«å¯¾å¿œ)ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Jul 14 00:48:40 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in: ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®ãƒã‚°ã‚’ä¿®æ­£ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (var_extend): #{$æ•°å­—}ã«å¯¾å¿œã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* dln.c (dln_load_1): `Init_FILENAME'ã ã‘ã‚’æœ‰åŠ¹ã«ï¼Ž`init_*'ã¯ä»Šå¾Œ</div><div class='add'>+	  å®Ÿè¡Œã—ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/etc/etc.c : Etcãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¨ã—ã¦åˆ†é›¢ï¼Žå®Ÿã¯NT</div><div class='add'>+	  å¯¾å¿œã¸ã®å¸ƒçŸ³ã ã£ãŸã‚Šã™ã‚‹ã‹ã‚‚ã—ã‚Œãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Jul 11 17:12:48 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* gcc -Wallã§å‡ºãŸwarningã‚’å…ƒã«ã‚½ãƒ¼ã‚¹ã‚’å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* signal.c (trap): typo.</div><div class='add'>+</div><div class='add'>+Fri Jul  7 10:08:51 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.80</div><div class='add'>+</div><div class='add'>+	* ruby.texi: texinfo documentã‚’æä¾›ï¼Žspecã¨ruby.1ã¯ç„¡ããªã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* signal.c (Ftrap): å‰²è¾¼ã¿ç¦æ­¢ä¸­ã®ä¾‹å¤–ç™ºç”Ÿã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (Flambda): Blockã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è¿”ã™ï¼ŽBlock.newã¨åŒç¾©ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Jul  6 00:35:03 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* signal.c (Ftrap): SIG_DFLã®å‡¦ç†ã‚’å¤‰æ›´ï¼ŽSIGINTã¸ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒãƒ³</div><div class='add'>+	ãƒ‰ãƒ©ã‚’ç”¨æ„(ä¾‹å¤–ã‚’ç™ºç”Ÿã™ã‚‹)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* file.c (Sfile_expand_fname): ãƒ‘ã‚¹åã‚’çµ¶å¯¾ãƒ‘ã‚¹ã«å±•é–‹ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž</div><div class='add'>+	(Sfile_basename): basenameã‚’å¾—ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ï¼Žæ‹¡å¼µå­ã‚‚å¤–ã›ã‚‹ï¼Ž</div><div class='add'>+	(Sfile_dirname): basenameã®åå¯¾ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_call): argumentè©•ä¾¡ä¸­ã®ä¾‹å¤–ç™ºç”Ÿã«å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* file.c (Ftest): `M', `A', `C'ã‚’è¿½åŠ .</div><div class='add'>+</div><div class='add'>+Tue Jul  4 12:36:33 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* file.c (Ftest): ãƒ•ã‚¡ã‚¤ãƒ«ãƒ†ã‚¹ãƒˆç”¨ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ruby.c (proc_options): `-r'ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’è¿½åŠ ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (f_args): ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå¼•æ•°ã‚’è¿½åŠ ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_call): è©²å½“ã™ã‚‹å¼•æ•°ãŒç„¡ã„æ™‚ï¼Œrestå¼•æ•°ã®å€¤ã‚’nilã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* numeric.c (num_equal): æ•°å€¤ä»¥å¤–ã¨ã®æ¯”è¼ƒã§ä¾‹å¤–ãŒç™ºç”Ÿã—ã¦ã„ãŸï¼Ž</div><div class='add'>+	  FALSEã‚’è¿”ã™ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (masign): å¤šé‡ä»£å…¥ã®restéƒ¨ã®å‹•ä½œãŒãŠã‹ã—ã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Jun 17 01:03:16 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* parse.y (gettable): æœªåˆæœŸåŒ–ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã®å‚ç…§(ç‹¬ç«‹ã—ãŸè­˜åˆ¥å­)</div><div class='add'>+	  ã¯æ­£å¼ã«ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã¨ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (read_escape): tokenbufã‚’ä½¿ã‚ãªã„ã‚ˆã†ã«ä¿®æ­£ï¼Žãã‚Œã«ã¨ã‚‚</div><div class='add'>+	  ãªã„ï¼Œ`\C-x',`\M-x'ãªã©ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—è¡¨ç¾ã‚’å¾©æ´»ï¼Žã“ã‚Œã§ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³</div><div class='add'>+	  ãƒˆã¨å®Ÿéš›ã®å‡¦ç†ç³»ãŒä¸€è‡´ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Jun 15 15:42:00 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* re.c (re_regcomp): cacheã®ãƒã‚§ãƒƒã‚¯ã‚’æ”¹å–„ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Jun 12 18:50:51 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.79</div><div class='add'>+</div><div class='add'>+Sat Jun 10 00:25:01 1995  Yukihiro Matsumoto  &lt;matz@caelum.co.jp&gt;</div><div class='add'>+</div><div class='add'>+	* re.c (re_regcomp): cacheåˆ¤å®šã«`$='ã®å€¤ã‚‚åæ˜ ã•ã›ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* sample/test.rb: test suiteä½œæˆï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Jun  9 15:58:34 1995  Yukihiro Matsumoto  &lt;matz@ix-02&gt;</div><div class='add'>+</div><div class='add'>+	* re.c (re_regcomp): cacheã®åˆ¤å®šãŒé–“é•ã£ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Jun  9 00:01:35 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_yield): blockæ§‹é€ ä½“ã«åˆæœŸåŒ–ã—ã¦ã„ãªã„ãƒ¡ãƒ³ãƒ(iter)ãŒã‚ã£</div><div class='add'>+	  ãŸã®ã§ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã®ãƒã‚¹ãƒˆãŒæ­£ã—ãå‹•ä½œã—ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Jun  8 00:59:03 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* re.c (=~): Stringä»¥å¤–ã¨ã®æ¯”è¼ƒãŒFALSEã‚’è¿”ã™ã‚ˆã†ã«(ä¾‹å¤–ã‚’ç™ºç”Ÿã—ã¦</div><div class='add'>+	  ã„ãŸ)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* extmk.rb.in: åˆ¤å®šã—ãŸå€¤ã‚’ãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* assoc.c (to_a): to_aãƒ¡ã‚½ãƒƒãƒ‰ãŒå†å®šç¾©ã•ã‚Œã¦ã„ãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’å¼•</div><div class='add'>+	  æ•°ã®ç„¡ã„ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã¨è§£é‡ˆã™ã‚‹ï¼ŽãŸã ã—ï¼Œ(ç¾çŠ¶ã§ã¯)ãƒ¡ã‚½ãƒƒãƒ‰ãŒ</div><div class='add'>+	  å®šç¾©ã•ã‚Œã¦ã„ãªã„å ´åˆï¼Œã‚¨ãƒ©ãƒ¼ã«ã›ãšå¤‰æ•°æœªåˆæœŸåŒ–ã®waringã‚’å‡ºã—ã¦</div><div class='add'>+	  nilã‚’è¿”ã—ã¦ã„ã‚‹ï¼Žã€Œruby -pe printã€ãªã©ãŒå®Ÿè¡Œã§ãã‚‹ã¨ã„ã†æ„å‘³ã§</div><div class='add'>+	  ã¯ã‚ã‚ŠãŒãŸã„ã“ã®ä»•æ§˜ã¯ï¼Œã—ã‹ã—ä»Šå¾Œã®æ¤œè¨ŽãŒå¿…è¦ã§ã‚ã‚‹ï¼Ž-- ãƒ¡ã‚½ãƒƒ</div><div class='add'>+	  ãƒ‰å‘¼ã³å‡ºã—ã¨ã™ã‚‹ã®ã‚’æ­¢ã‚ã‚‹ã‹(ä»¥å‰ã®ä»•æ§˜)ï¼Œã„ã¤ã‚‚ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—</div><div class='add'>+	  ã¨ã™ã‚‹(æœªå®šç¾©ãªã‚‰ã°ã‚¨ãƒ©ãƒ¼)ã‹ï¼Œä»Šã®ä»•æ§˜ã§è¡Œãã‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã§</div><div class='add'>+	  (evalãªã©ã§)åˆæœŸåŒ–ã•ã‚ŒãŸäº‹ãŒåˆ†ã‹ã£ãŸæ™‚ã«ã¯ä»¥å¾ŒåˆæœŸåŒ–ã•ã‚ŒãŸãƒ­ãƒ¼ã‚«</div><div class='add'>+	  ãƒ«å¤‰æ•°ã¨ã¿ãªã™ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Jun  7 11:58:12 1995  Yukihiro Matsumoto  &lt;matz@ix-02&gt;</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_fail): ä¾‹å¤–å‡¦ç†å¾Œã‚‚`$!'ã‚’ã‚¯ãƒªã‚¢ã—ãªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+	  (rb_fail): `$!'å¤‰æ•°ã«æœ€å¾Œã«æ”¹è¡Œã‚’è¿½åŠ ã—ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c (Fprint): privateãƒ¡ã‚½ãƒƒãƒ‰ã«å¤‰æ›´ï¼Žå¼•æ•°ã‚’å–ã‚‰ãªã„æ™‚ã®å‹•ä½œã‚’å¤‰</div><div class='add'>+	  æ›´(`$_'ã‚’å‡ºåŠ›ã™ã‚‹)ï¼Ž</div><div class='add'>+	  (Fio_print): å‡ºåŠ›å…ˆæŒ‡å®šã®printãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž</div><div class='add'>+	  (Fio_printf): å‡ºåŠ›å…ˆæŒ‡å®šã®printfãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: notæ¼”ç®—å­ã®è¿½åŠ ï¼Žå„ªå…ˆé †ä½ã®ä½Žã„`!'æ¼”ç®—å­ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Jun  5 19:00:55 1995  Yukihiro Matsumoto  &lt;matz@ix-02&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.78</div><div class='add'>+</div><div class='add'>+Fri Jun  2 17:52:03 1995  Yukihiro Matsumoto  &lt;matz@ix-02&gt;</div><div class='add'>+</div><div class='add'>+	* ruby.c (proc_options): -Iã‚ªãƒ—ã‚·ãƒ§ãƒ³ã§`$:'ã¸ã®è¿½åŠ ã•ã‚Œã‚‹é †ç•ªã‚’ä¿®</div><div class='add'>+	  æ­£ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Jun  2 00:36:34 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* parse.y: whileä¿®é£¾å­ã®å‹•ä½œã‚’é€šå¸¸ã®whileã¨åŒã˜ã«ã—ãŸï¼ŽãŸã ã—ï¼Œ</div><div class='add'>+	  beginå¼ã¸ã®whileä¿®é£¾å­ã ã‘ã¯do..whileåž‹ã®ãƒ«ãƒ¼ãƒ—ã¨ãªã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed May 31 18:36:30 1995  Yukihiro Matsumoto  &lt;matz@ix-02&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.77</div><div class='add'>+</div><div class='add'>+Mon May 29 18:39:37 1995  Yukihiro Matsumoto  &lt;matz@ix-02&gt;</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in (install): æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚‚ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ãã‚‹ã‚ˆ</div><div class='add'>+	  ã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri May 26 14:43:01 1995  Yukihiro Matsumoto  &lt;matz@ix-02&gt;</div><div class='add'>+</div><div class='add'>+	* process.c (Fsystem): æˆ»ã‚Šå€¤ã‚’ã‚µãƒ–ãƒ—ãƒ­ã‚»ã‚¹ã®å¤±æ•—/æˆåŠŸã‚’è¡¨ã™çœŸå½å€¤</div><div class='add'>+	  ã«ã—ãŸï¼Žçµ‚äº†ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯`$?'ã§å¾—ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue May 23 10:58:11 1995  Yukihiro Matsumoto  &lt;matz@ix-02&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (Fstr_upto): ç„¡é™ãƒ«ãƒ¼ãƒ—ã«é™¥ã‚‰ãªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y (cond): `||'ãªã©ã®å³è¾ºã«åˆ¶å¾¡å¼ãŒæ›¸ã‘ã‚‹ã‚ˆã†ã«ï¼Œæ¡ä»¶å¼ãŒã‹</div><div class='add'>+	  ãªã‚‰ãšã—ã‚‚å€¤ã‚’æŒãŸãªãã¦ã‚‚è‰¯ã„ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/marshal/marshal.c: ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®èª­ã¿æ›¸ãã‚’ãƒ¡ã‚½ãƒƒãƒ‰ã®å†å®šç¾©</div><div class='add'>+	  ã§ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã§ãã‚‹ã‚ˆã†ã«ï¼Žã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒ`_dump_to'ã¨ã„ã†ãƒ¡ã‚½ãƒƒ</div><div class='add'>+	  ãƒ‰ã‚’å®šç¾©ã—ã¦ã„ã‚‹æ™‚ã¯ãã¡ã‚‰ã‚’ä½¿ã†ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in: static linkã‚‚è¨­å®šã§ãã‚‹ã‚ˆã†ãªä»•æ§˜ã«ã—ãŸï¼Ž</div><div class='add'>+	  ext/Setupã¨ã„ã†ãƒ•ã‚¡ã‚¤ãƒ«ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã‚’è¨˜è¿°ã™ã‚‹ã¨ãã®ãƒ‡ã‚£ãƒ¬ã‚¯</div><div class='add'>+	  ãƒˆãƒªã«å­˜åœ¨ã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯static linkã•ã‚Œã‚‹(ã¯ãš)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_eval): `..'ã‚’æ–‡æ³•ã«çµ„ã¿è¾¼ã¿ï¼Œ`..'ã¨`...'ã®å‹•ä½œã‚’perl</div><div class='add'>+	  ã«åˆã‚ã›ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Sat May 20 01:22:48 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* io.c (select): timeoutæ™‚ã¨å‰²è¾¼ã¿æ™‚ã®å‹•ä½œã®æ˜Žç¢ºåŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri May 19 15:33:23 1995  Yukihiro Matsumoto  &lt;matz@ix-02&gt;</div><div class='add'>+</div><div class='add'>+	* version 0.76</div><div class='add'>+</div><div class='add'>+Fri May 19 00:48:08 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* string.c (Fstr_each): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯ä¸­ã§æ–‡å­—åˆ—ã®å¤‰æ›´ãŒè¡Œã‚ã‚Œ</div><div class='add'>+	  ãŸã‹ã©ã†ã‹ã‚’ãƒã‚§ãƒƒã‚¯ï¼Žãƒã‚¤ãƒ³ã‚¿ã®å€¤ãŒå¤‰ã‚ã£ã¦ã„ã‚Œã°ä¾‹å¤–ã‚’ç™ºç”Ÿã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ruby-mode.el: ruby-electric-braceã®æ–°è¨­ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu May 18 12:27:23 1995  Yukihiro Matsumoto  &lt;matz@ix-02&gt;</div><div class='add'>+</div><div class='add'>+	* string.c (Fstr_tr): trã®ç½®æ›å¯¾è±¡ã«`\0'ã‚’å«ã‚€æ™‚ã«æ­£ã—ãç½®æ›ã‚’è¡Œã‚</div><div class='add'>+	  ãªã„ãƒã‚°ãŒã‚ã£ãŸï¼Žæ›´ã«ç½®æ›æ–‡å­—åˆ—ã‚’ASCIIé †ã«æŒ‡å®šã—ãªã„ã¨å‹•ä½œã—ãª</div><div class='add'>+	  ã„å•é¡Œã‚‚ã‚ã£ãŸï¼Žçµæžœã¨ã—ã¦trã‚’æ›¸ãæ›ãˆãŸã®ã§ï¼Œcopyrightã®å•é¡Œã¯</div><div class='add'>+	  ç„¡ããªã£ãŸ(ã¨æ€ã†)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* gc.c (gc): the_scopeã‚’ãƒžãƒ¼ã‚¯ã—ã¦ã„ãªã‹ã£ãŸã®ã§ï¼Œãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã®æŒ‡</div><div class='add'>+	  ã—ã¦ã„ã‚‹ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒé–“é•ã£ã¦é–‹æ”¾ã•ã‚Œã‚‹å ´åˆãŒã‚ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* gc.c (mark_locations_array): è‹¥å¹²ã®é«˜é€ŸåŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon May 15 11:43:49 1995  Yukihiro Matsumoto  &lt;matz@ix-02&gt;</div><div class='add'>+</div><div class='add'>+	* ext/extmk.rb.in: Dynamic Loadãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ç”¨ãƒã‚§ãƒƒã‚¯ã‚’</div><div class='add'>+	  è¡Œã†ruby scriptï¼Žautoconfã«è¿‘ã„æ„Ÿè¦šã§ä½¿ãˆã‚‹ï¼Žæ–°ã—ã„ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’</div><div class='add'>+	  æä¾›ã—ãŸã„äººã¯extã®ä¸‹ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ä½œã‚‹ã ã‘ã§è‰¯ã„ï¼Žå¿…é ˆã®ãƒ•ã‚¡</div><div class='add'>+	  ã‚¤ãƒ«ã¯ãƒ•ã‚¡ã‚¤ãƒ«åã®ä¸€è¦§ã‚’è¨˜éŒ²ã—ãŸ`MANIFEST'ã¨ã„ã†ãƒ•ã‚¡ã‚¤ãƒ«ã®ã¿ï¼Žå¿…</div><div class='add'>+	  è¦ã«å¿œã˜ã¦`depend'(ãƒ•ã‚¡ã‚¤ãƒ«ã®ä¾å­˜é–¢ä¿‚ã‚’è¨˜è¿°ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ« gcc -MM</div><div class='add'>+	  ã®å‡ºåŠ›)ï¼Œ`extconf.rb'(ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ç”¨ã«ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã¨é–¢æ•°ã®å­˜åœ¨ãƒã‚§ãƒƒ</div><div class='add'>+	  ã‚¯ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«)ã‚’ç”¨æ„ã§ãã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c (rb_call): rubyãƒ¡ã‚½ãƒƒãƒ‰ã®å¼•æ•°ãƒã‚§ãƒƒã‚¯æ™‚ã«æœªåˆæœŸåŒ–ã®</div><div class='add'>+	  jmp_bufã‚’ä½¿ç”¨ã—ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: `or'ã¨`and'ã®å„ªå…ˆé †ä½ã‚’åŒã˜ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed May  3 18:21:36 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* dln.c: Linuxã§ã¯`__.SYMDEF/'ã§ã‚ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* dln.c: system callã®ã‚¨ãƒ©ãƒ¼ãƒã‚§ãƒƒã‚¯ã‚’å¿˜ã‚Œã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Apr 26 09:50:56 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯ã®å¤‰æ•°å®£è¨€ã‚’`|'ã§æ‹¬ã‚‹ã‚ˆã†ã«ã—ãŸï¼Žã“ã‚Œ</div><div class='add'>+	  ã§ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿å¤‰æ•°ãŒãªã„æ™‚ã¯å®£è¨€ãã®ã‚‚ã®ã‚’çœç•¥ã§ãã‚‹ï¼Žæ–‡æ³•ã®å¤‰æ›´ã¯</div><div class='add'>+	  ä¹…ã—ã¶ã‚Šã ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Apr 25 12:04:17 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c(require): loadã‹ã‚‰ãƒ€ã‚¤ãƒŠãƒŸãƒƒã‚¯ãƒ­ãƒ¼ãƒ‰ã®æ©Ÿèƒ½ã‚’ç§»ã—ã¦ããŸï¼Ž</div><div class='add'>+	  ã•ã‚‰ã«æ‹¡å¼µå­ã®è£œå®Œæ©Ÿèƒ½ã‚’è¿½åŠ ã—ã¦ãƒ¦ãƒ¼ã‚¶ãŒdln/dlopenã®å·®ã‚’æ„è­˜ã™ã‚‹</div><div class='add'>+	  å¿…è¦ã®ãªã„ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c(sub,sub): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦ã‚‚å‹•ä½œã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c: init_object -&gt; initialize.</div><div class='add'>+</div><div class='add'>+Mon Apr 24 14:22:39 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* NEWS-OS 3.4å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* io.c: Solarisã®stdioã®å‹•ä½œãŒé•ã†ã‚ˆã†ã ï¼Žsignalã§EOFã‚’è¿”ã—ã¦ã—ã¾</div><div class='add'>+	  ã†â€¦ï¼Žperlã§ã‚‚åŒæ§˜ã®å•é¡ŒãŒã‚ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Apr 21 20:04:39 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.75</div><div class='add'>+</div><div class='add'>+	* signal.c: trapãŒãªããªã£ã¦ã„ãŸï¼Žã†ãƒ¼ã‚€ï¼Ž</div><div class='add'>+</div><div class='add'>+	* configure: Solaris 2.3å¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c: #elifã®ãªã„cppã‚‚ã‚ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* dir.c: autoconf 2.xã¸ã®å¯¾å¿œãŒä¸ååˆ†</div><div class='add'>+</div><div class='add'>+Thu Apr 20 12:31:24 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.74</div><div class='add'>+</div><div class='add'>+	* env.h, gc.c, regex.c: IRIXã¸ã®ç§»æ¤å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* configure: dlopenç”¨ã«picã‚’ç”Ÿæˆã™ã‚‹optionã®æ¤œå‡ºã®ãŸã‚ï¼Œã‚·ã‚¹ãƒ†ãƒ ã‚¿</div><div class='add'>+	  ã‚¤ãƒ—ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Apr 18 19:08:17 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* gc.c(xrealloc): ptr=nilã®æ™‚ï¼Œmalloc()ã¨åŒã˜åƒãã‚’</div><div class='add'>+</div><div class='add'>+	* array.c(astore): ç©ºã®é…åˆ—ã®0ç•ªç›®ã®è¦ç´ ã«ä»£å…¥ã™ã‚‹ã¨size=0ã§</div><div class='add'>+	  realloc()ã‚’å‘¼ã‚“ã§ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* configure, glob.c: Solaris 2.xã§ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã§ãã‚‹ã‚ˆã†ã«</div><div class='add'>+</div><div class='add'>+Mon Apr 10 18:36:06 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.73</div><div class='add'>+</div><div class='add'>+Fri Apr  7 13:51:08 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* cons.c-&gt;assoc.c: consã®ä½™è¨ˆãªæ©Ÿèƒ½ã¯å¤–ã—ã¦pairã¨ã—ã¦ã®æ©Ÿèƒ½ã ã‘ã‚’</div><div class='add'>+	  æ®‹ã—ãŸï¼ŽEnumerableã‚’includeã™ã‚‹ã®ã‚‚ã‚„ã‚ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c(esub): æ–‡å­—åˆ—ç½®æ›ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ï¼Žperlã®s///eã®ç›¸å½“ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Apr  5 11:35:21 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.72</div><div class='add'>+</div><div class='add'>+	* EWS4800å¯¾å¿œ</div><div class='add'>+</div><div class='add'>+	* file.c: utimesãŒãªã„æ™‚ã¯utimeã‚’ä½¿ã†ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Apr  3 15:19:41 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.71</div><div class='add'>+</div><div class='add'>+	* regexp.c(re_match): ãƒã‚°ãŒã‚ã£ãŸï¼Žmatch_2ã‚’å‰Šé™¤ã—ãŸæ™‚ã«enbugã—ã¦</div><div class='add'>+	  ã„ãŸã®ã ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Mar 27 15:41:43 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* dict.c: Dict-&gt;Hashã«å…¨é¢çš„ã«ç§»è¡Œï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Mar 23 20:30:00 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* dbm.c,socket.c: extãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«åˆ†é›¢ï¼Ž</div><div class='add'>+</div><div class='add'>+	* configure: dlnå‘¨ã‚Šã®ãƒã‚§ãƒƒã‚¯ã®å¼·åŒ–</div><div class='add'>+</div><div class='add'>+	* dln.c: initã®å‘¼ã³å‡ºã—ã‚’dlopen()ç‰ˆã«åˆã‚ã›ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Mar 20 17:45:08 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* configure: autoconf 2.2ã«å¯¾å¿œ(ä¸€éƒ¨)ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Mar 17 15:56:44 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* dln.c: dlopenã®ã‚ã‚‹ãƒžã‚·ãƒ³ã§ã¯ãã¡ã‚‰ã‚’ä½¿ã†ã‚ˆã†ã«ï¼ŽãŸã ã—ï¼Œã¡ã‚ƒã‚“</div><div class='add'>+	  ã¨å‹•ã„ã¦ã„ã‚‹ã‹ã©ã†ã‹ã¯è‡ªä¿¡ãŒãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* regex.c: virtual concatinationã‚’ã‚„ã‚ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Mar 16 11:32:57 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.70</div><div class='add'>+</div><div class='add'>+	* eval.c,regex.c: gccã§ã®ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã‚¨ãƒ©ãƒ¼ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c: inplace-editã§æ‹¡å¼µå­ãŒæŒ‡å®šã•ã‚Œãªã„å ´åˆï¼Œã‚‚ã¨ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å‰Š</div><div class='add'>+	  é™¤ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Mar 15 14:59:18 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.69</div><div class='add'>+</div><div class='add'>+	* eval.c(method_missing): unknownã‹ã‚‰åç§°å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c(single_method_added): ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ãŒå®šç¾©ã•ã‚ŒãŸæ™‚ã«å‘¼ã°ã‚Œ</div><div class='add'>+	  ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ï¼Žhookã¨ã—ã¦ä½¿ãˆã‚‹ï¼Žå®Ÿéš›ã«å®šç¾©ã•ã‚Œã‚‹ç›´å‰ã«å‘¼ã°ã‚Œã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Mar 14 14:46:44 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ruby.c(proc_options): å¼•æ•°ã®è§£æžã‚’è‡ªåˆ†ã§ã‚„ã‚‹ã“ã¨ã«ã‚ˆã‚Šå¼•æ•°æŒ‡å®šã®</div><div class='add'>+	  æ–¹æ³•ãŒperlã«è¿‘ä»˜ã„ãŸï¼Žgetopt_longã¯ã‚‚ã†ä½¿ã‚ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* dir.c(glob): `{}'ã®ãƒã‚¹ãƒˆã‚’è¨±ã™ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Mar 13 17:56:25 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* glob.c: Glob(ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆ)ã¯ãªããªã£ãŸï¼Žãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼</div><div class='add'>+	  ãƒ‰ã®å±•é–‹ã¯Dir.glob(æ–‡å­—åˆ—)ã‚’ä½¿ã†ï¼Žãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã®ãƒžãƒƒãƒã¯æ­£è¦è¡¨</div><div class='add'>+	  ç¾ã§ä»£ç”¨ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Mar 10 18:35:46 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c: Mathã®ã‚ˆã†ãªãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯è‡ªåˆ†è‡ªèº«ã§extendã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c: ã‚¯ãƒ©ã‚¹ã‚„ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’å®šç¾©ã™ã‚‹æ™‚ï¼Œæ—¢ã«åŒåã®ã‚‚ã®ãŒã‚ã‚Œã°è¿½</div><div class='add'>+	  åŠ å®šç¾©ã¨ãªã‚‹ã‚ˆã†ã«ï¼ŽãŸã ã—ï¼Žsuperã‚¯ãƒ©ã‚¹ã®é•ã„ãªã©ã¯ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* regex.c: debug.</div><div class='add'>+</div><div class='add'>+	* math.c: å®šæ•°PIã¨Eã‚’å®šç¾©ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Mar  9 21:35:12 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* regex.c: EUC,SJISãƒ¢ãƒ¼ãƒ‰ã§ã¯0x80ä»¥ä¸Šã®8é€²ï¼Œ16é€²ãƒªãƒ†ãƒ©ãƒ«ã‚’ç¦æ­¢ï¼Ž</div><div class='add'>+</div><div class='add'>+	* regex.c: ã‚¯ãƒ©ã‚¹å†…ã§ã‚‚æ•°å€¤ãƒªãƒ†ãƒ©ãƒ«ãƒ»æ–‡å­—ã‚¯ãƒ©ã‚¹ãŒä½¿ãˆã‚‹ã‚ˆã†ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Mar  8 17:39:05 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* regex.c: \200ãªã©æ‹¬å¼§ã®æ•°ä»¥ä¸Šã®è¡¨ç¾ã¯8é€²ãƒªãƒ†ãƒ©ãƒ«ã¨è§£é‡ˆã™ã‚‹ï¼ŽãŸã </div><div class='add'>+	  ã—ï¼Œ\1ã‹ã‚‰\9ã¾ã§ã¯ä¾‹å¤–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* regex.c: \9ä»¥ä¸Šã®ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ã‚‚æœ‰åŠ¹ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Mar  7 14:26:01 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c(public/private): ã‚¹ã‚³ãƒ¼ãƒ—åˆ¶å¾¡ãƒ¡ã‚½ãƒƒãƒ‰ã®åç§°å¤‰æ›´ï¼Žé™çš„ãªã‚¢</div><div class='add'>+	  ã‚¯ã‚»ã‚¹ã‚‚å‡ºæ¥ã‚‹ã‚ˆã†ã«ã—ã¦ã¿ãŸãŒï¼Œä¸æŽ¡ç”¨ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Mar  6 19:34:32 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c(inlcude): ãƒ¡ã‚½ãƒƒãƒ‰åŒ–ï¼Žå‹•çš„ã«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã§ã</div><div class='add'>+	  ã‚‹ã‚ˆã†ã«ï¼Žã•ã‚‰ã«ä»»æ„ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«ã‚‚ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã§</div><div class='add'>+	  ãã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ `extend'ã‚‚ç”¨æ„ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: æ–‡æ³•ã‹ã‚‰includeã‚’å‰Šé™¤ï¼Žãƒ¡ã‚½ãƒƒãƒ‰åŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Feb 28 15:35:10 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: é…åˆ—ï¼Œé€£æƒ³é…åˆ—ã®æœ€å¾Œã«`,'ã‚’ãŠã‘ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Feb 24 13:15:43 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.68</div><div class='add'>+</div><div class='add'>+Thu Feb 23 11:19:19 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c: resqueç¯€ã®selfã®å€¤ãŒé–“é•ã£ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_clear_cache): ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã®ã‚¯ãƒªã‚¢ã—å¿˜ã‚ŒãŒã‚ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c: å®šæ•°ã®ã‚¹ã‚³ãƒ¼ãƒ—ã‚’ã‚¯ãƒ©ã‚¹å†…ã®é™çš„ã‚¹ã‚³ãƒ¼ãƒ—ã«å¤‰æ›´ã—ãŸï¼Žã“ã‚Œã«</div><div class='add'>+	  ã‚ˆã£ã¦ï¼Œç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰å‚ç…§ã•ã‚Œã‚‹å®šæ•°ã¯ï¼Œãƒ¬ã‚·ãƒ¼ãƒã®ã‚¯ãƒ©ã‚¹ã§ã¯ãª</div><div class='add'>+	  ãï¼Œå®šç¾©ã•ã‚ŒãŸã‚¹ã‚³ãƒ¼ãƒ—ã®ã‚¯ãƒ©ã‚¹ã®å®šæ•°ã¨ãªã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Feb 22 00:51:38 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* regex.c: ignorecaseã‚’æ­£è¦è¡¨ç¾ã®ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«å‰ã«æŒ‡å®šã—ãªã„ã¨æ­£ã—ã</div><div class='add'>+	  å‹•ä½œã—ãªã„ï¼Žä¿®æ­£ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c(toupper,tolower): bug fix.</div><div class='add'>+</div><div class='add'>+	* ENV,VERSION: readonlyå¤‰æ•°ã‹ã‚‰å®šæ•°ã¸ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Feb 21 18:56:56 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* io.c(STDIN, STDOUT, STDERR): å®šæ•°ã¨ã—ã¦å®šç¾©ï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c(select): bug fix.</div><div class='add'>+</div><div class='add'>+	* version 0.67</div><div class='add'>+</div><div class='add'>+Mon Feb 20 16:10:14 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y(yylex): å®šæ•°ã‚’`%è­˜åˆ¥å­'ã‹ã‚‰ï¼Œç¬¬1æ–‡å­—ãŒå¤§æ–‡å­—ã®è­˜åˆ¥å­ã«å¤‰</div><div class='add'>+	  æ›´ï¼Žãã‚Œã«ã¨ã‚‚ãªã„ã‚¯ãƒ©ã‚¹ã¯å®šæ•°ã¨ãªã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c: ã‚¯ãƒ©ã‚¹å®šç¾©å†…ã®selfãŒã‚¯ãƒ©ã‚¹å®šç¾©å¤–éƒ¨ã®the_classã ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c(rb_name_class): ã‚¯ãƒ©ã‚¹åã‚’ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã«æ ¼ç´ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Feb 16 15:36:17 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: BLOCKã‚’braceã§è¡¨ç¾ã™ã‚‹æ–‡æ³•ã«å¤‰æ›´ã—ãŸã‚‚ã®ã‚’ä½œã£ã¦ã¿ã‚‹ï¼Ž</div><div class='add'>+	  MLã«æç¤ºã—ã¦ã¿ã‚‹ãŒåå¿œãŒãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c(do,forever): ãªãã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Feb 15 13:20:49 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* re.c(new): ç¬¬2å¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã¦ï¼Œã‹ã¤nilã§ãªã„ã¨ãã ã‘è¨­å®šã™ã‚‹ã‚ˆ</div><div class='add'>+	  ã†ã«(ä»¥å‰ã¯nilã®æ™‚ã«ã‚‚è¨­å®šã‚’è¡Œãªã£ã¦ã„ãŸ)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y(parse_regexp): æ­£è¦è¡¨ç¾ãƒªãƒ†ãƒ©ãƒ«ã§å¤§æ–‡å­—å°æ–‡å­—ã‚’ç„¡è¦–ã™ã‚‹</div><div class='add'>+	  ã‹ã©ã†ã‹æŒ‡å®šã§ãã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Feb 14 00:55:33 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* parse.y: (compexpr) -&gt; (expr).</div><div class='add'>+</div><div class='add'>+Fri Feb 10 16:30:00 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* ruby.c(load_file): scriptã‚’èª­ã¿è¾¼ã‚€æ™‚ã ã‘"#!"ã®è§£æžã‚’è¡Œã†ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ruby.c(readin): ãƒ•ã‚¡ã‚¤ãƒ«èª­ã¿è¾¼ã¿æ™‚ã«å…ˆé ­ã«"#!"ãŒã‚ã‚Šï¼Œãã®è¡ŒãŒ</div><div class='add'>+	  "ruby"ã¨ã„ã†æ–‡å­—åˆ—ã‚’å«ã‚€æ™‚ï¼Œrubyã«å¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã‚Œã°ï¼Œãã®å¼•</div><div class='add'>+	  æ•°ã‚‚æœ‰åŠ¹ã«ãªã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y(yylex): ã‚³ãƒ¡ãƒ³ãƒˆè¡Œã®çµ‚ã‚ŠãŒ`\'ã§ã‚ã£ãŸæ™‚ï¼Œæ¬¡ã®è¡Œã«ç¶™ç¶šã—</div><div class='add'>+	  ã¦ã„ã‚‹ã¨ã¿ãªã™ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Feb  9 16:18:37 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.66</div><div class='add'>+</div><div class='add'>+	* parse.y: protectã‚’beginã«å¤‰æ›´ï¼Žbegin..endã¯ä¾‹å¤–å‡¦ç†ã ã‘ã§ãªãï¼Œ</div><div class='add'>+	  æ–‡æ‹¬å¼§ã¨ã—ã¦ã‚‚åƒãã“ã¨ã«ãªã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Feb  1 19:48:24 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* version 0.65</div><div class='add'>+</div><div class='add'>+	* string.c(str_replace): ç½®ãæ›ãˆã‚‹æ–‡å­—åˆ—ã®é•·ã•ãŒç­‰ã—ã„æ™‚ãƒ¡ãƒ¢ãƒªã‚³</div><div class='add'>+	  ãƒ”ãƒ¼ã‚’ã—ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c(rindex): ãƒã‚°ä¿®æ­£ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Jan 30 11:23:05 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y(value_expr): ifã®ãƒã‚§ãƒƒã‚¯ã‚’è¿½åŠ ï¼Ž</div><div class='add'>+</div><div class='add'>+	* gc.c(gc_mark): free cellã®æ‰±ã„ã«ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: æ–‡æ³•ã®å¤‰æ›´(ã‚ˆã‚Šã‚·ãƒ³ãƒ—ãƒ«ã«)ï¼Žä¾‹å¤–ã‚’æ¸›ã‚‰ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Jan 26 00:52:55 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* parse.y: å¼•æ•°ã¨ã—ã¦é€£æƒ³é…åˆ—ã‚’ç½®ãã“ã¨ãŒã§ãã‚‹ã‚ˆã†ã«ï¼Žã“ã®å ´åˆï¼Œ</div><div class='add'>+	  é€£æƒ³é…åˆ—ãƒªãƒ†ãƒ©ãƒ«ãŒæœ€çµ‚å¼•æ•°ã¨ãªã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: é…åˆ—å‚ç…§ã®`[]'å†…ãŒç©ºã§ã‚‚ã‚ˆã„ã“ã¨ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Jan 24 14:45:15 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* class.c(rb_include_module): `-v'ã‚’æŒ‡å®šã—ãŸæ™‚ã«ã¯includeã—ãŸãƒ¢ã‚¸ãƒ¥ãƒ¼</div><div class='add'>+	  ãƒ«ã¨ã‚¯ãƒ©ã‚¹å®šæ•°ãŒè¡çªã—ã¦ã„ãªã„ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Jan 23 10:42:09 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y(rb_class2name): ãƒ¡ã‚¿ã‚¯ãƒ©ã‚¹ã«é–¢ã™ã‚‹bug fix.</div><div class='add'>+</div><div class='add'>+	* dict.c: Dict[..]ã§è¾žæ›¸ã®ç”ŸæˆãŒå‡ºæ¥ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* array.c: Array[..]ã§é…åˆ—ã®ç”ŸæˆãŒå‡ºæ¥ã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: è¾žæ›¸ã®è¡¨ç¾ã¨ã—ã¦{a,b,..}ã¨ã„ã†å½¢å¼ã‚‚è¨±ã™ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Jan 20 10:28:38 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* re.c(Regexp.quote): æ­£è¦è¡¨ç¾ã‚’ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž</div><div class='add'>+</div><div class='add'>+	* ç„¡é§„ãªrb_intern()ã‚’æ¸›ã‚‰ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: `!', `!=', `!~'ã‚’ç‰¹æ®Šæ¼”ç®—å­ã«ã™ã‚‹ï¼Žã‚ˆã£ã¦ã“ã‚Œã‚‰ã¯å†å®šç¾©</div><div class='add'>+	  ã§ããªããªã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Jan 18 13:20:41 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: æ–‡æ³•ã®æ•´ç†(unless,untilã‚’ãªãã—ãŸ)ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Jan 17 11:11:27 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c: defã§ãƒ¡ã‚½ãƒƒãƒ‰å†å®šç¾©æ™‚ã«ã¯ã‚¹ãƒ¼ãƒ‘ãƒ¼ã‚¯ãƒ©ã‚¹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å¯è¦–</div><div class='add'>+	  æ€§ã‚’ç¶™æ‰¿ã™ã‚‹ï¼Žæœ€åˆã®å®šç¾©ã®æ™‚ã¯ä»Šã¾ã§ã¨åŒã˜ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ(ãƒˆãƒƒãƒ—ãƒ¬ãƒ™</div><div class='add'>+	  ãƒ«ã§é–¢æ•°çš„ï¼Œã‚¯ãƒ©ã‚¹å®šç¾©å†…ã§é€šå¸¸ãƒ¡ã‚½ãƒƒãƒ‰)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* object.c(Class#new): ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®ç”Ÿæˆæ™‚ã«é–¢æ•°çš„ãƒ¡ã‚½ãƒƒãƒ‰</div><div class='add'>+	  init_objectãŒå¿…ãšå‘¼ã°ã‚Œã‚‹ã‚ˆã†ã«å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c: æœªå®šç¾©ã®ãƒ¡ã‚½ãƒƒãƒ‰ã«å¯¾ã—ã¦unknownãƒ¡ã‚½ãƒƒãƒ‰ãŒå‘¼ã°ã‚Œã‚‹ã‚ˆã†ã«</div><div class='add'>+	  ãªã£ãŸï¼Žã‚¨ãƒ©ãƒ¼è¡¨ç¤ºãŒä»Šã¾ã§ã¨åŒã˜ã«ãªã‚‹ã‚ˆã†ã«envã‚’èª¿ç¯€ã—ã¦ã„ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Jan 13 14:40:30 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* gc.c: gcã‚’è‹¥å¹²æ›¸ãæ›ãˆã¦æ•´ç†ã—ãŸï¼ŽãŒï¼Œã‚ã¾ã‚Šå¤‰åŒ–ã¯ãªã‹ã£ãŸã‚ˆã†ã ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y(yylex): symbolã‚’\symã‹ã‚‰:symã«å¤‰æ›´ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Jan 12 01:39:28 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c: æ–°è¦é–¢æ•° rb_eval_string()ï¼Ž</div><div class='add'>+</div><div class='add'>+	* gc.c: gc_mark()ã‚’ä¸€éƒ¨éžå†å¸°åŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c(rb_ivar_{get,set}): ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã®ã‚¢ã‚¯ã‚»ã‚¹å‘¨ã‚Šã§</div><div class='add'>+	  ãƒã‚§ãƒƒã‚¯ãŒè¶³ã‚Šãªã‹ã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c: ã‚¯ãƒ©ã‚¹å®šæ•°ã¨ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã§ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ãƒ«ã‚’å…±æœ‰</div><div class='add'>+	  ã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* ruby.h: iv_tblã‚’RBasicã‹ã‚‰RObjectã¨RClassã¸ç§»å‹•ã—ãŸï¼Žã“ã‚Œã«ã‚ˆã‚Šï¼Œ</div><div class='add'>+	  Objectã¨Class,Moduleã—ã‹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚’æŒã¦ãªããªã‚‹ï¼ŽãŒï¼Œãƒ¡ãƒ¢</div><div class='add'>+	  ãƒªåŠ¹çŽ‡ã¯è‹¥å¹²å‘ä¸Šã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Jan 10 00:58:20 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* 0.64 released</div><div class='add'>+</div><div class='add'>+	* eval.c: ãƒ¬ã‚·ãƒ¼ãƒã¨å¼•æ•°ã¯å¸¸ã«iterã§ã¯ãªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+	* cons.c(aref,aset): negative offsetå¯¾å¿œï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Jan  9 14:40:39 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: foo{..}ã®å½¢å¼ã«ãŠã„ã¦ï¼Œfooã‚’ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã‚„ã‚¯ãƒ©ã‚¹åã§ã¯</div><div class='add'>+	  ãªãï¼Œå¼•æ•°ãªã—ã®é–¢æ•°åž‹ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã¨ã¿ãªã™ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* list.c -&gt; cons.c: åç§°å¤‰æ›´(ã‚¯ãƒ©ã‚¹åã‚‚)ï¼Ž</div><div class='add'>+</div><div class='add'>+	* list.c: a::b::c::nilã‚’ãƒªã‚¹ãƒˆ(a b c)ã¨ã¿ãªã™lispå½¢å¼ã‹ã‚‰ï¼Œa::b::c</div><div class='add'>+	  ã‚’ãƒªã‚¹ãƒˆ(a b c)ã¨ã¿ãªã™rubyå½¢å¼ã«å¤‰æ›´ï¼Ž[], []=, eachã‚‚ãã‚Œã«ä¼šã‚</div><div class='add'>+	  ã›ãŸä»•æ§˜ã¨ã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* list.c: consãƒšã‚¢ã¨ã—ã¦ã®æ©Ÿèƒ½ã‚’å¼·èª¿ï¼Žä»•æ§˜å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+Sat Jan  7 01:26:26 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c: è‡ªå·±ä»£å…¥ã®ä¸å…·åˆä¿®æ­£ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c(masign): å¤šé‡ä»£å…¥ãŒé…åˆ—ã‚‚ãƒªã‚¹ãƒˆã‚‚ã¨ã‚Œã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* list.c: assocã‚’2è¦ç´ ã®é…åˆ—ã‹ã‚‰List(CONSãƒšã‚¢)ã«å¤‰æ›´ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Jan  6 13:42:12 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: a[b]+=cã‚„a.b+=cãªã©ã®è‡ªå·±ä»£å…¥å½¢å¼ã§ï¼Œaã‚„bã‚’2åº¦è©•ä¾¡ã—ãª</div><div class='add'>+	  ããªã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c: iteratorè¨­å®šã®ãƒã‚°ãƒ•ã‚£ãƒƒã‚¯ã‚¹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* list.c: Listã‚¯ãƒ©ã‚¹ã‚’æ–°è¨­ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Jan  5 13:55:00 1995  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: SCOPEã®ãƒ¡ãƒ¢ãƒªãƒªãƒ¼ã‚¯ã‚’ãªãã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c: built-inãƒ¡ã‚½ãƒƒãƒ‰ã¸ã®å¼•æ•°ã®å¼•ãæ¸¡ã—æ–¹ã‚’å¤‰æ›´ã—ã¦ï¼Œé…åˆ—ã®ç”Ÿ</div><div class='add'>+	  æˆæ•°ã‚’æ¸›ã‚‰ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* re.c: match-dataã‚’æ¯Žå›žç”Ÿæˆã™ã‚‹ã“ã¨ã‚’ã‚„ã‚ãŸï¼Ž`$~'ã‚’ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸæ™‚</div><div class='add'>+	  ã«on-demandã§ç”Ÿæˆã™ã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+	* string.c etc: ä¸å¿…è¦ãªmemmoveã‚’memcpyã«ç½®æ›ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: =~, !~ã¯å‰¯ä½œç”¨ãŒã‚ã‚‹ã®ã§ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«æ™‚ã«å±•é–‹ã§ããªã„ï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Jan  3 02:04:36 1995  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c: restå¼•æ•°ã®bug fix.</div><div class='add'>+</div><div class='add'>+	* eval.c,gc.c: scopeã‚’ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c: envã¨scopeã®æ‰±ã„ã‚’å¤‰æ›´ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Dec 28 09:46:57 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: evalã§ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ãŒè¿½åŠ ã•ã‚ŒãŸå ´åˆã«å¯¾å¿œã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y: æ¼”ç®—å­ã‚’å«ã‚€aliasã®bug fix.</div><div class='add'>+</div><div class='add'>+Tue Dec 27 16:45:20 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: def A Bã‚’alias A Bã«å¤‰æ›´ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c: aliasé–¢ä¿‚ã®bugä¿®æ­£ï¼Žnodeã‚’ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆåŒ–ã—ãŸæ™‚ã«enbugã—</div><div class='add'>+	  ãŸã‚ˆã†ã ï¼Ž</div><div class='add'>+</div><div class='add'>+	* signal.c: ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«ã®å†å®šç¾©ã‚’æ­¢ã‚ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* io.c(select): write/exceptã®ãƒ•ãƒ©ã‚°è¨­å®šã«ãƒã‚°ï¼Ž</div><div class='add'>+</div><div class='add'>+	* Makefile.in: static linkç”¨ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’Makeå¤‰æ•°ã¨ã—ã¦ç‹¬ç«‹ã•ã›ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Tue Dec 20 00:46:19 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* 0.63 released</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): superã®å‘¼ã³å‡ºã—ã§è½ã¡ã‚‹ï¼Žargc, argvã®è¨­å®šã‚’å¿˜ã‚Œ</div><div class='add'>+	  ã¦ã„ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y(read_escape): å±•é–‹ã‚¨ãƒ©ãƒ¼ï¼Ž</div><div class='add'>+</div><div class='add'>+	* variable.c: å®šç¾©æ¸ˆã¿ã®å¤‰æ•°ã®hookã‚’å¤‰æ›´ã—ãªã„ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Dec 19 12:01:10 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y(cond): æ¡ä»¶å¼ã«ä»£å…¥å¼ãŒç½®ã‹ã‚ŒãŸå ´åˆï¼Œ`-v'ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã§è­¦</div><div class='add'>+	  å‘ŠãŒå‡ºã‚‹ã‚ˆã†ã«ï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y(**): å†ªä¹—æ¼”ç®—å­`**'ã®å„ªå…ˆé †ä½ã‚’å˜é …æ¼”ç®—å­ã‚ˆã‚Šé«˜ãã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* parse.y(and,or): å„ªå…ˆé †ä½ã®ä½Žã„æ¼”ç®—å­`and', `or'.</div><div class='add'>+</div><div class='add'>+	* 0.62 released.</div><div class='add'>+</div><div class='add'>+	* eval.c: ä¸å¿…è¦ã«ãªã£ãŸPUSH_ENV, POP_ENVã‚’æ¸›ã‚‰ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* env.h: ENVIONã‹ã‚‰selfã‚’ã¯ãšã—ãŸï¼ŽPUSH_ENVã¯superã®æº–å‚™ã®ãŸã‚ã ã‘</div><div class='add'>+	  ã«ç”¨ã„ã‚‹ã“ã¨ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c: ä¸‹è¨˜ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆåŒ–ã§é…ããªã£ãŸå®Ÿè¡Œé€Ÿåº¦ã‚’ã‚‚ã¨ã«æˆ»ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Mon Dec 17 23:01:10 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* eval.c: env.{argv,argc}ã¨scope.local_varsã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆåŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c: 1ã‚¹ã‚³ãƒ¼ãƒ—å†…ã§è¤‡æ•°Blockã‚’ç”Ÿæˆã—ãŸã¨ãã®ãƒã‚°ã‚’ä¿®æ­£ï¼Ž</div><div class='add'>+</div><div class='add'>+Fri Dec 16 15:52:06 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* parse.y: `&amp;&amp;'ã¨`||'ã®ä¸¡è¾ºã¯ã„ã¤ã§ã‚‚æ¡ä»¶å¼ã¨ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Dec 15 00:16:04 1994  Yukihiro Matsumoto  (matz@dyna)</div><div class='add'>+</div><div class='add'>+	* eval.c(Block): Blockã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’å®Ÿç¾ï¼Ž</div><div class='add'>+</div><div class='add'>+	* node.h: NODE_QLISTã¯ãªããªã£ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): å¼•æ•°ã¸ã®ä»£å…¥ã‚’åå‰ã§ä¸€ã¤ãšã¤ä»£å…¥ã™ã‚‹ã®ã‚’ã‚„ã‚ã¦ï¼Œ</div><div class='add'>+	  ä¸€åº¦ã«ã‚³ãƒ”ãƒ¼ã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): rubyã§è¨˜è¿°ã•ã‚ŒãŸãƒ¡ã‚½ãƒƒãƒ‰ã¸ã®å¼•æ•°æ¸¡ã—ã‚’inlineåŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c: ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿åˆ¤å®šå‡¦ç†ã®å…¨é¢æ›¸ãæ›ãˆï¼Žä¸é©åˆ‡ãªã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿å‘¼ã³</div><div class='add'>+	  å‡ºã—ã‚’ãªãã—ãŸï¼Žä¾‹ãˆã°ã€Œ[foo(),bar()]{i|baz(i)}ã€ã§fooã‚‚barã‚‚ã‚¤</div><div class='add'>+	  ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œ*ãªã„*ï¼Ž</div><div class='add'>+</div><div class='add'>+	* eval.c(rb_call): SCOPEå‡¦ç†ã‚’inlineåŒ–ï¼Žãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã®è‹¥å¹²ã®é«˜</div><div class='add'>+	  é€ŸåŒ–ï¼Ž</div><div class='add'>+</div><div class='add'>+Wed Dec 14 18:09:33 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* node.h: nodeã‚‚ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«ã™ã‚‹ï¼Žã‚ˆã£ã¦GCã§å›žåŽã•ã‚Œã‚‹ï¼Ž</div><div class='add'>+</div><div class='add'>+Thu Dec  8 14:17:29 1994  Yukihiro Matsumoto  (matz@ix-02)</div><div class='add'>+</div><div class='add'>+	* 0.60 released - alpha test baseline.</div><div class='head'>diff --git a/doc/ChangeLog-1.8.0 b/doc/ChangeLog-1.8.0<br/>index 07d7c6b165..0d00266735 100644<br/>--- a/<a href='/ruby.git/tree/doc/ChangeLog-1.8.0?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>doc/ChangeLog-1.8.0</a><br/>+++ b/<a href='/ruby.git/tree/doc/ChangeLog-1.8.0?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>doc/ChangeLog-1.8.0</a></div><div class='hunk'>@@ -1454,7 +1454,7 @@ Fri Jun 27 03:24:54 2003  Nobuyoshi Nakada  &lt;nobu.nokada@softhome.net&gt;</div><div class='ctx'> Thu Jun 26 21:34:49 2003  Nobuyoshi Nakada  &lt;nobu.nokada@softhome.net&gt;</div><div class='ctx'> </div><div class='ctx'> 	* class.c (class_instance_method_list): get rid of warning about</div><div class='del'>-	  arguement type mismatch, and inline method_list().</div><div class='add'>+	  argument type mismatch, and inline method_list().</div><div class='ctx'> 	  [ruby-core:01198]</div><div class='ctx'> </div><div class='ctx'> Wed Jun 25 14:40:33 2003  Hidetoshi NAGAI &lt;nagai@ai.kyutech.ac.jp&gt;</div><div class='hunk'>@@ -3361,7 +3361,7 @@ Fri Apr 11 02:41:35 2003  Nobuyoshi Nakada  &lt;nobu.nokada@softhome.net&gt;</div><div class='ctx'> </div><div class='ctx'> Thu Apr 10 21:12:19 2003  Minero Aoki  &lt;aamine@loveruby.net&gt;</div><div class='ctx'> </div><div class='del'>-	* lib/net/pop.rb: Exception line was accidentaly removed.</div><div class='add'>+	* lib/net/pop.rb: Exception line was accidentally removed.</div><div class='ctx'> 	  [ruby-dev:19989]</div><div class='ctx'> </div><div class='ctx'> Thu Apr 10 18:42:13 2003  Tadayoshi Funaba  &lt;tadf@dotrb.org&gt;</div><div class='hunk'>@@ -5986,7 +5986,7 @@ Thu Nov  7 09:51:37 2002  Nobuyoshi Nakada  &lt;nobu.nokada@softhome.net&gt;</div><div class='ctx'> Wed Nov  6 16:57:06 2002  Yukihiro Matsumoto  &lt;matz@ruby-lang.org&gt;</div><div class='ctx'> </div><div class='ctx'> 	* class.c (rb_define_method): do not set NOEX_CFUNC if klass is</div><div class='del'>-	  really a module, whose methods must be safe for reciever's type.</div><div class='add'>+	  really a module, whose methods must be safe for receiver's type.</div><div class='ctx'> </div><div class='ctx'> 	* eval.c (rb_eval): nosuper should not be inherited unless the</div><div class='ctx'> 	  overwritten method is an undef placeholder.</div><div class='head'>diff --git a/doc/ChangeLog-1.9.3 b/doc/ChangeLog-1.9.3<br/>index e9ede641f5..b3deb551b0 100644<br/>--- a/<a href='/ruby.git/tree/doc/ChangeLog-1.9.3?h=v2_4_0_preview2&amp;id=a627fdfaaffd456de871ead092c1770d220aec98'>doc/ChangeLog-1.9.3</a><br/>+++ b/<a href='/ruby.git/tree/doc/ChangeLog-1.9.3?h=v2_4_0_preview2&amp;id=e11c22602af69e8139ec0649bb39f5a66d1e66a1'>doc/ChangeLog-1.9.3</a></div><div class='hunk'>@@ -3541,7 +3541,7 @@ Sun May 15 23:45:11 2011  KOSAKI Motohiro  &lt;kosaki.motohiro@gmail.com&gt;</div><div class='ctx'> Sun May 15 22:26:39 2011  CHIKANAGA Tomoyuki  &lt;nagachika00@gmail.com&gt;</div><div class='ctx'> </div>