<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/eval.c, branch v2_0_0_rc1</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>* eval.c (Init_eval): main.include should be private.</title>
<updated>2013-01-07T11:55:17+00:00</updated>
<author>
<name>shugo</name>
<email>shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2013-01-07T11:55:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=4722c20661093f5071701941bc2f7b519f2a7283'/>
<id>4722c20661093f5071701941bc2f7b519f2a7283</id>
<content type='text'>
  [ruby-core:51293] [Bug #7670]

* test/ruby/test_module.rb (test_top_include_is_private): a new test
  for the above change.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  [ruby-core:51293] [Bug #7670]

* test/ruby/test_module.rb (test_top_include_is_private): a new test
  for the above change.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* eval.c (Init_eval): enable Refinements by default.</title>
<updated>2013-01-07T11:22:31+00:00</updated>
<author>
<name>shugo</name>
<email>shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2013-01-07T11:22:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9cadf0c03906f49f41e4222248c6a48e72bdb82f'/>
<id>9cadf0c03906f49f41e4222248c6a48e72bdb82f</id>
<content type='text'>
  [ruby-core:51286] [Bug #7667]

* eval.c (rb_mod_refine, top_using): show a warning when
  Module#refine or main.using is called at the first time.

* ext/refinement/*: removed the extension library "refinement".

* test/ruby/test_refinement.rb: fix for the above changes.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  [ruby-core:51286] [Bug #7667]

* eval.c (rb_mod_refine, top_using): show a warning when
  Module#refine or main.using is called at the first time.

* ext/refinement/*: removed the extension library "refinement".

* test/ruby/test_refinement.rb: fix for the above changes.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>use RB_TYPE_P</title>
<updated>2012-12-29T12:22:01+00:00</updated>
<author>
<name>nobu</name>
<email>nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2012-12-29T12:22:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e878df745ca89ecdb07090ad2bb99fd433dfc3a3'/>
<id>e878df745ca89ecdb07090ad2bb99fd433dfc3a3</id>
<content type='text'>
* enumerator.c (enumerator_initialize), eval.c (rb_using_refinement),
  (add_activated_refinement), numeric.c (num_interval_step_size),
  parse.y (arg, match_op_gen, cond0), range.c (range_bsearch),
  vm_insnhelper.c (vm_get_iclass): use RB_TYPE_P() to optimize.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* enumerator.c (enumerator_initialize), eval.c (rb_using_refinement),
  (add_activated_refinement), numeric.c (num_interval_step_size),
  parse.y (arg, match_op_gen, cond0), range.c (range_bsearch),
  vm_insnhelper.c (vm_get_iclass): use RB_TYPE_P() to optimize.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* eval.c (rb_using_refinement): make the method table of an iclass</title>
<updated>2012-12-11T16:48:21+00:00</updated>
<author>
<name>shugo</name>
<email>shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2012-12-11T16:48:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b5e9c6cb903aa550713f5f5764964560f98e180f'/>
<id>b5e9c6cb903aa550713f5f5764964560f98e180f</id>
<content type='text'>
  for a refinement that of the refinement, not that of the origin of
  the refinement, which is set by rb_include_class_new().  This
  change is needed to make module prepend into a refinement work
  properly.

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38328 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  for a refinement that of the refinement, not that of the origin of
  the refinement, which is set by rb_include_class_new().  This
  change is needed to make module prepend into a refinement work
  properly.

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38328 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* fix the behavior when a module is included into a refinement.</title>
<updated>2012-12-10T16:05:45+00:00</updated>
<author>
<name>shugo</name>
<email>shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2012-12-10T16:05:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=7ef16d224a80a6e1e8c01b5b45ac7e2315a04e4c'/>
<id>7ef16d224a80a6e1e8c01b5b45ac7e2315a04e4c</id>
<content type='text'>
  This change is a little tricky, so it might be better to prohibit
  module inclusion to refinements.

* include/ruby/ruby.h (RMODULE_INCLUDED_INTO_REFINEMENT): new flag
  to represent that a module (iclass) is included into a refinement.

* class.c (include_modules_at): set RMODULE_INCLUDED_INTO_REFINEMENT
  if klass is a refinement.

* eval.c (rb_mod_refine): set the superclass of a refinement to the
  refined class for super.

* eval.c (rb_using_refinement): skip the above superclass (the
  refined class) when creating iclasses for refinements.  Otherwise,
  `using Refinement1; using Refinement2' creates iclasses:
  &lt;Refinement2&gt; -&gt; &lt;RefinedClass&gt; -&gt; &lt;Refinement1&gt; -&gt; RefinedClass,
  where &lt;Module&gt; is an iclass for Module, so RefinedClass is
  searched before Refinement1.  The correct iclasses should be
  &lt;Refinement2&gt; -&gt; &lt;Refinement1&gt; -&gt; RefinedClass.

* vm_insnhelper.c (vm_search_normal_superclass): if klass is an
  iclass for a refinement, use the refinement's superclass instead
  of the iclass's superclass.  Otherwise, multiple refinements are
  searched by super.  For example, if a refinement Refinement2
  includes a module M (i.e., Refinement2 -&gt; &lt;M&gt; -&gt; RefinedClass,
  and if refinements iclasses are &lt;Refinement2&gt; -&gt; &lt;M&gt;' -&gt;
  &lt;Refinement1&gt; -&gt; RefinedClass, then super in &lt;Refinement2&gt; should
  use Refinement2's superclass &lt;M&gt; instead of &lt;Refinement2&gt;'s
  superclass &lt;M&gt;'.

* vm_insnhelper.c (vm_search_super_method): do not raise a
  NotImplementError if current_defind_class is a module included
  into a refinement.  Because of the change of
  vm_search_normal_superclass(), the receiver might not be an
  instance of the module('s iclass).

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  This change is a little tricky, so it might be better to prohibit
  module inclusion to refinements.

* include/ruby/ruby.h (RMODULE_INCLUDED_INTO_REFINEMENT): new flag
  to represent that a module (iclass) is included into a refinement.

* class.c (include_modules_at): set RMODULE_INCLUDED_INTO_REFINEMENT
  if klass is a refinement.

* eval.c (rb_mod_refine): set the superclass of a refinement to the
  refined class for super.

* eval.c (rb_using_refinement): skip the above superclass (the
  refined class) when creating iclasses for refinements.  Otherwise,
  `using Refinement1; using Refinement2' creates iclasses:
  &lt;Refinement2&gt; -&gt; &lt;RefinedClass&gt; -&gt; &lt;Refinement1&gt; -&gt; RefinedClass,
  where &lt;Module&gt; is an iclass for Module, so RefinedClass is
  searched before Refinement1.  The correct iclasses should be
  &lt;Refinement2&gt; -&gt; &lt;Refinement1&gt; -&gt; RefinedClass.

* vm_insnhelper.c (vm_search_normal_superclass): if klass is an
  iclass for a refinement, use the refinement's superclass instead
  of the iclass's superclass.  Otherwise, multiple refinements are
  searched by super.  For example, if a refinement Refinement2
  includes a module M (i.e., Refinement2 -&gt; &lt;M&gt; -&gt; RefinedClass,
  and if refinements iclasses are &lt;Refinement2&gt; -&gt; &lt;M&gt;' -&gt;
  &lt;Refinement1&gt; -&gt; RefinedClass, then super in &lt;Refinement2&gt; should
  use Refinement2's superclass &lt;M&gt; instead of &lt;Refinement2&gt;'s
  superclass &lt;M&gt;'.

* vm_insnhelper.c (vm_search_super_method): do not raise a
  NotImplementError if current_defind_class is a module included
  into a refinement.  Because of the change of
  vm_search_normal_superclass(), the receiver might not be an
  instance of the module('s iclass).

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* eval.c (rb_mod_refine): don't override Module#include.  It's</title>
<updated>2012-12-08T13:41:16+00:00</updated>
<author>
<name>shugo</name>
<email>shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2012-12-08T13:41:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=54fce8119a4697638ec1c37104f6b9d5d7cfe0c2'/>
<id>54fce8119a4697638ec1c37104f6b9d5d7cfe0c2</id>
<content type='text'>
  unnecessary now because refinements are activated only in refine
  blocks.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38276 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  unnecessary now because refinements are activated only in refine
  blocks.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38276 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* eval.c: remove Module#refinements.</title>
<updated>2012-12-08T13:35:15+00:00</updated>
<author>
<name>shugo</name>
<email>shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2012-12-08T13:35:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=4363d0765b802e0f8322fceeb282aa1c0d3f3e8b'/>
<id>4363d0765b802e0f8322fceeb282aa1c0d3f3e8b</id>
<content type='text'>
* test/ruby/test_refinement.rb: remove tests for Module#refinements.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* test/ruby/test_refinement.rb: remove tests for Module#refinements.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* eval.c (top_using): raise a RuntimeError if using is called in a</title>
<updated>2012-12-08T13:35:12+00:00</updated>
<author>
<name>shugo</name>
<email>shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2012-12-08T13:35:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=bdb8607cb7549f8555fed781392231ead86d984b'/>
<id>bdb8607cb7549f8555fed781392231ead86d984b</id>
<content type='text'>
  module definition or a method definition.

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  module definition or a method definition.

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* eval.c (rb_mod_refine): raise an ArgumentError if a given</title>
<updated>2012-12-08T03:06:13+00:00</updated>
<author>
<name>shugo</name>
<email>shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2012-12-08T03:06:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d928280cb6644d2d899aadf7bfc8cf4e1b5e2997'/>
<id>d928280cb6644d2d899aadf7bfc8cf4e1b5e2997</id>
<content type='text'>
  block is of a Proc object.

* vm_insnhelper.c (vm_call_method): store refined methods in inline
  cache to improve performance.  It's safe now because blocks cannot
  be yielded with different refinements in the new specification.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  block is of a Proc object.

* vm_insnhelper.c (vm_call_method): store refined methods in inline
  cache to improve performance.  It's safe now because blocks cannot
  be yielded with different refinements in the new specification.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* eval.c (rb_mod_refine), vm_eval.c (rb_yield_refine_block):</title>
<updated>2012-12-08T02:37:16+00:00</updated>
<author>
<name>shugo</name>
<email>shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2012-12-08T02:37:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=db051011d68950cd1261f91e724513282d419d9e'/>
<id>db051011d68950cd1261f91e724513282d419d9e</id>
<content type='text'>
  Module#refine activates all refinements defined in that module
  only in a given block.

* string.c (sym_to_proc, sym_call): don't use refinements.

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  Module#refine activates all refinements defined in that module
  only in a given block.

* string.c (sym_to_proc, sym_call): don't use refinements.

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
</feed>
