facebook御謹製の、php/C++トランスレータです。
http://github.com/facebook/hiphop-php
結論から言うと、トランスレートまでは何とかテストできたのですが、
それのコンパイルで挫折しました。
- まずは、facebookとしてはcentosを推奨しており、筆者の環境(ubuntu lucid(10.04))で動かすには意外と骨が折れたこと。cmakeとやらが全然通らず、仕方がないのでCMakefile.txtを修正したりとか。
- 64ビットlinux専用。この為に、64bit ubuntuに入れ直した。
- PHPのinclude_pathを参照しないので、フレームワーク群を多用しているソースは、正常に変換できないこと。
- コンパイル時点で解決できない外部includeは、一応はincludeのままで残るが、挙動としてはhtmlの表示しか使えなさそう。
- 「変換」したcppソースのbuildには、hiphop自身のincludeファイル群を必要とすること。
- クラス群の「変換」では、クラス変数やクラス関数群に全てユニークIDを振っており、どうやらそれは「変換」したソースにも現れる。
- クラスメソッド呼び出しは、クラスの問い合わせ関数に、メソッド名を指定している。何もかもcall_user_funcを使う感じ。オーバーヘッドが凄そう。
総合して、hiphopに向いた書き方が必要で、赤の他人が別のプロジェクトに適用するにはまだ辛いかなと。
特に、ユニークIDと問い合わせ関数はどうかなと思った。これは変換とは言えない。「展開」ですね。
native C++に変換しながらも、PHPより2倍、としか言えてないところも、
オーバーヘッドが大きいことに起因しそうです。
これだったら、最速と名高いlua(http://www.lua.org/)に「展開」する方が現実的か?とも思ったりします。