- La actualización de Servo de agosto de 2024 abarca ampliamente desde funcionalidades del motor web hasta el navegador servoshell, la calidad en Windows, las herramientas de desarrollo y la estabilidad de CI
- Las builds Nightly incorporan
HTMLDialogElement.show(), renderizado de entrada en<textarea>,border-image,structuredClone(),crypto.randomUUID(), reproducción de WAV, Web AudioIIRFilterNode, navegación con redirección cross-origin, entre otros - Los componentes centrales subieron a SpiderMonkey 128, WebRender 0.65, wgpu 22.0 y Rust 1.80.1, y WebXR y flexbox quedaron activados por defecto
- servoshell obtuvo navegación con pestañas, una nueva barra de herramientas y una página de nueva pestaña; en Windows se mejoraron la navegación con teclado, la salida PNG y problemas relacionados con fuentes y GPU
- Con un nuevo runner de CI, el tiempo de build exclusivo para Windows se redujo en 70%, y también se corrigieron varios crashes que ocurrían en sitios web reales y BorrowError relacionados con el GC de SpiderMonkey
Nuevas funcionalidades de la plataforma web
- A las builds nightly de Servo se incorporaron de forma gradual varias API web y funcionalidades CSS
- 2024-07-27: soporte básico para
show()deHTMLDialogElement - 2024-07-29: atributo
typedeHTMLFieldSetElement - 2024-07-31: renderizado del texto ingresado en
<textarea> - 2024-07-31: propiedad CSS
border-image - 2024-08-02: fuentes CSP
unsafe-eval,wasm-unsafe-eval - 2024-08-04: reproducción de archivos de audio WAV
- 2024-08-09: API
structuredClone() - 2024-08-12:
IIRFilterNodede Web Audio - 2024-08-13: navegación con redirección cross-origin
- 2024-08-23: API
crypto.randomUUID() - 2024-08-29: propiedad CSS
clip-path- Se excluyen los valores
path(),polygon(),shape(),url()
- Se excluyen los valores
- 2024-07-27: soporte básico para
Cambios en componentes del motor y comportamiento por defecto
- Servo actualizó sus principales componentes dependientes a versiones recientes
-
SpiderMonkey 128
-
WebRender 0.65
-
wgpu 22.0
- Rust 1.80.1
- WebXR y flexbox están activados por defecto
- Las API web que devuelven Promise ahora rechazan correctamente la Promise cuando fallan, en lugar de lanzar una excepción
-
Mejoras en WebXR y flexbox
- La API WebXR recibió ajustes en varias interfaces y funciones de entrada, en línea con su activación por defecto
- Se agregó soporte para Gamepad
- Se incorporaron actualizaciones relacionadas con hand input,
XRBoundedReferenceSpace,XRFrame,XRInputSource,XRPose,XRSession,XRTargetRayMode,XRView,XRWebGLLayer makeXRCompatible()ahora puede llamarse no solo desdeWebGLRenderingContext, sino también desdeWebGL2RenderingContext
- En flexbox se reforzaron funcionalidades de layout de uso frecuente
- Propiedad
gap align-content: stretch- Valores
start,enddealign-itemsyalign-self - Soporte básico para
flex-direction: column,column-reverse
- Propiedad
- La colocación y el cálculo de tamaño de los flex items también son más precisos
- Se admite
position: relativeen flex items - El
z-indexde un flex item siempre crea un stacking context - Se aplica el tamaño intrínseco correcto a flex items y flex containers
- Se admite
- El trabajo de soporte para texto bidireccional sigue en marcha
- Incluye cambios en la arquitectura del fragment tree y trabajo sobre la interfaz
writing-mode - La propiedad
unicode-bidiy el atributodirtienen soporte parcial - El valor
dir=autotodavía no está soportado
- Incluye cambios en la arquitectura del fragment tree y trabajo sobre la interfaz
Navegador servoshell y calidad en Windows
- Se agregaron una nueva barra de herramientas y navegación con pestañas a Servo-the-browser
- La página de nueva pestaña usa una nueva API que permite al embedder de Servo registrar un custom protocol handler
- La calidad de ejecución en Windows también mejoró en varias áreas
- Se corrigió la navegación con teclado
- Se corrigió el comportamiento de salida PNG de
--output - Se solucionaron bugs relacionados con fuentes y GPU
- Las correcciones para Windows están vinculadas con problemas en servo.org y duckduckgo.com donde los glifos se alineaban mal y los colores eran incorrectos, y con un problema en wikipedia.org donde las imágenes se rompían
Herramientas de desarrollo y flujo de trabajo de desarrolladores
- El soporte de devtools sumó funcionalidades tras el trabajo del último mes del proyecto de pasantía
- Servo soporta HTML tree
- Soporta los paneles Styles y Computed
- En macOS, el proceso de ejecutar servoshell justo después de compilar se volvió unos segundos más rápido
- En CI, clippy se ejecuta en un job dedicado de linting, separado del tidy check existente
- Gracias a donaciones se agregó un nuevo runner de CI para builds de Windows, y el tiempo de build exclusivo para Windows se redujo en 70%
- También se agregará pronto un nuevo runner para builds de Linux, y se espera que las WPT try builds sean más rápidas
- Está en curso una triage meeting para investigar issues de GitHub, y la próxima Servo issue triage meeting se realizará el 2 de septiembre a las 10:00 UTC
- Más detalles en project#99
Mejoras de estabilidad del motor
- En agosto se corrigieron numerosos bugs de crash que ocurrían en sitios web reales
- Los principales casos corregidos abarcan renderizado, reflow y comportamiento del HTML parser
- Crash que ocurría al renderizar floats cerca de tablas en la HTML spec
- Crash en w3schools.com causado por un reflow explícito innecesario
- Corrección de crashes en varios sitios, como kilonova.ro y tweakers.net, al hacer re-entrant el HTML parser
- Además, se redujeron crashes en rutas de plataforma, API y parsing
- Crash al cambiar el tamaño de la ventana mientras se usaba WebGL en macOS
- Crash al renderizar texto con un grapheme cluster muy largo
- Crash al renderizar caracteres de tabulación con ciertas fuentes
- Crash del parser después de llamar a
window.stop() - Crash al pasar algunos valores a
console.log() - Crash al parsear algunos valores de
<img srcset> - Crash al parsear algunos valores de HTTP header
- Crash al configurar
window.openeren ciertas situaciones - Crash al eliminar un iframe del documento
- Crash al llamar a
new AudioContext()con opciones no soportadas - Crash intermitente en
WRSceneBuilderal cerrar Servo
- Se corrigieron varios crashes BorrowError que ocurrían en el GC de SpiderMonkey
- Sigue en curso trabajo para prevenir este tipo de bugs mediante análisis estático
- Los objetos DOM Window ya no se filtran durante la navegación
- En Unix, servoshell termina de forma anormal ante un panic, lo que permite que los web tests registren correctamente el resultado como “CRASH”
Estado de las donaciones
- Servo recibe actualmente 3.077 dólares mensuales en donaciones recurrentes, un aumento de 4,1% frente a julio
- Esto incluye donaciones de 12 personas a través de LFX, pero Servo pronto dejará de aceptar donaciones por LFX
- Las donaciones recurrentes deben trasladarse a GitHub Sponsors u Open Collective
- Servo también está registrado en thanks.dev, y 3 organizaciones de GitHub que dependen de Servo ya lo patrocinan
- Si usas bibliotecas de Servo como
url,html5ever,selectorsocssparser, puedes contribuir a la comunidad a través de thanks.dev - El uso de los fondos lo decide de forma transparente el Technical Steering Committee, y hay más detalles en la Sponsorship page
1 comentarios
Opiniones en Hacker News
Me sorprende que el nivel de patrocinio que reciben sea tan bajo. Me pregunto si solo están contando los aportes de terceros individuales, excluyendo a las grandes organizaciones.
Viendo cuánta gente alza la voz diciendo que Google se adueñó de los navegadores web a través de Chrome/Chromium, pensé que habría más personas o empresas interesadas en que apareciera más rápido un competidor.
También existe la percepción de que no es realista crear desde cero un navegador completamente nuevo con un motor nuevo, así que quizá había un ambiente de “¿para qué patrocinarlo?”. Por suerte, Ladybird tal vez haya cambiado eso.
Además, algunas de las organizaciones que sí tienen ese dinero ya se rindieron. Microsoft, que hace unos años cambió Edge a Chromium, es un ejemplo. También creo que mucha gente preferiría donar a Firefox, la alternativa ya establecida a Chromium, aunque en la práctica es bastante difícil donar específicamente para el desarrollo de Firefox.
Parece que la mayoría de los que están aquí solo se queja del pésimo estado de la web, pero en realidad no hace nada.
Mostremos todos números contundentes.
La comunidad de HN podría superar fácilmente los 100 mil dólares en un día. Por fin hay un navegador nuevo por el que vale la pena entusiasmarse, así que hagámoslo.
Me parece interesante ver que Servo sigue vivo. Lo apoyo.
Aun así, me parece positivo que haya un esfuerzo serio por desarrollar navegadores y motores alternativos. El navegador Ladybird está mucho más lejos de ser un producto maduro, pero también es un proyecto cuya mera existencia da gusto ver.
Bajé los últimos cambios y, al mirar las pestañas nuevas, me sorprendió ver que ya hay soporte RTL. Hace unas semanas no estaba soportado.
El PR fusionado está aquí: https://github.com/servo/servo/pull/33148
¿No habían abandonado Servo?