Firefox' Quantenmechanik: Das steckt hinter "Project Quantum"

Mit einer umfangreichen Überarbeitung seiner technischen Grundlagen hat Firefox sich selbst neu erfunden – aber was genau steckt hinter Project Quantum, Electrolysis, Rust und Servo?

In Pocket speichern vorlesen Druckansicht 405 Kommentare lesen
Hintergrund: Firefox' Quantenmechanik

(Bild: Mozilla)

Lesezeit: 4 Min.
Von
  • Herbert Braun
Inhaltsverzeichnis

Mit dem neuen Design, Performance-Verbesserungen und der Abschaltung der alten Erweiterungsschnittstelle liefert der in dieser Woche erschienene "beste Firefox aller Zeiten" einigen Diskussionsstoff. Was Firefox 57 vor allem ausmacht, sind aber die umfangreichen internen Umbauten, die einen mehrjährigen Transformationsprozess zum vorläufigen Abschluss bringen. Diese fasst die Mozilla-Technikerin Lin Clark zusammen.

Ein besonders langwieriges Teilprojekt war Electrolysis, das mit Firefox 54 in den Browser Einzug gehalten hat. Im Zeitalter der Mehrkernprozessoren sah auch Mozilla die Notwendigkeit für eine Multiprozess-Architektur. Erste Pläne reichten bis in die Zeit zurück, als die Hauptkonkurrenten Internet Explorer und Chrome dies einführten – das war 2008. Aber bis sich Mozilla dieser Aufgabe mit der nötigen Hingabe widmete, vergingen Jahre, und weitere Jahre dauerte es, bis die Techniker die neue Architektur auf die Nutzer loslassen wollten.

Project Quantum ist quasi das neue Triebwerk von Firefox. Die einzelnen Bestandteile werden nun Update für Update eingebaut.

(Bild: Mozilla )

Probleme bereiteten zum Beispiel Erweiterungen, die sich auf die bekannte Ein-Prozess-Architektur stützten. Und natürlich musste das prinzipielle Problem der Race Conditions gelöst werden, also den parallelen Zugriff auf den gleichen Speicherbereich. Mozilla griff dafür ursprünglich zu grobkörniger Parallelisierung, bei der die Zuständigkeiten klar getrennt sind: Jeder Tab und jede Erweiterung bekommt einen eigenen Prozess – wie beim neuen Hauptrivalen Chrome. Da Firefox die Prozesse wiederverwendet, verbraucht er jedoch weniger RAM als die Konkurrenz. Dass Mozilla so spät auf den Zug aufsprang, gibt ihm den Vorteil, von der Konkurrenz lernen zu können.

Electrolysis stellte die Basis dar für "Project Quantum", eine neue Browser-Engine, in die Teile der experimentellen "Servo"-Engine eingingen. Neu daran ist sogar die Programmiersprache: Rust wurde eigens für die Entwicklung von Servo entworfen. Die Sprache, die Schutzmechanismen gegen Speicherlecks und manche unsicheren Programmiermuster aufweist, erfreut sich auch außerhalb Mozillas wachsender Beliebtheit.

Als ersten Quantum-Teil setzten die Mozilla-Entwickler den Quantum Compositor um, der das Rendern der Seiten an einen Prozess im Grafik-Prozessor verlagert. Der Quantum Compositor ist seit Version 53 Teil von Firefox. Quantum DOM hingegen – verfügbar seit Firefox 57 – kümmert sich um die Priorisierung der Aufgaben im verbleibenden Hauptprozess und um den Vorrang der einzelnen Tabs. Beides ist vor allem bei vielen offenen Tabs eine wichtige Aufgabe.

Um die Leistung weiter zu steigern, führte Mozilla feinkörnige Parallelisierung ein. Das lastet die Hardware effektiver aus, da es untätigen Prozessorkernen etwas zu tun gibt – und vor allem beschleunigt es das Rendern, weil sich die Arbeit innerhalb eines Tabs auf mehrere Kerne verteilen lässt. Möglich wurde dies durch Rust, das Race Conditions beim parallelen Rechnen verhindert.

Von dieser feinkörnigen Parallelisierung profitiert bislang Quantum CSS. Quantum CSS – auch "Stylo" genannt – kümmert sich um die Zuweisung der Stylesheets an die einzelnen DOM-Elemente. Mehrere Prozessoren können sich die Arbeit anhand des DOM-Baums aufteilen; wenn sich ihr Teil des Baums als kleiner, schnell erledigter Seitenzweig herausstellt, stehlen sie sich Arbeit von anderen CSS-Prozessen.

Auch die Methodik beim Testen und Optimieren hat Mozilla verändert: Bei Quantum Flow konzentrierten sich die Mozilla-Techniker auf ausgewählte wichtige Seiten, machten Performance-Engpässe und Fehler aus – und stellten durch automatische Tests sicher, dass nicht andere Seiten unter solchen Optimierungen zu leiden haben.

Trotz dieser umfassenden Änderungen ist der Quantensprung noch nicht abgeschlossen. Mozilla plant, noch weitere Browser-Komponenten zu parallelisieren. Als nächstes ist Quantum Render dran, das die Rendering-Prozesse in der GPU besser parallelisiert. Ein neuer Just-in-Time-Compiler für JavaScript mit nettem Namen durchläuft derzeit das Prototyp-Stadium. Nach und nach sollen die Firefox-Komponenten durch modernen, parallelisierbaren Rust-Code ausgetauscht werden. Die Probleme, die sehbehinderte Nutzer des Screenreaders NVDA mit Firefox 57 haben, sollen bald behoben sein. Jetzt muss Mozilla nur noch die verärgerten Erweiterungs-Autoren zurückgewinnen. (dbe)