HipHop Virtual Machine

HipHop Virtual Machine (HHVM)とは



HipHop Virtual Machine(HHVM)は、Meta(旧Facebook)が開発した、実行時コンパイラ(JIT)方式を採用した仮想マシンです。主にPHPとHackというプログラミング言語の実行環境として利用されてきました。HHVMは、コードを中間言語であるHipHopバイトコード(HHBC)に変換し、さらにそれを動的にx64機械語へとコンパイル・最適化することで、高速な実行を実現します。

HHVMの動作原理



HHVMの実行プロセスは、まずPHPやHackのコードをHHBCというバイトコードに変換します。このHHBCは、JITコンパイラとインタープリタの両方で利用できるように設計されており、最適化が施された後、x64の機械語にコンパイルされます。そして、その機械語がCPUによって直接実行されます。このプロセスは、.NET Framework共通言語ランタイムJava仮想マシンなど、他の言語の仮想マシンとも共通する部分があります。

HHVMの誕生と発展



HHVMは、元々Facebookで使用されていた、PHPをC++に変換するタイプの処理系であるHipHop for PHP(HPHPc)の後継として開発されました。HPHPcの運用中に、パフォーマンスの限界や機能的な制約、開発・デプロイにおける課題が浮上したため、これらの問題を解決するために、2010年頃からJIT仮想マシンの開発が始まりました。

2013年には、facebook.comの実際の運用環境がHPHPcからHHVMへと切り替えられました。HHVMは、PHP 5.4のほぼ全ての機能を実装し、create_function()やeval()といった動的なコード実行機能もサポートしました。また、バイナリビルドが不要となり、デプロイが容易になったことや、開発環境と本番環境で同じ処理系を使用できるようになったことも、大きな利点として挙げられます。

Hack言語との連携



HHVMの公開に合わせて、Facebookが開発した「PHPの新たな形態」とも言えるHack言語も同時に利用可能になりました。Hackは、動的型付けと静的型付けを組み合わせた言語であり、関数の引数や返り値、プロパティに対して型チェックを適用できます(ローカル変数は除く)。ただし、HackではPHPの一部機能が利用できない点に注意が必要です。

パフォーマンス



Webサイトのパフォーマンスは、ユーザーエクスペリエンスに直接影響を与えるため、非常に重要です。HHVMは、実行時の型情報を活用することで、事前にコンパイルされたコードよりも優れたスループットとレイテンシを実現することができます。2012年にはHPHPcに匹敵する性能を実現し、その後も継続的に高速化が進められました。

PHPサポートの終了とHackへの移行



HHVMは、当初PHPの実行環境として開発されましたが、2018年9月にはPHPのサポートを段階的に終了することが発表されました。この背景には、Metaが開発した独自のプログラミング言語Hackの登場と、PHP7の性能向上があります。PHPのサポートはHHVM 3.30までとなり、HHVM 4.0以降では完全に廃止されました。これにより、ユーザーにはHackやPHP7、または他のPHP実行環境への移行が推奨されました。

HHVMの現状と今後



2023年10月には、HHVMとHackの公式リリースを今後は行わないという発表がありました。これは、HHVMの開発が一段落し、他の技術への注力がシフトしたことを示唆しています。しかし、HHVMが過去に果たした役割と、その技術的な貢献は非常に大きいものであり、今後のソフトウェア開発に大きな影響を与え続けるでしょう。

まとめ



HHVMは、JITコンパイル技術を駆使してPHPやHack言語の高速実行を可能にした仮想マシンです。その開発の背景には、FacebookのWebサービスを支えるための高いパフォーマンスへの要求がありました。PHPのサポートは終了しましたが、Hack言語の実行環境として、その技術は現在も活用されています。HHVMの歴史と技術は、仮想マシンやプログラミング言語の進化を理解する上で重要な事例と言えるでしょう。

関連項目



Parrot
Phalanger
Zend Engine

外部リンク



ウェブサイト'>公式ウェブサイト
GitHub上のソースコード
Internals of HHVM
HHVM Talk to Wikimedia in March 2013
Scaling with HipHop - YouTube
公式ブログ
Facebookページ'>公式Facebookページ

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。