21.052014

Hack: Eine eigene Version von PHP

hack

Am 20.03.2014 veröffentlichte Facebook seine PHP Alternative namens Hack (hacklang.org). Diese Sprache soll vollständig kompatibel zu PHP sein und zahlreiche Features mitbringen, die von PHP-Entwicklern häufig vermisst werden. In diesem Blogpost werde ich erst kurz auf die Geschichte hinter Hack eingehen und dann die Features der Programmiersprache kurz beschreiben.

Entwicklung von Hack

Facebook betreibt die vermutlich größte Webseite mit dem meisten Traffic weltweit. Während man eine PHP Anwendung sehr gut skalieren kann, in dem man einfach weitere Webserver bereitstellt, wird man beim Wachstum eine Seite sehr schnell Feststellen, dass die Datenquelle der eigentliche Flaschenhals ist, der nicht besonders gut skalierbar ist. Um diesen Flaschenhals zu lösen, greift man auf Techniken wie Caching zurück um die Last zu verringern.

Der nächste Flaschenhals werden zumeist die Netzwerkverbindungen sein. Man munkelt, dass Facebook dieses Problem löste indem die Entwickler einen eigenen TCP/IP-Stack implementiert haben um die Netzwerklatenzen zu verringern. Viele Websites werden zu einem solchen Problem niemals vordringen, Facebook hatte jedoch damit zu kämpfen.

Als das Netzwerk nicht mehr der Flaschenhals war, stellte man fest, dass jetzt die Ausführung des PHP Codes die Anwendung ausgebremste. Nun hätte man sich dazu entscheiden können auf eine andere Programmiersprache um zu satteln. Doch bei einer so großen Webanwendung wie Facebook sie ist, mit den vielen PHP-Spezialisten die Facebook beschäftigt, kann man nicht einfach die verwendete Programmiersprache durch eine systemnahe, hochperformante Sprache ersetzen.

Zuerst versuchte es Facebook mit "PHP zu C++" Compiler (HipHop). Dies erwies sich aber als ungeeignet, da Code Deployments viel schwieriger worden. Und so entwickelte man die virtuelle Maschine HHVM. Diese kann PHP Code ausführen und ist dabei 3-10 mal so schnell. Und für eben diese virtuelle Maschine veröffentliche Facebook am 20.03.2014 die Programmiersprache Hack. HHVM kann weiterhin sowohl PHP als auch Hack interpretieren. Hack bietet aber einige sehr nette neue Features, die man bei PHP schon lange vermisst.

Features im Überblick

Eines der Hauptfeatures ist das Static Typing. Während PHP Variablen nicht typisiert sind, ist es bei Hack möglich jeder Variable einen festen Typ zuzuordnen. Wohl gemerkt ist es nicht verpflichtend. Die feste Typisierung kann dabei helfen Fehler frühzeitig zu erkennen, und nicht erst zur Laufzeit eines Programms.

Die weiteren Features möchte ich an dieser Stelle nur kurz auflisten, wer sich genauer damit beschäftigen möchte, sei auf die Links weiter unten verwiesen.

  • Generics
  • Nullable Types
  • Collections
  • Lambdas
  • Shapes
  • Type Aliasing
  • Asynchrone Ausführung von Code

Links zu Hack