PHP 26.11.2020, 16:45 Uhr

Final Release von PHP 8

Heute erscheint die finale Fassung von PHP 8. Eine Vielzahl an tiefgreifenden Neuerungen soll der beliebten Skriptsprache zu mehr Akzeptanz verhelfen. Auf die betroffenen Entwickler kommt Refactoring der bestehenden Code-Basis zu.

 
(Quelle: php)
Die letzte grosse PHP-Version trug die Glückszahl Sieben und ist im Jahre 2015 erschienen. PHP 8 baut auf dem Erfolg der Vorgängerversion mit Features wie der WeakMaps-Klasse auf. Zahlreiche Neuerungen zielen auf eine verbesserte Code-Qualität und mehr Performance ab und dürften allen PHP-Projekten zugutekommen.
PHP 8 debütiert einen Just-in-Time-Compiler (JIT). Ein JIT-Compiler hat die Aufgabe, Teile einer Web-Anwendung zur Laufzeit zu kompilieren, um die (schnelleren) Binaries anstelle der (langsameren) interpretierten Variante des Codes zu nutzen. Der JIT-Compiler von PHP 8 eröffnet nebenbei Möglichkeiten der Nutzung der Sprache ausserhalb der serverseitigen Anwendungsausführung.

JIT-Compiler

Der JIT-Compiler von PHP 8 ist als nahezu unabhängiger Bestandteil von OPcache implementiert. Es lässt sich zur PHP-Kompilierungszeit und zur Laufzeit aktivieren und deaktivieren. Ist die zugehörige Option aktiviert, wird nativer Code von PHP-Dateien in einem zusätzlichen Bereich des gemeinsam genutzten OPcache-Speichers gesichert, und die op_array opcodes[].handler behalten Zeiger auf die Einstiegspunkte von JIT-kompiliertem Code bei.
JIT führt keine zusätzliche IR-Darstellung (Intermediate Representation) ein, verwendet jedoch DynASM (Dynamic Assembler für Codegenerierungs-Engines), um nativen Code der Zielplattform direkt aus dem PHP-Bytecode zu erzeugen.
Kurz gesagt, JIT übersetzt die relevanten Teile des Zwischencodes in Maschinencode. Durch den Verzicht auf Kompilierung dürfte JIT die Leistung und die Speichernutzung erheblich verbessern.
Wenn JIT aktiviert ist, wird der Code nicht von der Zend-VM ausgeführt, sondern von der CPU selbst. Dies sollte theoretisch die Berechnungsgeschwindigkeit merklich verbessern. Die Performance von Web-Anwendungen wie WordPress hängt allerdings noch von weiteren Faktoren ab und so ist der spürbare Leistungszuwachs durch den Einsatz des JIT in realen Szenarien einer Produktionsumgebung bisher eher vernachlässigbar. Für künftige Versionen von PHP sind weitere Verbesserungen des JIT geplant. Es ist bloss der erste Schritt.

Beförderung von Konstruktor-Eigenschaften

Beförderung von Konstruktor-Eigenschaften (Engl. constructor property promotion): Dank neuer syntaktischer Zusätze lassen sich Wertobjekte (value objects) oder Datentransferobjekte (data transfer object) effizienter erstellen. Features wie WeakMaps sollen zum schonenden Umgang mit Ressourcen wie dem verfügbaren Arbeitsspeicher beitragen. Anders als die splObjectStorage- nutzt die WeakMap-Klasse schwache Referenzen, damit die Garbage-Collection nicht daran abprallt. Wenn ein Objektschlüssel einer WeakMap von der Garbage-Collection erfasst wird, verschwindet er aus dem Map, sofern sich diesem Vorgang keine anderen Referenzen in den Weg stellen. PhpToken fügt dem Tokenizer eine objektbasierte Schnittstelle hinzu. Es bietet eine vereinheitlichte Darstellung und ist gleichzeitig speichereffizienter und schneller.

Mehr Typsicherheit

Mit Neuerungen wie dem nullsafe-Operator, Union Types, Typ-Anmerkungen und neuen Rückgabetypen (static und mixed) rückt die Problematik der Typsicherheit in den Vordergrund. Zwei neue Perl-kompatible reguläre Ausdrücke dürften die Fehlersuche erleichtern. Der ini-Parameter opcache.record_warnings aktiviert die Aufzeichnung von Warnungen zur Kompilierungszeit für die Wiedergabe beim nächsten Include, was sogar dann gelingt, wenn die benötigten Informationen aus dem Cache bereitgestellt werden müssen. Vier neue Reflection-Methoden können Informationen zu Standardwerten von Parametern interner Funktionen zurückgeben.

Fazit

Die Neuerungen in PHP 8 dürften der Skriptsprache mehr Respekt bescheren und sollen ihre Nutzung in Softwareprojekten der Enterprise-Klasse wesentlich erleichtern. Der sparsamere Umgang mit dem verfügbaren Arbeitsspeicher dürfte sich zudem auf die Kosten der Bereitstellung von PHP-Anwendungen positiv auswirken, eine überaus willkommene Verbesserung. Die Unterstützung von PHP 8 ist bis zum November 2022 gewährleistet.



Das könnte Sie auch interessieren