Für den neuen Firefox hat Mozilla die Browser-Architektur grundlegend überarbeitet.

Foto: Mozilla

Seit wenigen Tagen ist Firefox 57 zum Download verfügbar. Es ist nicht nur einfach irgendeine neue Version des Browsers, sondern markiert einen Neustart. Er ist schneller, stabiler, hat einen neuen Look und kommt ohne klassische Add-Ons. Dahinter stehen Projekte und Komponenten mit klingenden Namen wie Electrolysis, Quantum, Servo und Rust.

Multikern-Prozessoren besser nutzen

Eines der Hauptmerkmale des neuen Firefox ist seine Performance-Verbesserung. "Um schneller zu werden, mussten wir die Änderungen der Hardware in den vergangenen zehn Jahren zu unseren Gunsten nutzen", erklärt Mozilla-Entwicklerin Lin Clark in einem Blogeintrag.

Clark bezieht sich dabei auf Multikernprozessoren, die unabhängig Aufgaben übernehmen und diese parallel ausführen können. Die Entwickler von Chrome haben schon das früher umgesetzt, bei Mozilla hat man jedoch länger benötigt, wie die Entwicklerin eingesteht. Ein Problem mit Multikern-Architektur sind etwa die sogenannten Race Conditions. Wenn zwei Kerne auf den gleichen Speicherbereich zugreifen müssen, kann es passieren dass einer den anderen überschreibt. Verhindert werden kann das durch Aufteilen der Aufgaben.

Parallelisierung

Firefox setzte daher wie auch Chrome setzte zunächst auf sogenannte grobkörnige Parallelisierung – dabei wird jeder Tab auf einen eigenen Prozessorkern ausgelagert. Das Problem ist, dass es dabei Kerne gibt, die nichts zu tun haben. Und beim Laden eines neuen Tabs ein neuer Kern hinzugezogen wird, was dann ebenso lange dauert wie mit einer Single-Core-CPU. Diesen Ansatz der Aufgabenteilung weiter führt die feinkörnige Parallelisierung. Dabei können die Tasks beim Laden einer Website in noch kleinere Portionen getrennt und auf mehrere Kerne aufgeteilt werden. Der Browser wird schneller und stabiler.

Bei der feinkörnigen Parallelisierung müssen Speicherbereiche zwischen den Kernen aufgeteilt werden, was wieder das Problem der Race Conditions aufwirft. Die Mozilla-Entwickler haben daher mit Rust eine neue Programmiersprache geschaffen haben, die das verhindert. Basierend darauf wurde dann die Browser-Engine Servo entwickelt, mit der die feinkörnige Parallelisierung umgesetzt werden konnte.

Noch nicht abgeschlossen

Die neue Multiprozess-Architektur wurde bei Firefox schließlich mit Projekt Electrolysis eingeführt, in das Teile von Servo einflossen und das als Basis der neuen Browser-Engine Project Quantum dient. Da es sich dabei um sehr tiefgreifende Änderungen handelt, wurden die Neuerungen aufgeteilt und teilweise mit kleineren Gruppen von Nutzern getestet. Fertig ist man aber noch nicht. Denn die Parallelisierung betrifft bislang noch nicht alle Komponenten. Das soll nun mit den weiteren Versionen nach und nach passieren. (red, 16.11.2017)