hnwの日記

MacOSX上で.NET環境向けPHPコンパイラPhalangerを動かしてみた


(1/7 追記ベンチマークテスト結果が不正確だったので、再測定して書き直しました。以前の記事よりもPHPの結果が良くなっています。


あけましておめでとうございます。このたび、gihyo.jpの新春特別企画として記事「PHP処理系の未来」を寄稿いたしました。HHVMとPHP7を絡めて最近のPHPの動向を紹介するような内容になっていますので、是非ご覧くださいませ。


この記事を書くにあたり、HHVM以外にも有望なPHP処理系があるかどうかを調べていました。その結果、HHVMほどではないにせよ実用レベルに近いPHP処理系が複数あることがわかりました。


そうした実装のうち、今回は.NET FrameworkおよびMono環境で動くPHPコンパイラPhalangerを紹介します。PhalangerはC#で書かれており、PHPソースコードから.NETアセンブリを出力します。Windows上では本家PHPより高速ということですし、PHPをVisualStudioで開発したり.NETの資産を利用したりする狙いもあるようで、夢が広がるプロジェクトですね。Phalanger開発者がDEVSENSE社という会社を起業して有償サポートを提供しているなど、本気度が高いPHP処理系の一つだと言えるでしょう。


ただ、中の人も含め常用している人は全員Windows環境のようで、Linux/MacOSXの情報は非常に少ない状況です。今回MacOSXのMono環境で動かせたので紹介します。

Monoのインストール

まずはMonoを準備してください。PhalangerではMonoの設定ファイルを書き換える必要があるので、普段使っているMonoとは別にインストールした方が無難かと思います。普段Monoを使っていない場合は単にHomebrewでインストールすれば良いでしょう。

$ brew install mono

Phalangerのインストール

PhalangerにはMacOSX用のパッケージはありません。Windows用のバイナリファイルをダウンロード&展開します。僕はPhalangerのダウンロードページから「Phalanger 3.0.0.4072 (bin).zip」をダウンロードしました。


これを作業ディレクトリに展開し、「Installation/3.0/Linux - PhalangerWiki」を参考に作ったインストールスクリプトでインストールします。インストールスクリプト内でxmlstarletを使っているので、必要に応じてインストールしてください。

続きを読む