Mozilla prépare un nouveau moteur de rendu pour Firefox. Baptisé Quantum, il est prévu pour la fin de l’année prochaine et s’appuiera sur les travaux de Servo et le langage Rust. L'éditeur a également décidé de se débarrasser de l'API Battery Status, dont l'utilisation était détournée.
Le web n’est plus statique, mais de plus en plus composé d’applications web et de pages dynamiques. Partant de ce constat, Mozilla a décidé de remplacer Gecko, son traditionnel moteur de rendu, par un nouveau venu : Quantum. Le but affiché est d’obtenir des performances nettement supérieures, et donc de charger plus rapidement les pages. Un navigateur moderne pour un web moderne, en quelque sorte.
Electrolysis, Rust et Servo pour préparer le terrain
L’annonce de Quantum est à lier avec d’autres travaux menés jusqu’ici, à commencer par Electrolysis. Il s’agit pour rappel de la technologie maison pour diviser Firefox en plusieurs processus, essentiellement deux en fait : le moteur de rendu dans l’un, le reste dans l’autre. L’objectif était de ne plus faire traiter par le même l’ensemble des calculs, le chargement d’une page lourde pouvant créer des latences dans l’interface. Résultat, un Gecko isolé dans son coin.
Il y a ensuite Rust, un langage créé par Mozilla et dont le succès augmente peu à peu. Il permet d’obtenir des performances proches du C et du C++, mais en offrant certains avantages traditionnellement liés aux langages de plus haut niveau, comme C# et Java. Il est orienté objet, concurrentiel et typé sûr. L’idée est donc d’avoir un code performant, tout en garantissant la sécurité des threads et en évitant les erreurs de segmentation.
Enfin, on trouve Servo. Derrière ce nom se cache un moteur de rendu entièrement écrit en Rust. Beaucoup espéraient qu’il s’agissait du projet menant au remplacement de Gecko. On sait maintenant que Servo sert de laboratoire d’essai, puisque le vrai prochain moteur en reprendra bon nombre de travaux.
Quantum, tourné vers le parallélisme des instructions et le GPU
Isolé, Gecko va donc être remplacé par Quantum, écrit pour une bonne part en Rust et incorporant plusieurs principes explorés par Servo. Mozilla indique revoir avec son projet la manière dont le moteur affiche une page, à un niveau fondamental. Par exemple, la manière dont les feuilles CSS sont appliquées, comment les opérations DOM sont exécutées et ainsi de suite.
L’accent sera particulièrement mis sur le parallélisme des instructions et sur la déportation d’une partie des calculs vers le GPU quand ce sera possible. Selon Mozilla, Quantum devrait permettre à Firefox d’améliorer la stabilité, la sécurité et la qualité générale de l’expérience de navigation. Surtout, l’éditeur est particulièrement confiant sur un point en particulier : le nouveau moteur permettra une augmentation significative des performances.
Un point qui constitue l’un des cœurs de la bataille entre les navigateurs, les utilisateurs souhaitant toujours des lancements instantanés et des chargements rapides pour les pages web.
Une première version en fin d'année prochaine
Mais Quantum ne va pas arriver d’un coup en tant que projet terminé. Une version initiale sera proposée en fin d’année prochaine, mais il y aura tout un chemin préparatoire. Mozilla a ainsi indiqué que Firefox va évoluer à travers une longue série de changements importants au cours de l’année qui vient. La généralisation d’Electrolysis en fait partie.
Pour l’instant, Quantum est prévu pour l’ensemble des plateformes supportées par Firefox, à l’exception d’iOS. Mozilla ne désespère pas pouvoir proposer une mouture pour le système mobile d’Apple, mais les navigateurs n’y ont actuellement pas le droit d’avoir leur propre moteur. Ils doivent en effet utiliser une vue déportée de Safari, Chrome et Firefox affichant donc exactement le même résultat. Linux, macOS, Windows et Android auront par contre bien leur mouture adaptée.
Firefox se débarrasse de l’API Battery Status
Le navigateur fera également l’impasse d’ici quelques mois sur une API dont beaucoup attendaient des merveilles. Battery Status devait en effet permettre aux développeurs de connaître l’état de la batterie sur un ordinateur pour éventuellement afficher des pages web moins gourmandes, donc plus économes en énergie, augmentant donc l’autonomie.
Dans la pratique, il semble que le seul véritable écho trouvé ait été chez les régies publicitaires. Le niveau de batterie est devenu en effet une variable parmi tant d’autres qu’il est possible de suivre au cours d’une navigation. En clair, un outil de tracking parmi tant d’autres. D’après les propres statistiques de l’éditeur, seuls 6 % des sites se servent de l’API, mais une minorité le ferait pour des raisons légitimes.
Même si elle n’est pas spécifique à Firefox (Chrome et Opera l’ont aussi), l’API sera quand même supprimée du navigateur avec la version 53, attendue le 6 mars prochain. Notez qu’Apple avait préparé le support de cette API dans Webkit, mais il n’a jamais été activé dans Safari. D’après les discussions sur ce point, les développeurs devraient eux aussi supprimer le code correspondant dans quelques jours, si aucune objection n'est faite.