HHVM 3.22 und Framework fĂĽr die Programmiersprache Hack erschienen
Die neue Version der Hip Hop Virtual Machine bringt neben Performance-Optimierung und Bugfixes nur kleine Änderungen. Gleichzeitig veröffentlicht Facebook mit HHAST ein Framework zur Bearbeitung von Hack-Code in abstrakten Syntaxbäumen.
Facebook hat mit Version 3.22 der Hip Hop Virtual Machine (HHVM) eins der letzen Releases herausgegeben, das PHP unterstĂĽtzt. Vor Kurzem hatten die Macher eine Abkehr von der Skriptsprache zugunsten der hauseigenen Programmiersprache Hack angekĂĽndigt. So soll HHVM 3.24, das fĂĽr Januar 2018 geplant ist, die letzte Version mit garantierter PHP-5-UnterstĂĽtzung sein, und PHP 7 steht nur kurzfristig auf der Agenda.
Das aktuelle Release der HHVM enthält vor allem einige Performance-Optimierungen und Bugfixes. Darüberhinaus bieten die vorgefertigten Docker-Images nun die Kommandozeilenwerkzeuge wget, curl und git. Weitere Neuerungen sind die Erweiterung des unserialize()-Befehls um eine throw-Option. Diese löst bei einer nicht auf einer verwendeten Whitelist geführten Klasse eine Exception aus, statt dass die Methode __PHP_Incomplete_Class zurückzugibt.
Verarbeitung von Hack-Code
Gleichzeitig engagiert sich das Team für die Erweiterung der Programmiersprache Hack. Das neue Framework HHAST erstellt einen abstrakten Syntaxbaum (AST, Abstract Syntax Tree) für Hack-Code, den diverse Werkzeuge über APIs ansprechen und verändern können. Zum Aufbau des Syntaxbaums verwendet HHAST den Full Fidelity Parser (FFP) für Hack. Der AST enthält nicht nur den relevanten Code, sondern auch Zusatzinformationen wie Kommentare und Leerzeichen. Somit lässt sich daraus der Originalcode wieder herstellen. Außerdem bleiben die Zusatzinformationen auch nach Veränderungen erhalten. HHAST hat folgende APIs:
- Die Low-Level-API dient der Untersuchung und Änderung des AST,
- ein Linting-Framework bindet Werkzeuge zur statischen Codeanalyse an,
- ein Migration-Framework hilft bei größeren Umstellungen und erlaubt beispielsweise bei Änderungen der Programmiersprache selbst und beim Überführen von überholten (deprecated) API-Aufrufen in die neueren Alternativen.
Weitere Details zu HHVM und HHAST lassen sich dem Blogbeitrag entnehmen. (rme)