"RubyのSymbolはGCされないがrespond_toによってユーザー入力値をSymbolにしてしまうと知らない間にプロセスが肥大化してまずい問題" http://t.co/FGBtHVv3
2012-05-25 11:27:57@n0kada @yhara 通った道ってのは過ぎ去った後からなら言っていいけどまだそこに留まってる場合は違うのではないか
2012-05-25 11:33:58@nari3 @mrkn Symbol GCは比較的簡単に実現可能ですが、同じシンボルが同じID(整数)を持つことを期待するコードがある(IDをC static変数領域に保存されるとか) などの問題があり、実用には課題があります。
2012-05-25 14:03:38@yukihiro_matz アクセスしただけで追加されちゃうのはイヤなので、h = Hash.new {[]}; h[k] <<= v みたいにすることが多い
2012-05-25 14:07:39@yukihiro_matz @nari3 僕が心配してたのがまさにその問題でした。既存の拡張ライブラリとの互換性を維持しようとすると、ほとんど不可能ですね・・・。
2012-05-25 14:09:54@yukihiro_matz @nari3 @mrkn rb_intern("foo") で直接やってるのは消せないけど,その他は消せる,とすればいけるんじゃないかと以前から思ってるんですが,甘いですかね.
2012-05-25 15:08:09@_ko1 @mrkn @nari3 私もそれで行きそうな気がしてるんですが、やってみないとダメなケースがあるかどうか判断できないですね。
2012-05-25 16:21:53@n0kada @_ko1 Rubyから作ったシンボルとCから作ったのを区別するんでしょうね。でRubyで文字列から作ったのをGC対象にする
2012-05-25 16:28:47@yukihiro_matz @n0kada @_ko1 rb_global_variableと同じ扱いでいいのでは
2012-05-25 16:29:54