pre-alfa · linux · no és el navegador de cada dia

Un navegador web experimental en Rust.

Servo renderitza la pàgina. Una porció del GPUI de Zed, vendoritzada dins del repositori, dibuixa tot el que l'envolta. Entre tots dos, un pont sense còpies que passa un fotograma d'un context de GPU a l'altre sense tocar mai la CPU.

on som

Què funciona i què no

Llegeix això abans que res més de la pàgina. rumb encara és prou verd perquè la segona columna sigui la meitat honesta.

renderització

  • Les pàgines es renderitzen amb Servo, un WebView per pestanya
  • La cobertura de webs és exactament la de Servo — GitHub, Discord i la major part del CSS modern no funcionen
  • El device-pixel-ratio d'una pestanya es fixa en construir-la, així que un canvi d'escala posterior estira la pàgina

entrada

  • Ratolí, scroll i teclat reenviats a la pàgina
  • Canvis de cursor natius en passar-hi per sobre
  • Sense IME

pestanyes

  • Grups de pestanyes amb colors personalitzats, i pestanyes fixades
  • Arrossegar per reordenar pestanyes i grups sencers
  • Barra de pestanyes a qualsevol dels quatre costats de la finestra
  • Descart de pestanyes — una pestanya adormida allibera el seu WebView

interfície del navegador

  • Barra d'adreces amb enrere, endavant i recàrrega
  • Títols de pàgina i favicons
  • Un panell de DevTools que fa anar el servidor DevTools del mateix Servo
  • Una pàgina d'inici rumb://
  • Pantalla completa
  • Sense marcadors, sense historial persistent

plataforma

  • Configuració desada a $XDG_CONFIG_HOME/rumb/settings.json
  • Sense aïllament de llocs — quan s'incrusta, Servo s'executa dins del mateix procés
  • Només Linux

estat a data de 2026-08-06

què ve ara

Condicions, no dates

Cada punt és una direcció ja decidida, amb l'única cosa que ha d'arribar primer. Un disparador es pot prometre amb honestedat; un trimestre seria una suposició.

  1. redimensionament de finestra

    Una pàgina que manté l'escala quan la de la finestra no.

    A l'espera de: un factor d'escala que es pugui indicar a un WebView després de construir-lo. Servo el pren una sola vegada, en la construcció.

  2. IME

    Entrada per composició, per a escriptures que necessiten més d'una pulsació per caràcter.

    A l'espera de: un handler de text a GPUI que sostingui un preedit, i les notificacions IME de Servo al delegate. rumb implementa cinc callbacks; aquesta no és cap d'elles.

  3. historial i marcadors

    Pàgines que sobreviuen al procés, i algun lloc on aparcar una URL.

    A l'espera de: un magatzem append-only. rumb persisteix un sol fitxer, reescrit sencer a cada canvi — forma equivocada per a una fila per navegació.

  4. aïllament de llocs

    Un procés de renderitzat per origen, perquè una pestanya que peti només s'endugui ella mateixa.

    A l'espera de: un camí de renderitzador en sandbox a Servo, i un pont dma-buf entre processos. Les pestanyes van arribar el juny; aquestes dues, no.

  5. macOS i Windows

    rumb en algun lloc que no sigui Linux.

    A l'espera de: una exportació de fotograma per plataforma al nostre fork de Servo — IOSurface, o un handle DXGI compartit. GPUI no és l'obstacle.

com està fet

Dos motors, un sol fotograma

Servo no dibuixa a la finestra. Un pedaç del nostre fork li proporciona un context de render fora de pantalla, construït a partir del handle de display de l'amfitrió, de manera que pinta en el seu propi framebuffer mentre GPUI conserva la propietat del drawable que el compositor veu de debò.

Cada fotograma que Servo dona per llest s'exporta com un handle dma-buf — un descriptor de fitxer per a la memòria de la GPU, més un fence que indica quan les escriptures ja s'han completat. El backend wgpu de GPUI importa aquest handle com una textura a través del HAL de Vulkan i el dibuixa com qualsevol altre sprite.

La primera versió no feia res d'això. Llegia el framebuffer de tornada cap a la CPU, intercanviava el vermell i el blau i pujava el resultat com una imatge a cada fotograma. Funcionava, i tenia la forma que no tocava: una anada i tornada sencera per la memòria del sistema per a uns píxels que no havien sortit mai de la targeta.

Res d'això no és secret. El disseny viu a la documentació de tramuntana, en obert, perquè Servo i Stylo són MPL-2.0 i els nostres pedaços toquen els seus fitxers. El shell —les pestanyes, la interfície, el pont amb el compositor del nostre costat— és propietari.

els vents

Quatre vents, tres forks

El nom ve de la mar, i els forks també: cadascun porta el nom d'un vent. La rosa és el mapa: què existeix, què s'està provant i què s'ha desat.

Image
  • nord

    tramuntana

    actiu

    El nostre fork de Servo. Porta el context de render fora de pantalla, el fallback de WebGL per a NVIDIA/EGL i l'exportació dma-buf.

  • sud

    migjorn

    experimental

    Una branca experimental de Servo. On van els canvis abans que ningú no en depengui.

  • est

    llevant

    vacant

    Vacant. La rosa té quatre puntes i nosaltres tenim tres forks; aquesta la deixem buida en comptes d'omplir-la per simètria.

  • oest

    ponent

    retirat

    Retirat. El mantenim al mapa perquè un fork que s'ha provat i s'ha desat també forma part del registre.

segueix

On es fa la feina