La société KDAB a annoncé le développement d'un composant Servo WebView pour Qt, utilisant le moteur de navigateur Servo au lieu du module Qt WebEngine (basé sur Chromium) pour afficher du contenu web dans des applications QML. Ce projet devrait contribuer à réduire la surface d'attaque des applications Qt utilisant l'API WebView, grâce à un composant qui, grâce au langage Rust, minimise l'apparition de vulnérabilités causées par des erreurs de gestion de la mémoire. Le code Servo WebView pour Qt est distribué sous la licence MPL-2.0.
Pour garantir le fonctionnement du code Servo, écrit en Rust, dans un environnement en C++, une couche CXX-Qt est utilisée. CXX-Qt permet de créer des composants en Rust, intégrables avec les programmes en C++ utilisant Qt. L'utilisation de CXX-Qt permet de créer des sous-classes QObject en Rust, qui peuvent être utilisées dans le code C++, QML et JavaScript. Il est également possible de créer des programmes en Rust appelant du code en C++, pour lequel des liaisons Rust sont fournies au-dessus des classes types QtCore et QtGui.
Le projet Servo a été initialement développé par la société Mozilla, avant de passer sous le patronage de l'organisation Linux Foundation. Le moteur se distingue par son support du rendu web multi-threadé, de la parallélisation des opérations sur le DOM (Document Object Model) et de l'utilisation des mécanismes de programmation sécurisés offerts par le langage Rust. À l'origine, le moteur de navigateur Firefox ne pouvait pas exploiter pleinement le potentiel des systèmes multi-cœurs modernes en raison de l'utilisation de schémas de traitement de contenu mono-thread. Servo a été conçu à l'origine avec le support du découpage du code DOM et du rendu en sous-tâches plus petites, pouvant être exécutées en parallèle et utilisant plus efficacement les ressources des CPU multi-cœurs. Certaines parties de Servo, telles que le moteur CSS multi-thread et le système de rendu WebRender, sont déjà intégrées dans Firefox.
Parmi les projets similaires, on note également le projet Tauri-Servo, qui développe le backend de la bibliothèque WRY basé sur le moteur Servo, permettant d'utiliser Servo dans des applications basées sur le framework Tauri (une plateforme concurrente d'Electron pour créer des applications utilisateur en utilisant des technologies de navigateur).
Source : opennet.ru
