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ó.
-
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ó.
-
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.
-
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ó.
-
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.
-
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.
nord
tramuntana
actiuEl 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
experimentalUna branca experimental de Servo. On van els canvis abans que ningú no en depengui.
est
llevant
vacantVacant. La rosa té quatre puntes i nosaltres tenim tres forks; aquesta la deixem buida en comptes d'omplir-la per simètria.
oest
ponent
retiratRetirat. 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
tramuntana
El nostre fork de Servo
Tres pedaços sobre l'upstream: un context de render fora de pantalla, un fallback a l'adaptador de maquinari per a WebGL en NVIDIA amb EGL, i l'exportació dma-buf. MPL-2.0, públic.
stylo
El nostre fork de Stylo
El motor de CSS. Un mirall net de l'upstream, sense cap pedaç nostre, que tramuntana consumeix com a dependència per path. MPL-2.0, públic.
bugs
A quin tracker
Tot el que tingui a veure amb com s'analitza, es maqueta, s'estila o s'executen els scripts d'una pàgina és un bug de Servo — reporta'l a l'upstream. La prova del cotó: carrega la mateixa URL amb Servo tot sol. Si es veu igual, no és cosa de rumb.