HHVM 3.0 ist da – mit Hack und ohne MySQLi

HHVM auf dem nächsten Level
Kommentare

Eigentlich sollte letzte Woche Version 2.5 der HHVM erscheinen. Das Allerdings schien dem Team zu trivial; deswegen wurde mit einem Tag „Verspätung“ Version 3.0 veröffentlicht. Mit an Bord sind zahlreiche Neuerungen, unter anderem natürlich auch Hack, Facebooks PHP-Alternative in der HHVM.

Paul Tarjan hat die HipHop Virtual Machine 3.0.0 veröffentlicht. Damit überspringt das Team die ursprünglich für den 27. März angekündigte Version 2.5 und legt einige Schippen drauf, die dafür sorgen, dass Entwickler ein wenig umdenken müssen.

So wurde beispielsweise der alte Webserver geopfert – wer eine Fehlermeldung der Art „no factory for server type libevent“ erhält. sollte zu FastCGI wechseln. Ein Grund dafür ist, unter anderem, die Tatsache, dass es bereits viele gute Lösungen gibt; und man im HHVM-Team nicht unbedingt die Kernkompetenzen versammelt hat, einen eigenen Webserver auf die Beine zu stellen.

Eine weitere Neuerung ist die Umstellung der Konfigurationsdateien von .hdf auf .ini. Aktuell werden die alten Versionen zwar noch unterstützt, allerdings solle man sich darauf vorbereiten, eher früher als später umzusteigen.

Außerdem – und das dürfte viele Entwickler freuen – gibt es keine HipHop-Präfixe mehr für Fehlermeldungen. Somit sind die Error Messages vollständig zu PHP 5 kompatibel.

Alles mit Hack (Videobeweis)

Frei nach dem Motto „darf’s noch ein bisschen mehr sein“ kommt die HipHop Virtual Machine in Version 3.0 standardmäßig mit Hack daher; die Sprache, die von Facebook als Ersatz für PHP in der HHVM gedacht ist. Eines der Main Features der Sprache, so Paul Tarjan, ist das sofortige Feedback vom Type-System. Dafür sind zwei Tools zuständig – hh_server und hh_client, die zwar beide Teil der HHVM sind, jedoch separat konfiguriert und gestartet werden müssen.

Auch wenn es hier und da noch ein wenig hakt – so wurden noch einige Fehler im Type-System mit dem Release der aktuellen VM ausgemerzt – bietet die Sprache noch deutlich mehr Vorteile. Einige davon bringt uns Tobias Schlitt von Qafoo in einem Kommentar näher.

Tobias Schlitt

Tobias Schlitt

Mit Hack wirbelt Facebook die PHP-Community auf und gibt den langen, zähen Diskussionen um die Zukunftsvision von PHP neues Feuer. Rein technisch wünsche ich mir insbesondere skalare Type-Hints, Generics und die Struct-ähnlichen Shapes schon lange in PHP. Gerade die Möglichkeit, starke Typisierung durchzusetzen, aber nicht dazu in die Pflicht genommen zu werden, besitzt sehr viel Charme. Hiermit lässt sich die Software-Qualität durch statische Code-Analyse und insbesondere auch der IDE-Support (Autocompletion, automatische Refactorings) wesentlich verbessern, ohne die Schlankheit und Flexibilität von PHP einbüßen zu müssen.

Eine Referenz-Implementierung dieser Features vorweisen zu können, kann hoffentlich den Einfluss auf die PHP-Gemeinde haben, nachzuziehen und Ähnliches zu implementieren. Aus Open-Source-Sicht ist Hack allerdings unter anderem als gefährlich anzusehen: Auch wenn der Code jetzt offen liegt und entsprechend lizensiert ist, hat Facebook bisher nur ganz alleine an seiner Suppe gekocht. Eine vitale Community aufzubauen, die Hack langfristig maintainen kann, ist jetzt die Herausforderung. Dazu kommt, dass eine Spaltung der PHP-Benutzerbasis in zwei Lager eigentlich nicht das Ziel sein kann.

Insbesondere die Implementierung ähnlicher Features mit unterschiedlicher Ausprägung in beiden Engines ist aus User-Sicht ein echtes Problem. Hier würde ich mir einen Compiler wünschen, der Hack in pures PHP kompiliert, um die neuen, coolen Features ausprobieren zu können, aber dennoch einen Rollback-Pfad zur Verfügung zu haben.

MySQLi, please!

Vor einiger Zeit bereits hatte Emil Hesslow sehr ausführlich über seine Arbeiten an der Integration von MySQLi in die HHVM bverichtet – eigentlich sollte das mit der HHVM 2.5.0 am 27. März veröffentlich werden. Nun wurde es der 28. März, die HHVM 3.0 – und MySQLi ist leider nicht mit an Bord.

Grund dafür sind Last-Minute-Änderungen an der HHVM, die den MySQL-Treiber leider an die Wand gefahren haben – das Team arbeite jedoch unter Hochdruck daran, das Problem zu beheben und mit Version 3.0.1 eine funktionierende MySQLi-Integration zu bieten. Mit einem kleinen Workaround allerdings kann man das Feature mehr oder weniger jetzt schon nutzen.

In the meantime, you can set a config option to downgrade the class of error causing mysqli to break into a warning. Make sure to revert this once we release 3.0.1 — having this option enabled is important for Hack code. In config.hdf, in the Eval section, set CheckReturnTypeHints to 1: Eval { CheckReturnTypeHints = 1 }. On the command line, pass -vEval.CheckReturnTypeHints=1.

This is a fun one

Mehr über die Geschichte seit Version 2.0.0 – dem letzten großen Game Changer – erfährt man von einem merklich stolzen Paul Tarjan in der offiziellen Ankündigung der HHVM 3.0.0. Und in der Tat sind die Fortschritte seit damals erstaunlich.

Wie üblich steht die HHVM in fertigen Packages für Ubuntu 12.04 und 13.10, Debian 7, Fedora 20 sowie Mint 16 zur Installation bereit. Außerdem kann man nach wie vor die Nightly Packages nutzen, um jedes neue Feature gleich von Beginn an testen zu können. und wer weiß – vielleicht klappt es dann auch wieder mit MySQLi.

Aufmacherbild: Djs table with audio equipment in the crowded club von Shutterstock / Urheberrecht: rtem

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -