Facebook presenta compilatore Virtual Machine per HipHop PHP


Gli ingegneri di Facebook hanno creato un nuovo strumento che promette di consentire una sensibile diminuzione dei tempi e delle risorse necessarie all’elaborazione di pagine in PHP. Arriva infatti HipHop Virtual Machine (HHVM), un compilatore Just-In-Time che consente di eseguire il popolare linguaggio open source il 60% più velocemente rispetto all’interprete corrente e di ridurre del ben 90% l'uso della memoria.

"Siamo sempre alla ricerca di modi per rendere la nostra infrastruttura informatica più efficiente, e nel 2010 abbiamo implementato HipHop PHP per contribuire a sostenere il crescente numero di utenti di Facebook. Mentre HipHop ci ha aiutato a fare progressi significativi nello svolgimento del nostro codice, la sua compilazione statica per ottimizzare il nostro codice che richiede tempo", scrive in una nota su Facebook Engineering, Jason Evans, ingegnere sviluppatore di Facebook.

"Siamo stati anche costretti a sviluppare un separato interprete HipHop (HPHPi) che richiede un grande sforzo per mantenerlo. Così, all'inizio dello scorso anno, abbiamo messo insieme una piccola squadra per sperimentare la traduzione dinamica del codice PHP nel codice macchina nativo. Il risultato è un nuovo motore di esecuzione PHP basato sul Language Runtime HipHop che noi chiamiamo la macchina virtuale HipHop (HHVM). Siamo entusiasti di annunciare che Facebook sta ora usando il veloce HHVM in sostituzione dell'HPHPi, con l'intenzione di utilizzare eventualmente HHVM per l'esecuzione di tutto il PHP".

HipHop trasforma PHP in codice C ++ ottimizzato, consentendo il caricamento più veloce durante l'esecuzione. Facebook utilizza HPHPi (e ora HHVM) giornalmente per lo sviluppo del software, ma utilizza il compilatore HipHop (HPHPC) per creare i binari che servono all'ottimizzazione del sito web di Facebook. HPHPC è in sostanza un compilatore tradizionale statico che converte PHP → AST → C + + → x64. I tecnici di Facebook sono da tempo ben consapevoli dei limiti dell'analisi statica imposta da un siffatto linguaggio dinamico come PHP, senza dimenticare i rischi insiti nello sviluppo di software con HPHPI e la distribuzione con HPHPC.

Esempio di programma PHP tradotto in HHBC

Le esperienze con HPHPC hanno portato gli ingegneri a sperimentare la traduzione dinamica nel codice macchina nativo, noto anche come just-in-time (JIT). Un traduttore dinamico osserva i tipi di dati per come il programma viene eseguito, e genera lo specializzato tipo di codice macchina. Facebook purtroppo non ha avuto un modello pulito della semantica del linguaggio PHP integrato in HipHop, come HPHPC e HPHPi che sono basati direttamente su due distinti alberi di implementazione di sintassi astratta (AST), piuttosto che condividere una rappresentazione unificata intermedia.

Perciò Facebook ha sviluppato un alto livello di stack-based virtual machine su misura per PHP che esegue HipHop bytecode (HHBC). Hhvm utilizza Hphpc di PHP → implementazione AST ed estende la pipeline per PHP → AST → HHBC. Facebook ha iterativamente sviluppato congiuntamente sia un interprete e una dinamica HHBC → x64, traduttore che interopera in modo trasparente, con l'obiettivo primario di restare pulito a sostegno della traduzione. Rimangono ancora molte sfide, così come alcune incertezze per quanto riguarda il comportamento del traduttore quando si esegue l'intera base di codice PHP Facebook.

Nel breve periodo Facebook ha bisogno di stabilizzare il traduttore e creare un formato su disco bytecode (per ridurre i tempi di avvio e memorizzare i risultati globali dell'analisi statica). Poi avrà bisogno di ottimizzare / sintonizzare sia il traduttore e l'interprete, come si osserva dal comportamento del sistema sotto la produzione di carichi di lavoro. Jason Evans è un software engineer del team di HipHop a Facebook, una delle 20 persone che hanno contribuito finora al progetto HHVM.

Ulteriori informazioni su HipHop: Muoversi velocemente (annuncio originale); Sei mesi più tardi (retrospettiva a sei mesi dal lancio). Più ottimizzazione per efficienza dei serverRendere più veloce HPHPi. Il codice HHVM è profondamente integrato con il codice sorgente HipHop, e Facebook continuerà a condividere HipHop con il pubblico attraverso il sito GitHub per HipHop e mailing list, proprio come ha fatto dal rilascio iniziale HipHop nei primi mesi del 2010.

Nessun commento:

Posta un commento