ポインタがライブラリとGauche側の両方から参照される可能性がある……

のをどうするか?と言う問題にぶち当たった……

具体的に言うと、id3libの、ID3_Frame クラスなんですが、これは基本的には ID3_Tag 内部でメモリの生存が管理されているので、 ID3_Tag のメソッドで ID3_Frame を取り出した後に、その ID3_Frame を ID3_Tag から削除したりすると、めでたく Gauche 側に不正なポインタが出来上がるというわけで……。参照カウンタみたいな仕組みもなさそう。

Ruby バインディングでは、思い切って ID3_Frame の存在は無かったもののように扱われている様に見えます。Ruby 側には ID3_Frame はただのハッシュに見える。それで、多分バインディングの内部でハッシュ <=> ID3_Frame の変換をしてる。Gauche の場合は出来るだけ生の構造をみせるって言う原則があるみたいだし、非効率なのは嫌われているので、そういう、"全部コピーすりゃいいじゃん"みたいなのはだめっぽいなあと思うのですが、どうするのがいいんだろう。