HHVM

HHVM
HHVM logo, featuring white uppercase "HHVM" letters on a black background, with stylized triangular geometric shapes on the left
Entwickler (en) Meta -Plattformen
Erstveröffentlichung 9. Dezember 2011; vor 10 Jahren[1]
Stabile Version 4.158.0 (20. April 2022; vor 3 Monaten) [±][2]
Repository
Geschrieben in Php, C ++,[3] Ocaml[4][a] und Rost[5]
Lizenz PHP -Lizenz und Zend -Lizenz[6]
Webseite HHVM.com Edit this at Wikidata

HipHop Virtual Machine (HHVM) ist ein Open Source virtuelle Maschine basierend auf Just-in-Time-Zusammenstellung (JIT) Das dient als Ausführungsmaschine für die Hack -Programmiersprache und verwendet zur Unterstützung Php Ausführung vor der Veröffentlichung von HHVM Version 4.[7] Durch die Verwendung des Prinzips der JIT -Kompilierung wird Hackcode zunächst in Intermediate umgewandelt HipHop -Bytecode (HHBC), was dann dynamisch übersetzt wird in x86-64 Maschinensprache, optimiert und nativ ausgeführt.[8][9] Dies steht im Gegensatz zu PHPs gewohnt interpretiert Ausführung, in dem die Zend -Motor transformiert Php Quellcode hinein Opcodes das dient als Form von Bytecodeund führt die Opcodes direkt auf der Virtuellen der Zend -Engine aus Zentralprozessor.[10]

HHVM wird von entwickelt von Metamit dem Quellcode des Projekts auf GitHub;[11] es ist unter den Bedingungen der lizenziert PHP -Lizenz und Zend -Lizenz.[1][6]

Überblick

HHVM wurde als Nachfolger des HipHop für PHP (HPHPC) PHP-Ausführungs-Engine, die ein Php-to-C ++ Transpiler Auch von Facebook erstellt.[12][13] Basierend auf der gewonnenen Erfahrung und dem Ziel, Probleme zu lösen, die von HPHPC eingeführt wurden, entschied sich Meta Anfang 2010 für die Erstellung eines JIT-basierten PHP virtuelle Maschine. Zu den mit HPHPC verbundenen Problemen gehörten die Erreichung von a Plateau Für weitere Leistungsverbesserungen, mangelnde volle Unterstützung für alle Merkmale der PHP-Sprache und Schwierigkeiten, die sich aus spezifischen und ressourcenkonsumierenden Entwicklungs- und Bereitstellungsprozessen ergeben, die für PHP-Projekte erforderlich sind, die HPHPC verwendeten.[12] Im ersten Quartal 2013 hat die Produktionsversion der Facebook.com -Website HPHPC eingestellt und zu HHVM umgestellt.

Nach dem JIT-Kompilierungsprinzip konvertiert HHVM zunächst den ausgeführten PHP- oder Hack-Code in eine hohe Ebene Bytecode, HHBC, das auch als als bekannt ist Zwischensprache. HHBC ist ein Bytecode -Format, das speziell für HHVM erstellt wurde, in einer Form, die für den Konsum von beiden geeignet ist Dolmetscher und Just-in-Time-Compiler. Als die nächsten Schritte in der Ausführung übersetzt HHVM dynamisch ("Just-in-Time") den HHBC-Bytecode in X86-64-Maschinencode und führt seinen zusätzlichen Durchgang aus Optimierungen Durch eine dynamische Analyse des übersetzten Bytecode und führt den X86-64-Maschinencode aus.[1][12][14] Infolgedessen hat HHVM bestimmte Ähnlichkeiten mit den virtuellen Maschinen, die von anderen Programmiersprachen verwendet werden, einschließlich der Gemeinsame Sprachlaufzeit (CLR, für die C# Sprache) und Java virtuelle Maschine (JVM für die Java Sprache).

HHVM bringt viele Vorteile im Vergleich zu HPHPC, und eine davon wird für die gesamte PHP -Sprache fast vollständig unterstützt create_function () und eval () Konstrukte.[15][16] Darüber hinaus verwendet HHVM dieselbe Ausführungsmaschine, wenn sie sowohl in Produktionsumgebungen als auch in Entwicklungsumgebungen bereitgestellt wird, während die Integration zwischen der Ausführungsmaschine und der Ausführungsmaschine unterstützt wird Hphpd Debugger in beiden Umwelttypen; infolgedessen aufrechterhalten Hphpi (HipHop -Dolmetscher) separat, da ein Entwicklungsnutzen nicht mehr benötigt wird, da dies bei HPHPC der Fall war. HHVM beseitigt auch die langwierigen baut von HPHPC erforderlich, um PHP -Programme auszuführen, was zu viel einfacheren Entwicklungs- und Bereitstellungsprozessen führt als bei HPHPC.[1]

Zusammen mit HHVM veröffentlichte Meta auch Hacken, ein Derivat von PHP[17][18] Dadurch können Programmierer beide verwenden Dynamisches Typing und statische Typisierung, was ein Konzept ist, das auch als als bekannt ist schrittweise Typisierungund erlaubt Typen für angegeben werden für Funktion Argumente, Funktion Rückgabewerte, und Klasseneigenschaften; Allerdings Arten von Lokale Variablen kann nicht angegeben werden. Gleichzeitig bietet Hack nicht vollständig Rückwärtskompatibilität Indem Sie einige der PHP -Merkmale nicht fortsetzen, wie die gehe zu Aussage und dynamisch Variable Namen.[19][20][21][22]

Im September 2017 wurde bekannt gegeben, dass Version 3.24 die letzte Version von HHVM sein würde, die PHP offiziell unterstützt, und dass HHVM Hack nur in Zukunft unterstützen wird, unter Berufung auf Unterschiede und Inkompatibilitäten in Php 7.[23]

Leistung

Als Prozess -Virtual -Maschine, die die Ausführungsumgebung bietet, kann HHVM Live -Typinformationen verwenden, um effizienter zu erstellen nativen Codezu einem höheren Webserver führen Durchsatz Und niedriger Latenz. Im vierten Quartal 2012 die Ausführung von Facebook.coms Quellcode auf HHVM erreichte Leistungsparität mit HPHPC,[12] Und im Dezember 2013 wurde HPHPC sogar um rund 15%übertroffen.[24]

Siehe auch

Anmerkungen

  1. ^ Nur der Hacken's Typ-Chorning ( HH_SERVER und hh_client) und Codeformatierung ( HH_FORMAT) Befehlszeilen-Dienstprogramme und Daemons zusammen mit der HipHop -virtuellen Maschine gebündelt werden in geschrieben Ocaml.

Verweise

  1. ^ a b c d Jason Evans (9. Dezember 2011). "Die HipHop -virtuelle Maschine". Meta -Plattformen. Abgerufen 2. August, 2014.
  2. ^ "Releases · Facebook/HHVM". Facebook. 20. April 2022. Abgerufen 1. Mai, 2022.
  3. ^ "Bauen und Installieren von HHVM auf CentOS 7.x". github.com. Meta -Plattformen. 26. Mai 2015. Abgerufen 12. Juni, 2015.
  4. ^ "Bauen Sie den Hack tyecheck" auf ". github.com. Meta. 10. September 2014. Abgerufen 12. Juni, 2015.
  5. ^ "HHVM von Facebook beginnt, Rost umschreiben zu sehen - Phoronix". Abgerufen 29. August, 2019.
  6. ^ a b "Facebook/HHVM: Lizenz". github.com. Facebook, Inc. Abgerufen 2. August, 2014.
  7. ^ "HHVM 4.0.0".
  8. ^ Ottoni, Guilherme (20. Juni 2018). "HHVM JIT: Ein profilgesteuerter, regionaler Compiler für PHP und Hack". Verfahren der 39. ACM Sigplan -Konferenz zum Entwurf und der Implementierung von Programmiersprache (PLDI). ACM. S. 151–165.
  9. ^ "Facebook/HHVM". github.com. Meta -Plattformen. Abgerufen 2. August, 2014.
  10. ^ Kaushik Pal (28. April 2014). "PHP und Zend Engine Interna". phpbuilder.com. Archiviert von das Original am 15. September 2014. Abgerufen 23. September, 2014.
  11. ^ HHVM -Quellcode auf GitHub
  12. ^ a b c d Drew Paroski (29. November 2012). "Beschleunigung der PHP-basierten Entwicklung mit HHVM". Meta -Plattformen. Abgerufen 2. August, 2014.
  13. ^ "Ankündigung zum Entfernen von Github HPHPC -Unterstützung". github.com. Meta -Plattformen. 19. Februar 2013. Abgerufen 24. Mai, 2013.
  14. ^ "HipHop Bytecode V1 Revision 18". github.com. Meta -Plattformen. 31. Juli 2014. Abgerufen 24. Mai, 2013.
  15. ^ "Facebook/HHVM: Über ein Upgrade auf PHP 5.4 Engine". github.com. Mai 2013. Abgerufen 2. August, 2014.
  16. ^ "Facebook/HHVM: Zuhause". github.com. Meta -Plattformen. 8. Mai 2014. Abgerufen 2. August, 2014.
  17. ^ Cade Metz (20. März 2014). "Facebook führt 'Hack' vor, die Programmiersprache der Zukunft". Verdrahtet. Abgerufen 15. April, 2014.
  18. ^ Julien Verlaguet; Alok Menghrajani (April 2014). "Hack: Eine neue Programmiersprache für HHVM". code.facebook.com. Facebook. Abgerufen 23. März, 2014.
  19. ^ Josh Lockhart (3. April 2014). "Facebooks Hack, HHVM und die Zukunft von PHP". O'Reilly Media. Abgerufen 2. August, 2014.
  20. ^ "Hack und HHVM: Typ Anmerkungen (Hack Manual)". docs.hhvm.com. Abgerufen 25.März, 2014.
  21. ^ "Hack und HHVM: Typ Inferenz (Hack Manual)". docs.hhvm.com. Archiviert von das Original am 26. März 2014. Abgerufen 25.März, 2014.
  22. ^ "Hack und HHVM: Nicht unterstützte PHP -Funktionen in Hack (Hack Manual)". docs.hhvm.com. Archiviert von das Original am 4. November 2015. Abgerufen 2. April, 2014.
  23. ^ Krill, Paul (20. September 2017). "Vergessen Sie PHP! Facebooks HHVM -Engine schaltet stattdessen zu Hack". InfoWorld. Abgerufen 6. Februar, 2019.
  24. ^ "Wir sind die 98,5% (und die 16%)". hhvm.com. 19. Dezember 2013. Abgerufen 2. August, 2014.

Externe Links