2011/11/02


Windowsで作業する事も多いので、普段からthincaさんが書いたCoffeeScript on JScriptを使ってたんだけど、JScriptを使ってるという点がどうも気持ち悪くて、コンパイルエラーメッセージに「Microsoft JScript 実行時エラー」とか出るとかなり (´・ω・`)ショボーンな気分でした。
あと、thincaさんのは-eオプションで動かした時にconsole.log()が無いのでエラー出る事もあって、ちょっとしたスクリプトを書くのに困ってました。

で、v8のソースリポジトリに含まれるシェルd8を使ってバッチファイルから呼び出して...ってやればうまく行くんじゃね?オレ天才!とか考えながら進めていったらd8では標準入力が使えないのもあって断念。
あと、この手のはcoffee-script.jsを一緒に持って歩く必要があって、なんか僕の趣味に合わなかったので(どんな趣味だよ)、実行モジュール1個だけで動いて、LinuxでもWindowsでも動いて、極力node(v8)と挙動の近い物が欲しくなった。

こうなれば...と思ってv8使ってC++だけで書いてみた。
mattn/coffee-script-v8 - GitHub

CoffeeScript compiler/runner

https://github.com/mattn/coffee-script-v8
coffee-script.jsのコードはソース埋め込みなので、実行モジュール1つあれば動きます。
v8は普通にコンパイルするとスタティックリンクなので、実行モジュールだけの依存になります。
Windowsだとコンパイルは g++ -o coffee coffee.cc -lv8 -lwinmm -lws2_32
こんな感じ。他の環境だと g++ -o coffee coffee.cc -lv8
で行けると思います。
「いや、coffee-script.jsのバージョン上がったらどないすんねん!」って人は、どうぞ改造して使って下さい!
Posted at by