Here is a doc patch for weakref, against the stable snapshot as before.
        HTH
        Hugh

--- ./lib/weakref.rb.orig	2003-12-10 08:26:36.000000000 +0000
+++ ./lib/weakref.rb	2006-07-28 18:47:24.030588000 +0100
@@ -1,4 +1,11 @@
-# Weak Reference class that does not bother GCing.
+
+require "delegate"
+
+# Weak Reference class that does not bother GCing.  This allows the
+# referenced object to be garbage collected as if nothing else is
+# referring to it.  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 +15,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 +45,7 @@
     end
   }
 
+  # Create a new WeakRef from +orig+.
   def initialize(orig)
     super
     @__id = orig.__id__
@@ -56,6 +62,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 +76,7 @@
     end
   end
 
+  # Determine if this Weakref still refers to anything.
   def weakref_alive?
     @@id_rev_map[self.__id__] == @__id
   end