
Kosmonautは、World Wide Webを旅するための手段として機能するために作成されたWebブラウザエンジンです。
星への道は急で危険です。しかし、私たちは恐れていません...宇宙飛行を止めることはできません。
- ユリ・ガガリン
これまでのところ、それほどではありません。現在、CSSの非常に限られたサブセットのみがサポートされているため、ほとんどのWebページは機能しません。ただし、非常に基本的なHTMLとCSSを考えると、Kosmonautは正しいものをレンダリングします。Firefoxのコードと比較して、Kosmonautのこのコードのレンダリングを参照してください。

Kosmonautができること、私が現在取り組んでいること、Todoリストの最前線に向かっていることの要約があります。
writing-modeとdirectionプロパティを備えた抽象ボックスレイアウトのサポート1 1:直交フロー(スペックを参照)はサポートされていません。一般的に(並列フローを含む)混合writing-modeサポートは現在正確です。単に* { writing-mode: <val> }を使用することをお勧めします。 ↩
Kosmonautは、ブラウザエンジン開発を学習することを目的として作成されました。しかし、このプロジェクトは今や少しの方法で届いており、私はコスモナウトを取り付けるために取り組むことができるニッチについて考えてきました。私はこの問題の潜在的なニッチについていくつかの考えを共有しました、そしてあなたのアイデアも聞きたいです。
Kosmonautは、GL-RSを介したOpenGLバインディング、ウィンドウ管理用のグルチン、OpenGLコンテキスト作成のためのGlutin、HTMLおよびCSS解析のためのServoのHTML5EREVERおよびCSSPARSER、およびその他のさまざまな補助ライブラリを使用して、錆びて構築されています。
ソースから構築するには:
apt-get installビット)。pacman -Syuビット)。cargo buildKosmonautでHTMLとCSSをレンダリングするには、ファイル(HTMLおよびオプションのCSS)のどちらかをパスします。
cargo run -- tests/websrc/rainbow-divs.html
またはURL:
cargo run -- https://twilco.github.io/assets/html/rainbow-divs.html
ユニットとレイアウトの両方のテストを実行するには、実行してください。
cargo test --all
レイアウトテストの場合、Kosmonautは、指定されたHTMLとCSSをボックスツリーに変換し、レイアウトし、テキストとして捨てます。これらのテキストスナップショットはInstaで検証されています。
レイアウトスナップショットを確認 /更新する必要がある場合は、次のような貨物Insta CLIツールをインストールすると役立ちます。
cargo install cargo-insta
Kosmonautは、Ref-Testsを実行することもできます。 REFテストは2つのHTMLファイルをレンダリングし、結果をピクセルごとに比較して、それらが同じであることを確認します。これは、速記がロングハンドに相当するものと同じようにレンダリングするテストなど、多くのシナリオで役立ちます。
Kosmonautの現在の実装は、サーボに大きく触発されており、時にはコードを直接使用しています。したがって、KosmonautはMozilla Public License 2.0でライセンスされています。
Kosmonautは、ロビンソンからもインスピレーションを得ています。ブラウザエンジンに関する素晴らしい一連の記事をMbrubeckに感謝します。
最後に、KosomonautのDomの実装はKuchikiから取られ、私たちのニーズに合わせてわずかに変更されました。