Programmering

Glem PHP! Facebooks HHVM-motor bytter til Hack i stedet

Facebooks Hip Hop Virtual Machine (HHVM), en rask motor for PHP, vil ikke målrette PHP 7, den siste store PHP-utgivelsen, men i stedet fokusere på Hack, en PHP-spin-off.

Den neste langsiktige støtteutgivelsen av HHVM, versjon 3.24, forventes tidlig i 2018 og vil være den siste som forplikter seg til PHP 5-støtte.

“Å prøve å støtte både PHP 7 og Hack vil føre til uønskede kompromisser på begge fronter. Vi planlegger å koble oss enda mer fra PHP, slik at vi kan gjøre Hack flott uten å måtte redegjøre for alle de eldste, mørkeste hjørnene i PHPs design, ”sa teamet HHVM.

PHP 7, oppfølgingsutgivelsen (det var ingen PHP 6-utgivelse) representerer en vesentlig avvik fra PHP 5, og endret flere atferd, hvorav noen ikke var bakoverkompatible. Med PHP 7 som kartlegger et kurs borte fra PHP 5, vil byggere av HHVM gjøre det samme. "Derfor vil ikke HHVM sikte på å målrette PHP 7," sa teamet. "HHVM-teamet mener at vi har en tydelig vei mot å gjøre Hack til et fantastisk språk for webutvikling, uten tilknytning til PHP-opprinnelsen."

Facebook har brukt HHVM i årevis nesten utelukkende for å kjøre Hack. Språket hadde allerede adressert mange av PHP5s mangler som PHP 7 også løser, så vel som andre som det ikke gjør, sa teamet.

Ved å kutte løs fra PHP håper HHVM-teamet å gi utviklere en bedre, bedre ytelse med HHVM og Hack. Det sto mange funksjoner, biblioteker og ytelsesmuligheter i røret. Designforbedringer planlagt for Hack inkluderer:

  • fullføre Hack arrays, med array-lignende datastrukturer som er lettere å typekontrollere
  • eliminere destruktører og referanser
  • bruk av søppeloppsamling for å produsere målbare ytelsesforbedringer.

Hack ble bygget på PHP-økosystemet, og Facebook har planer om å gjøre HHVM-kompatibel med gjeldende versjoner av store PHP-verktøy som Composer og PHPUnit.

Men det endelige målet er at Hack skal ha sitt eget økosystem med kjernerammer. Hackverktøy og biblioteker i verk inkluderer Hack Standard Library; TypeAssert, for å konvertere utypede data til typedata; og en autolaster for klasser, typealiaser og funksjoner.

$config[zx-auto] not found$config[zx-overlay] not found