Zoff um die Zukunft von PHP: HHVM versus PHPNG
Kommentare

100 Bugfixes, PHP 5.6 als Basis und eine erste Version des Hack Formatter – mit diesem Line-Up hat Facebook vor einigen Tagen die Version 3.2 der HipHop Virtual Machine (HHVM) vorgelegt. Die PHP-Runtime von Facebook hatte Anfang des Jahres mit exzellenten Performance-Werten Furore gemacht, und so manch einer konnte sich die Frage nicht verkneifen, ob HHVM nicht mittelfristig die „offizielle“ PHP Engine werden sollte. Doch danach sieht es momentan nicht aus!

PHPNG versus HHVM

PHPNG heißt die Antwort von Zend. Unter dem Titel PHP Next Generation hat Zend (und einige eingeweihte Entwickler) an Verbesserungsmöglichkeiten der PHP Engine gearbeitet. Ursprünglich wollte das Team einen Just-in-Time Compiler (JIT) auf die existierende PHP & Zend Engine Codebasis aufsetzen, dann aber herausgefunden, dass sich die mit JIT erreichten Performance-Gewinne aus den synthetischen Benchmark-Tests nicht in Real-World-Anwendungen wiederholen ließen.

Es mussten erst einmal andere Flaschenhälse gefunden und behoben werden, die verhinderten, dass die potenziellen Vorteile durch eine Just-in-Time-Kompilierung überhaupt zum Tragen kommen können. Und an diesem Punkt ist PHPNG jetzt angekommen: Die Datenstrukturen und andere Implementierungsdetails der Engine wurden überarbeitet. Insgesamt wurden 60% der CPU-Anweisungen durch effizienteren Code ersetzt.

Zends Benchmark-Tests zufolge ist man damit bereits schneller als die aktuelle HHVM. Zeev Suraski hatte die unten stehende Benchmark-Tabelle vorgelegt, die belegen soll, dass PHPNG mit Ausnahme von WordPress 3.9 und Drupal 7.28 im Vergleich zur HHVM deutliche Performance-Steigerungen ermöglicht. Bei der Skeleton App des Zend Framework 2.3.1 soll die neue Zend Engine sogar um über 48 Prozent schneller sein.

Quelle: Benchmarking PHPNG

Quelle: Benchmarking PHPNG

 

PHPNG = PHP.Next?

Mit diesen Trümpfen im Rücken hat nun Zeev Suraski von Zend in einem offiziellen RFC vorgeschlagen, PHPNG in den Master-Branch zu übernehmen. Die Frage: Soll PHPNG die Basis von PHP.Next werden, der nächsten großen Major-Version, für die man sich gerade auf die Versionsnummer 7 geeinigt hat?

Seither laufen die Diskussionen heiß.

In den PHP Internals wird vor allem von den Nicht-Zend-Mitgliedern Kritik an der Entwicklungsweise von PHPNG geübt. Es sei als experimentelles Projekt angekündigt und nicht gerade in einer offenen Art und Weise von Zend entwickelt worden. Unklar sei die Roadmap, unvollständig die Dokumentation. Pierre Joye spricht gar von „planloser Entwicklung“ und „inkonsistenten APIs“ – und zieht die Konklusion, dass PHPNG noch lange nicht bereit sei, die Basis für das nächste große PHP zu bilden.

Zeev Suraski von Zend antwortet, dass PHPNG vor ein paar Monaten noch ein experimentelles Projekt gewesen sei, jetzt aber soweit wäre, in den Master übernommen zu werden. Es spreche außerdem nichts dagegen, in der Folge alle Inkonsistenzen zu beheben und die Dokumentation zu vervollständigen. Solch große Veränderungen, wie sie in PHP 7 geplant seien, benötigten ohnehin die Mitarbeit der gesamten Community – und das sei nur zu erreichen, wenn früh klargestellt werde, dass die Zukunft PHPNG heiße.

PHP 7 – wann?

Auch was den möglichen Zeitplan angeht, gehen die Meinungen weit auseinander. Hält es Zeev Suraski für möglich, die nächste PHP-Version auf PHPNG-Basis im Laufe eines Jahres fertig zu stellen, hält Pierre Joye das für eine maßlose Fehleinschätzung. Zwei bis drei Jahre sei ein realistischerer Zeitplan, schreibt Joye – und Unmut kommt ohnehin bei ihm auf, da PHP.Next nicht nur aus PHPNG bestehen, sondern eine Reihe anderer Verbesserungen enthalten sollte.

And even I am pretty sure you will make it through with this totally incomplete RFC based on disputable benchmarks and no matter how much performance improvements happen with phpng, this is not the only thing what we should do in next. Even if it was, to think about being ready in less than a year is a sweet dream, to say it nicely.

Möglicherweise schiebt man noch ein 5.7-Release ein? Auch zu dieser Frage wogen die Positionen hin und her….

Und HHVM…?

Nun, von HHVM ist in den Internals nicht viel die Rede. Facebook wird in ruhigen Zügen seine Version einer PHP-Runtime weiter verfeinern. Mark Gavalda von WordPress hatte letzte Woche ein Benchmark vorgelegt, in dem PHPNG und HHVM 3.2 ziemlich gleich auf liegen (einige Infrastruktur-Fehler ließen indes keine weiter reichenden Rückschlüsse zu).

HHVM und PHPNG zeigen zumindest, dass nach oben noch genügend Luft ist. PHPNG soll in Zukunft die Performance-Kurve durch den jetzt besser möglichen JIT-Ansatz noch weiter „durch die Decke schnellen lassen“, versichert Zeev Suraski („PHPNG will be excellent basis for JIT, that could push performance through the roof for an already ultra fast implementation.„). Und auch bei HHVM ist laut Facebook das Ende der Fahnenstange noch lange nicht erreicht. Außerdem bietet Hack, Facebooks PHP-Erweiterungssprache, jetzt bereits das, was sich viele von PHP 7 wünschen.

Pierre Joye hält der PHP-Community HHVM jedenfalls als positives Gegenmodell zu den „Fehltritten“ der Zend-Entwickler vor. Und dabei geht es nicht nur um Performance:

Visibility, cleaner (or less ugly) code base, better communication with the developers, etc. are more the points why some moves to hhvm. Some features we rejected in the past (strict hinting for method/function signature f.e., hack) are other reasons mentioned very often.

Der übliche Zoff in den PHP Internals?

Die kontroversen Diskussionen um PHPNG könnte man als „den übliche Zoff in den PHP Internals“ abtun. Doch geht es hier um mehr. Es geht um eine wichtige Richtungsentscheidung in der PHP Community. Und es geht um die Etikette: Wird man es zulassen, dass nach der hart erkämpften Öffnung der PHP-Kernentwicklungsprozesse wieder ein Unternehmen, nämlich Zend, sich mit einem quasi Alleingang durchsetzt?

PHPNG wird kommen, das zeichnet sich bereits ab. Die Frage ist nur noch, wann und mit welcher Unterstützung.

Doch ist auch der Unmut der Nicht-Zendler im Core-Team nachzuvollziehen. Mit der RFC-Abstimmung werden sie vor die Entscheidung gestellt, das bisher wenig durchsichtig geführte Projekt PHPNG mit seinen zahlreichen Codeveränderungen zu reviewen bzw. zu akzeptieren, oder einen signifikanten Performance-Boost abzulehnen. Insofern ist es keine gute Entscheidung gewesen, PHPNG für die Inklusion in den Master-Branch vorzuschlagen, ohne vorher Überzeugungsarbeit bei den Nicht-Zend-Entwicklern zu leisten.

PHP quo vadis?

Die PHP-Core-Gruppe steht vor einer Zerreißprobe. Die Zend-Fraktion, die mit PHPNG den (Performance)-Himmel auf Erden verspricht, gegen die Skeptiker, denen Performance nicht alles bedeutet und die, vor allem, gerne früher in die Pläne Zends eingeweiht gewesen wären.

Was sie dennoch zusammenhalten wird, ist die Bedrohung HHVM. Denn so wohlwollend die Facebook-Ausflüge in PHP-Land bislang auch kommentiert werden: Ein Abziehen der PHP Community nach Hack und HHVM will (außer Facebook) wohl niemand!

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -