PHP 8 ist da und läutet die nächste Generation der Skriptsprache ein

Die neue Major-Version PHP 8 enthält einen JIT-Compiler und stellt einen Wendepunkt in der Entwicklung der Programmiersprache dar.

In Pocket speichern vorlesen Druckansicht 169 Kommentare lesen

(Bild: Sashkin/Shutterstock.com)

Lesezeit: 4 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

Die neue PHP-Version 8 ist pünktlich zum geplanten Releasedatum erschienen. Der Veröffentlichung ist ein jahrelanger Um- und Ausbau vorausgegangen, in dessen Verlauf die Sprache sich einiger Altlasten entledigt und grundlegende Neuerungen eingeführt hat. Die Freigabe erfolgte durch Release-Managerin Sara Golemon während der von heise Developer und dpunkt.verlag organisierten Online-Konferenz betterCode() PHP 8, während der sie den Freigabe-Button klickte.

Größte Neuerung ist mit dem Just-in-Time-Compiler (JIT) eine Compilerstrategie, die Zwischencode ableitet und diesen zur Laufzeit in architekturabhängigen Maschinencode verwandelt – nicht mehr über die Zend Virtual Machine, sondern "just in time" direkt über die CPU. An der JIT-Unterstützung in PHP hatte das Team seit geraumer Zeit in einem separaten Entwicklungszweig gearbeitet.

Die neue Hauptversion soll durch den JIT bei berechnungsintensiven Programmen mit einer deutlichen Performancesteigerung gegenüber PHP 7 aufwarten. Entwickler können den Tracing-JIT-Compiler optional zuschalten und mit ihm Bytecode häufig ausgeführter Passagen in nativen Maschinencode überführen. Diese Methode führt laut Herausgebern zu einer effizienteren Ausführung des Bytecode, als eine zwischengeschaltete virtuelle Maschine sie bieten könnte.

Außerdem hat das Team hinter PHP Attribute in die Sprache eingeführt, mit denen sich Metadaten für Codeeinheiten direkt in die Deklaration einbetten lassen. Das Konzept ist von Java und C# bekannt (Annotationen in Java, Attribute in C#). Mangels echter Syntax für Metadaten haben bislang Frameworks (wie Symfony), Bibliotheken (wie Doctrine) und Werkzeuge (wie PHPUnit) Metadaten aus Kommentarblöcken strukturiert aufgeschlossen und über Pseudosprachen zugänglich gemacht.

Das PHP-Team hat für PHP 8 auch das Typsystem erweitert, hinzugekommen sind die Union Types, die aus Programmiersprachen wie TypeScript, C/C++ und Rust bekannt sind. Dabei handelt es sich um eine Sammeldeklaration von zwei und mehr Typen, die sich dann je nach Situation verwenden lassen (jeder der als möglich deklarierten Typen kann zum Zuge kommen, andere nicht).

MEHR ZU PHP 8

(Bild: Shutterstock/lapandr)

betterCode() präsentiert: PHP 8 – drei Workshops zur neuen Major-Version von thePHP.cc:

Eine weitere Neuerung ist, dass PHP 8 seit der Alpha-Ausgabe im Juni JSON-Dateien unterstützt. Bei einer älteren Codebasis kann der Umstieg auf PHP 8 durch Deprecations zu erhöhtem Migrationsaufwand führen, der sich angesichts der möglichen (laut PHP-Experten bis zu zehnfachen) Beschleunigung allerdings je nach Rechenintensität eines Projekts mitunter lohnen dürfte.

PHP (für Nostalgiker: "Personal Home Page Tools", ab Version 3 "PHP: Hypertext Preprocessor") ist 25 Jahre alt. Das 1995 (etwa zeitgleich mit Java und JavaScript) von Rasmus Lerdorf begonnene Open-Source-Projekt war ursprünglich zum Erstellen von Websites gedacht, wobei der Parser den Code Zeile für Zeile auslas. Ab PHP 4 überführte ein Compiler den Programmcode in Bytecode, der im nächsten Schritt zu ausführbarem Code wurde. Seit Version 5 bietet PHP zunehmend Objektorientierung. Eine Hürde waren die zunächst fehlenden skalaren Typinformationen – da in PHP geschriebener Programmcode auch ohne Typinformation ausführbar ist, lässt sich nicht immer typspezifischer Bytecode erzeugen. Der tatsächliche Datentyp ist stets erst zur Laufzeit bekannt und kann sich bei erneutem Durchlauf wieder ändern.

PHP im Experten-Check

(Bild: Shutterstock/lapandr)

Heute gilt PHP als gereifte Programmiersprache – sowohl im Projekt als auch anwendungsseitig hat das ursprüngliche Hobbyprojekt seither Professionalisierung erfahren und streckenweise Unterstützung durch Unternehmen wie Facebook und Microsoft erhalten. Allerdings steht keine einzelne Firma oder Stiftung hinter dem Projekt, eine Reihe von großen und kleinen Förderern hat über kürzere oder längere Abschnitte die Entwicklung vorangetrieben. Besonders Facebook hatte sich zwischenzeitlich für PHP engagiert und den Sprachumfang durch Typinformationen erweitert, Microsoft finanzierte im Rahmen der PHP-7-Entwicklung zwei Entwicklerstellen. Davon abgesehen ist PHP ein Community-Projekt geblieben, und die Community trägt PHP auch nach dem Rückzug größerer Sponsoren weiter.

Näheres zum Release und zu den Breaking Changes lässt sich dem PHP-Blog entnehmen. Die Release-Managerin Sara Golemon hatte heise Developer im Rahmen einer Konferenz zu PHP 8 einen Werkstatteinblick geboten – im Interview erzählt sie, welche Hürden es zu überwinden galt, und berichtet von den Neuerungen.

Update-Hinweis [27.11.2020]: Im 7. Absatz hatte sich ein Tippfehler eingeschlichen, das Wort "Parser" ist jetzt ergänzt.

(sih)