HaskellとRuby1.8までのグリーンスレッド

HaskellとRuby1.8までのグリーンスレッドを比較されてたのですが、自分の中でうまく理解できてなかったのでもう少し考えてみた。
4
nari3 @nari3

GVLの話で思い出したけど、山本さんが書かれてたユーザスレッドの話って( http://t.co/jmqrhonlZ3 )どうなんだろう。Ruby側からの意見がなかった気がするけど、書いてあるとおりってことなんだろうか。

2013-03-29 11:18:35
nari3 @nari3

"We have an accurate GC, which means that the Haskell stack can be movable, whereas the C stack isn't" うーん…?

2013-03-29 11:28:23
nari3 @nari3

movable、というがよくわからんなあ

2013-03-29 11:29:20
nari3 @nari3

オブジェクトへのポインタだけ抜き出したスタックが作れるよーん、ということかなあ。

2013-03-29 11:29:32
nari3 @nari3

結局、どうして性能が高いのか、Ruby1.8だとどうして性能が低いのか、わからなかったよ。

2013-03-29 11:34:44
みょうが@揚げ出しエンジニア @mrkn

@nari3 スタックをコピーしてるかどうかっていう話が書いてありましたが、それとは違う話ですか?

2013-03-29 11:38:21
nari3 @nari3

@_ko1 http://t.co/F5UKJcvSyH この辺りの話です。これって山本さんがおっしゃってるとおりなのかなあって。

2013-03-29 11:43:06
nari3 @nari3

@mrkn いやー、なんかそのへんが次の記事(http://t.co/222u0MuiHU)で関係ないよ、とか言われてたみたいなので。実際のところはどうなのかなと思いまして。

2013-03-29 11:45:10
成瀬 @nalsh

@nari3 @mrkn 次の記事でもコピーしてるか否かは否定されていないような

2013-03-29 11:47:00
nari3 @nari3

@nalsh @mrkn 「Cmmは関係ないよ」の部分を見て判断したのですが、たしかに否定はされてないっすね。

2013-03-29 11:56:44
小崎 資広 @kosaki55tea

@nalsh @mrkn @nari3 Rubyのファイバーだって環境限定ならコピーせずに出来てるので、気合いれたらコピー回避できるはある程度真ではないかな

2013-03-29 11:48:09
小崎 資広 @kosaki55tea

@nalsh @mrkn @nari3 Rubyの場合はVALUEにポインタをそのまま埋め込むオブジェクトモデルだからスタック移動むつかしいけど、なんらかの相対アドレスがはいっててVMスタックの構造が注意深く定義されてたら出来るんでないかな

2013-03-29 11:49:37
成瀬 @nalsh

@kosaki55tea @mrkn @nari3 C拡張ライブラリがVALUE持ってるときにつらい

2013-03-29 11:52:31
小崎 資広 @kosaki55tea

@nalsh @mrkn @nari3 いやだから、それはRubyの拡張ライブラリの仕組みにすぎないので、他の言語で出来ない理由になってないよ

2013-03-29 11:53:31
nari3 @nari3

CRubyとはそもそも処理系を実装するアプローチが違うってことなのなあ。なるべくHaskellで処理系書いてるので、Haskell threadsみたいなのが作れて、そこには必要な情報しかないから切り替えるのも簡単〜、やった〜、みたいな話なのかも。

2013-03-29 11:53:59
_ko1 @_ko1

@nari3 そうですね。色々前提が違います。

2013-03-29 11:56:04
nari3 @nari3

RubyでそういうことしたければFiber使って頑張ればいいのかもな。

2013-03-29 12:01:16