Tcc Wrapper
Squeakで高速化する方法としてFFIやVMプラグインがある。個人的には専らFFIを多用している。が、小さなCソースコードを別個に管理するのはかねてより面倒と感じていたところ、TCCなるものを見付けた。TCCは高速/小さなCコンパイラで、かつAPIを介してコンパイル/実行することができるようになっている。
UbuntuではSynapticパッケージマネージャでtccをインストールできるが、libtcc.hがインストールされないので、本家よりソースをダウンロードしてコンパイルした。
./configure --prefix=/usr make sudo make install
コンパイルしてみたところ、次のようなエラーが出てしまった。
tcc: file 'AS_NEEDED' not found /usr/lib/libc.so:3: filename expected /usr/lib/libc.so:3: unrecognized file type
http://d.hatena.ne.jp/shinichiro_h/20061222 でパッチが公開されていたので、拝借して実行してみたら見事うごいた。
でやっとSqueakから使う話に移る。SqueakからFFI経由でCソースコードを文字列として渡して、コンパイルと実行、実行結果を返す共有ライブラリとそのFFIソースを書いてみた。いちおう動いた。まぁそれだけのはなしです。