Die Firma KDAB hat die Entwicklung einer Servo WebView-Komponente für Qt angekündigt, die die Servo-Browser-Engine anstelle des Qt WebEngine-Moduls (auf Basis von Chromium) verwendet, um Webinhalte in QML-Anwendungen darzustellen. Das Projekt soll dazu beitragen, die Angriffsfläche von Qt-Anwendungen, die die WebView-API nutzen, zu verringern, da durch den Einsatz der Rust-Programmiersprache die Wahrscheinlichkeit von durch Speicherfehler verursachten Sicherheitsanfälligkeiten minimiert wird. Der Code der Servo WebView für Qt wird unter der Lizenz MPL-2.0 verbreitet.
Für die Ausführung von Servo-Code, der in Rust geschrieben ist, in einer C++-Umgebung wird die CXX-Qt-Schnittstelle verwendet. CXX-Qt ermöglicht die Erstellung von Komponenten in Rust, die mit C++-Programmen integriert werden, die Qt verwenden. Der Einsatz von CXX-Qt ermöglicht es, QObject-Unterklassen in Rust zu erstellen, die in C++, QML und JavaScript verwendet werden können. Zudem besteht die Möglichkeit, Rust-Anwendungen zu schreiben, die C++-Code aufrufen; hierzu werden Rust-Bindings für die Typ-Klassen QtCore und QtGui bereitgestellt.
Das Servo-Projekt wurde ursprünglich von Mozilla entwickelt, ist jedoch später unter die Schirmherrschaft der Linux Foundation gewechselt. Die Engine zeichnet sich durch die Unterstützung der Multithreading-Nutzung für das Rendering von Webseiten, die Parallelisierung von DOM (Document Object Model)-Operationen und die Implementierung sicherer Programmiermechanismen in Rust aus. Bei der Gründung konnte die Firefox-Browsing-Engine das Potenzial moderner Mehrkernsysteme aufgrund der Verwendung von Single-Thread-Content-Processing nicht vollständig ausschöpfen. Servo wurde von Anfang an mit der Unterstützung für die Aufteilung des DOM-Codes und das Rendering in kleinere Unteraufgaben entwickelt, die parallel ausgeführt werden können, um die Ressourcen von Mehrkern-CPUs effizienter zu nutzen. Bestimmte Teile von Servo, wie die Multithreading-CSS-Engine und das Rendering-System WebRender, sind bereits in Firefox integriert.
Ein verwandtes Projekt ist Tauri-Servo, das das Backend der WRY-Bibliothek auf der Grundlage von Servo entwickelt. Es ermöglicht die Verwendung von Servo in Anwendungen, die auf dem Tauri-Framework basieren (einer Plattform zur Erstellung von Desktop-Anwendungen mit Webtechnologien, die mit Electron konkurriert).
Quelle: opennet.ru
