Lua に関してねっとをぼげぇ〜と眺めていて発見。

Matzさんでさえ言及した様子がないこのxtalですが、なかなかどうして面白い。for loopの後ろにelseが書けたり、Fiberを持っていたり...callee()で無名再帰関数も書けたり...そうそそう、...といえば、可変引数の引数は、...という配列に入って、...[0]がその最初の要素というのも楽しいですね。

XTALというとOSの方を思い出してしまいますが、組み込み向けという点で共通しているかも。偶然の一致でしょうか。

ソースを見て、最初WindowsでVCな人しか対象にしていないのかと思ってorzとなりかけましたが、たった二カ所の変更で、Mac OS XでもFreeBSDでも動くようになりました。

  1. allocator.h中の#include <malloc.h>#ifdef HAS_MALLOC_H /*...*/ #endifでラップ
  2. main.cpp中の#include <windows.h>#ifdef HAS_WINDOWS_H /*...*/ #endifでラップ

あと、gccでないとg++でコンパイルしないとリンクに失敗するのと、エラーメッセージが日本語、それもSJISというのを除けば、ふつうにMac OS XでもFreeBSDでも動きました。

ソースコードをSJIS/CRLFからUTF-8/LFにして、make一発できるようにしたものを以下に転がしておきます。Windows使いでない方も是非遊んでみて下さい。

それにしても、言語実装なのに

% g++ -o xtal src/main.cpp -O2 -lstdc++

と一行コンパイルなのにはちょっとたまげました。でも、FreeBSDでbinaryが512KBでこれだけいろいろなことができるというのは脱帽もの。Luaより気に入りました。localいらないし、endでなくて}だし....

最近のLightweightというにはあまりに広大なスクリプト言語に慣れた後に見ると、ほんと新鮮です。Tatsunori Ishibashiさん、ありがとうございます。

Dan the Langmania