KDAB (un líder en proveer experiencia en software Qt, C++ y 3D/OpenGL en plataformas de escritorio, integradas y móviles) ha anunciado recientemente a través de su blog, el lanzamiento de «Servo WebView para Qt». Esta nueva herramienta utiliza el motor de navegador Servo en lugar del módulo Qt WebEngine basado en Chromium, ofreciendo una alternativa para visualizar contenido web en aplicaciones QML.
Servo es un proyecto desarrollado inicialmente por Mozilla y ahora bajo la dirección de la Fundación Linux, destaca por ser un motor de renderizado web escrito en Rust, enfocado en la seguridad de la memoria y en el aprovechamiento eficiente de los sistemas multinúcleo modernos.
Entre sus características más destacadas se encuentra el soporte para la representación multiproceso de páginas web, la paralelización de operaciones con el DOM y la utilización de mecanismos de programación seguros proporcionados por Rust. A diferencia del motor de navegador Firefox, que emplea esquemas de procesamiento de contenido en un solo subproceso, Servo está diseñado específicamente para aprovechar los sistemas multinúcleo modernos al dividir el DOM y ejecutar subtareas en paralelo, optimizando así el uso de recursos de CPU de múltiples núcleos. Mozilla ha integrado partes de Servo en Firefox, como el motor CSS multiproceso y el sistema de renderizado WebRender.
Sobre Servo WebView Qt
La integración de Servo WebView en aplicaciones Qt tiene como finalidad el mejorar el rendimiento y ofrecer una mayor eficiencia, esta integración también contribuye significativamente a la seguridad de las aplicaciones Qt. La integración de Servo en Qt se logra a través de la capa CXX-Qt, que actúa como un puente entre Rust y C++. Esta capa permite la creación de componentes Rust que se integran sin problemas con programas C++ utilizando Qt. Esto abre nuevas posibilidades para el desarrollo de aplicaciones Qt con un enfoque en la seguridad y el rendimiento de la visualización web.
En KDAB logramos integrar el motor web Servo dentro de Qt, utilizando nuestra biblioteca CXX-Qt como puente entre Rust y C++. Esto significa que ahora podemos usar Servo como alternativa a Chromium para vistas web en aplicaciones Qt.
Desde una perspectiva QML , este componente es similar a Chromium WebView , como que canGoBackproporciona propiedades y métodos . El elemento QML en sí actúa de la misma manera y el contenido se representa para que coincida con su tamaño.canGoForwardloadingtitleurlgoBackgoForward
En el anuncio, se menciona que se espera que una de las mayores ventajas de Servo WebView sea la capacidad para reducir la superficie de ataque en aplicaciones Qt que utilizan la API WebView, gracias al uso del lenguaje Rust que minimiza la aparición de vulnerabilidades relacionadas con errores de gestión de memoria.
Ademas de ello, también se menciona que la integración ofrece una serie de beneficios, entre los que se incluyen:
- Mayor Seguridad: Al estar escrito en Rust, Servo reduce la superficie de ataque y minimiza las vulnerabilidades relacionadas con la gestión de memoria, lo que contribuye a una experiencia de navegación web más segura para los usuarios de aplicaciones Qt.
- Mejor Rendimiento: El enfoque de Servo en la paralelización y el uso eficiente de los recursos de CPU multinúcleo mejora el rendimiento de la visualización web en aplicaciones Qt, ofreciendo una experiencia más fluida y receptiva.
- Flexibilidad y Escalabilidad: La integración de Servo en Qt a través de CXX-Qt proporciona una plataforma flexible y escalable para el desarrollo de aplicaciones web, abriendo nuevas posibilidades para aplicaciones ricas en contenido y funciones.
En cuanto a los planes de desarrollo y mejoras a futuro, se menciona la integración para investigaciones adicionales y mejoras en el puente entre Rust y Qt, mejoras en la API para sistemas embebidos, mejoras en el objeto framebuffer que fuerza el uso del backend OpenGL, entre otras cosas más.
Finalmente, cabe mencionar que el código del Servo WebView para Qt está licenciado bajo MPL-2.0 y si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.