HipHop

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel behandelt die Software. Für die Musikrichtung und Jugendkultur siehe die Artikel Hip-Hop und Hip-Hop (Subkultur).
HipHop
Logo
Entwickler Facebook
Aktuelle Version 3.4.0[1]
(20. November 2014)
Programmier­sprache C++, C
Kategorie Bytecode-Compiler
Lizenz PHP
hhvm.com

HipHop for PHP ist eine freie Software, die ursprünglich PHP-Skripte zu Zwecken der Leistungssteigerung zu C++-Quellcode übersetzt, der dann – üblicherweise mittels g++ – in die jeweils nötige Maschinensprache übersetzt wird. Mittlerweile ist mit HHVM eine virtuelle Maschine für HipHop verfügbar.

Es ist damit eine alternative PHP-Implementierung, die allerdings bisher nur den PHP-5.3-Sprachumfang bereitstellt. PHP ist derzeit in Version 5.6.3 verfügbar.[2] Zudem unterstützt HHVM die eng mit PHP verwandte und von Facebook entwickelte Programmiersprache Hack.

HipHop vor HHVM[Bearbeiten]

Der ursprüngliche HipHop-Compiler HPHPc wandelte PHP-Code in C++-Code um. Durch die Kompilierung werden deutlich höhere Ausführungsgeschwindigkeiten beziehungsweise niedrigere Prozessorlasten erreicht, als bei Interpretierung der PHP-Skripte zum Beispiel durch die Zend Engine, bei der die Befehle zumindest teilweise für jeden Gebrauch neu in die Maschinensprache übersetzt werden müssen.

Es wurde damit eine nativ ausführbare Programmdatei erzeugt, die auch den Webserver gleich mit enthält und somit selbst direkt auf HTTP-Anfragen antwortet und den Web-Server, beispielsweise Apache, unnötig machte.

Im Unterschied zu anderen Ansätzen zur Steigerung der Ausführungsgeschwindigkeit von PHP brachte HipHop eine deutliche weitere Geschwindigkeitssteigerung bis Faktor 6 und verringerte Speicherbelegung – unter anderem, da damit parallele Server-Anfragen nicht in getrennten Prozessen mit entsprechend getrennten Speicherbereichen bearbeitet wurden.[3] Dies kann bei Websites mit sehr hohen Besucherzahlen bedeutende Leistungssteigerungen oder Ressourcenersparnisse bewirken.

HipHop wird als freie Software mit Quellcode unter Version 3.01 der PHP-Lizenz verbreitet. Der Quelltext umfasst mehr als 300.000 Zeilen in C++ und C.

HPHPc unterstützt PHP in Version 5.3. In der Entwicklerversion HPHPd, die interpretiert statt kompiliert wurde, wobei prinzipbedingt auf einige seltener benutzte PHP-Merkmale wie die dynamischen Sprachmerkmale eval() und create_function() verzichtet werden musste, konnte HipHop diese Geschwindigkeiten nicht erreichen.

HHVM[Bearbeiten]

Wegen der verschiedenen absehbaren Einschränkungen der Entwicklerversion HPHPd begann Facebook bereits 2010, einen alternativen Ansatz zu untersuchen. Dabei wurde PHP in einer virtuellen Maschine ausgeführt, der HHVM. HHVM überträgt PHP-Code in einen abstrakten Bytecode (HHBC genannt). Dieser Bytecode wird dann dynamisch zur Laufzeit in x64-Maschinensprache durch einen JIT-Compiler übersetzt. Dies ist vergleichbar mit dem Ansatz der virtuellen Maschinen von anderen Sprachen wie Java (JVM) und C# (CLR) oder mit Microsofts sprachunabhängige Common Intermediate Language für die .NET-Plattform.

HHVM unterstützt im Juli 2013 noch nicht alle Funktionen von PHP 5.4, geht aber über PHP 5.3 hinaus. Ende 2012 erreichte HHVM die Geschwindigkeit von HPHPc.[4]

Anfang 2013 wechselte der Betrieb von Facebook von HPHPc auf HHVM. Damit wurden HPHPc für den Realbetrieb und HPHPd für den Testbetrieb abgelöst.

Seit August 2014 testet die Wikimedia Foundation die Verwendung von HHVM für die Wikipedia.[5][6]

Geschichte[Bearbeiten]

HipHop wurde ursprünglich bei Facebook unter Leitung von Haiping Zhou auf CentOS- und Fedora-Systemen entwickelt. Es folgt früheren ähnlichen Entwicklungen wie phc[7] und Roadsend PHP Compiler[8] (kompilieren zu C) oder Quercus[9] und Project Zero[10] (Java-Implementierungen von PHP) oder Phalanger (Compiler für .NET). Es war wohl schon über zwei Jahre in der Entwicklung, bevor die Veröffentlichung als freie Software unter der PHP-Lizenz für den 2. Februar 2010 angekündigt wurde. Der Termin konnte aufgrund technischer Probleme nicht eingehalten werden, doch am 20. Februar landete dann der Quellcode wie versprochen im Git-Repository. Die Software ist bei Facebook für die Abfertigung hunderter Millionen von Nutzern im Einsatz. In den folgenden Monaten wurde an weiterer Beschleunigung von HipHop gearbeitet und Unterstützung für einen Teil der neuen Merkmale von PHP 5.3 umgesetzt. Weiterhin wurde von Hui Chen im Rahmen eines Google-Summer-of-Code-Stipendiums die Portierung auf 32-Bit-Plattformen umgesetzt.[11]

Weblinks[Bearbeiten]

Quellen[Bearbeiten]

  1. HHVM 3.4.0
  2. PHP 5 ChangeLog. The PHP Group, 13. November 2014, abgerufen am 21. November 2014.
  3. Manuel Lemos: PHP compiler performance, PHP Classes blog, 23. Februar 2010.
  4. Drew Paroski: Speeding up PHP-based development with HHVM, Facebook, 29. November 2012
  5.  MediaWiki: HHVM – Freie Wikisoftware
  6. Wikimedia Foundation Report, August 2014 Information
  7. phpcompiler.org
  8. www.roadsend.com
  9. caucho.com/resin-3.0/quercus
  10. www.projectzero.org/php
  11. Scott MacVicar: HipHop for PHP: six months later. In: Facebook Engineering weblog. Facebook, 13. August 2010, abgerufen am 19. November 2010 (englisch).