Erste Rust- und Servo-Komponenten ab 2016 in Firefox
Mozilla arbeitet an einer neuen Engine, welche auf den Namen Servo hört und in der neuen Programmiersprache Rust geschrieben wird. Erste Servo-Komponenten könnten bereits im kommenden Jahr den Weg in Firefox finden.
Mit Servo arbeitet Mozilla seit geraumer Zeit an einer komplett neuen Engine, welche moderne Hardware optimal nutzt und frei von Altlasten und Schwachstellen der aktuellen Gecko-Engine ist. Servo wird nicht etwa in C++, sondern in der ebenfalls neuen Programmiersprache Rust geschrieben.
Wie das Rust-Team im Rahmen des Mozilla-Events Mozlando vergangene Woche in Orlando über Twitter bekannt gegeben hat, sollen noch 2016 erste Rust- und Servo-Komponenten mit Firefox ausgeliefert werden.
"In 2016, we will be shipping Rust code and @ServoDev components in @firefox" #mozlando
— Rust Language (@rustlang) December 8, 2015
Mozilla experimentiert bereits mit einem in Rust geschriebenen MP4-Parser in der Nightly-Version von Firefox, um zunächst die Rust-Integration in Firefox sowie die damit zusammenhängenden Entwicklungs-Workflows zu testen. Ist dies erfolgreich, könnte der neue MP4-Parser die für Sicherheitslücken anfällige Stagefright-Bibliothek vollständig ersetzen. Bugzilla-Tickets existieren außerdem bereits für einen in Rust geschriebenen URL-Parser sowie eine Neu-Implementierung der OS.File-API in Rust.
Weitere aktuelle Artikel aus der Kategorie „Servo“
- 03.02.2023Roadmap der Browser-Engine Servo für 2023 vorgestellt
- 19.01.2023Neue Ressourcen für Browser-Engine Servo
- 04.12.2018Developer Preview: Servo-Builds für Magic Leap One verfügbar
- 13.04.2017Neue Browser-Engine: Nightly-Builds von Servo-Browser für Windows
- 28.01.2017Trails: Navigationskonzept für Browser-Tabs von Mozilla
Also ich habe das jetzt so verstanden: Die Komponenten von Gecko sollen nach und nach durch Servo Komponenten ersetzt werden bis Gecko vollständig abgelöst wurde, oder? Steht denn damit jetzt auch fest, dass das Experiment Servo (wie es noch vor einigen Monaten hieß) geglückt ist und man mit ziemlicher Sicherheit sagen kann, dass es in Firefox implementiert wird? Wie genau würden die Vorteile gegenüber Gecko aussehen?
MfG,
Lukas
Das kann man noch nicht mit Sicherheit sagen, ob Gecko vollständig abgelöst werden wird. Das wäre in jedem Fall ein Riesen-Projekt, an dem extrem viel dran hängt. Beispielsweise unterstützt Servo definitiv kein XUL, womit ein Großteil heutiger Add-ons nicht kompatibel mit Servo sein wird.
Jetzt geht erst einmal darum, überhaupt einmal ein paar einzelne Komponenten in Gecko zu integrieren und zu sehen, wie das funktioniert. Bis Servo Gecko vollständig ersetzen kann, dürfte es eher eine Frage von Jahren als von Monaten sein, daher ist es einfach zu früh, um das jetzt schon sicher zu beantworten.
Die Sache mit den Browser-Engines ist, dass egal, ob Gecko, Blink oder was es noch an Engines gibt, die Engines basieren alle auf Architekturen, welche aus den Anfängen der Browserentwicklung stammen. Trotz aller Verbesserungen in den letzten 10+ Jahren, die technische Basis ist bei allen Engines so alt. Servo ist eine wirklich neue Architektur. Servo soll heutige Hardware richtig nutzen können. Es können mit Servo Teile des Renderings parallelisiert werden, was bisher so nicht möglich war. Das ist ein großer Vorteil – natürlich unter der Prämisse, dass am Ende auch alles genau so funktioniert wie gewünscht. Man schleppt keine Altlasten mit und kann die Erfahrungen der letzten Jahre anwenden, es direkt besser machen. Größere architektonische Änderungen einer bestehenden Engine dürften ziemlich schwierig sein. Und nicht nur bei der Engine kann man alles richtig machen, was bisher nicht so gut war, mit Rust wird ja auch eine eigene Programmiersprache verwendet, welche ebenso eher den Anforderungen gerecht wird als C++, was man halt so nehmen muss, wie es ist. Durch die Spracheigenschaften von Rust kann man unter anderem davon ausgehen, dass es bestimmte Arten von Sicherheitslücken nicht mehr oder zumindest sehr viel seltener gibt, weil Rust standardmäßig gewisse Dinge einfach nicht erlaubt, die in C++ nicht per se, aber in der Praxis dennoch häufig in Sicherheitslücken resultieren.
Das ist jetzt mal ein oberflächlicher und theoretischer Überblick, der bestimmt nicht alles abdeckt, aber die Praxis ist ja sowieso immer eine eigene Sache und dazu kann man noch nicht so viel sagen. Wenn Mozilla einzelne Komponenten in Gecko ersetzt, ist das für den Nutzer ziemlich unsichtbar, sprich man bemerkt das eher nicht. Man nimmt ja nicht direkt wahr, ob man nun zum Beispiel eine Sicherheitslücke nicht hat, die man sonst gehabt hätte, das sind halt diese "Was-wäre-wenn-Fragen", nicht zu beantworten. Und Servo als komplette Engine ist einfach noch ganz weit von einer Fertigstellung entfernt. Grundsätzliche Ziele sind in jedem Fall mehr Sicherheit, eine bessere Performance und eine bessere Akkulaufzeit – Servo soll vor allem auch auf Geräten wie Smartphones eine Rolle spielen, deswegen sitzt Samsung mit im Boot, die sind wohl eher weniger am Desktop-Browser interessiert.
Ich denke aber letztendlich egal ob WebKit (bzw. Blink) oder Gecko. Alle gängigen Engines sind mindestens gute 7 – 12 Jahre alt. Da wird man früher oder später nicht um eine für neuere Hardware entwickelte Engine herumkommen. Ich bin sehr gespannt, was aus Rust und Servo werden wird. Werden die ersten Komponenten (sofern sie erfolgreich sind und so funktionieren wie sie funktionieren sollen) denn auch ihren Weg in den Stable Channel finden oder wird man das erstmal zum Testen und Auswerten als experimentellen Teil in die Nightly/Aurora Versionen integrieren? Letzteres wäre in meinen Augen von Vorteil, um den Entwicklern eine Übersicht über eventuell bevorstehende Änderungen zu geben.
Vielleicht, vielleicht auch nicht. Wenn, ist die Frage, wann. Ich bin auf jeden Fall froh, dass Mozilla sich damit bereits seit einiger Zeit ernsthaft befasst. Ich meine, dass in einem Bugtracker-Ticket von Google mal zu lesen gewesen sei, dass ihnen eine komplett neue Engine eine Nummer zu groß sei, also vom Aufwand/Nutzen her, aber das ist jetzt auch schon ein paar Jahre her. Ich denke, dass Google zum einen viel mehr Ressourcen hat und weniger Zeit als Mozilla bräuchte, und zum anderen, dass wenn sie eine neue Engine präsentieren, das sehr plötzlich passieren und der Öffentlichkeit nicht lange vorab bekannt sein wird. Daher, selbst wenn man von Google diesbezüglich nichts hört, es ist denen immer zuzutrauen, dass plötzlich was Neues da ist. Blink ist zwar relativ neu, aber letzten Endes ja auch nur ein WebKit-Fork und damit die gleiche alte Basis. Ich bin gespannt. Es wäre schön für Mozilla, wenn sich mit Servo alles in die richtige Richtung entwickelt und man Gecko vollständig ersetzen könnte, bevor sich bei Google derartiges andeutet, sonst rennt man wieder hinter einem technologischen Vorsprung hinterher. Ich habe große Hoffnungen bezüglich Servo. Aber leider weiß man ja erst, ob die Erwartungen erfüllt werden, wenn es soweit ist.
Sollte es offene Baustellen / noch Dinge zu testen geben, dann ist das kein Problem, das auf Nightly-Versionen zu beschränken, sowas macht Mozilla ja durchaus öfter mit Dingen. Das Ziel ist es aber auf jeden Fall, das dann auch möglichst bald in die anderen Release-Kanäle zu bringen. Schon aufgrund von Ressourcen, ansonsten müsste man pro Komponente jeweils zwei verschiedene Implementierungen pflegen, die genau das Gleiche machen.
Der technologische Vorsprung zwischen Gecko und Blink ist aber sehr klein geworden. Mit einigen Handgriffen lädt der Firefox Webseiten deutlich schneller als Chrome. Ich habe beide Browser vor kurzem mit frischen Profilen getestet und in allen gängigen Tests lag die Developer Edition von Firefox (44.0a2) vor Chrome Canary (48). Das komische ist ja auch: Wenn ich mit Google nach "Firefox vs. Chrome benchmark comparison" suche, finde ich an höchster Stelle nur Tests wo Chrome immer deutlich vor dem Firefox liegt. Wenn ich mit Bing, DuckDuckGo und Yahoo auch nach "Firefox vs. Chrome benchmark comparison" suche, dann finde ich an höchster Stelle Tests in denen die Sieger komplett unterschiedlich ausfallen. Überwiegend liegt Firefox aber vor Chrome. Womit könnte das nur zusammenhängen? Hmmm… Ich weiß es nicht. 😉
Aus der Gecko Engine kann man einiges mehr rausholen, das zeigt besonders schön das Firefox-Derivat Waterfox. Der kriegt z.B. im HTML5 Test lockere 510 Punkte. Das ist nur einer von vielen Fällen wo Gecko noch mehr bieten kann. Firefox hat außerdem etwas, was unbezahlbar ist und was es bei Google nie wirklich geben wird: Vertrauen zu seinen Nutzern. Aber vor allem hat Firefox die Macht, sich völlig unabhängig vom Google-Kosmos und der damit verbundenen Profitsteigerung zu entwickeln. Mozilla ist eine der wenigen Organisationen, welche nicht unter der gekauften Kontrolle Googles stehen und das ist auch gut so.
Google hätte aber einen nennenswerten technologischen Vorsprung, wenn sie vor Firefox eine ganz neue Engine hätten, welche ähnliche Ziele wie Mozilla mit Servo verfolgt. Das meinte ich. 😉