GHC Hacking

現在、C minus minus なる非常にあやしい言語と格闘中です。
というか、こんなペースで大丈夫なんでしょうか。
動け、動け、動いてよ。
coLinux をノートで快適に動かすためにメモリを増設しました。
512MBで2万5千円とな。
デスクトップ用だと1万もし無いのに、
これは非常なぼったくりですね。
ときに、私が作ろうとしているものですが、
実はまだアルゴリズムが良く分かっていません。
まぁ、完全に把握できたら一週間もかからんと思うのですが、
うーん、うーん、うーん…。
英語は苦手だ。


備忘のために現在の進捗。
・全体がビルドできた。
rtsだけリビルドできた。
・自分で書いたrtsとリンクできた。
・Major GCに時間がかかるケースを調査した。
GCのコードをほぼ理解した。
・ネイティブコードがどういう動作を行っているか、ぼんやりと理解した。
・コードジェネレーターは弄らなくていいことが分かった。
・THUNKの更新が行われている場所を突き止めた。
・一度だけ書き換わるオブジェクトの更新が記録される場所を突き止めた。
・一度だけ書き換わるオブジェクトについて、write barrier をどこに入れたらよいか分かった。
不定回書き換わるオブジェクトについて、write barrier をちまちま入れなくていい方法を明日聞きにいく。
・C Minus Minus のコードをごく一部理解。


のこり。
アルゴリズムを考える。
・実装する。
・文章を書く。


えらく抽象的なのであります。
今週中にはアルゴリズムは考えておきたいですね。
もはやHaskellとなにも関係がないような気もしますが、
ここで得た知識は将来言語処理系を作るときが来たら
rtsを作るときに役立つに違いない…と思っておきます。