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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Image
  • 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