[#36711] [Ruby 1.9 - Bug #4821][Open] Random Segfaults (in start_thread?) — Ivan Bortko <b2630639@...>

22 messages 2011/06/03

[#36730] [Ruby 1.9 - Feature #4824][Open] Provide method Kernel#executed? — Lazaridis Ilias <ilias@...>

56 messages 2011/06/04

[#36750] [Ruby 1.9 - Feature #4830][Open] Provide Default Variables for Array#each and other iterators — Lazaridis Ilias <ilias@...>

24 messages 2011/06/05

[#36785] [Ruby 1.9 - Feature #4840][Open] Allow returning from require — Rodrigo Rosenfeld Rosas <rr.rosas@...>

53 messages 2011/06/06
[#36811] Re: [Ruby 1.9 - Feature #4840][Open] Allow returning from require — Yusuke ENDOH <mame@...> 2011/06/07

Hello,

[#36799] [Ruby 1.9 - Feature #4845][Open] Provide Class#cb_object_instantiated_from_literal(object) — Lazaridis Ilias <ilias@...>

11 messages 2011/06/06

[#36834] [Ruby 1.9 - Feature #3905] rb_clear_cache_by_class() called often during GC for non-blocking I/O — Charles Nutter <headius@...>

10 messages 2011/06/08
[#36860] Re: [Ruby 1.9 - Feature #3905] rb_clear_cache_by_class() called often during GC for non-blocking I/O — Eric Wong <normalperson@...> 2011/06/08

Charles Nutter <headius@headius.com> wrote:

[#36863] Object#trust vs Object#taint — Aaron Patterson <aaron@...>

Hi,

16 messages 2011/06/08
[#36866] Re: Object#trust vs Object#taint — Yukihiro Matsumoto <matz@...> 2011/06/08

Hi,

[#36873] Re: Object#trust vs Object#taint — Aaron Patterson <aaron@...> 2011/06/09

On Thu, Jun 09, 2011 at 07:49:06AM +0900, Yukihiro Matsumoto wrote:

[#37071] [Ruby 1.9 - Feature #4877][Open] Unify Variable Expansion within Strings — Lazaridis Ilias <ilias@...>

12 messages 2011/06/12

[#37106] ruby core tutorials location — Roger Pack <rogerdpack2@...>

Hello all.

10 messages 2011/06/13
[#37107] Re: ruby core tutorials location — Jon <jon.forums@...> 2011/06/13

> Hello all.

[#37115] Re: ruby core tutorials location — Roger Pack <rogerdpack2@...> 2011/06/13

> Rather than adding links to source code, I would prefer the wikibooks link and others under a new Tutorials section of http://www.ruby-lang.org/en/documentation/ as well as adding http://ruby.runpaint.org/ to the existing Getting Started section.

[#37117] Re: ruby core tutorials location — Jon <jon.forums@...> 2011/06/13

> > Rather than adding links to source code, I would prefer the wikibooks link and others under a new Tutorials section of http://www.ruby-lang.org/en/documentation/ as well as adding http://ruby.runpaint.org/ to the existing Getting Started section.

[#37128] Re: ruby core tutorials location — Roger Pack <rogerdpack2@...> 2011/06/14

> I like what you're trying to do and see how great that tutorial connection from rdoc/yard could be, say, mixing with existing ruby-doc.org and rubydoc.info. ut I question embedding source links to info in which the info can easily grow outdated or abandoned as time passes. I also question the ongoing maintenance burdens.

[#37137] Re: ruby core tutorials location — Jon <jon.forums@...> 2011/06/14

> > I like what you're trying to do and see how great that tutorial connection from rdoc/yard could be, say, mixing with existing ruby-doc.org and rubydoc.info. ut I question embedding source links to info in which the info can easily grow outdated or abandoned as time passes. I also question the ongoing maintenance burdens.

[#37164] [Ruby 1.9 - Feature #4890][Open] Enumerable#lazy — Yutaka HARA <redmine@...>

30 messages 2011/06/16

[#37170] [Ruby 1.9 - Bug #4893][Open] Literal Instantiation breaks Object Model — Lazaridis Ilias <ilias@...>

61 messages 2011/06/16

[#37207] [Ruby 1.9 - Feature #4897][Open] Define Math::TAU and BigMath.TAU. The "true" circle constant, Tau=2*Pi. See http://tauday.com/ — Simon Baird <simon.baird@...>

43 messages 2011/06/17

[#37286] [Ruby 1.9 - Bug #4916][Open] [BUG] Segmentation fault - dyld: lazy symbol binding failed: Symbol not found: _ASN1_put_eoc — Hiroshi NAKAMURA <nakahiro@...>

9 messages 2011/06/22

[#37324] [Ruby 1.9 - Bug #4923][Open] [ext/openssl] test_ssl.rb: test_client_auth fails — Martin Bosslet <Martin.Bosslet@...>

19 messages 2011/06/23

[#37576] [Ruby 1.9 - Feature #4938][Open] Add Random.bytes [patch] — Marc-Andre Lafortune <ruby-core@...>

13 messages 2011/06/27

[#37612] [Ruby 1.9 - Bug #4941][Open] cannot load such file -- rubygems.rb (LoadError) — Lazaridis Ilias <ilias@...>

25 messages 2011/06/28

[ruby-core:36915] Re: [Ruby 1.9 - Feature #3905] rb_clear_cache_by_class() called often during GC for non-blocking I/O

From: Eric Wong <normalperson@...>
Date: 2011-06-10 09:37:21 UTC
List: ruby-core #36915
Charles Oliver Nutter <headius@headius.com> wrote:
> On Thu, Jun 9, 2011 at 3:17 AM, Eric Wong <normalperson@yhbt.net> wrote:
> > Nevermind, I misread the first time and got ordering of your question
> > mixed up in my mind.
> >
> > Once a class is tagged RCLASS_EPHEMERAL, it's impossible for it to
> > write to the cache.  There's no need to flush the cache for ephemeral
> > classes because...
> ...
> > ...the the /only/ safe way to use RCLASS_EPHEMERAL is before any methods
> > are called (and cached) for the singleton class.
> 
> >> begin
> >>   io.read_nonblock
> >> rescue WaitReadable => e
> >>   class << self
> >>     # add something cute
> >
> > Any methods defined here will never be cached, because RCLASS_EPHEMERAL
> > was set before we re-entered Ruby-land.
> 
> Ok, not being familiar with the MRI code, and not seeing more than a
> few lines of context in the patch, I didn't get this.
> 
> So summarizing in non-code:
> 
> * Ephemeral class creation does not flush global cache
> * ...because ephemeral class methods will never be cached

Yes, to both.  Creation of new classes (ephemeral or not) never touches
the method cache, only destruction clears the cache.  The global method
cache includes the (exact) class of each method along with the method
ID.

> But I'm confused; if code has already cached a method from an
> ephemeral class's superclass, and someone adds to the ephemeral class,
> does the new method get picked up? Hopefully adding methods to an
> ephemeral class still clears cache, because otherwise invocation won't
> see such changes. Am I following?

Yes a method gets picked up in the ephmeral class if the (non-ephemeral)
superclass is modified.

The MRI method cache relies on the class of the calling object matching
/exactly/ with the class of the cached method for a hit.  Modifying a
superclass of any class

I think adding any method anywhere will clear the cache in MRI.  But
it's not needed for adding methods to ephemeral classes since they'd
never have any methods in the cache in the first place.

> I need to look at ko1's patch since that seems to please you.

Yes, it's the best patch (along with r28813) I've seen for this issue.
Easy to understand, too.

The only thing I can imagine being better is to make uncached method
lookup fast enough to where the cache becomes obsolete.  I think that
would be difficult, though.

-- 
Eric Wong

In This Thread

Prev Next