HHVM 3.28 erhält neue Ausdrücke für Type Testing und Type Assertion
Nachdem die Vorgängerversion das Frontend umgestellt hat, hat Facebooks HHVM in dieser Version vor allem Sprachverbesserungen im Blick.
![HHVM 3.28 erhält neue Ausdrücke für Type Testing und Type Assertion](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/2/4/9/1/8/3/9/php-ice-8a24db058d0ec3b0.jpeg)
- Björn Bohn
Version 3.28 von Facebooks Hip Hop Virtual Machine (HHVM) ist erschienen. Das Release der virtuellen Maschine für die Skriptsprachen PHP und Hack fokussiert sich vor allem auf neue Sprach-Features, Bugfixes und Verbesserungen der Performance. Neu sind unter anderem is- und as-Ausdrücke für Type Refinement und eine automatische Vervollständigung für Shape Keys. Darüber hinaus unterstützen Typkonstanten mit Generics jetzt Constraints.
Im Vergleich zur vorherigen Version, die HHVM komplett auf das neue HackC-Frontend umstellte, sind die Änderungen also nicht gravierend. Allerdings sind die is- und as-Ausdrücke, die die HHVM 3.28 einführt, wohl eine nette Ergänzung für die Bereiche Type Testing und Type Assertion. In der Ankündigung der neuen Version sprechen die Entwickler davon, dass Hack bisher auf eine inkonsistente Sammlung von APIs für Type Testing gesetzt hat. Auch die bisherige Type Assertion beschreibt das Team als "suboptimal". Hier sollen die neuen Ausdrücke Abhilfe schaffen.
Type Testing und Type Assertion mit is und as
Type Testing mit is soll drei Schlagwörter erfüllen: konsistent, vorhersagbar und ergonomisch. Während der Laufzeit bestimmt is, ob ein Wert einen bestimmten Typ hat und schätzt ihn als Boolean ab. Statistisch gesehen verfeinert es den Typ einer Variable in einem if-Statement, einer Invariante oder einem Ternary-Ausdruck. Existiert der Typ nicht, liefert der is-Ausdruck false als Ergebnis.
Dieselben Ziele wie is verfolgt as für Type Assertion. Während der Laufzeit prüft as ob der Typ des linken Operanden übereinstimmt – falls nicht, gibt er TypeAssertionException aus. Verwendet man stattdessen ?as, erhält man im selben Fall null als Rückgabe.
Eine vollständige Liste der Neuerungen findet sich im HHVM-Blog, inklusive einer Tabelle zur Darstellung von altem Code mit den neuen Ausdrücken. (bbo)