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.

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...

Il y a 116 commentaires

Avatar de yahooland4 INpactien
yahooland4 Le mercredi 10 mars 2010 à 11:00:29
Inscrit le samedi 1 novembre 08 - 269 commentaires
ah enfin il se décide chez mozilla
Avatar de Narann INpactien
Narann Le mercredi 10 mars 2010 à 11:02:10
Inscrit le mercredi 11 mars 09 - 468 commentaires
Cool! Très intéressant tout ses billets sur Firefox.

On sent la maitrise du sujet et on comprend mieux ce qui se passe dans les couloirs!
Avatar de geekounet85 INpactien
geekounet85 Le mercredi 10 mars 2010 à 11:03:57
Inscrit le mercredi 9 juin 04 - 8092 commentaires
Personnellement, je suis en train de tester chromium sur linux, et ça poutre pas mal!je suis pas fan de webkit au départ (il y 'a des trucs qui me rebutent un peu, notamment sur l'affichage des commentaires de PCI) mais c'est vrai qu'au niveau JS, c'est une bombe!
Les user.js étant l'avenir des extensions pour les sites (pas pour les fonctionnalités du navigateur même) c'est une bonne chose que de reprendre ce code dans Firefox.
Pour l'affichage, j'espère que ça empêcher le plantage de l'appli si un des modules vient à planter (bien que ce soit prévu déjà pour les plug-ins), je pense à une erreur openGL par exemple, ou un truc du genre.
Avec le système de thread par onglet et peut-être l'arrivée d'onglets privé (et pas fenêtre), firefox continue dans la bonne voie tout en se parant des atours de ses concurrents!
Avatar de korbé INpactien
korbé Le mercredi 10 mars 2010 à 11:04:07
Inscrit le vendredi 31 juillet 09 - 2097 commentaires
C'est sympa de parler de Webkit, mais peut de gents rappellent que Webkit vient de Khtml.

Avatar de BelZé INpactien
BelZé Le mercredi 10 mars 2010 à 11:04:41
Inscrit le vendredi 9 janvier 09 - 1424 commentaires
Cool! Très intéressant tout ses billets sur Firefox.

On sent la maitrise du sujet et on comprend mieux ce qui se passe dans les couloirs!


+1, très bon article.

Il y a 116 commentaires

;