HHVM

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
HHVM
software
Siglă
Tip Mașină virtuală
Dezvoltator Facebook
Data primei versiuni 2011 09 decembrie ; Acum 9 ani [1]
Ultima versiune 4,96 (8 februarie 2021)
Sistem de operare
Limba ocaml
C ++
C.
Obiectiv Caml (nu este listat )
Licență Licență PHP
( licență gratuită )
Site-ul web hhvm.com

HipHop Virtual Machine ( HHVM ) este o mașină virtuală open-source bazată pe o compilație just-in-time (JIT) utilizată ca motor de execuție pentru limbaje de programare PHP și Hack .

Folosind principiul compilării JIT, codul PHP sau Hack executat este transformat mai întâi în codul secundar HipHop ( HHBC ) și ulterior tradus în mod dinamic în limbajul mașinii x86-64 , optimizat și executat nativ. [2] [3] Acest lucru este în contrast cu execuția obișnuită a interpretorului PHP, în care Zend Engine transformă codul sursă PHP în opcode care, utilizat ca formă de bytecode , este executat direct de CPU-ul virtual al Zend Engine. [4]

HHVM este dezvoltat de Facebook . Codul său sursă este găzduit pe GitHub și este licențiat în condițiile licenței PHP și licenței Zend .

Caracteristici

HHVM a fost creat ca succesor al HipHop motor de execuție PHP pentru PHP (HPHPc), un PHP-to - C ++ transpiler , de asemenea , creat de Facebook. [5] [6] Înapoi din experiența încercării de a rezolva problemele introduse de HPHPc, Facebook a decis la începutul anului 2010 să creeze o mașină virtuală pentru PHP bazată pe compilația JIT. Principalele probleme ale HPHPc au fost, de fapt, popularitatea redusă a software-ului, lipsa suportului complet pentru toate caracteristicile limbajului PHP și dificultățile de dezvoltare și publicare a unor proiecte masive care au folosit HPHPc. [5] În primul trimestru al anului 2013, versiunea publică a site-ului facebook.com a încetat să utilizeze HPHPc și a trecut la HHVM.

Urmând principiul compilării HIT, HHVM convertește codul PHP sau Hack executat într-un bytecode la nivel înalt, HHBC cunoscut și ca reprezentare intermediară . HHBC este un format de bytecode creat special pentru HHVM, un mod care poate fi utilizat atât de interpreți, cât și de compilatoarele just-in-time. Ca un pas următor în timpul execuției, HHVM traduce dinamic („just-in-time”) codul de byt HHBC în limbajul mașinii x86-64, realizează optimizări suplimentare datorită analizei dinamice a bytecodului tradus și execută limbajul mașinii x86-64 . [5] [7] [8] Din rezultat, se observă că HHVM are unele asemănări cu mașinile virtuale utilizate de alte limbaje de programare, cum ar fi Common Language Runtime (CLR, pentru limbajul C # ) și Mașină virtuală Java (JVM, pentru limbajul Java ).

HHVM aduce multe avantaje față de HPHPc, iar unul dintre ele este suport aproape complet pentru întregul limbaj PHP, așa cum este definit de implementarea oficială PHP versiunea 5.4, inclusiv suportul mașinii pentru constructele create_function() și eval() . [9] [10] În plus, HHVM folosește același motor de execuție atât în ​​timpul dezvoltării cât și al producției, sprijinind integrarea cu debuggerul HPHPd în ambele medii. În plus, HHVM elimină versiunile lungi necesare HPHPc pentru a rula programe PHP, creând un proces de dezvoltare și publicare mult mai simplu decât cel al HPHPc. [7]

Alături de HHVM, Facebook a lansat și Hack , un limbaj de programare creat special pentru HHVM și care poate fi văzut ca o nouă versiune a limbajului PHP. [11] [12] Hack-ul vă permite să utilizați atât tastarea statică, cât și dinamica , un concept cunoscut sub numele de tastare graduală . De asemenea, vă permite să specificați tipuri pentru proprietățile clasei, parametrii și valorile returnate . În același timp, Hack-ul nu este pe deplin compatibil cu PHP din cauza lipsei unor caracteristici PHP, cum ar fi declarația goto și denumirea variabilelor dinamice. [13] [14] [15] [16]

Performanţă

Ca o mașină virtuală pentru procese care asigură propriul mediu de execuție, HHVM are capacitatea de a utiliza informațiile produse de cod în timpul execuției pentru a produce un limbaj mai eficient al mașinii , ceea ce duce la un randament mai mare al serverului și la o latență mai mică. În ultimul trimestru al anului 2012, executarea codului sursă facebook.com pe HHVM a atins performanțe egale cu cele obținute pe HPHPc [5], iar în decembrie 2013 performanțele HHVM s-au îmbunătățit pentru a le depăși pe cele ale HHVM cu aproximativ 15 % HPHPc.

Notă

  1. ^ Jason Evans, The HipHop Virtual Machine , pe facebook.com , Facebook , 9 decembrie 2011. Adus pe 2 august 2014 .
  2. ^ Guilherme Ottoni, HHVM JIT: un compilator bazat pe profil, bazat pe regiuni pentru PHP și Hack , ACM, 11 iunie 2018, pp. 151–165, DOI : 10.1145 / 3192366.3192374 . Adus pe 4 august 2018 .
  3. ^ (EN) facebook / HHVM , pe GitHub. Adus pe 4 august 2018 .
  4. ^ Internele PHP și Zend Engine , la phpbuilder.com . Adus la 4 august 2018 (arhivat din original la 15 septembrie 2014) .
  5. ^ a b c d Accelerarea dezvoltării bazate pe PHP cu HHVM , la www.facebook.com . Adus pe 4 august 2018 .
  6. ^ (RO) Eliminați suportul pentru construirea HPHPc · facebook / HHVM @ fc5b951 , pe GitHub. Adus la 6 august 2018 .
  7. ^ a b Mașina virtuală HipHop , la www.facebook.com . Adus la 6 august 2018 .
  8. ^ (EN) facebook / HHVM , pe GitHub. Adus la 6 august 2018 .
  9. ^ (RO) Despre actualizarea la motorul PHP 5.4 · Numărul nr. 716 · facebook / HHVM pe GitHub. Adus la 6 august 2018 .
  10. ^ (EN) facebook / HHVM , pe GitHub. Adus la 6 august 2018 .
  11. ^ (EN) Facebook introduce „Hack”, limbajul de programare al viitorului , în WIRED. Adus la 6 august 2018 .
  12. ^ (EN) Hack: un nou limbaj de programare pentru HHVM - Facebook Code , pe code.facebook.com. Adus la 6 august 2018 .
  13. ^ (EN) Josh Lockhart, Facebook's Hack, HHVM, and the future of PHP , în O'Reilly Radar, 3 aprilie 2014. Adus 6 august 2018.
  14. ^ Tipuri: Adnotări , la docs.hhvm.com . Adus la 6 august 2018 .
  15. ^ Alte caracteristici: Introducere , la docs.hhvm.com . Adus la 6 august 2018 (Arhivat din original la 12 mai 2015) .
  16. ^ Neacceptat : Introducere , la docs.hhvm.com . Adus la 6 august 2018 (Arhivat din original la 4 noiembrie 2015) .

Alte proiecte

linkuri externe

Internet Portal internet : accesați intrările Wikipedia care se ocupă de internet