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
Programmier­sprache C++, C
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.5 verfügbar.

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 Übersetzung der Befehle in die Maschinensprache zumindest teilweise für jeden Gebrauch erneut erfolgen muss.

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 beispielsweise den Web-Server 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.[1] 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 Geschwindigkeitsrekorde 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 (genannt Intermediate Language). 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 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.[2]

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.

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[3] und Roadsend PHP Compiler[4][5] (kompilieren zu C) oder Quercus[6] und Project Zero[7] (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.[8]

Weblinks[Bearbeiten]

Quellen[Bearbeiten]

  1. http://www.phpclasses.org/blog/post/117
  2. https://www.facebook.com/notes/facebook-engineering/speeding-up-php-based-development-with-hiphop-vm/10151170460698920
  3. phpcompiler.org
  4. www.roadsend.com
  5. code.roadsend.com
  6. caucho.com/resin-3.0/quercus
  7. www.projectzero.org/php
  8. Scott MacVicar: HipHop for PHP: six months later. In: Facebook Engineering weblog. Facebook, 13. August 2010, abgerufen am 19. November 2010 (englisch).