> The source itself, especially object.c and class.c would help you. > It describes everything, including bugs. ;-) > > Seriously, there's no other document (yet), and README.EXT gives you > almost all you need to know to read the source. > > matz. > > OK so lets be more specific: from Init_Object in object.c (best read under fixed width font) /* * * Ruby's Class Hierarchy Chart * * +------------------+ * | | * Object---->(Object) | * ^ ^ ^ ^ | * | | | | | * | | +-----+ +---------+ | * | | | | | * | +-----------+ | | * | | | | | * +------+ | Module--->(Module) | * | | ^ ^ | * OtherClass-->(OtherClass) | | | * | | | * Class---->(Class) | * ^ | * | | * +----------------+ * * + All metaclasses are instances of the class `Class'. */ now here are the questions: which are the classes and the metaclasses (what is the significance of the parenthesis)? What really confuses me is that I don't understand why there are two class instances for each of this core class: rb_cObject-->rb_singleton_class_new(rb_cClass) rb_cModule-->rb_singleton_class_new(rb_singleton_class_new(rb_cClass)) rb_cClass-->rb_singleton_class_new(rb_singleton_class_new(rb_singleton_class _new(rb_cClass))) And why not rb_cObject-->rb_singleton_class_new(rb_cClass) rb_cModule-->rb_singleton_class_new(rb_cClass) rb_cClass-->rb_singleton_class_new(rb_cClass) So can you just point me to the part in object.c and class.c which makes use of the class attached with rb_singleton_class_attached. Benoit PS: in any case I'll continue to read the source and I'll find out, its just that I'd like it to go faster.