AJAJA: Perlモジュールを使えるようにするpmconnectが熱い(かもしれない)

AJAJAsvnリポジトリに面白いコードが追加されました。pmconnectという新しいモジュールです。

http://ajaja.alphageek.jp/trac/changeset/32

これは、PerlモジュールをAJAJAから利用できるようにする試みのようです。面白いですね。Linuxの環境が手元にないので、まだ試していませんが、CPANモジュールなんかも普通に動作するんじゃないかと期待しています。

ちなみに、pmconnectのC言語に関するソースコードの量は以下の通りです。

% cd src/ajaja/pmconnect
% find . -type f | grep -v svn | egrep "\.(c|h)$" | xargs wc -l | sort
      18 ./utfutil.h
      27 ./utfconv.h
      30 ./pmconnect_impl.h
      39 ./pmconnect.h
      55 ./poprivate.c
      62 ./utfutil.c
     104 ./pmconnect.c
     158 ./pmctest.c
     178 ./utfconv.c
     269 ./jspl.c
    1119 ./pmobject.c
    2059 total

pmobject.cは他のソースコードと比べて結構大きいですね。どうやらpmobject.cで、PerlインタプリタSpiderMonkeyとの橋渡しをしているようです。このソースコードを理解するには、PerlのXSを理解する必要がありそうです。逆に考えれば、XSを勉強する良い機会かもしれません。

jspl.cはAJAJAのssjsと同じようなJavaScriptインタプリタで、異なる所は、

  • Perlモジュールの利用をサポート
  • コマンドライン引数で指定したJavaScirptファイルの実行のみをサポート(インタラクティブな利用は不可)
  • 標準出力にバイナリ出力するprint_binary関数、16進ダンプをするdump関数などの組み込み関数を実装
  • AJAJAのSystemモジュール、SQLiteモジュール、JSANなどは利用不可
  • SpiderMonkeyを走らせるための必要最低限な実装(シンプル)

所といったところでしょうか。SpiderMonkeyインタラクティブに利用するのではなく、コマンドライン引数で指定したJavaScriptファイルをSpiderMonkeyで走らせるようなコードを書きたい開発者には、jspl.cは参考になるソースコードだと思います。

あと、pmconnect/scripts/ディレクトリ以下には、Perlモジュールの利用例があるので、興味を持たれた方は、こちらの方も見てみると面白いかもしれません。

Extending and Embedding Perl

Extending and Embedding Perl