
Kosmonaut es un motor de navegador web creado para servir como vehículo para su viaje a través de la red mundial.
El camino a las estrellas es empinado y peligroso. Pero no tenemos miedo ... los vuelos espaciales no se pueden detener.
- Yuri Gagarin
Hasta ahora, no mucho. Actualmente, solo se admite un subconjunto muy limitado de CSS, por lo que la mayoría de las páginas web no funcionarán. Sin embargo, dado HTML y CSS muy básicos, Kosmonaut representa las cosas correctas: ver la representación de Kosmonaut de este código, en comparación con la de Firefox:

Aquí hay un resumen de las cosas que Kosmonaut puede hacer, cosas en las que estoy trabajando actualmente y cosas que están hacia el frente de la lista de TODO.
writing-mode y direction 1: Flujos ortogonales (ver especificación) no admitidos. El soporte writing-mode mixto en general (incluidos los flujos paralelos) es actualmente dudoso; recomiendo simplemente usar * { writing-mode: <val> } . ↩
Kosmonaut fue creado con la intención de aprender el desarrollo del motor del navegador. Sin embargo, el proyecto ha llegado un poco de camino ahora, y he estado pensando en nichos en los que puedo trabajar para ajustar a Kosmonaut. He compartido algunas ideas sobre posibles nichos en este tema, y me encantaría escuchar sus ideas también.
Kosmonaut está construido con óxido utilizando enlaces OpenGL a través de GL-RS, Glutin for Window Management y OpenGL Context Creation, Servo's HTML5ever y CSSParser para HTML y CSS Anygresing, y varias otras bibliotecas auxiliares.
Para construir desde la fuente:
apt-get install ).pacman -Syu ).cargo buildPara representar HTML y CSS con Kosmonaut, ya sea pase archivos (HTML y opcionalmente CSS):
cargo run -- tests/websrc/rainbow-divs.html
o una URL:
cargo run -- https://twilco.github.io/assets/html/rainbow-divs.html
Para ejecutar las pruebas, tanto la unidad como el diseño, ejecute:
cargo test --all
Para las pruebas de diseño, Kosmonaut transforma el HTML y CSS dados en un árbol de caja, lo pone y lo descarga como texto. Esas instantáneas de texto se verifican con Insta.
Si necesita revisar / actualizar las instantáneas de diseño, es útil instalar la herramienta CARGO INSTA CLI de la misma manera:
cargo install cargo-insta
Kosmonaut también puede ejecutar pruebas de Ref. Las pruebas de ref renderizan dos archivos HTML y compara el resultado píxel por píxel, asegurando que sean lo mismo. Esto es útil en muchos escenarios, como las pruebas que las taquigrafía representan lo mismo que sus equivalentes largos.
La implementación actual de Kosmonaut está fuertemente inspirada en Servo, a veces tomando código directamente de él. Por lo tanto, Kosmonaut tiene licencia con la Licencia Pública de Mozilla 2.0.
Kosmonaut también se inspira en Robinson. Gracias a MBrubeck por su gran serie de artículos sobre motores de navegador.
Finalmente, la implementación DOM de Kosomonaut fue tomada de Kuchiki y ha sido ligeramente modificada para satisfacer nuestras necesidades.