(Translated by https://www.hiragana.jp/)
HipHop Virtual Machine - Wikipedia コンテンツにスキップ

HipHop Virtual Machine

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
HipHop Virtual Machine (HHVM)
開発元かいはつもと Meta
初版しょはん 2011ねん12月9にち (12ねんまえ) (2011-12-09)[1]
最新さいしんばん
4.9.0 / 2019ねん6がつ11にち (5ねんまえ) (2019-06-11)[2]
リポジトリ ウィキデータを編集
プログラミング
言語げんご
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はMetaきゅうFacebook)が開発かいはつしており、GithubうえにあるソースコードはPHP LicenseZend License英語えいごばんのもと公開こうかいされている[1][3]。2018ねん9がつ12にち、Facebookの開発かいはつチームはPHPのサポートを段階だんかいてき終了しゅうりょうすることを発表はっぴょう[6][7]し、同年どうねん9がつ18にちにはHHVMのPHP 5のサポートを終了しゅうりょうすると同時どうじに、以降いこうはHackに注力ちゅうりょくし、PHP 7のあたらしい機能きのう積極せっきょくてきには実装じっそうしないことを発表はっぴょうした。[8] 2023ねん10がつ27にち、Paul Bissonetteは公式こうしきブログにてGCCサポート終了しゅうりょう決定けっていとHHVMおよびHackの公式こうしきリリースを以降いこうおこなわないむね表明ひょうめいした。[9]

概要がいよう

[編集へんしゅう]

HHVMはFacebookしゃ使つかわれていた、PHPをC++変換へんかんするタイプの処理しょりけいであるHipHop for PHP英語えいごばん (HPHPc) の後継こうけいとして開発かいはつされた[10][11]。HPHPcの運用うんようおこな過程かていで、さらなるパフォーマンス向上こうじょう見込みこめなくなってきたこと、PHPのなかでサポートできない機能きのうがあったこと、開発かいはつやデプロイにかかわる時間じかん資源しげん消費しょうひ問題もんだいなど、各種かくしゅ問題もんだい発生はっせいしてきた[10]。HPHPcの運用うんようられた経験けいけんもとに、それら問題もんだいてん解決かいけつすることを目標もくひょうとして、2010ねんあたまごろにはFacebookとしてPHPのJIT仮想かそうマシンをつくることを決定けっていした[12]。2013ねんだい1四半期しはんきには、facebook.comのじつ運用うんようがHPHPcからHHVMへわった。

JITコンパイルの過程かていとして、HHVMではPHPやHackのコードを、HHBCとばれるバイトコードかたなかあいだ言語げんごへと変換へんかんする。HHBCはHHVMのために設計せっけいされたバイトコードであり、こう工程こうていでJITコンパイラとインタープリタのどちらも使用しようできるようになっている。そして、HHBCはバイトコードのレベルで最適さいてきおこなわれ、x64の機械きかいにそので(JIT)コンパイルされ、CPUが直接ちょくせつ実行じっこうする[1][10][13]。このような実行じっこう過程かていは、.NET Frameworkでの共通きょうつう言語げんごランタイムや、Java仮想かそうマシンといった、言語げんごでの仮想かそうマシンとも共通きょうつうする部分ぶぶんがある。

HHVMでは、公式こうしきのPHP 5.4がふく機能きのうを、create_function()eval()といった、文字もじれつをコードとして実行じっこうする機能きのうまでほぼ完全かんぜん実装じっそうしたこと[14][15]時間じかんのかかるバイナリビルドが不要ふようとなりデプロイが簡単かんたんとなること、開発かいはつよう本番ほんばんようおな処理しょりけい使つかえること(HPHPcの時代じだいには、開発かいはつ過程かてい逐一ちくいちビルドするのをけるため、別途べっとでインタープリタを用意よういしていた)など、HPHPcとくらべておおくの利点りてんがある。

HHVMの公開こうかいわせて、「PHPのあらたな形態けいたい」ともえる、Facebookしゃ開発かいはつしたHack言語げんご同時どうじうごかせるようになっている[16][17]。Hackは動的どうてき型付かたつ静的せいてき型付かたつをあわせ言語げんごであり、関数かんすう引数ひきすうがえプロパティかたチェックをくわえられる(ローカル変数へんすうたいしては不可能ふかのう)。なお、HackではPHPの一部いちぶ機能きのう対応たいおうとなっている[18][19][20][21]

パフォーマンス

[編集へんしゅう]

ウェブサイトでは、ユーザーはページ表示ひょうじ速度そくど敏感びんかんであり、サーバの、1びょう半分はんぶんにもたないおくれであっても、ユーザーエクスペリエンス深刻しんこく悪影響あくえいきょうおよぼし、サイトの効果こうかおおきくそこねてしまうことがられている[22]

実行じっこう環境かんきょうとしてのHHVMをかんがえると、実行じっこうかた情報じょうほう使つかうことで、事前じぜんコンパイルがたよりスループットレイテンシ両面りょうめんすぐれたコードを出力しゅつりょくしうるものとなっている。実際じっさい、2012ねんだい4四半期しはんきには、HHVMの性能せいのう事前じぜんコンパイルがたのHPHPcに匹敵ひってきするようになり[10]、2013ねん12月にはさらに15%高速こうそくしている[23]

PHPのサポート終了しゅうりょう

[編集へんしゅう]

前述ぜんじゅつのように元々もともとはPHPの実行じっこう環境かんきょうとして開発かいはつされたHHVMだが、Facebookは2018ねん9月、PHPのサポートを段階だんかいてき終了しゅうりょうすることを発表はっぴょうした。これは独自どくじのプログラミング言語げんごHackの登場とうじょうならびにHackの構文こうぶん性能せいのう改善かいぜんされたPHP7の登場とうじょうによりPHPがわ状況じょうきょう変化へんかしたためとみられる。PHPのサポートはHHVM 3.30までとされており、次期じきメジャーリリースのHHVM 4.0ではサポートは完全かんぜん廃止はいしされる。利用りようしゃにはHackかPHP7またはのPHP実行じっこう環境かんきょうへの移行いこう推奨すいしょうされた。[24] よく2019ねん2がつ12にち予定よていどおりPHPサポートを終了しゅうりょうしたHHVM 4.0がリリースされた[25]

脚注きゃくちゅう

[編集へんしゅう]
  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. ^ Project Update and OSS Support Changes”. hhvm.com. Facebook (2023ねん10がつ27にち). 2023ねん12月18にち閲覧えつらん
  10. ^ a b c d Drew Paroski (11月29にち2012ねん). “Speeding up PHP-based development with HHVM”. Facebook. 8月2にち2014ねん閲覧えつらん
  11. ^ Announcement on GitHub removing HPHPc support”. github.com. Facebook (2がつ19にち2013ねん). 5月24にち2013ねん閲覧えつらん
  12. ^ Cade Metz (6がつ10日とおか2013ねん). “How Three Guys Rebuilt the Foundation of Facebook”. Wired. 9月28にち2014ねん閲覧えつらん
  13. ^ HipHop Bytecode v1 revision 18”. github.com. Facebook (7がつ31にち2014ねん). 5月24にち2013ねん閲覧えつらん
  14. ^ facebook/hhvm”. github.com (May 2013). 8月2にち2014ねん閲覧えつらん
  15. ^ facebook/hhvm”. github.com. Facebook (5がつ8にち2014ねん). 8月2にち2014ねん閲覧えつらん
  16. ^ Cade Metz (3がつ20日はつか2014ねん). “Facebook Introduces 'Hack,' the Programming Language of the Future”. Wired. 4月15にち2014ねん閲覧えつらん
  17. ^ Hack: a new programming language for HHVM”. code.facebook.com. Facebook (April 2014). 3月23にち2014ねん閲覧えつらん
  18. ^ Josh Lockhart (4がつ3にち2014ねん). “Facebook’s Hack, HHVM, and the future of PHP”. O'Reilly Media. 8月2にち2014ねん閲覧えつらん
  19. ^ Hack Manual”. docs.hhvm.com. 3月25にち2014ねん閲覧えつらん
  20. ^ Hack Manual”. docs.hhvm.com. 3月25にち2014ねん閲覧えつらん
  21. ^ Hack Manual”. docs.hhvm.com. 4月2にち2014ねん閲覧えつらん
  22. ^ Brady Forrest (6がつ23にち2009ねん). “Bing and Google Agree: Slow Pages Lose Users”. O'Reilly Media. 9月28にち2014ねん閲覧えつらん
  23. ^ We are the 98.5% (and the 16%)”. hhvm.com (12月19にち2013ねん). 8月2にち2014ねん閲覧えつらん
  24. ^ べいFacebook、「HHVM」でのPHPサポートを終了しゅうりょうする方針ほうしん発表はっぴょう”. OSDN (2018ねん9がつ14にち). 2018ねん9がつ14にち閲覧えつらん
  25. ^ 「HHVM 4.0」リリース、PHPのサポートを廃止はいし”. OSDN (2019ねん2がつ13にち). 2019ねん2がつ13にち閲覧えつらん

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]