Architecture
Introduction à l'architecture de Firefox
A haut niveau, firefox est constitué :
- de l'interface utilisateur "browser" (la fenêtre principale)
- le moteur web, appelé gecko. Certains de ses composants ont été réécrits en utilisant le langage RUST.
- de spidermonkey , le moteur javascript
- un ensemble de composants ou frameworks: necko, xpcom, etc.
Certains composants fournis par servo sont:
- webrender, le moteur de rendu 2D, qui utilise l'accélération GPU
- stylo, le système de style CSS
Quelques principaux composants de base sont:
- xpfe, le "cross platform Front end" de mozilla, pour le développement de l'interface utilisateur. Il utilise * XUL *, le "langage d'interface utilisateur en XML", qui est interprété par Gecko.
- xpcom, le modèle d'objet composant multiplateforme de Mozilla
- necko, le sous-système réseau
- nss, les services de sécurité réseau
- nspr, le Runtime portable. Il expose des fonctionnalités indépendances de la plate-forme.
Architecture Multi-processus
La séparation des processus renforce:
- La stabilité : si une page Web ou un plug-in se bloque ou se bloque, le navigateur complet continue de fonctionner.
- La sécurité : Le sandboxing (bac à sable isolé hébergeant les pages Web ou de plugins) peut s'appuyer sur des mécanismes natifs de sécurité des processus / droits d'accès.
Par conséquent, les parties suivantes de Firefox peuvent s'exécuter dans différents processus, en fonction de la plate-forme cible:
- le processus 'browser' (1): la fenêtre principale de l'application et son interface utilisateur.
- les processus 'content' (1..N): Chaque processus est en charge d'un ou plusieurs onglets (pages web)
- le processus GPU: Pour la composition graphique utilisant le GPU
- Les processus 'Web Extensions'
- Le processus 'Lecture Multimedia'
- Le processus 'Service Worker'