Depuis un paquet d’années déjà, Chrome a adopté une architecture où chaque onglet s’exécute dans un processus indépendant des autres. Une solution qui apporte plus de stabilité et de sécurité, que Mozilla promet depuis plusieurs années de mettre en place dans Firefox. Ça commence enfin à être le cas avec la version 48 !
Réservé pour l’instant à 1% des utilisateurs du navigateur (mais 50% pourront en bénéficier dès la semaine prochaine si tout va bien chez ce premier %), le fonctionnement multi-processus, que Mozilla a baptisé Electrolysis, reste pour l’instant un peu plus limité que chez ses concurrents : il n’y aura pas un processus pour chaque onglet, mais un processus dédié au rendu (un par fenêtre), indépendant du processus principal du navigateur, assurant le décodage des contenus, l’exécution des scripts, les extensions, etc…
Il faudra attendre la première moitié de l’année 2017 pour passer à un processus par onglet, puis plus tard chaque extension aura également droit à son processus dédié. Les extensions sont d’ailleurs pour l’instant un gros frein à la généralisation du multi-processus, qui restera pour l’instant totalement désactivé dès lors qu’une extension sera présente. Dans six semaines, avec Firefox 49, le multi-processus pourra être activé en présence de certaines extensions, puis petit à petit au fil des versions de plus en plus d’extensions seront prises en charge.
On peut s’attendre à ce que ce support concerne en priorité les extensions réalisées avec la nouvelle API WebExtensions, supporté de manière stable par Firefox 48, et qui devrait à terme remplacer complètement les API existantes. Cette nouvelle API, qui vise à devenir un standard commun à tous les navigateurs pourrait par contre marquer la fin de certaines extensions, les possibilités étant plus limitées.
Enfin, on notera pour l’anecdote que Firefox 48 est la première à embarquer un composant écrit dans le langage Rust (le composant de lecture de médias), un nouveau langage développé par Mozilla, qui sera à terme utilisé pour l’essentiel du moteur de Firefox. Ce langage est censé faciliter le développement de code sûr tout en conservant un haut niveau de performances comparativement au C et au C++.