Docs on implementation of ruby?

Hello,

Are there any docs (online resources, books) available in english on the
implementation of the ruby interpreter ?
(i believe there must be a more efficient way to get a grip on the inner
workings of the ruby interpreter, than just scanning the +/- 70000 lines
of code ?)

I’d like to do some experiments with garbage collection for ruby, and i’d
like to know how the garbage collector is integrated in the ruby
interpreter. (everything gc-related in gc.c ?) For example, how hard would
it be to build a generational collector ? What code would need to be
changed to include a software write barrier ? (is rb_eval in eval.c a
good starting point ?)

I also have some questions related to extensions, i’ve read that
extensions should register the addresses of the ruby objects they use with
the gc. Related to this, does that mean that only these objects can not
be moved during gc ? Or is it that every object (in)directly referenced
by a registered object should not be moved during gc ?
Also, is it possible to not use any extensions, so that you could use a
moving gc ? Or are some extensions always loaded ?

(i read some things about a generational gc for ruby… there would be one
included in the 1.8 release, but it’s not included in the preview ? are
there still plans to include one or not ? is there an existing
generational gc for ruby ?)

Ruben Vandeginste