From: Clemens Hintze Date: 1999-07-14T08:02:35+02:00 Subject: [ruby-talk:00490] Some questions concerning GC in Ruby extensions Hi matz, I am currently writing a Ruby extension using C. Now I have some questions. May I ask them to you? In `Data_Wrap_Struct' and `Data_Make_Struct' there are two parameters I don't understand at whole. These are `mark' and `free'. 1. The functions pointed to by these parameters are called from the GC, right? 2. GC calls first `mark' and then `free'? Why? 3. How will `mark'ed references discard later? 4. With `free' do you mean the opposite of `malloc' from the standard C library? If yes... 4.a. Why do I need `free'? I had assumed that we have `ALLOC_N' and true GC. 5. The function `Data_Make_Struct' use `malloc'. Is that our old and beloved `malloc' of the standard C library? If yes... 5.a. Why do we not use `ALLOC_N' here? If a function within my extension use `malloc' to allocate memory, and there is no memory available... 6. What kind of exception would you throw? Concerning Ruby's syntax tree... 7. Are there any docs, that explain the format of that tree a little bit? 8. How flexible is that syntax tree? 8.a. Would it, for example, be possible to transfer another language, let us say Smalltalk, to such a syntax tree, and let the Ruby VM work with it (in principle)? 8.b. Could I store that syntax tree in some format, so that later, I could reload it and start evaluation again? 8.c. Are there any functions, that deals with the syntax tree (like: traversing, add a node, delete one, ...) Okay! That was it for now ;-) I have read your excellent README.EXT, but for these questions (among others) I've not found answers. So I try to bother you again. :-) Thanks in advance, \cle