|
|
|
|
|
by themafia
20 days ago
|
|
> How does Ruby solve this problem? The interpreter keeps track of globals and all stack frames. So it knows what objects are in scope. If you're creating an object that can contain native ruby values inside it's own opaque structure, then when you define the class that wraps this structure you reference the callback functions you want to be called during GC mark and when the GC frees your object. During the mark callback you simply call rb_gc_mark on any of those internal values so the GC knows they are in scope. In practice it's quite easy to use and you can find many examples of this. There is no equivalent I'm aware of to mark in lua, but the free callback is effectively equivalent to the __gc metamethod. |
|