Whitespace処理系つくったの忘れてた。

かんたん言語Whitespaceの処理系つくったの忘れてた。
http://konbu.s13.xrea.com/lib/lang/c/ws_20080503.tar.bz2
Whitespaceっていう言語はForthライク(といって良いと思うたぶん)な小さなスタック型言語。パーサとかもとても簡単に書けるし、brainf*ckなどの処理系をつくるのに飽きた人なんかにおすすめですね。
makeすれば普通に動くんじゃないかな。strndupの無い環境だとそこ変えんと駄目。

% make
perl parsegen.pl wsparse.def >gencode.c
gcc -Wall   -c -o parse.o parse.c
parse.c: In function ‘read_String’:
parse.c:80: warning: implicit declaration of function ‘strndup’
parse.c:80: warning: incompatible implicit declaration of built-in function ‘strndup’
gcc -Wall   -c -o vm.o vm.c
gcc -Wall   -c -o wspace.o wspace.c
gcc parse.o vm.o wspace.o -Wall -o wspace

警告でてるけど気にしない。よくわからんけどstrndupの警告がまったくとれない。string.hもちゃんと読んでるというのに。 id:masa_edwさんの指摘でわかりましたけど、strndupはGNU拡張なのでstring.hをインクルードするときにマクロ_GNU_SOURCEが有効になってないといけませんね。具体的には#include の前に#define _GNU_SOURCEするか、コンパイル時に-D_GNU_SOURCEとする。

% ./wspace examples/hworld.ws
Hello, world of spaces!

なんかまあ実行できる。

GCの評価方法

がんばって定式化して、ふんふんこのアルゴリズムはよさそーだなー、とこじつける。それの次どうするかというと、がんばって実装してベンチマークとるしかなさげ。


「がんばって実装してベンチマーク」は色々やりようがあるでしょうけど、Jikes RVMに独自GCを実装し、jvm98jbb2000DaCapo Benchmarksみたいなベンチマークするといった手法は広く使われてるみたいだ。GCの論文とか適当に眺めた感じ。多さでいうと、Jikes RVM + jvm98はすごく多い印象。


http://www.mm-net.org.uk/resources/benchmarks.html
にいくつかのメモリ管理研究分野で用いられてるベンチマークの紹介とかあり。


関連ツールとしてはJVMのヒープ操作の可視化フレームワークGCspyとかJVMの吐くGC情報を視覚化するGCViewerとか気になりますね。


なんか関数型方面の情報が欠けてる感じ。MLとかのGCとかの研究とかもさかんな印象あるんだけど、全然補足してない。Java勢強い。金とってきやすかったりするんか。

test