
Kosmonaut é um mecanismo de navegador da web criado para servir como veículo para sua jornada pela World Wide Web.
O caminho para as estrelas é íngreme e perigoso. Mas não estamos com medo ... os vôos espaciais não podem ser parados.
- Yuri Gagarin
Até agora, não muito. Atualmente, apenas um subconjunto muito limitado de CSS é suportado, portanto, a maioria das páginas da Web não funcionará. No entanto, dado o HTML e o CSS muito básicos, Kosmonaut renderiza as coisas certas - veja a renderização deste código por Kosmonaut, em comparação com a do Firefox:

Aqui está um resumo das coisas que Kosmonaut pode fazer, coisas em que estou trabalhando atualmente e coisas que estão na frente da lista de tarefas.
writing-mode e propriedades direction 1: Fluxos ortogonais (ver Spec) não suportados. O suporte writing-mode misto em geral (incluindo fluxos paralelos) é atualmente duvidoso-eu recomendo simplesmente usar * { writing-mode: <val> } . ↩
Kosmonaut foi criado com a intenção de aprender o desenvolvimento de motores do navegador. No entanto, o projeto já chegou um pouco, e eu tenho pensado em nichos em que posso trabalhar para encaixar Kosmonaut. Compartilhei algumas reflexões sobre nichos em potencial nesta edição e adoraria ouvir suas idéias também.
O Kosmonaut é construído com ferrugem usando ligações OpenGL via GL-RS, glutina para gerenciamento de janelas e criação de contexto OpenGL, HTML5EVer do servo e CSSParser para análise HTML e CSS e várias outras bibliotecas auxiliares.
Para construir a partir da fonte:
apt-get install ).pacman -Syu ).cargo buildPara renderizar HTML e CSS com Kosmonaut, passe arquivos (HTML e Opcionalmente CSS):
cargo run -- tests/websrc/rainbow-divs.html
ou um URL:
cargo run -- https://twilco.github.io/assets/html/rainbow-divs.html
Para executar os testes, unidade e layout, execute:
cargo test --all
Para testes de layout, Kosmonaut transforma o HTML e o CSS fornecido em uma árvore de caixa, o deita e o despeja como texto. Esses instantâneos de texto são verificados com Insta.
Se você precisar revisar / atualizar os instantâneos de layout, é útil instalar a ferramenta de carga da CLI de carga Insta como assim:
cargo install cargo-insta
Kosmonaut também pode executar testes de ref. Os testes de ref renderizam dois arquivos HTML e compara o resultado do pixel-by-pixel, garantindo que eles sejam iguais. Isso é útil em muitos cenários, como testes que taquigrafos renderizam da mesma forma que seus equivalentes e longa.
A implementação atual de Kosmonaut é fortemente inspirada pelo servo, às vezes pegando código diretamente dele. Assim, o Kosmonaut é licenciado com a Mozilla Public License 2.0.
Kosmonaut também se inspira em Robinson. Agradecemos a Mbrubeck por sua grande série de artigos sobre motores do navegador.
Finalmente, a implementação do DOM de Kosomonaut foi retirada de Kuchiki e foi ligeiramente modificada para atender às nossas necessidades.