動機LuaのAPIは、Lua内部で扱われる値に関してスタック上であれこれ操作出来るだけで、値自体を直接取得したり作成することはできない。 値を取り出したいときはスタック上の特定の場所にある値の型を調べて、その型の値を取り出すAPIを呼び出す、という具合になっている。 この場合、処理系で扱う値はすべて処理系側で管理されているので、ガベージコレクト(GC)できるのもわからんでもない。 しかしmrubyのAPIではスクリプト内部で扱う値をmrb_valueとしてC言語側に直接取り出せる。 この場合処理系の管理を逃れてしまうことはないのか。 またCの関数でmrubyのオブジェクトを作成した瞬間にGCが走った場合に、まだmrubyで管理している変数からの参照がなくて、解放されてしまったりしないのか。 大昔の事しか知らないけど、Rubyの場合はC側のスタック全部を調べていた(Rubyソースコード完全解