HipHop Virtual Machine

出典: フリー百科事典『ウィキペディア(Wikipedia)』
HHVMから転送)
ナビゲーションに移動 検索に移動
HipHop Virtual Machine (HHVM)
HHVM logo.svg
開発元 Facebook
初版 2011年12月9日(7年前) (2011-12-09[1]
最新版 4.9.0 / 2019年6月11日(4か月前) (2019-06-11[2]
リポジトリ github.com/facebook/hhvm
プログラミング言語 C++, C言語
サポート状況 開発中
ライセンス PHP License、Zend License[3]
公式サイト hhvm.com
テンプレートを表示

HipHop Virtual Machine(ヒップホップ・バーチャル・マシン、HHVM)は、実行時コンパイラ (JIT) 方式でPHPおよびHackといったプログラミング言語を実行する、仮想機械型の処理系である。HHVMで実行する場合、PHPやHackのコードは、JITコンパイルの過程でまず中間言語HipHopバイトコード (HHBC) に変換され、さらに動的にx64機械語へとコンパイル・最適化を行った上で実行される[1][4]。これに対し、公式のPHP実装であるZend Engineでは、PHPのコードを中間表現に変換した上で、中間表現をそのまま実行している[5]

HHVMはFacebook社が開発しており、Github上にあるソースコードはPHP LicenseZend License英語版のもと公開されている[1][3]。2018年9月12日、Facebookの開発チームはPHPのサポートを段階的に終了することを発表[6][7]し、同年9月18日にはHHVMのPHP 5のサポートを終了すると同時に、以降はHackに注力し、PHP 7の新しい機能も積極的には実装しないことを発表した。[8]

概要[編集]

HHVMはFacebook社で使われていた、PHPをC++に変換するタイプの処理系であるHipHop for PHP英語版 (HPHPc) の後継として開発された[9][10]。HPHPcの運用を行う過程で、さらなるパフォーマンス向上が見込めなくなってきたこと、PHPの中でサポートできない機能があったこと、開発やデプロイに関わる時間・資源消費の問題など、各種の問題が発生してきた[9]。HPHPcの運用で得られた経験を元に、それら問題点を解決することを目標として、2010年の頭頃にはFacebookとしてPHPのJIT仮想マシンを作ることを決定した[11]。2013年の第1四半期には、facebook.comの実運用がHPHPcからHHVMへ切り替わった。

JITコンパイルの過程として、HHVMではPHPやHackのコードを、HHBCと呼ばれるバイトコード型の中間言語へと変換する。HHBCはHHVMのために設計されたバイトコードであり、後工程でJITコンパイラとインタープリタのどちらも使用できるようになっている。そして、HHBCはバイトコードのレベルで最適化が行われ、x64の機械語にその場で(JIT)コンパイルされ、CPUが直接実行する[1][9][12]。このような実行過程は、.NET Frameworkでの共通言語ランタイムや、Java仮想マシンといった、他の言語での仮想マシンとも共通する部分がある。

HHVMでは、公式のPHP 5.4が含む機能を、create_function()eval()といった、文字列をコードとして実行する機能までほぼ完全に実装したこと[13][14]、時間のかかるバイナリビルドが不要となりデプロイが簡単となること、開発用と本番用で同じ処理系が使えること(HPHPcの時代には、開発過程で逐一ビルドするのを避けるため、別途でインタープリタを用意していた)など、HPHPcと比べて多くの利点がある。

HHVMの公開に合わせて、「PHPの新たな形態」とも言える、Facebook社が開発したHack言語も同時に動かせるようになっている[15][16]。Hackは動的型付け静的型付けをあわせ持つ言語であり、関数引数や返り値、プロパティチェックを加えられる(ローカル変数に対しては不可能)。なお、HackではPHPの一部機能に非対応となっている[17][18][19][20]

パフォーマンス[編集]

ウェブサイトでは、ユーザーはページ表示の速度に敏感であり、サーバの、1秒の半分にも満たない遅れであっても、ユーザーエクスペリエンスに深刻な悪影響を及ぼし、サイトの効果を大きく損ねてしまうことが知られている[21]

実行環境としてのHHVMを考えると、実行時の型情報を使うことで、事前コンパイル型よりスループットレイテンシの両面に優れたコードを出力しうるものとなっている。実際、2012年の第4四半期には、HHVMの性能は事前コンパイル型のHPHPcに匹敵するようになり[9]、2013年12月にはさらに15%高速化している[22]

PHPのサポート終了[編集]

前述のように元々はPHPの実行環境として開発されたHHVMだが、Facebook2018年9月、PHPのサポートを段階的に終了することを発表した。これは独自のプログラミング言語Hackの登場、並びにHackの構文を取り込み性能も改善されたPHP7の登場によりPHP側の状況が変化したためとみられる。PHPのサポートはHHVM 3.30までとされており、次期メジャーリリースのHHVM 4.0ではサポートは完全に廃止される。利用者にはHackかPHP7または他のPHP実行環境への移行が推奨された。[23]2019年2月12日、予定通りPHPサポートを終了したHHVM 4.0がリリースされた[24]

脚注[編集]

  1. ^ a b c d Jason Evans (12 9, 2011). “The HipHop Virtual Machine”. Facebook. 8 2, 2014閲覧。
  2. ^ Releases” (英語). facebook/hhvm. Facebook. 2019年2月13日閲覧。
  3. ^ a b facebook/hhvm”. github.com. Facebook. 8 2, 2014閲覧。
  4. ^ facebook/hhvm”. github.com. Facebook. 8 2, 2014閲覧。
  5. ^ Kaushik Pal (4 28, 2014). “PHP and Zend Engine Internals”. phpbuilder.com. 9 23, 2014閲覧。
  6. ^ Ending PHP Support, and The Future Of Hack”. hhvm.com. Facebook (9 12, 2018). 11 8, 2018閲覧。
  7. ^ 末岡洋子 (9 14, 2018). “米Facebook、「HHVM」でのPHPサポートを終了する方針を発表”. mag.osdn.jp. 11 8, 2018閲覧。
  8. ^ The Future of HHVM”. hhvm.com. Facebook (9 18, 2018). 11 8, 2018閲覧。
  9. ^ a b c d Drew Paroski (11 29, 2012). “Speeding up PHP-based development with HHVM”. Facebook. 8 2, 2014閲覧。
  10. ^ Announcement on GitHub removing HPHPc support”. github.com. Facebook (2 19, 2013). 5 24, 2013閲覧。
  11. ^ Cade Metz (6 10, 2013). “How Three Guys Rebuilt the Foundation of Facebook”. Wired. 9 28, 2014閲覧。
  12. ^ HipHop Bytecode v1 revision 18”. github.com. Facebook (7 31, 2014). 5 24, 2013閲覧。
  13. ^ facebook/hhvm”. github.com (2013年5月). 8 2, 2014閲覧。
  14. ^ facebook/hhvm”. github.com. Facebook (5 8, 2014). 8 2, 2014閲覧。
  15. ^ Cade Metz (3 20, 2014). “Facebook Introduces 'Hack,' the Programming Language of the Future”. Wired. 4 15, 2014閲覧。
  16. ^ Hack: a new programming language for HHVM”. code.facebook.com. Facebook (2014年4月). 3 23, 2014閲覧。
  17. ^ Josh Lockhart (4 3, 2014). “Facebook’s Hack, HHVM, and the future of PHP”. O'Reilly Media. 8 2, 2014閲覧。
  18. ^ Hack Manual”. docs.hhvm.com. 3 25, 2014閲覧。
  19. ^ Hack Manual”. docs.hhvm.com. 3 25, 2014閲覧。
  20. ^ Hack Manual”. docs.hhvm.com. 4 2, 2014閲覧。
  21. ^ Brady Forrest (6 23, 2009). “Bing and Google Agree: Slow Pages Lose Users”. O'Reilly Media. 9 28, 2014閲覧。
  22. ^ We are the 98.5% (and the 16%)”. hhvm.com (12 19, 2013). 8 2, 2014閲覧。
  23. ^ 米Facebook、「HHVM」でのPHPサポートを終了する方針を発表”. OSDN (2018年9月14日). 2018年9月14日閲覧。
  24. ^ 「HHVM 4.0」リリース、PHPのサポートを廃止”. OSDN (2019年2月13日). 2019年2月13日閲覧。

関連項目[編集]

外部リンク[編集]