库 / SDK
LadybirdBrowser/ladybird avatar
LadybirdBrowser/ladybird

Ladybird:一个不依赖主流浏览器代码的独立浏览器引擎

Ladybird 是一款真正独立的网页浏览器,基于自研的、遵循网络标准的引擎,采用多进程架构并为标签页提供沙箱隔离;目前处于 pre-alpha 阶段,面向开发者。

66,186 个 Star3,156 个 ForkC++BSD-2-Clause

秒懂

它是什么?
Ladybird 是一个从零开始构建的浏览器,基于 SerenityOS 的库组件,采用多进程架构。当前处于 pre-alpha 状态,仅适合开发者评估。本文分析其架构、构建方式、局限性与替代方案。
适合谁用?
Ladybird 适合对浏览器引擎内部机制感兴趣的开发者,以及愿意参与早期开源项目的人。不适合普通用户,也不适合需要稳定浏览体验的工程团队。
能商用吗?
可以。BSD-2-Clause 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 C++(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题

主流浏览器引擎被两家公司主导:Chromium 的 Blink 和 Firefox 的 Gecko。Ladybird 试图打破这种局面,它不借用 Firefox 或 Chrome 的代码,而是从零开始实现一个基于 Web 标准的引擎。README 明确说这是 truly independent web browser。这个项目面向的是开发者,不是普通用户。它的目标不是马上可用,而是提供一个完全独立的浏览器实现,让 Web 平台不被单一实现绑架。如果你关心浏览器多样性,或者想研究浏览器内部机制,Ladybird 是一个切入点。

多进程架构与安全设计

Ladybird 采用多进程架构,包含一个 UI 主进程、多个 WebContent 渲染进程、一个 ImageDecoder 进程和一个 RequestServer 进程。每个标签页拥有独立的渲染进程,并且与系统其余部分隔离。图像解码和网络连接被移出渲染进程,这是为了降低恶意内容造成的破坏。这种设计与 Chrome 的沙箱思路相似,但实现完全不同。值得注意的是,这些进程间的通信基于 LibIPC,这是 SerenityOS 项目的一部分。架构上,它把高风险操作分散到独立进程,减少了攻击面。

继承自 SerenityOS 的组件

Ladybird 的核心库来自 SerenityOS 项目。LibWeb 负责渲染,LibJS 是 JavaScript 引擎,LibWasm 处理 WebAssembly,LibCrypto 和 LibTLS 提供加密与 TLS,LibHTTP 实现 HTTP/1.1 客户端,LibGfx 处理 2D 图形和图像解码,LibUnicode 支持 Unicode 和区域设置,LibMedia 负责音视频播放,LibCore 提供事件循环和操作系统抽象,LibIPC 则处理进程间通信。这些库都是独立实现的,没有使用现成的浏览器引擎代码。这意味着 Ladybird 的代码基础是统一的,但也意味着它需要维护大量底层组件。

构建与运行

构建 Ladybird 需要参考 Documentation/BuildInstructionsLadybird.md。README 提到它支持 Linux、macOS、Windows(通过 WSL2)以及其他类 Unix 系统。由于没有提供具体命令,你需要查阅该文档。通常这类项目会使用 CMake 或类似工具,但这里没有给出确切的构建步骤。建议先克隆仓库,然后阅读构建文档。当前版本是 pre-alpha,只适合开发者,运行后可能会遇到大量兼容性问题。

当前限制与失败模式

Ladybird 明确标注为 pre-alpha,仅适合开发者使用。这意味着它无法作为日常浏览器。网络栈只支持 HTTP/1.1,没有提及 HTTP/2 或 HTTP/3。JavaScript 引擎 LibJS 仍在开发中,可能无法运行现代 Web 应用。图像解码和网络在独立进程中,虽然增强了安全性,但增加了进程间通信的复杂度,可能导致性能开销。另一个限制是,它继承了 SerenityOS 的库,这些库最初为操作系统设计,可能不完全适合浏览器场景。如果你需要稳定的浏览体验,Ladybird 目前不是合适的选择。

替代方案与差异

与 Ladybird 形成对比的是 Servo,它是 Mozilla 开发的独立浏览器引擎,用 Rust 编写,也采用多进程架构。Servo 已经发展多年,对 Web 标准的支持更成熟,并且有 Firefox 的某些组件作为参考。Ladybird 使用 C++,而 Servo 使用 Rust,这影响内存安全和开发效率。另一个替代方案是直接使用 Firefox 或 Chromium 的引擎,但那就失去了独立性的意义。Ladybird 的独特之处在于完全不依赖现有引擎,而 Servo 虽然独立,但有些部分借鉴了 Firefox。如果你追求纯粹的独立实现,Ladybird 更彻底。

维护与许可

Ladybird 采用 BSD-2-Clause 许可证,这是宽松许可证,允许商用和修改,但需保留版权声明。项目目前活跃,但还没有发布正式版本。维护成本较高,因为它需要维护从渲染到网络、从加密到媒体的完整浏览器栈。社区通过 Discord 进行讨论,贡献指南在 CONTRIBUTING.md 中。如果你打算采用,需要评估自己是否有能力跟进频繁的代码变更。pre-alpha 阶段意味着 API 和架构可能随时变化,不适合作为长期依赖。

编辑结论

Ladybird 适合对浏览器引擎内部机制感兴趣的开发者,以及愿意参与早期开源项目的人。不适合普通用户,也不适合需要稳定浏览体验的工程团队。当前版本无法处理日常网页,网络栈仅支持 HTTP/1.1,JavaScript 引擎仍在追赶标准。若你考虑采用,先验证它能否编译通过,并检查 LibWeb 对目标网站的渲染结果。在 pre-alpha 阶段,任何生产用途都不现实。若你只是研究浏览器架构,Ladybird 的代码结构比 Chromium 更易读,值得花时间阅读。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
社区笔记

社区笔记