PHP 8, prossima major release del noto linguaggio per lo sviluppo server side creato da Rasmus Lerdorf, dovrebbe essere disponibile entro la fine dell'anno corrente. Tra le principali novità di questo rilascio sarà presente anche l'atteso supporto per la compilazione JIT (Just-in-Time) già confermata, tra gli altri, dal developer Joe Watkins.
A livello pratico possiamo definire JIT come una modalità che permette di eseguire la compilazione a runtime, quindi durante il funzionamento stesso di un'applicazione. Per questo motivo prende anche il nome di "traduzione dinamica".
PHP e compilazione JIT
Nel caso specifico di PHP è necessario fare riferimento alla macchina virtuale Zend VM e agli opcode (operation code), cioè le porzioni di un'istruzione in linguaggio macchina che specificano le operazione da eseguire.
Gli script presenti nei sorgenti vengono appunto compilati in opcode che sono elementi di basso livello, una caratteristica che li rende più performanti quando si deve effettuare una conversione in codice macchina e permette di abbreviare i tempi necessari per la compilazione. Ciò permette di eseguire gli opcode tramite Zend VM direttamente in fase di esecuzione.
E' inoltre importante tenere presente che il supporto a JIT è stato concepito per essere una parte indipendente di OPcache, il sistema che consente di memorizzare gli opcode in cache, ne consegue che la compilazione avrà luogo solo nel momento in cui richiesta. Il codice macchina prodotto è invece dipendente dall'architettura di riferimento, cosa che permette di ospitarlo direttamente a livello di CPU e non di Virtual Machine.
Non solo per il Web
Ma quali sono le implicazioni di una versione di PHP che, dopo anni di attesa, permetterà di sfruttare le compilazione JIT? Per molti versi parliamo di una feature dall'impatto rivoluzionario perché consentirà di utilizzare il linguaggio anche in contesti diversi da quelli Web based che, fino a ora, sono stati l'ambiente di riferimento per il linguaggio. Inoltre, questa nuova modalità dovrebbe rivelarsi ideale per tutti i progetti che prevedono un uso intensivo delle risorse fornite dai processori e, in generale, in tutti gli scenari in cui le performance devono essere superiori a quelle che PHP può garantire attualmente.
Non solo vantaggi
L'implementazione di JIT per PHP è strutturalmente molto più semplice rispetto a quelle che possiamo ritrovare nell'interprete Python PyPy, in V8 per JavaScript e nella macchina virtuale HHVM. Soprattutto in fase iniziale gli sviluppatori PHP e gli amministratori di sistema dovranno però fronteggiare una maggiore complessità, procedure di manutenzione più ostiche e maggiori difficoltà in fase di debugging.
Via PHP RFC: JIT