Проект по интеграции с Qt web-движка Servo, развиваемого на языке Rust

Компания KDAB объявила о разработке компонента Servo WebView для Qt, использующего браузерный движок Servo вместо модуля Qt WebEngine (на базе Chromium) для отображения web-контента в QML-приложениях. Предполагается, что проект поможет сократить поверхность атак на Qt-приложения, использующие API WebView, за счёт применения компонента, в котором благодаря языку Rust минимизировано возникновение уязвимостей, вызванных ошибками при работе с памятью. Код Servo WebView для Qt распространяется под лицензией MPL-2.0.

Для организации работы кода Servo, написанного на языке Rust, в окружении на языке C++ задействована прослойка CXX-Qt. CXX-Qt позволяет создавать компоненты на языке Rust, интегрируемые с программами на С++, использующими Qt. Применение CXX-Qt даёт возможность создавать подклассы QObject на Rust, которые могут использоваться в коде на C++, QML и JavaScript. Также имеется возможность создания Rust-программ, вызывающих код на С++, для чего предоставляются Rust-обвязки над типовыми классами QtCore и QtGui.

Проект Servo изначально развивался компанией Mozilla, но затем перешёл под покровительство организации Linux Foundation. Движок отличается поддержкой многопоточного рендеринга web-страниц, распараллеливанием операций с DOM (Document Object Model) и задействованием предоставляемых языком Rust механизмов безопасного программирования. Во время основания Servo браузерный движок Firefox не мог в полной мере задействовать потенциал современных многоядерных систем из-за использования однопоточных схем обработки контента. Servo изначально создан с поддержкой разбиения кода DOM и рендеринга на более мелкие подзадачи, которые могут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU. В Firefox уже интегрированы некоторые части Servo, такие как многопоточный CSS-движок и система отрисовки WebRender.

Из близких по тематике разработок также отмечается проект Tauri-Servo, развивающий бэкенд к библиотеке WRY на базе движка Servo, позволяющий использовать Servo в приложениях на основе фреймворка Tauri (конкурирующая с Electron платформа для создания пользовательских приложений с использованием браузерных технологий).

Источник: http://www.opennet.ru/opennews/art.shtml?num=60961