python-spidermonkey

boost::pythonいれてvectorとか使って遊んでいたら、
id:mopemopeさんが、python-spidermonkey!と叫んでいたので、
とりあえず入れてみる。


所謂Python / JavaScript bridge.で、
jsに対してPythonClassをbindしたり、
jsに対してPythonのメソッドをbindしておいて、
jsをevalする際にPythonのクラスやメソッドを呼ぶようにし向けたり、
といった事ができるんだけども、


まさに、
0.0.1a:
らしく動きがびみょー。
メンテも放置されているので、
公式ドキュメントにも

  • JSのエラーメッセージは間違ってます。真に受けないでください。
  • メモリリークがあります。

とか書いてあるし、


bind_callable(Pythonのfunctionをjsにバインドする)自体の実装が、
名前(string)とfunctionを関連づける際に
listにtupleをappendするようになっていたりして、わりとハチャメチャな気がする。
(これだと再bindできない)


とりあえずもう少し触ってみる。
jsもSpiderMonkeyの1.6や1.5じゃ動かなくて、
js-1.5-rc6a.tar.gz ならうまくいった。


そもそも動かすためにjsをmakeしてsoとhをコピーしておかなければならないので、
js側のデータ構造が変わると追従できない予感。


ということで、もう少し触ってみます。
何か不審な点があればコメントいただければ見てみるかも。

MEMO:(追記)

  • bind_classで同名のclassを再度bindすることができない。
  • eval_scriptで一回しくじるとエラーが尾を引く。(新しいスクリプトに古いスクリプトのエラーがでる)
  • bind_attributeが意図したように動いていない?(指定した名前でグローバル空間に定義されない)
  • bind_objectでjsにインスタンスをbindできるが、jsのスクリプトによって動的にプロパティを追加できたりはしない。