Segmented Stackについて

RustとかGoとかHaskellに関して,ソース読む時ようにとりあえずメモ
11
前へ 1 2 ・・ 5 次へ
Masanori Ogino @omasanori

むしろ出会った頃のRustに比べたら大分丸くなっている印象、GC周辺も方向転換したし

2013-11-15 20:06:20
SKS rep @repeatedly

@omasanori GCも弄ったんだっけ?前それ系の記事読んだけど,オフィシャルのアナウンスは見てなかった

2013-11-15 20:06:56
SKS rep @repeatedly

@omasanori Rustのsegmented stackってどういう実装になってたんでしょう?#[fixed_stack_segment]とか#[rust_stack]みたいなのがsegmented stackの制御に使われている?

2013-11-15 20:14:07
Masanori Ogino @omasanori

@repeatedly ランタイムを新しくするときに廃止しました。設計を練りなおしてまた導入する言っていましたが、今のところは入ってないかと。

2013-11-15 20:16:25
SKS rep @repeatedly

@omasanori あれ,じゃあ今メモリー管理ってどうやってるの?

2013-11-15 20:16:53
Masanori Ogino @omasanori

@repeatedly ええ、そういうattributeを通してLLVMへの出力を制御していました。

2013-11-15 20:18:28
SKS rep @repeatedly

@omasanori うへぇ.これって付け忘れるとその分だけsegmented stackがgrowするという感じ?

2013-11-15 20:22:02
Masanori Ogino @omasanori

@repeatedly unique_ptrやshared_ptrのようなセマンティクスで管理できる(GCを取り除く前から出来た)はず

2013-11-15 20:22:15
Masanori Ogino @omasanori

@repeatedly いや、付けなかったら足りなくなった時点でスタックを割り当てて切り替えていました(呼び出す都度割り当てたりはしない)。

2013-11-15 20:24:43
Masanori Ogino @omasanori

@repeatedly ほとんどのコードには付いてなかったはず

2013-11-15 20:25:03
SKS rep @repeatedly

@omasanori なるほど.しかしちゃんと野郎とするとコスト掛かりそうだな…

2013-11-15 20:26:15
SKS rep @repeatedly

segmented stack知らずに言語作ろうとしてたの?マジなの?

2013-11-15 20:26:51
SKS rep @repeatedly

Goroutineのsegmented stackってどういう実装なんだろ?ってつぶやけば誰かが解説してくれそう.こんなに盛り上がってるわけだし,皆ランタイムのソースコードくらい読んでいるはずだ

2013-11-15 20:32:23
SKS rep @repeatedly

ダメだな.人に言う前に自分で軽量スレッドを実装することが出来ない.俺はクソプログラマである

2013-11-15 20:34:53
SKS rep @repeatedly

Rustとかも関数側で制御出来るのを見るに,あるTask(Goroutine)が関数を読んだ場合に,今現在貯まっているスタックと呼び出そうとしている関数で必要なスタックのサイズを計算して,足りなかったら自分のスタックを増やすというのがpopularな実装?

2013-11-15 20:37:47
SKS rep @repeatedly

@omasanori LLVMにはそもそも解説があるのか!これってつまり,RustやGoでの関数呼び出しは,いわゆるD言語とかのその辺の工夫のない言語に比べると,1関数呼び出しに多少のオーバーヘッドがある,という理解でいいのかいな?

2013-11-15 20:42:42
SKS rep @repeatedly

なんか軽量スレッド実装出来そうな気がしてきた

2013-11-15 20:42:54
SKS rep @repeatedly

@objectxplosive これ,外部の関数を呼び出した場合に,その分結構なサイズスタックを伸ばす必要が出てくると思うんですが,その辺の問題に関してはどっかに書かれてないんですかね?

2013-11-15 20:46:21
SKS rep @repeatedly

おお,理解がクリアになってきた

2013-11-15 20:49:27
Masanori Ogino @omasanori

Nov. 4, 2013ということは0.8は確実に取っ払う前だな

2013-11-15 20:52:06
SKS rep @repeatedly

segmented stackを採用する時に,初期のstack sizeを小さくするってのはどこでやるんだろ?Rustのコード見てもよく分からん(segmented sizeに関する変更点が多すぎて,git diffでは限界が…

2013-11-15 20:53:53
SKS rep @repeatedly

う,なんか.Sとかのファイルが見えてやはりライブラリレベルだと無理なのかという結論に

2013-11-15 21:01:04
前へ 1 2 ・・ 5 次へ