Společnost KDAB oznámila vývoj komponenty Servo WebView pro Qt, která využívá prohlížečový engine Servo místo modulu Qt WebEngine (na bázi Chromium) pro zobrazení webového obsahu v aplikacích QML. Předpokládá se, že projekt pomůže snížit útočnou plochu na Qt aplikace využívající API WebView díky komponentě, ve které byl díky jazyku Rust minimalizován vznik zranitelností způsobených chybami při práci s pamětí. Kód Servo WebView pro Qt se distribuuje pod licencí MPL-2.0.
Pro zajištění funkce kódu Servo, napsaného v jazyce Rust, v prostředí jazyka C++, je použita vrstva CXX-Qt. CXX-Qt umožňuje vytvářet komponenty v jazyce Rust, které jsou integrovány s programy v C++, používajícími Qt. Použití CXX-Qt umožňuje vytvářet podtřídy QObject v Rustu, které mohou být použity v kódu v C++, QML a JavaScriptu. Také je možné vytvářet Rust programy, které volají kód v C++, což se umožňuje pomocí Rust wrapperů nad typovými třídami QtCore a QtGui.
Projekt Servo byl původně vyvíjen společností Mozilla, ale poté přešel pod ochranu organizace Linux Foundation. Engine se vyznačuje podporou vícestupňového rendering webových stránek, paralelizací operací s DOM (Document Object Model) a využitím mechanismů bezpečného programování poskytovaných jazykem Rust. V době vzniku Servo nemohl prohlížečový engine Firefox plně využít potenciál moderních vícejádrových systémů kvůli používání jednovláknových schémat zpracování obsahu. Servo bylo původně vytvořeno s podporou rozdělení kódu DOM a rendering na menší úkoly, které mohou být vykonávány paralelně a efektivněji využívat zdroje vícejádrových CPU. Některé části Servo, jako je vícestupňový CSS engine a systém renderování WebRender, jsou již integrovány do Firefoxu.
Mezi příbuznými projekty lze také vyzdvihnout projekt Tauri-Servo, který vyvíjí backend k knihovně WRY založené na enginu Servo, což umožňuje využít Servo v aplikacích postavených na frameworku Tauri (konkurující s Electron platformou pro vytváření uživatelských aplikací pomocí prohlížečových technologií).
Zdroj: opennet.ru
