HHVM

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
HHVM
software
Logo
Logo
GenereMacchina virtuale
SviluppatoreFacebook
Data prima versione2011 dicembre 09;12 anni fa[1]
Ultima versione
  • 3.15.0 (28 settembre 2016)
  • 4.172.0 (2 novembre 2022)
Sistema operativo
LinguaggioRust
OCaml
ocaml
C
C++(non inlista)
LicenzaLicenza PHP
(licenza libera)
Sito webhhvm

LaMacchina Virtuale HipHop(HipHop Virtual Machine,HHVM) è unamacchina virtualeopen sourcebasata sullacompilazione just-in-time (JIT)utilizzata come motore di esecuzione per ilinguaggi di programmazionePHPeHack.

Utilizzando il principio della compilazione JIT, il codice PHP o Hack eseguito viene prima trasformato nelbytecode HipHop(HHBC) e successivamente tradotto dinamicamente inlinguaggio macchinax86-64,ottimizzato ed eseguito nativamente.[2][3]Ciò avviene in contrasto con l'esecuzione viainterpretesolita del PHP, nella quale loZend Enginetrasforma il codice sorgente PHP inopcodeche, utilizzati come una forma dibytecode,vengono eseguiti direttamente dallaCPUvirtuale dello Zend Engine.[4]

HHVM è sviluppata daFacebook.Il suo codice sorgente è ospitato suGitHubed è concessa in licenza sotto i termini dellalicenza PHPe lalicenza Zend.

Caratteristiche

[modifica|modifica wikitesto]

HHVM è stato creato come il successore del motore di esecuzione di PHPHipHop per PHP(HPHPc), untranspilerPHP-to-C++creato anch'esso da Facebook.[5][6]Reduce dall'esperienza nel provare a risolvere i problemi introdotti dalla HPHPc, Facebook ha deciso all'inizio del 2010 di creare unamacchina virtualeper il PHP basata sulla compilazione JIT. I problemi principali della HPHPc erano infatti la poca popolarità del software, la mancanza del supporto completo a tutte le caratteristiche del linguaggio PHP e le difficoltà di sviluppo e pubblicazione di alcuni progetti imponenti che usavano la HPHPc.[5]Nel primo quadrimestre del 2013 la versione pubblica del sito facebook ha smesso di usare HPHPc ed è passata alla HHVM.

Seguendo il principio di compilazione HIT, HHVM converte il codice PHP o Hack eseguito in unbytecodead alto livello, l'HHBC conosciuto anche comerappresentazione intermedia.HHBC è un formato bytecode creato appositamente per la HHVM, un modo che sia utilizzabile sia dagli interpreti che daicompilatorijust-in-time. Come passo successivo durante l'esecuzione, la HHVM traduce dinamicamente ( "just-in-time" ) il bytecode HHBC in linguaggio macchina x86-64, esegue ulteriori ottimizzazioni grazie all'analisi dinamica del bytecode tradotto ed esegue il linguaggio macchina x86-64.[5][7][8]Dal risultato, si osserva come la HHVM abbia alcune similarità alle macchine virtuali usate da altri linguaggi di programmazione come ilCommon Language Runtime(CLR, per il linguaggioC#) e laJava Virtual Machine(JVM, per il linguaggioJava).

HHVM porta molti benefici rispetto alla HPHPc, e uno di questi è il supporto quasi completo all'intero linguaggio PHP come definito dall'implementazione ufficiale del PHP versione 5.4, includendo il supporto della macchina per i costrutticreate_function()eeval().[9][10]Inoltre la HHVM utilizza lo stesso motore di esecuzione sia durante lo sviluppo che durante la produzione, supportando l'integrazione con ildebugger HPHPdin entrambi gli ambienti. Inoltre HHVM elimina le lunghe build necessarie dalla HPHPc per eseguire i programmi PHP, creando un processo di sviluppo e pubblicazione molto più semplice rispetto a quello della HPHPc.[7]

Insieme alla HHVM, Facebook ha rilasciato ancheHack,un linguaggio di programmazione creato appositamente per la HHVM e che può essere visto come una nuova versione del linguaggio PHP.[11][12]Hack permette di utilizzare sia latipizzazione staticache quelladinamica,un concetto noto cometipizzazione graduale.Permette inoltre di specificare itipiper le proprietà di classe, per iparametrie per ivalori di ritorno.Allo stesso tempo, Hack non è completamente compatibile con il PHP a causa della mancanza di alcune caratteristiche del PHP come la dichiarazionegotoe l'assegnazione dinamica dei nomi dellevariabili.[13][14][15][16]

Essendo una macchina virtuale per processi che provvede al loroambiente di esecuzione,HHVM ha la capacità di utilizzare le informazioni prodotte dal codice durante l'esecuzione per produrrelinguaggio macchinapiù efficiente, portando ad un maggiorethroughputdeiservere ad una minorelatenza.Nell'ultimo quadrimestre del 2012, l'esecuzione delcodice sorgentedi facebook sulla HHVM ha ottenuto performance pari a quelle ottenute sulla HPHPc[5]e nel dicembre 2013 le performance della HHVM sono migliorate fino a superare del 15% circa quelle della HPHPc.

  1. ^Jason Evans,The HipHop Virtual Machine,sufacebook,Facebook,9 dicembre 2011.URL consultato il 2 agosto 2014.
  2. ^Guilherme Ottoni,HHVM JIT: a profile-guided, region-based compiler for PHP and Hack,ACM, 11 giugno 2018, pp. 151–165,DOI:10.1145/3192366.3192374.URL consultato il 4 agosto 2018.
  3. ^(EN)facebook/hhvm,suGitHub.URL consultato il 4 agosto 2018.
  4. ^PHP and Zend Engine internals,suphpbuilder.URL consultato il 4 agosto 2018(archiviato dall'url originaleil 15 settembre 2014).
  5. ^abcdSpeeding up PHP-based development with HHVM,sufacebook.URL consultato il 4 agosto 2018.
  6. ^(EN)Remove support for buildling HPHPc · facebook/hhvm@fc5b951,suGitHub.URL consultato il 6 agosto 2018.
  7. ^abThe HipHop Virtual Machine,sufacebook.URL consultato il 6 agosto 2018.
  8. ^(EN)facebook/hhvm,suGitHub.URL consultato il 6 agosto 2018.
  9. ^(EN)About upgrade to PHP 5.4 engine · Issue #716 · facebook/hhvm,suGitHub.URL consultato il 6 agosto 2018.
  10. ^(EN)facebook/hhvm,suGitHub.URL consultato il 6 agosto 2018.
  11. ^(EN)Facebook Introduces 'Hack,' the Programming Language of the Future,inWIRED.URL consultato il 6 agosto 2018.
  12. ^(EN)Hack: a new programming language for HHVM – Facebook Code,sucode.facebook.URL consultato il 6 agosto 2018.
  13. ^(EN) Josh Lockhart,Facebook’s Hack, HHVM, and the future of PHP,inO'Reilly Radar,3 aprile 2014.URL consultato il 6 agosto 2018.
  14. ^Types: Annotations,sudocs.hhvm.URL consultato il 6 agosto 2018.
  15. ^Other Features: Introduction,sudocs.hhvm.URL consultato il 6 agosto 2018(archiviato dall'url originaleil 12 maggio 2015).
  16. ^Unsupported: Introduction,sudocs.hhvm.URL consultato il 6 agosto 2018(archiviato dall'url originaleil 4 novembre 2015).

Collegamenti esterni

[modifica|modifica wikitesto]
 Portale Internet:accedi alle voci di Wikipedia che trattano di internet