Mozilla vuole sviluppare un browser in grado di sfruttare la potenza di calcolo dei moderni processori integrati in smartphone e tablet. Insieme a Samsung, la fondazione ha avviato la progettazione di un nuovo layout engine, denominato Servo, che permette di eseguire i task in parallelo per ottenere un incremento della velocità e una riduzione dei consumi. Servo, compatibile solo con Android e l’architettura ARM, è stato scritto in Rust, un linguaggio di programmazione concorrente annunciato da Mozilla circa due anni fa.
Tutti i layout engine usati oggi sono stati sviluppati negli anni 2000, quando l’hardware era molto differente (un solo core, basse velocità di clock e poca memoria disponibile). La programmazione multi-thread è stata utilizzata solo in seguito e diversi aspetti architetturali sono molto difficili da modificare. Questi vincoli impediscono quindi l’aumento delle prestazioni. Servo, invece, è stato sviluppato da zero per offrire performance parallele nel browser e per sfruttare i processori multi-core. La gestione della memoria e l’isolamento dei task sono due caratteristiche di Rust, che migliorano anche la sicurezza rispetto al linguaggio C++.
Per visualizzare il contenuto di una pagina web, i browser attuali eseguono più operazioni sequenziali: parsing HTML, rendering e esecuzione del codice JavaScript. Servo esegue questi tre task separatamente e in parallelo. I task sono isolati e indipendenti, non usano memoria condivisa e comunicano tra loro mediante messaggi in modo asincrono. Questi sono i principali vantaggi offerti da Rust.
Anche il layout della pagina viene generato in sequenza, in base ad una struttura ad albero, quindi dal padre ai figli. Sebbene i moderni browser possano velocizzare il processo, Servo è in grado di identificare le parti della pagina che non sono influenzate dal posizionamento degli altri elementi e quindi assegnarle agli altri core del processore per l’esecuzione in parallelo. Questo approccio permette di incrementare le prestazioni dei browser mobile e l’autonomia della batteria. Un core che funziona alla massima frequenza consuma più di due, tre e quattro core che lavorano a frequenza ridotta nello stesso tempo.
Lo sviluppo di Servo è ancora agli inizi, ma Mozilla promette una prima versione usabile entro fine anno. Gli sviluppatori indipendenti possono unirsi al team scrivendo codice Rust, JavaScript e CSS, oppure testando le attuali build per individuare la presenza di bug.