Un pezzo di Safari finirà in Firefox. Così si può sintetizzare la scelta, attuata dal team Mozilla, di integrare nel progetto su cui si fonda il browser open source un nuovo engine JavaScript denominato Jà¤gerMonkey che utilizza codice derivato dal progetto WebKit su cui, invece, è costruito Safari.
La svolta srategica deriva dal fatto che TraceMonkey, l’engine JavaScript ad alte prestazioni di Mozilla introdotto nel 2008, ha perso vitalità rispetto ai concorreti e questi ultimi sono riusciti a recuperare e superare il gap precedente e offrire prestazioni migliori. Firefox ora, da questo punto di vista, è quindi in ritardo rispetto a Safari, Chrome e Opera nei benchmark JavaScript più comuni e Jà¤gerMonkey potrebbe consentire di colmare il gap.
Mozilla intende combinare le tecniche di ottimizzazione di TraceMonkey con il generatore di codice nativo dell’engine JSCore di Apple. L’insieme dovrebbe consentire di ottenere migliori velocità di esecuzione, rendendo il browser di Mozilla un temibile contendente dal punto di vista della velocità di esecuzione di codice JavaScript.
L’attuale engine JavaScript di Mozilla usa nanojit come generatore di codice nativo, un sistema inizialmente sviluppato da Adobe per pilotare l’esecuzione di ActionScript e rilasciato in licenza open source nel 2006. Mozilla e Adobe intendevano inizialmente costruire partendo da nanojit, un’implementazione di ECMAScript 4 denominata “Tabarin, ma il progetto è stato poi abbandonato con la ratifica dell’ECMAScript 5 e l’accantonamento dell’ECMAScript 4. Mozilla ha integrato nanojit nell’esistente engine SpiderMonkey, aggiungendo ottimizzazioni di tracing (“trace trees”) per sviluppare TraceMonkey.
Il nuovo engine Jà¤gerMonkey di Mozilla, continuerà ad usare nanojit per alcune particolarità , ma si appoggerà al Nitro Assembler di Apple per la generazione di efficiente codice nativo. Ciò consentirà a Jà¤gerMonkey di beneficiare delle performance consentite dal compilazione just-in-time (JIT). Jà¤gerMonkey sfrutterà anche ottimizzazioni di tracing per diminuire l’esecuzione di loop e velocizzare parti che possono beneficiare di ulteriori ottimizzazioni. A detta di Mozilla, il sistema consentirà di offrire il meglio delle due tecnologie.
Il progetto è ancora nella fase iniziale di sviluppo e non è pronto per essere pubblicamente mostrato. Gli sviluppatori che vogliono dare un’occhiata al codice possono
scaricare il materiale dal repository di Mozilla.
[A cura di Mauro Notarianni]