なかだです。 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はできる。 中田 伸悦