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.
renderizado
- Las páginas se renderizan con Servo, un WebView por pestaña
- La cobertura de sitios es exactamente la de Servo — GitHub, Discord y la mayor parte del CSS moderno se rompen
- El device-pixel-ratio de una pestaña se fija al construirla, así que un cambio de escala posterior estira la página
entrada
- Ratón, scroll y teclado reenviados a la página
- Cambios de cursor nativos al pasar por encima
- Sin IME
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
interfaz del navegador
- Barra de URL con atrás, adelante y recarga
- Títulos de página y favicons
- Un panel de DevTools que gobierna el propio servidor DevTools de Servo
- Una página de inicio rumb://
- Pantalla completa
- Sin marcadores, sin historial persistente
plataforma
- Ajustes persistidos en $XDG_CONFIG_HOME/rumb/settings.json
- 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
qué viene después
Condiciones, no fechas
Cada punto es una dirección ya decidida, con la única cosa que tiene que llegar primero. Un disparador se puede prometer con honestidad; un trimestre sería una conjetura.
-
redimensionado de ventana
Una página que conserva su escala cuando la de la ventana no.
A la espera de: un factor de escala que se pueda indicar a un WebView después de construirlo. Servo lo toma una sola vez, en la construcción.
-
IME
Entrada por composición, para escrituras que necesitan más de una pulsación por carácter.
A la espera de: un handler de texto en GPUI que sostenga un preedit, y las notificaciones IME de Servo en el delegate. rumb implementa cinco callbacks; ese no es uno de ellos.
-
historial y marcadores
Páginas que sobreviven al proceso, y algún sitio donde aparcar una URL.
A la espera de: un almacén append-only. rumb persiste un solo fichero, reescrito entero en cada cambio — forma equivocada para una fila por navegación.
-
aislamiento de sitios
Un proceso de render por origen, para que una pestaña que se cae solo se lleve a sí misma.
A la espera de: un camino de renderizador en sandbox en Servo, y un puente dma-buf entre procesos. Las pestañas llegaron en junio; esas dos, no.
-
macOS y Windows
rumb en algún sitio que no sea Linux.
A la espera de: una exportación de fotograma por plataforma en nuestro fork de Servo — IOSurface, o un handle DXGI compartido. GPUI no es el obstáculo.
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
activoNuestro fork de Servo. Lleva el contexto de render offscreen, el fallback de WebGL para NVIDIA/EGL y la exportación dma-buf.
sur
migjorn
experimentalUna rama experimental de Servo. Donde van los cambios antes de que nadie dependa de ellos.
este
llevant
sin asignarSin 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
retiradoRetirado. Se mantiene en el mapa porque un fork que se probó y se apartó forma parte del registro.
seguir
Dónde ocurre el trabajo
tramuntana
Nuestro fork de Servo
Tres parches sobre upstream: un contexto de render offscreen, un fallback de adaptador hardware para WebGL en NVIDIA con EGL, y la exportación dma-buf. MPL-2.0, público.
stylo
Nuestro fork de Stylo
El motor CSS. Un espejo limpio de upstream, sin parches nuestros, que tramuntana consume como dependencia por path. MPL-2.0, público.
bugs
En qué tracker
Todo lo relativo a cómo se parsea, se maqueta, se estiliza o se ejecuta el script de una página es un bug de Servo — repórtelo en upstream. La prueba rápida: cargue la misma URL en Servo por su cuenta. Si se ve igual, no es cosa de rumb.