Diskussion um das nächste PHP Release

Roadmap und Features für PHP 8.0 vorgeschlagen: Welche Neuerungen erwarten uns?
Keine Kommentare

PHP 7.3 soll am 13. Dezember 2018 veröffentlicht werden. Doch wie geht es danach weiter? Das wird momentan ausgiebig in der Gruppe der PHP Internals diskutiert. Am Horizont steht die nächste große Feature-Version, das Major Release PHP 8.0. Welche Neuerungen sollen dort enthalten sein, und wie lange müssen wir noch darauf warten?

Zeev Suraski, CTO des Zend Frameworks und einer der Chefarchitekten hinter PHP, hat in einer Nachricht an die Mailingliste die Diskussion um PHP 8.0 eröffnet. Sein Vorschlag lautet, nach der Veröffentlichung von PHP 7.3 Ende 2018 die Kräfte auf das nächste Major-Release zu bündeln. Demnach sollen neue Features erst in PHP 8.0 Eingang finden, das frühestens 2020 finalisiert würde. Ein Zwischenrelease PHP 7.4 wäre möglich, würde in diesem Fall aber lediglich Deprecations und Bugfixes enthalten.

Was die Major-Version 8.0 anbelangt, so sieht Zeev vier große Features vor:

1. Just-in-Time Compiler in PHP 8.0

Die Arbeiten an einem neuen JIT-Compiler laufen schon eine ganze Weile. Zeev berichtet, dass die jetzigen Ergebnisse bereits darauf hindeuten, dass die Performance für CPU intensive Workloads sich deutlich verbessern würde. Typische Web Workloads würden allerdings nur wenig von JIT profitieren.

Nichtsdestotrotz schlägt Zeev vor, JIT als eines der Hauptfeatures in PHP 8.0 aufzunehmen. Einerseits würden dadurch für PHP neue Anwendungsfälle erschlossen, die sich nicht nur auf das Web beziehen. Andererseits wäre neue Funktionalität in PHP selbst möglich, beispielsweise die Implementierung von unserialize() direkt in PHP statt in C.

Im Zuge der Arbeiten an JIT würden außerdem weitere Optimierungsmaßnahmen durchgeführt, beispielsweise die Integration des OPcache in die Core Engine, von denen auch Web Workloads profitieren könnten.

2. Support für ein Microservices-fokussiertes Ausführungsmodell

Auch angesichts des Trends hin zu Microservices-Architekturen und asynchronen Operationen stehen Optimierungen in PHP an. Zeev verweist auf den Erfolg von Node, der vor allem darin begründet sei, dass damit sehr effizient eine große Mange an parallelen Connections verarbeitet werden können. Projekte wie ReactPHP oder Swoole weisen in eine ähnliche Richtung.

Ziel für PHP 8.0 soll es deshalb sein, Erweiterungsmechanismen zu integrieren, die genutzt werden können, um Extensions bzw. Funktionen mit asynchronen I/O-Operationen auszustatten. Nach den ersten Untersuchungen in diese Richtung wird wahrscheinlich libuv dafür zum Einsatz kommen. Außerdem sollen Teile des PHP Streams-System neu- oder umgeschrieben werden.

3. Foreign Function Interface Support in PHP 8.0

In PHP 8.0 soll es einfacher werden, PHP mit C/C++-Bibliotheken zu verbinden, ohne dass dafür eigene Extensions geschrieben werden müssen. Zeev sieht dies als strategisch wichtiges Feature an, da dadurch der Weg bereitet würde, PHP zusammen mit brandaktuellen Technologien etwa aus dem Bereich AI und Machine Learning zu nutzen.

4. Unterstützung für Preloading

Preloading wird insbesondere im Zusammenspiel mit dem neuen JIT Compiler interessant, da dadurch das Schreiben von PHP-basierten Extensions effizienter wird. Erweiterungen würden dann nicht mehr nur in C oder via FFI geschrieben werden, wie es aktuell meist der Fall ist, sondern direkt in PHP. Darüberhinaus könnte das Preloading auch Webanwendungen beschleunigen, da so Abhängigkeiten in Bezug auf Vererbung bereits zur Compiler-Zeit anstatt zur Laufzeit aufgelöst werden könnten.

Wann kommt PHP 8.0?

Dieses ambitionierte Feature-Set könnte laut Zeev in zwei bis zweieinhalb Jahren fertiggestellt werden. Voraussetzung dafür sei allerdings, sich nach PHP 7.3 voll auf PHP 8.0 zu konzentrieren.

Ein zusätzliches Feature-Release 7.4 sieht Zeev eher als Bremse für 8.0. Er schlägt vor, PHP 7.3 deshalb als letztes Release der 7.x-Linie zu betrachten, das neue Features enthält. Möglich wäre allenfalls ein Zwischenrelease PHP 7.4 im kommenden Jahr 2019 ohne neue Funktionalitäten, das man nutzen würde, um alte Zöpfe abzuschneiden und veraltete Sprachelemente zu eliminieren.

Was sagt die Community?

Damit ist die Diskussion eröffnet. Während sich die meisten Protagonisten der Internals-Liste durchaus am vorgeschlagenen Feature-Set erfreuen, stößt die Idee eines reinen Deprecation-Releases PHP 7.4 auf wenig Gegenliebe.

So schreibt etwa Chase Peeler:

I personally see the idea of a deprecation only release to be kind of silly. I don’t work for a software company. It’s tough enough for me to make a case for upgrading using the „increase performance“ and „new features“ argument. There is no way I’d get the go-ahead to do an upgrade that would just make additional features deprecated.

It would be a better use of my time to look for and fix the deprecated features as part of the 8.0 upgrade prep, than to upgrade to 7.4.

Auch Larry Garfield fragt, warum PHP 7.4 ein „Deprecated-only Release“ sein muss. Könnte man nicht doch einige neue Features integrieren?

I’m missing why a 7.4 that adds warnings about „stop doing this now so your code works in 8“ would conflict with a 7.4 that also adds whatever routine functionality or improvements get developed in the meantime. (Typed properties or otherwise.)

Zeevs Antwort lautet hier, dass die anvisierten 2 bis 2,5 Jahre Entwicklungszeit für das vorgeschlagene Feature-Set für PHP 8.0 bereits sehr ambitioniert sei. Würde man nun aber viel Arbeit in Zwischenreleases stecken, wäre dieser Zeitrahmen nicht zu halten:

I don’t think people realize just how ambitious these bulletpoints are – to pull off in ~24 months (gross). It took us, IIRC, approximately 18 months from the point we published phpng and until PHP 7.0 was ready – as we focused exclusively on it. We’re not in a very different stage with JIT right now, but we’re throwing in several other radical improvements with far reaching implications – async and preloading (and that’s before others pitched in their ideas).

We have finite resources, and honestly, the resources we have that can work on these deliverables are very scarce. We need to choose are battles.

Man sieht, das letzte Wort ist hier noch lange nicht gesprochen. Auch Zeev selber stellt klar, dass die Liste der vorgeschlagenen Features für PHP 8.0 keineswegs abschließend gemeint ist: Weitere RFCs können selbstverständlich mit aufgenommen werden.

Insgesamt ergibt sich aber doch ein deutliches Bild: PHP 7.4 dürfte im Jahr 2019 kommen, allerdings ohne groß angelegte Neuerungen. Der große Wurf soll dann 2020 folgen, mit einem PHP 8.0, das substanzielle Verbesserungen mit sich bringen wird.

Das ist doch eine Roadmap, die Freude macht! Ob es auch so kommen wird…? Wir bleiben am Ball!

Dieser Beitrag wurde am 12. Juli aktualisiert, nach der Verschiebung des Release-Datums von PHP 7.3 auf den 13. Dezember.  

Unsere Redaktion empfiehlt:

Relevante Beiträge

X
- Gib Deinen Standort ein -
- or -