Servo es un motor de renderizado desarrollado por Mozilla que se utiliza principalmente en el navegador web Firefox, este motor se destaca por ser rápido, seguro y altamente eficiente. Servo está escrito en Rust y utiliza el motor de diseño de web llamado Quantum CSS (o Stylo) para ofrecer un rendimiento óptimo al procesar y renderizar contenido web.
Además de su uso en Firefox, Servo también ha sido explorado en aplicaciones fuera del navegador web, como en la creación de interfaces de usuario para aplicaciones gráficas y multimedia interactivas.
Sin embargo, su adopción se ha visto bastante limitada debido a que actualmente el proceso de ejecución de una página web dentro de Servo comienza en su componente de script, donde se inicia el proceso de carga y la ejecución del bucle de eventos HTML. Esta ejecución requiere una integración estrecha entre el motor de script y el motor web que lo rodea, en este caso, SpiderMonkey.
Aquí es donde entra una reciente propuesta, la cual busca mejorar la modularidad de Servo, mediante una integración eficiente con SpiderMonkey, el motor de ejecución de JavaScript y Wasm de Mozilla. Los desarrolladores de Servo buscan reducir la dependencia de las API de bajo nivel del motor JavaScript SpiderMonkey, desarrollado por Mozilla y utilizado en Servo para el soporte de JavaScript y WebAssembly.
El objetivo a largo plazo es migrar hacia una API de nivel superior y una capa de abstracción para interactuar con diferentes motores JavaScript, eliminando así las llamadas directas inseguras al código SpiderMonkey realizadas en bloques inseguros. Esta evolución permitirá a Servo no depender exclusivamente de SpiderMonkey y ofrecer compatibilidad con otros motores JavaScript y WebAssembly, como el motor V8 utilizado en Chrome.
Si bien Servo cuenta con abstracciones e interfaces para una parte significativa de su integración con SpiderMonkey, aún existen áreas donde la modularidad se ve comprometida debido a llamadas directas e inseguras a API de bajo nivel, es por ello que se buscan mejorar las capas de abstracción y reducir la dependencia de detalles de implementación específicos de SpiderMonkey.
Una solución clave para mejorar la modularidad en Servo es reemplazar las llamadas directas a API de bajo nivel con construcciones seguras y de nivel superior. Se menciona que con el uso de abstracciones bien diseñadas, puede permitir una integración más flexible y modular.
Además de ello, y en relación con Firefox también vale la pena mencionar que en las versiones nightly de Firefox, que servirán de base para la versión Firefox 126 el 14 de mayo, se ha introducido la capacidad de traducir automáticamente fragmentos de texto seleccionados en una página, una función que antes solo permitía la traducción de la página completa.
Además, las versiones nightly también ofrecen la posibilidad de traducir a idiomas que en las versiones estables solo pueden ser utilizados como idiomas de origen para la traducción. El sistema de traducción integrado en Firefox se encarga de realizar estas traducciones en el sistema local del usuario sin recurrir a servicios externos en la nube. Este sistema se basa en el motor Bergamot de código abierto, que es un contenedor del marco de traducción automática Marian. Bergamot utiliza redes neuronales recurrentes (RNN) y modelos de lenguaje basados en transformadores para llevar a cabo las traducciones de manera eficiente y precisa.
Como tal, no se ha confirmado si la nueva función estará habilitada de forma predeterminada en la versión final de Firefox 126, pero lo que sí se espera es que inicialmente esté habilitada de forma predeterminada en las versiones Nightly y en la fase beta temprana. Los usuarios podrán activar manualmente esta función a través de about:config al hacer doble clic en browser.translations.select.enable para cambiar su valor a true. Una vez activada, al seleccionar texto en una página web, aparecerá una nueva entrada en el menú contextual que permitirá realizar la traducción del fragmento seleccionado.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.