HipHop for PHP

HipHop for PHP (HPHPc) è un transpiler per PHP creato da Facebook. Utilizzando HPHPc come transcompilatore, il codice PHP viene tradotto in C++, compilato in un file binario e lanciato come file eseguibile, contrariamente al più usuale percorso di esecuzione di PHP in cui il codice viene trasformato in opcode e interpretato. HPHPc è composto principalmente da codice sorgente in C++, C e PHP, ed è free and open-source software distribuito tramite PHP License.

La motivazione originaria dietro lo sviluppo HipHop era quella di risparmiare risorse sui server di Facebook, data l'enorme base di codice PHP di facebook.com. Con il progredire dello sviluppo di HipHop, ci si rese conto che HipHop poteva aumentare sostanzialmente la velocità delle applicazioni PHP in generale. Sono stati osservati incrementi nel throughput della generazione di pagine web fino a un fattore di sei rispetto al PHP Zend.[1][2][3][4][5] Un obiettivo dichiarato di HPHPc era fornire un elevato livello di compatibilità con Zend PHP, in modo che la maggior parte dei programmi PHP basati su Zend potesse funzionare senza modifiche su HPHPc.[3] HPHPc è stato originariamente reso open source agli inizi del 2010.[6]

Come aggiunta a HPHPc, gli ingegneri di Facebook hanno creato anche una "modalità developer" di HipHop (versione interpretata di un motore di esecuzione PHP, nota come HPHPi) e il debugger di HipHop (noto come HPHPd). Queste aggiunte permettono agli sviluppatori di eseguire il codice PHP attraverso la stessa logica fornita da HPHPc, consentendo al contempo di fare il debug interattivo del codice definendo watche, breakpoint, eccetera. L'esecuzione del codice tramite HPHPi offre prestazioni inferiori rispetto a HPHPc, ma i vantaggi per gli sviluppatori, al momento, giustificavano il mantenimento di questi due motori di esecuzione per ambienti di produzione e sviluppo. Anche HPHPi e HPHPd sono stati resi open source nel 2010.[6]

Secondo molti, HPHPc ha raggiunto i suoi obiettivi, in particolare all'interno di Facebook, poiché ha permesso a facebook.com di funzionare molto più velocemente utilizzando meno risorse. Tuttavia, agli inizi del 2013 Facebook ha deprecato HPHPc a favore della HipHop Virtual Machine (HHVM), che è un motore di esecuzione per PHP basato sulla compilazione just-in-time (JIT), anch'esso sviluppato da Facebook.[7][8][9] Ci sono state molte ragioni per questa scelta; una di esse era la curva di miglioramento delle prestazioni di HPHPc, ormai appiattita. Inoltre, HPHPc non supportava completamente il linguaggio PHP, inclusi i costrutti create_function() e eval(), e prevedeva un processo di deployment specifico, oneroso in termini di tempo e risorse, che richiedeva la compilazione e la distribuzione in breve tempo di un file binario superiore a 1 GB. In più, il mantenimento parallelo di HPHPc e HPHPi (necessario per garantire la coerenza tra gli ambienti di produzione e sviluppo) stava diventando complicato. Infine, HPHPc non era un sostituto "drop-in" per Zend, costringendo i clienti esterni a modificare completamente i loro processi di sviluppo e distribuzione per adottarlo.[7]

  1. ^ (EN) OOPSLA '12 Paper, su dl.acm.org. URL consultato il 23 maggio 2013.
  2. ^ (EN) Guilherme Ottoni, The HipHop Compiler for PHP, su infoq.com, OOPSLA 2012, 12 marzo 2013. URL consultato il 23 maggio 2013.
  3. ^ a b (EN) FOSDEM 2013 Interview, su fosdem.org. URL consultato il 23 maggio 2013.
  4. ^ (EN) HipHop for PHP: Benchmark, su php.webtutor.pl. URL consultato il 23 maggio 2013 (archiviato dall'url originale il 16 maggio 2011).
  5. ^ (EN) Drupal 7: HipHop for PHP vs APC – benchmark, su php.webtutor.pl. URL consultato il 23 maggio 2013 (archiviato dall'url originale il 19 maggio 2011).
  6. ^ a b (EN) Haiping Zhao, HipHop for PHP: Move Fast, su facebook.com, Facebook, 2 febbraio 2010. URL consultato il 2 agosto 2014.
  7. ^ a b (EN) Drew Paroski, Speeding up PHP-based development with HHVM, su facebook.com, Facebook, 29 novembre 2012. URL consultato il 2 agosto 2014.
  8. ^ (EN) Paul Tarjan, Joining, Retirement, Testing, and Bankruptcy, su hhvm.com, 13 maggio 2013. URL consultato il 2 agosto 2014.
  9. ^ (EN) Announcement on GitHub removing HPHPc support, su github.com, Facebook, 19 febbraio 2013. URL consultato il 24 maggio 2013.

From Wikipedia, the free encyclopedia · View on Wikipedia

Developed by Nelliwinne