PHP 7.0 ist erschienen: eine neue Zeitrechnung für die Skriptsprache

In der neuen Version stecken knapp 10.000 Änderungen gegenüber dem schon vor elf Jahren erschienenen PHP 5. Im Zentrum standen vor allem performancerelevante Überarbeitungen, durch die die Skriptsprache nun mit Facebooks HHVM konkurrieren kann.

In Pocket speichern vorlesen Druckansicht 176 Kommentare lesen
Uhr
Lesezeit: 4 Min.
Von
  • Sebastian Bergmann
  • Alexander Neumann

Eine offizielle Ankündigung zur Freigabe von PHP 7 seitens des PHP-Projekts steht zwar noch aus, doch deuten alle Anzeichen darauf hin, dass sie heute noch erfolgen wird, denn seit Dienstag liegt der fertige Code auf GitHub bereit.

11 Jahre hat es gedauert, bis mit PHP 7.0 ein Nachfolger für die Version 5 der Skriptsprache freigegeben wurde. Da mag ein mehrmaliges Verschieben des eigentlich anvisierten Release-Termins im November verschmerzbar sein. Denn immerhin steht nun das erste neue Major Release der populären Programmiersprache seit 2004 bereit.

Der Versionssprung von 5 auf 7, also das Auslassen von PHP 6 mag irritieren. Nach Jahren der Diskussion zur Beschaffenheit eines PHP 6 wurde im vorigen Jahr beschlossen, diese Sprachversion zu überspringen und gleich mit PHP 7 aufzuwarten. Der Schritt wurde damit begründet, dass es etliche gescheiterte Versuche für eine Version 6 gebe, die nun angesichts der Neuausrichtung für Verwirrung bei den Nutzern sorgen könnte.

Die Basis des neuen PHP stellt der PHPNG-Branch, in dem der ausführende Kern von PHP grundlegend überarbeitet worden war, um PHP-Bytecode schneller und mit geringerem Speicherverbrauch ausführen zu können. Es geht hier um zahlreichen Überarbeitungen, durch die man von den Verbesserungen in aktuellen C-Compilern profitieren, verstärkt CPU-Caches nutzen, Arbeitsspeicher effizienter allokieren, Hashtables performanter verarbeiten und besseren PHP-Bytecode erzeugen können soll.

Sprachschöpfer Rasmus Lerdorf hatte zu Beginn der Release-Candidate-Phase von PHP 7.0 beeindruckende Benchmarks. So kann das neue PHP beispielsweise 80 Prozent mehr Drupal-8-Requests pro Sekunde verarbeiten als PHP 5.6 und 30 Prozent mehr Requests pro Sekunde als Facebooks HHVM 3.7 (HipHop Virtual Machine). Bei WordPress 4.1.1 verarbeitete PHP 7.0 mehr als doppelt so viele Anfragen pro Sekunde als PHP 5.6.

Nicht nur beim Teil des Kerns von PHP, der Bytecode ausführt, wurde sehr viel geändert. Auch Komponenten wie Lexer, Parser und Bytecode-Generator wurden komplett überarbeitet. Der Lexer ist nun kontextsensitiv und unterstützt semireservierte Schlüsselworte. Anstelle direkt aus dem Parser heraus Bytecode zu erzeugen, wird jetzt zunächst ein abstrakter Syntaxbaum erstellt. Dieser bildet nun die Grundlage für die Erzeugung von Bytecode.

PHP 7.0 bringt unter anderem Typsicherheit für skalare Datentypen und eine stark überarbeitete Zend Engine. Das neue PHP soll gegenüber dem Vorgänger unter der Versionsnummer 5.6 deutlich schneller sein. So ist in der Ankündigung von bis zu doppelter Geschwindigkeit die Rede, im Vergleich zu PHP 5.0 ist das nächste PHP wohl gar 14-mal zügiger.

PHP 7 bietet außerdem eine konsistente 64-Bit-Unterstützung für Windows. Neue Operatoren wie Null Coalescing (??) und Combined Comparison (<=>) sollen zudem eine kompaktere Schreibweise komplexer Algorithmen ermöglichen. Die Abwärtskompatibiltät zu PHP 5.x soll dabei weitgehend gewahrt bleiben – einige Ausnahmen gibt es aber dann doch –, mit PHP 4.x entwickelte Systeme müssen hingegen erneuert werden, da man sich von einigen älteren und nicht mehr unterstützten APIs verabschiedet hat.

Der aktive Support für PHP 5 endet im August 2016, ein Jahr länger wird es noch Patches für Sicherheitslücken geben. Anwender müssen sich also darauf einstellen, ihre Software rechtzeitig auf das neue PHP zu migrieren.

[Update 3.12. 22:00]:

Nun ist der Release offiziell: Auf der PHP-Site meldet das Entwickler-Team die Verfügbarkeit von PHP 7.0.0. Dabei verweist es auch auf den Ratgeber für die Migration von PHP 5.6.x nach PHP 7.0.x und auf die Binaries für Windows.

Siehe dazu auf heise Developer:

(ane)