S'identifier / Créer un compte
  • Actualités
  • Dossiers
  • Tests
  • Commentaires
  • INpactiens
Publicité

Mozilla : du Webkit et de l'accélération graphique dans Firefox

De biens gros chantiers chez l'éditeur

Au premier plan de la concurrence entre les navigateurs, on trouve le chapitre des performances. Devenues un passage obligé dans tous les tests de ce type de produits, elles sont un élément comparatif crucial pour séparer le bon grain de l’ivraie. Dans ce domaine, certaines brillent davantage que d’autres et Firefox, que ses extensions ont rendu célèbre, doit être bousculé pour s’adapter. Mozilla prépare donc notamment une nouvelle machine JavaScript et va chercher son inspiration ailleurs.

firefox

Toujours plus de performances

Actuellement, un moteur de rendu se distingue clairement des autres : il s’agit de Webkit. Présent dans le navigateur Safari d’Apple depuis longtemps, il a également été choisi par Google pour Chrome. Concernant les machines virtuelles JavaScript toutefois, les deux sociétés ont fait des choix différents. Apple a ainsi choisi Nitro, la machine associée au projet Webkit lui-même, tandis que Google a développé sa propre machine pour Chrome, nommée V8.

Or, les choses auraient pu en rester là si Opera n’était pas venu récemment jouer les trouble-fêtes. La version 10.5 de l’éternel outsider vient en effet de débouler et est donc prête pour profiter du fameux « ballot screen » de Windows 7. Opera 10.5 arrive lui aussi avec une machine virtuelle JavaScript flambant neuve : Carakan. Cette dernière a pris la tête dans la course aux performances, modifiant encore une fois le classement et renvoyant Firefox un peu plus loin.

Du coup, chez Mozilla, on souhaite travailler sur un nouveau moteur JavaScript, mais sans mettre de côté ce qui a déjà été fait. Et ce qui existe déjà, c’est TraceMonkey, en place dans Firefox en 2008. On peut séparer dans les grandes lignes le code JavaScript en deux groupes : le code qui se répète, et celui qui ne se répète pas. Quand il se répète, le moteur TraceMonkey est à l’aise, car il est performant en tracing, qui est justement la recherche des boucles de code pour éviter de l’interpréter à chaque fois. Mais là où les performances sont moins bonnes, c’est bien quand le code ne présente que peu de répétitions. On pourrait parler de performances brutes.

L’interprétation du code JavaScript et la génération du code natif est réalisée dans Firefox par un composant nommé Nanojit. C’est Adobe qui a développé ce module, au départ pour l’exécution du code ActionScript dans Flash. En 2006, l’éditeur a publié le code de Nanojit sous licence open source. Mozilla l’a récupéré pour l’ajouter à SpiderMonkey, qui était le moteur JavaScript de Firefox 3.0. Par la suite, les fonctions de tracing ont été ajoutées pour donner naissance à TraceMonkey.

Une goutte de Nitro

Le but du jeu pour Mozilla est donc de garder le travail réalisé sur le tracing tout en augmentent les performances brutes quand le code ne se répète pas ou peu. Les développeurs ont donc décidé de se tourner vers un composant open source qui existe déjà : Nitro, le moteur JavaScript rattachée au projet Webkit et déjà présente dans Safari 4. Un mariage de raison qui pourrait permettre à Mozilla d’enfanter un produit « tout-terrain ». Le projet se nomme JägerMonkey, et Mozilla en parle comme le meilleur des deux mondes.

JägerMonkey n’en est qu’à ses débuts, et Mozilla ne dit pas quand ce nouveau moteur sera prêt à commencer sa carrière. Dans l’idéal, il faudrait qu’il soit terminé pour l’arrivée de Firefox 4.0, ce qui permettrait à Mozilla de frapper d’autant plus fort. Cela dit, ce n’est pas le seul gros travail que l’éditeur a en cours pour la prochaine version majeure de son produit.

Donner une accélération graphique à tout ce qui peut en avoir une

Mozilla est en train en effet de plancher sur un changement très important du moteur de rendu HTML Gecko. Ce dernier va être séparé en plusieurs couches, chacune étant destinée à un rendu particulier. On pourra par exemple avoir le texte d’un côté, les vidéos de l’autre, en passant par les images et les manipulations graphiques. Chaque couche a des besoins spécifiques et devrait pouvoir bénéficier… de sa propre accélération graphique. Ce projet se nomme « Layers ».

L’arrivée du support de Direct2D dans Internet Explorer 9 risque de donner un sérieux coup de fouet à l’impression de rapidité et de réactivité dans la navigation. Mozilla travaille donc à la même chose, mais le fait que Firefox soit multiplateforme complique la tâche. Concernant le rendu des pages, tout ce qui peut être accéléré le sera via les méthodes suivantes :
  • Windows : Direct2D
  • Mac OS X : OpenGL 2.1
  • Linux : OpenGL 2.1
Le support de cette accélération est ajouté directement dans la bibliothèque graphique Cairo. Il existe bien un support OpenGL actuellement, mais uniquement à travers WebGL dans l’API Canvas3D. Dans l’idéal, les vidéos qui seront lues depuis la fameuse balise HTML 5, seront accélérées matériellement par la carte graphique.

Malheureusement, des écarts seront sensibles entre la version Windows et les autres. En effet, l’API Direct2D sous Windows est assez complète pour prendre en charge de nombreuses opérations. Sous Mac OS X et Linux, la rastérisation (conversion d’une image vectorielle en bitmap) ne sera par exemple pas supportée (c’est d’ailleurs ce support par Direct2D de la rastérisation qui permet d’espérer qu’Internet Explorer 9 puisse accélérer matériellement les images SVG). Toutefois, les filtres SVG ainsi que les propriétés CSS pour toutes les transformations et animations seront gérés.

Les intéressés pourront lire le billet complet sur le blog « Libre et ouvert » consacré au sujet.
Source : Mozilla
Vincent Hermann

Rédacteur/journaliste spécialisé dans le logiciel et en particulier les systèmes d'exploitation. Ne se déplace jamais sans son épée.

Google+

Publiée le 10/03/2010 à 10:53

Soutenez l'indépendance de Next INpact en devenant Premium

  • Tout le contenu de Next INpact sans pub
  • Et bien plus encore...
;