26.11.2020
PHP
Final Release von PHP 8
Autor: Filipe Pereira Martins
php
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.
Die letzte große 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 außerhalb 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 bloß 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.
Couchbase
Datenbank-Skills für KI-Apps
Daten sind gleichzeitig Motor und Treibstoff bei der Entwicklung und dem Betrieb von KI-Anwendungen. Entsprechend zentral ist die Rolle der Datenbank. Datenbank-Anbieter Couchbase erklärt, welche Skills eine KI-taugliche Datenbank mitbringen muss.
>>
Infragistics
Angular Apps - Daten binden und anzeigen
Infragistics Professional 23.2 enthält ein leistungsstarkes Angular-Datenraster, mit dem Ihre Anwendung Datensätze jeder Größe verarbeiten kann.
>>
WWDC 24
Apple Worldwide Developers Conference ab 10. Juni 2024
Apple informiert, dass die Worldwide Developers Conference (WWDC) vom 10. bis 14. Juni 2024 online stattfindet. Für Entwickler und Studierende wird es am Eröffnungstag die Möglichkeit geben, persönlich bei einer speziellen Veranstaltung im Apple Park mit dabei zu sein.
>>
Microsoft
.NET Smart Components - KI-gestützte UI-Steuerelemente
Microsoft hat .NET Smart Components entwickelt, eine Reihe nützlicher KI-gestützter UI-Komponenten, die sich relativ einfach zu .NET-Anwendungen hinzufügen lassen.
>>