Archive for the ‘HipHop’ tag
HipHop für PHP
Gestern war nun der große erhoffte Tag, Facebook wollte seinen neuen „PHP-Compiler“ veröffentlichen. Bis jetzt ist das noch nicht passiert, allerdings gab es ein offizielles Announcement und einen Videostream, in dem Näheres erläutert wurde.
Edit: Auf GitHub findet man mittlerweile den Sourcecode.
Hier ein paar erste Fakten, so wie ich sie bisher gelesen habe:
- „HipHop for PHP“ übersetzt PHP-Code in C++ Code
- Danach kann es mittels g++ kompiliert werden und man erhält eine ausführbare Datei
- Diese Datei enthält auch direkt einen Webserver (basiert auf Libevent) und eine CLI-Schnittstelle. Um sein Projekt vom Internet verfügbar zu machen muss man nur seinen Apache/Lighty/Squid/etc umleiten (Reverse Proxy) auf diesen kleinen Miniwebserver, so kann man dann mehrere Projekte auf einem Port (80) laufen lassen.
- Beim Übersetzen und Kompilieren wird der Code durch statische Analysen etc. optimiert, und z.B. der beste C++-Datentyp gewählt (PHP ist lose typisiert, C++ streng)
- Es soll einen Just-In-Time-Compiler geben (HPHPi), mit dem man seine Anwendung testen kann, ohne sie jedes Mal zu übersetzen und zu kompilieren, denn das kann unter Umständen länger dauern.
- Bei Facebook läuft das ganze seit einigen Monaten produktiv, man spart damit ca. 50% CPU-Last ein
- Derzeit unterstützt es PHP 5.2 Code, PHP 5.3 wird noch nicht unterstützt. eval() kann nicht genutzt werden.
Facebook, die zweitgrößte Website der Welt, setzt „HipHop for PHP“ nun seit einigen Monaten produktiv ein, 90% des Traffics wird bereits damit abgewickelt, und es läuft wohl stabil. 300.000 Codezeilen und 5000 Unittests sollen es sein, und es wird wohl bald auf GitHub veröffentlicht, aktuell nur für Linux-Systeme (da Facebook auf Linux setzt), aber Windows könnte bald folgen wenn der Open-Source-Code erweitert wird.
Gerade für Firmen könnte das interessant sein, wenn man ein Drittel oder gar die Hälfte seiner PHP-Maschinen einsparen kann, ich bin sehr gespannt.
PHP-Extensions müssen neu geschrieben werden in C++. Wir werden also vielleicht eine zweigeteilte Welt bekommen, HipHop-kompatibler Code und „native PHP Code“. Wie kompatibel ist das ganze mit bestehendem Code, wie kann man dann debuggen, wie sieht dann der Deployment-Prozess aus, wie groß ist der CPU- und Memory-Performance-Vorteil gegenüber APC/XCache wirklich? Wieviele „unserer normalen Projekte“ sind CPU-beschränkt und nicht IO-beschränkt?
Interessant ist das ganze auch für Projekte, die dann eine kompilierte Version ausliefern können, das Deployment könnte sich auch auf eine Übersetzung, Kompilierung und dann Kopie einer Datei beschränken? Wir werden sehen…
Ich hoffe, dass wir in den nächsten Stunden und Tagen da mehr Informationen erhalten und der Sourcecode veröffentlicht wird. Es sind jedenfalls spannende Tage, die die Zukunft von PHP verändern könnten.