Für die neue Version 3.27.0 der Hip Hop Virtual Machine gibt es längeren Support. Außerdem haben die Entwickler an der Performance, am Typechecker und an der IDE gefeilt.
Die Hip Hop Virtual Machine (HHVM) wird federführend von Facebook entwickelt und ist eine quelloffene virtuelle Maschine, die einem Jit-Ansatz (Just in Time) folgt und Programme in Hack und PHP 5 ausführt. Von PHP 7 unterstützt sie zumindest die wichtigen Features, zudem gibt es zahlreiche Erweiterungen für HHVM.
Für die neue Version 3.27 gibt es Langzeit-Support, der allerdings im Vergleich mit den LTS-Garantien für Linux-Distributionen eher bescheiden ausfällt. Der Supportzeitraum reicht offiziell bis zur Veröffentlichung der Version 3.33, die soll in einem guten Jahr, am 5. September 2019, erscheinen.
Hack-C und versiegelte Klassen
Zu den Neuerungen gehört, dass die Entwickler als Frontend nur noch Hack-C unterstützen. Der Legacy-Parser wird weiter verteilt, soll aber in der nächsten Version aus dem Paket fliegen. Zugleich punktet Hack-C mit einem besseren PHP-Support.
Ein Opt-in-Feature sind versiegelte Klassen und Interfaces, die sich nur von explizit festgelegten Klassen und Interfaces erweitern und implementieren lassen. Welche das sind, regelt eine Whitelist, die der Entwickler dem “__Sealed”-Attribut mit auf den Weg gibt. Versucht eine unbefugte Klasse, die versiegelte Klasse zu implementieren, wirft HHVM einen Typechecker- und einen Runtime-Fehler. Traits und Enums lassen sich nicht versiegeln.
Ergänzt wurde das Feature, weil HHVM-Nutzer die nur für den internen Gebrauch gedachten Collection Interfaces angepasst hatten, was zu einer Reihe von unerwartetem und undefiniertem Verhalten führte. Versiegelte Klassen einzusetzen, sei laut der Ankündigung nur selten nötig. Dort finden sich auch weitere Details zu diesen Klassen.
“forward_compatibility_level”
Die Option “forward_compatibility_level” mache es einfacher, auf neue Versionen von HHVM und Hack zu aktualisieren, sei aber nur eine kurzfristige Migrationshilfe. Sie erlaube es nicht, permanent Änderungen zu vermeiden und schwäche zudem die Sicherheit des Codes.
Über Release-Nummern und -Daten lassen sich bestimmte Features der Nightly Builds inkrementell unterstützen. Setzt der Entwickler für Version 3.27 die Option “forward_compatibility_level=3.26” unterdrückt das bestimmte Fehler und es erscheint nur eine Warnung.
Die Option soll beim Lösen von Problemen helfen, wenn neue Versionen Fehlermeldungen zu zirkulären Abhängigkeiten werfen und wenn Admins Updates testweise erst für kleinere Nutzergruppen publizieren. Auch ungewollte rückwärts-inkompatible Änderungen in Hack lassen sich damit erkennen.
Ferner liefen
Daneben gibt es noch eine ganze Reihe kleiner Änderungen. Die ODBC-Erweiterung fällt ebenso weg wie der Xdebug-Support. Letzteren ersetzt das VS-Code-Debug-Protokoll. “await” und “yield” lassen sich neuerdings innerhalb eines “finally”-Blocks einsetzen, und es gibt verschiedene neue Optionen für die Konfigurationsdatei “.hhconfig”. Für Hack-Fehler nutzt HHVM nun das “relatedInformation”-Feld des Language-Server-Protokolls, was den IDEs, die LSP nutzen, mehr diagnostische Informationen liefert. Herunterladen lässt sich HHVM 3.27 auf Github.




