概要
Ladybird は、Web 標準に基づく新しいエンジンを採用した、真に独立したウェブブラウザです。マルチプロセスアーキテクチャを採用しており、レンダリングプロセスはサンドボックスで分離され、画像のデコードやネットワークリクエストはすべてプロセス外で行われます。また、SerenityOS の LibWeb、LibJS などのコンポーネントを継承しています。現在はプレ Alpha 段階にあり、Linux、macOS、Windows(WSL2) などのプラットフォームをサポートしています。
README プレビュー
# Ladybird\n\n[Ladybird](https://ladybird.org) is a truly independent web browser, using a novel engine based on web standards.\n\n> [!IMPORTANT]\n> Ladybird is in a pre-alpha state, and only suitable for use by developers\n>\n\n## Features\n\nWe aim to build a complete, usable browser for the modern web.\n\nLadybird uses a multi-process architecture with a main UI process, several WebContent renderer processes,\nan ImageDecoder process, and a RequestServer process.\n\nImage decoding and network connections are done out of process to be more robust against malicious content.\nEach tab has its own renderer process, which is sandboxed from the rest of the system.\n\nAt the moment, many core library support components are inherited from SerenityOS:\n\n- LibWeb: Web rendering engine\n- LibJS: JavaScript engine\n- LibWasm: WebAssembly implementation\n- LibCrypto/LibTLS: Cryptography primitives and Transport Layer Security\n- LibHTTP: HTTP/1.1 client\n- LibGfx: 2D Graphics Library, Image Decoding and Rendering\n- LibUnicode: Unicode and locale support\n- LibMedia: Audio and video playback\n- LibCore: Event loop, OS abstraction layer\n- LibIPC: Inter-process communication\n\n## How do I build and run this?\n\nSee [build instructions](Documentation/BuildInstructionsLadybird.md) for information on how to build Ladybird.\n\nLadybird runs on Linux, macOS, Windows (with WSL2), and many other \*Nixes.\n\n## How do I read the documentation?\n\nCode-related documentation can be found in the [documentation](Documentation/) folder.\n\n## Get in touch and participate!\n\nJoin [our Discord server](https://discord.gg/nvfjVJ4Svh) to participate in issue and development discussions.\n\nPlease read [Getting involved with Ladybird](Documentation/GettingStartedContributing.md) if you're new to Ladybird and want to help.\n\nBefore opening an issue, please see the [issue policy](CONTRIBUTING.md#issue-policy) and the [detailed issue-reporting guidelines](ISSUES.md).\n\nThe project participatio
FAQ (5)
トラブル対応「database disk image is malformed」というエラーで Ladybird の RequestServer が起動時にクラッシュする問題を修正するにはどうすればよいですか?
HTTPディスクキャッシュデータベースが破損しています。Ladybirdを終了してから、キャッシュディレクトリを削除して再起動してください:
rm -rf ~/.cache/Ladybird
カスタムのキャッシュ場所を設定している場合は、代わりに $XDG_CACHE_HOME/Ladybird を削除してください。Ladybirdはキャッシュを自動的に再構築します。~/.config/Ladybird を削除する必要はありません。そこにはディスクキャッシュではなく設定が保存されているためです。
新しいビルドのコード修正により、RequestServerがクラッシュする代わりに CacheIndex の初期化エラーが伝播されるようになりましたが、破損したキャッシュをクリアすることは依然として当面の回避策です。
トラブル対応Pi-holeまたはカスタムDNSサーバーを使用している場合、なぜLadybirdは最初のページ読み込み後に "Unable to resolve host" と表示するのですか?
これは、Ladybirdのキャッシュに残っている期限切れのDNSアドレスレコードが原因です。TTLが非常に短い場合、親のCNAMEレコードがまだキャッシュに残っている間にA/AAAAレコードが期限切れになることがあり、そのため後のルックアップではCNAMEをたどるものの、使用可能なIPアドレスが見つかりません。修正は、「Forget about fully expired RRs」というタイトルのLibDNS/RequestServerの変更です(issue #12215を修正)。その修正を含むビルドにLadybirdを更新してリビルドしてください。たとえば git pull && ./Meta/ladybird.py run を実行します。一時的な回避策としては、about:settings → Network に移動し、Custom DNS からシステム/デフォルトのリゾルバに切り替えて、Ladybirdを再起動してください。
トラブル対応Intl.NumberFormat.formatRangeToParts が空の配列を受け取った際に ICU.h:104 で発生する Ladybird の SIGILL を修正するにはどうすればよいですか?
このクラッシュは Intl.NumberFormat().formatRangeToParts(0, []) によって発生します。Ladybird は空の配列を ICU の10進数変換に渡し、ICU は U_DECIMAL_NUMBER_SYNTAX_ERROR を返します。その結果、ICU.h:104 の verify_icu_success() が JavaScript レベルの完了を返す代わりに SIGILL でアボートします。
修正方法: PR「LibUnicode+LibJS: Throw instead of aborting on Intl input ICU refuses.」を含むバージョンへ Ladybird を更新/再ビルドしてください。このパッチにより、無効な ICU 入力によってネイティブランタイムがクラッシュするのを防ぎます。
影響を受けるビルドでの回避策: Number([]) は 0 となるため、API を呼び出す前に両方の端点を JavaScript の数値に変換してください。
const nf = new Intl.NumberFormat();
nf.formatRangeToParts(Number(0), Number([]));
または、ラッパー内で変換する場合:
function safeFormatRangeToParts(nf, start, end) {
return nf.formatRangeToParts(Number(start), Number(end));
}
影響を受ける Ladybird バージョンに、配列やその他の非プリミティブな端点を直接渡さないでください。
トラブル対応DevTools が切断されたときに `VERIFY(m_devtools_client_count > 0)` で Ladybird がクラッシュする問題を修正する方法
このクラッシュは、DevToolsクライアントの状態がタブの現在のページと同期しなくなる可能性があるために発生します。特に、mail.google.comのようなページにDevToolsをアタッチする場合に起こりやすくなります。この問題は、DevToolsの状態をタブのページと同期させ続けるLibWebView/LibWebの変更によって修正されています。その修正を含むリリースまたはビルドにLadybirdをアップグレードしてください。Ladybird 1.0での回避策としては、影響を受けるタブにDevToolsをアタッチしたり繰り返し切断したりすることを避け、クラッシュ後にLadybirdを再起動してください。
トラブル対応Ladybirdで長いYouTubeコメントの「Read more」ボタンが表示されないのはなぜですか?
これはLadybirdの古い -webkit-line-clamp 実装が原因です。クランプされたコンテンツがスクロール可能なオーバーフローに含まれていなかったため、scrollHeight が誤って clientHeight と同じ値を返していました。YouTubeはこれらの値を使って省略されたコメントを検出しているため、展開するものがないと判断し、「Read more」ボタンを非表示にしていました。コンソールに表示されるBattery Status APIのエラーは無関係です。修正はLibWebの変更「Keep clamped -webkit-line-clamp content in scrollable overflow」であり、これはFirefoxと同様に、非表示になったクランプされたコンテンツをレイアウトして測定します。そのPRを含むビルドにLadybirdを更新してリビルドしてください。一時的な回避策として、Firefoxまたは他のブラウザで動画/コメントを開いてください。