Skriptsprachen: Was alles in PHP 8 landen soll

Für die noch dieses Jahr vorgesehene nächste Generation der Skriptsprache kristallisieren sich die Neuerungen heraus.

In Pocket speichern vorlesen Druckansicht 105 Kommentare lesen
Was alles in PHP 8 wohl landen wird
Lesezeit: 3 Min.
Von
  • Alexander Neumann

PHP-Entwickler Brent Roose hat in einem Blog-Beitrag schön übersichtlich die zu erwartenden Neuerungen in PHP 8.0 vorgestellt. Die nächste Generation der Skriptsprache soll Ende dieses Jahres erscheinen.

Beim neuen Release handelt es sich um eine neue Hauptversion. Es ist daher anzunehmen, dass einiges an bestehendem Code nicht mehr kompatibel mit der neuen Entwicklung sein wird. Das Upgrade sollte jedoch nicht allzu schwer sein, da die meisten Änderungen, die zu einem Bruch führen können, wohl bereits in den 7.x-Versionen veraltet waren, so Roose.

Unter den Neuerungen nimmt wahrscheinlich der JIT-Compiler (Just In Time) eine herausragende Rolle ein. JIT ist eine Compilerstrategie, die Zwischencode ableitet und diesen zur Laufzeit in architekturabhängigen Maschinencode verwandelt – das dann "just in time" direkt über die CPU und nicht mehr über die Zend Virtual Machine. An der JIT-Unterstützung in PHP wird seit geraumer Zeit gearbeitet. Mit ihr hat die Skriptsprache das Potenzial, gerade bei CPU-nahem Code noch mal eine Schippe drauf zu legen – gerade wo die jüngsten PHP-Releases eh schon etliche Performanceverbesserungen aufweisen konnten.

Ein weiteres wichtiges neues Feature sind eine weitergehende Unterstützung von Union Types. Diese schon in Programmiersprachen wie Haskell, TypeScript, C/C++ und Rust verwendeten Typen sind eine Sammlung von zwei oder mehr Typen, die darauf hinweisen, dass jeder dieser Typen verwendet werden kann. Ein weiterer Punkt unter dem Schlagwort "Static return type" schlägt vor, static auch als Rückgabetyp verwendbar zu machen – neben den bereits verwendbaren Typen self und parent.

Aufbauend auf den in PHP 7.4 hinzugefügten Weak References wird in PHP 8 eine WeakMap-Implementierung hinzugefügt. WeakMaps enthalten Verweise auf Objekte, die nicht verhindern, dass diese Objekte im Garbage Collector landen. Ein kleines, aber nützliches neues Feature ist nun, ::class auf Objekte anzuwenden, anstatt get_class() auf ihnen zu verwenden. Es funktioniert wohl auf dieselbe Weise wie get_class(). Die neue Funktion fdiv macht etwas Ähnliches wie die Funktionen fmod und intdiv, die eine Division durch 0 erlaubt. Anstelle von Fehlern erhalten Entwickler je nach Fall INF, -INF oder NAN.

Damit nicht genug, gibt es weitere kleinere Neuerungen, die der Blog-Beitrag kurz anreißt – genauso wie die sogenannten Breaking Changes oder der Hinweis, dass die zuvor als "deprecated" gesetzten Funktionen aus PHP 7.2 bis 7.4 nun entfernt werden. Außerdem weist Roose jeweils auf die entsprechenden RFCs (Request for Comments) hin. (ane)