Servo는 WebGL 및 WebGPU를 지원하고 데스크탑, 모바일 및 임베디드 애플리케이션에 적용할 수 있는 Rust로 작성된 웹 렌더링 엔진이다.
Rust 생태계는 Servo라는 새로운 웹 렌더링 엔진을 개발해 왔다. 2012년 Mozilla가 처음 만든 Servo는 현재 Linux Foundation의 관리 하에 개발되고 있다.
Servo는 웹 엔진이 다른 애플리케이션 내에 훌륭하게 내장될 수 있도록 계속해서 발전하고 있다. 예를 들어 KDAB는 Qt 소프트웨어에 Servo를 내장하는 작업을 진행해 왔다. KDAB에서 개발하는 CXX-Qt 라이브러리가 Rust와 C++ 사이의 브리지로 사용하여 Qt에 Servo 웹 엔진을 내장할 수 있게 해준다.
이는 이제 Qt 애플리케이션의 웹뷰용 Chromium 대신 Servo를 사용할 수 있음을 의미한다.
QML 관점에서 볼 때 이 구성 요소는 canGoBack
, canGoForward
, loading
, title
, url
등의 속성 및 goBack
, goForward
메서드를 제공하는 등 Chromium 기반 WebView와 유사하다. QML 아이템 자체는 크기에 맞게 렌더링되는 콘텐츠와 동일한 방식으로 작동한다.
import QtQuick
import QtQuick.Window
import com.kdab.servo
Window {
height: 720
width: 1280
title: webView.title
visible: true
ServoWebView {
id: webView
anchors.fill: parent
url: "https://servo.org/"
}
}
CXX-Qt를 사용하여 Rust에서 Qt properties, invokables 및 event handlers(예: 터치 이벤트)를 정의하고 Servo 엔진에서 이벤트를 트리거할 수 있다. 그런 다음 Servo의 모든 업데이트 요청은 Qt 이벤트 루프를 통해 Qt 측 업데이트를 트리거할 수 있다.
CXX-Qt를 사용하여 Rust의 Servo를 Qt의 구성 요소로 표시하는 데모 github 저장소