なかだです。

At Thu, 26 Jun 2003 16:38:23 +0900,
Minero Aoki wrote:
> > > 恐らく、Ruby レベルからクラスオブジェクトにアクセスせずに
> > > インスタンスを作れるクラスは全て危険ですよね。とすると
> > > 少なくとも rb_cString rb_cArray rb_cHash rb_cBignum rb_cRange
> > > あたりは必要だと思います。
> > 
> > あとrb_cRegexpとrb_cSymbolあたりも。
> 
> ですね。リテラル絡みと、型変換があるものをチェックすれば
> いいんでしょうか。

うーん、rb_cDataもサブクラスを全部再定義するとGCされそうな気が。
というか、拡張ライブラリまで考えると結局全部保護する必要がある
のかも。いやexternされてるものだけかな。

> > Rubyレベルで定義されたものだけ保護すればいいような気もしますが
> 
> え、逆ではないですか? C で定義されたものだけ保護するんですよね。
> ……ああそうか、C で定義したものはそれぞれの拡張ライブラリが
> しっかり面倒を見ろってことですね。確かにそれが正論ですね。

あ、いや単なる書き間違いです。逆でした。

> ただ、いままでは「rb_define_class() で定義したクラスは GC を
> 気にしなくてよい」ということを暗黙に保証していたと思うのです。
> その仕様は 1.8 の間だけでも継続すべきではないでしょうか。
> 将来的には面倒は見ない、ということなら賛成です。

それを変えようとは思ってません。ありうるとしてもRite以降でしょ
う。

> > となると、一本化するメリットってなんだろう。定数の検索がやや単
> > 純化されるってことだけかな。
> 
> コードの本流と GC 対策はキッチリ分かれてるほうが読みやすいので、
> 「変更する」に一票入れます。

あおきさんがいうとなんか説得力あるかも。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦