[#8136] Confused exception handling in Continuation Context — "Robert Dober" <robert.dober@...>

Hi all

13 messages 2006/07/06

[#8248] One-Click Installer: MinGW? or VC2005? — "Curt Hibbs" <ml.chibbs@...>

I just posted this to ruby-talk. But I would also like to discuss this

33 messages 2006/07/18
[#8264] Re: One-Click Installer: MinGW? or VC2005? — Charlie Savage <cfis@...> 2006/07/19

From my experience using both tool chains on Windows (for the ruby-prof

[#8266] Re: One-Click Installer: MinGW? or VC2005? — "Curt Hibbs" <ml.chibbs@...> 2006/07/19

Tim, I'm going to top reply since your post was so long. I'm interested in

[#8267] Re: One-Click Installer: MinGW? or VC2005? — Charlie Savage <cfis@...> 2006/07/19

> Tim, I'm going to top reply since your post was so long. I'm interested in

[#8271] my sandboxing extension!! — why the lucky stiff <ruby-core@...>

I have (what feels like) very exciting news. I finally sat down to code up my

17 messages 2006/07/19

[#8430] Re: doc patch: weakref. — "Berger, Daniel" <Daniel.Berger@...>

> -----Original Message-----

19 messages 2006/07/28
[#8434] Re: doc patch: weakref. — Yukihiro Matsumoto <matz@...> 2006/07/29

Hi,

[#8436] Re: doc patch: weakref. — Daniel Berger <djberg96@...> 2006/07/29

Yukihiro Matsumoto wrote:

[#8437] Re: doc patch: weakref. — Mauricio Fernandez <mfp@...> 2006/07/29

On Sat, Jul 29, 2006 at 07:37:24PM +0900, Daniel Berger wrote:

[#8441] Inconsistency in scoping during module_eval? — "Charles O Nutter" <headius@...>

I have the following code:

18 messages 2006/07/30
[#8442] Re: Inconsistency in scoping during module_eval? — nobu@... 2006/07/30

Hi,

[#8443] Re: Inconsistency in scoping during module_eval? — "Charles O Nutter" <headius@...> 2006/07/30

Why does this:

[#8445] Re: Inconsistency in scoping during module_eval? — Yukihiro Matsumoto <matz@...> 2006/07/30

Hi,

[#8454] Re: Inconsistency in scoping during module_eval? — "Charles O Nutter" <headius@...> 2006/07/31

So to clarify...

Re: doc patch: weakref.

From: Hugh Sasse <hgs@...>
Date: 2006-07-31 10:20:58 UTC
List: ruby-core #8463
On Sun, 30 Jul 2006, Mauricio Fernandez wrote:

> 
> Some people don't know how Ruby's GC works, or even what a mark&sweep GC is.
> They wouldn't understand what the above means (maybe).
> 
> "WeakRef is a class to represent a reference to an object that may be
> reclaimed by the GC. The WeakRef is invalidated when this happens."

OK, how is this?
        Hugh


--- ./lib/weakref.rb.orig	2003-12-10 08:26:36.000000000 +0000
+++ ./lib/weakref.rb	2006-07-31 10:40:01.154757000 +0100
@@ -1,4 +1,14 @@
-# Weak Reference class that does not bother GCing.
+
+require "delegate"
+
+# An object may be reclaimed by the garbage collector if there are
+# no references to it.  A Weakref represents a reference the garbage
+# collector will ignore,  This allows the referenced object to be
+# garbage collected as if nothing else is referring to it.  When
+# this happens #weakref_alive? will return false.  Because
+# Weakref inherits from Delegator it passes method calls to the
+# object from which it was constructed, so it is of the same Duck
+# Type.
 #
 # Usage:
 #   foo = Object.new
@@ -8,11 +18,9 @@
 #   p foo.to_s			# should be same class
 #   ObjectSpace.garbage_collect
 #   p foo.to_s			# should raise exception (recycled)
-
-require "delegate"
-
 class WeakRef<Delegator
 
+  # RefError is raised if an object cannot be referenced by a WeakRef.
   class RefError<StandardError
   end
 
@@ -40,6 +48,7 @@
     end
   }
 
+  # Create a new WeakRef from +orig+.
   def initialize(orig)
     super
     @__id = orig.__id__
@@ -56,6 +65,9 @@
     @@id_rev_map[self.__id__] = @__id
   end
 
+  # Return the object this WeakRef references. Raise
+  # RefError if this is impossible.  The object is that
+  # to which method calls are delegated (see Delegator).
   def __getobj__
     unless @@id_rev_map[self.__id__] == @__id
       raise RefError, "Illegal Reference - probably recycled", caller(2)
@@ -67,6 +79,7 @@
     end
   end
 
+  # Determine if this Weakref still refers to anything.
   def weakref_alive?
     @@id_rev_map[self.__id__] == @__id
   end

In This Thread