pre-alfa · linux · no es para el día a día

Un navegador web experimental en Rust.

Servo renderiza la página. Una porción vendorizada del GPUI de Zed dibuja todo lo que la rodea. Entre ambos, un puente zero-copy que entrega un frame de un contexto GPU al otro sin pasar nunca por la CPU.

dónde está

Qué funciona y qué no

Lea esto antes que cualquier otra cosa de la página. rumb está en una fase lo bastante temprana como para que la segunda columna sea la mitad honesta.

  • Las páginas se renderizan con Servo, un WebView por pestaña
  • Pestañas, grupos de pestañas con colores personalizados y fijado
  • Arrastrar para reordenar pestañas y grupos enteros
  • Barra de pestañas en cualquiera de los cuatro bordes de la ventana
  • Descarte de pestañas — una pestaña dormida suelta su WebView
  • Barra de URL con atrás, adelante y recarga
  • Ratón, scroll y teclado reenviados a la página
  • Cambios de cursor nativos al pasar por encima
  • Pantalla completa
  • Títulos de página y favicons
  • Un panel de DevTools que gobierna el propio servidor DevTools de Servo
  • Ajustes persistidos en $XDG_CONFIG_HOME/rumb/settings.json
  • Una página de inicio rumb://
  • La cobertura de sitios es exactamente la de Servo — GitHub, Discord y la mayor parte del CSS moderno se rompen
  • El redimensionado dinámico está bloqueado por un bug de surfman/Servo
  • Sin IME
  • Sin marcadores, sin historial persistente
  • Sin aislamiento de sitios — Servo se ejecuta en el mismo proceso para las aplicaciones que lo embeben
  • Solo Linux

estado a fecha de 2026-08-06

cómo está construido

Dos motores, un frame

Servo no dibuja en la ventana. Un parche de nuestro fork le da un contexto de render offscreen construido a partir del handle de display del host, de modo que pinta en su propio framebuffer mientras GPUI conserva la propiedad del drawable que el compositor ve realmente.

Cada frame que Servo da por listo se exporta como un handle dma-buf — un descriptor de fichero de la memoria de la GPU, más un fence que indica cuándo se han completado las escrituras. El backend wgpu de GPUI importa ese handle como textura a través del HAL de Vulkan y lo dibuja como cualquier otro sprite.

La primera versión no hacía nada de eso. Leía el framebuffer de vuelta a la CPU, intercambiaba rojo y azul y subía el resultado como imagen en cada uno de los frames. Funcionaba, y tenía la forma equivocada: un viaje de ida y vuelta completo por la memoria del sistema para unos píxeles que nunca salían de la tarjeta.

Nada de esto es secreto. El diseño vive en la documentación de tramuntana, en abierto, porque Servo y Stylo son MPL-2.0 y nuestros parches tocan sus ficheros. El shell — las pestañas, el chrome, el puente del compositor de nuestro lado — es propietario.

los vientos

Cuatro puntos, tres forks

«Rumb» es el término náutico catalán para el rumbo de la brújula. Cada fork lleva el nombre de un viento, y la rosa es el mapa: lo que existe, lo que se está probando y lo que se ha apartado.

  • norte

    tramuntana

    activo

    Nuestro fork de Servo. Lleva el contexto de render offscreen, el fallback de WebGL para NVIDIA/EGL y la exportación dma-buf.

  • sur

    migjorn

    experimental

    Una rama experimental de Servo. Donde van los cambios antes de que nadie dependa de ellos.

  • este

    llevant

    sin asignar

    Sin asignar. La rosa tiene cuatro puntos y nosotros tenemos tres forks; este se queda vacío en lugar de rellenarlo por simetría.

  • oeste

    ponent

    retirado

    Retirado. Se mantiene en el mapa porque un fork que se probó y se apartó forma parte del registro.

seguir

Dónde ocurre el trabajo