📌 项目地址:LadybirdBrowser/ladybird | ⭐ 64,920 颗星 | 🔧 C++ | 📜 未标注
这个项目是什么
Ladybird 是一个“真正独立”的网页浏览器。这里的“独立”不是指换个 Logo、改个皮肤,而是指它的渲染引擎、JavaScript 引擎、网络栈、图像解码、TLS 等关键组件,都是从零开始独立实现的,没有基于 Chromium、Firefox(Gecko)或 WebKit 等现有浏览器内核。
目前项目处于 pre-alpha 阶段,官方明确说“只适合开发者使用”。换句话说,它不是一个可以日常替代 Chrome 的浏览器,而是一个正在成长中的、完全自主的浏览器实现。
核心价值:打破浏览器引擎的“铁三角”
现代浏览器市场基本被三套引擎垄断:Chromium、Gecko、WebKit。任何新浏览器要么直接套用这三者之一,要么在其上做二次开发。Ladybird 则选择了最艰难的道路:全新实现一套浏览器所需的所有底层组件。
从 README 可以看到,它继承自 SerenityOS 的多个核心库,包括:
- LibWeb:Web 渲染引擎
- LibJS:JavaScript 引擎
- LibWasm:WebAssembly 实现
- LibCrypto/LibTLS:加密原语和 TLS
- LibHTTP:HTTP/1.1 客户端
- LibGfx:2D 图形、图像解码与渲染
- LibMedia:音视频播放
- LibCore:事件循环和 OS 抽象层
- LibIPC:进程间通信
这意味着从解析 HTML 到运行 JS,从加载 HTTPS 到渲染图片,每一个环节都是这套代码自己控制的。它的价值不在于现在能用,而在于它为 Web 平台提供了一个不依赖任何现有巨头的实现样本。
架构:多进程 + 沙箱化渲染
Ladybird 采用多进程架构,包括:
- 主 UI 进程
- 多个 WebContent 渲染进程
- 一个 ImageDecoder 进程
- 一个 RequestServer 进程
这样做的好处是:图像解码和网络请求都在独立进程中完成,即使遭遇恶意内容,也不会直接威胁到浏览器主进程。每个标签页拥有独立的渲染进程,并与系统其他部分隔离。
这种设计与 Chrome 的“沙箱化标签页”思路类似,但 Ladybird 是从一套全新的代码库中实现了这些机制,而非复用 Chromium 的代码。
如何构建和运行?
README 中明确指出,构建方法参见官方文档的 build instructions。它支持 Linux、macOS、Windows(通过 WSL2)以及许多其他 *NIX 系统。
在 README 中没有直接给出具体的构建命令,因此如果你想要实际编译运行,需要前往该文档获取依赖安装、编译步骤和运行方式。由于项目仍在快速迭代,建议始终参考当前仓库的官方文档,而不是依赖任何第三方教程。
和同类工具的区别
市面上也有其他“新浏览器”项目,比如 Flow Browser 等,但大多数要么基于 Chromium 引擎,要么只重写了 UI 层。Ladybird 的独特性在于:
- 不基于任何现有浏览器渲染引擎:连 JavaScript 引擎都是自己的(LibJS),而非 V8 或 SpiderMonkey。
- 从操作系统层面积累组件:它从 SerenityOS 中继承了网络、加密、图形、媒体等基础库,相当于把一套操作系统里的浏览器核心组件单独拿出来做成跨平台浏览器。
- 同时实现 Wasm:LibWasm 提供了 WebAssembly 支持,这意味着它不只是“能显示网页”,而是把现代 Web 的运行时能力也纳入独立实现范围。
需要注意的事项
- 当前只能供开发者使用,不是稳定产品,网页兼容性、性能都有大量缺失。
- 如果你想贡献代码,需要先阅读 Getting involved with Ladybird 和贡献指南。
- 项目使用 2-clause BSD 许可证,允许自由使用,但如果你要参与,请遵守 GitHub 上的 issue 政策和报告指南。
总结:Ladybird 是一个罕见的、试图从零打造完整现代浏览器的工程实践。它的意义不在于今天能取代谁,而在于证明了浏览器不再只能是三巨头的衍生品。对于对浏览器原理感兴趣或想深入参与底层 Web 实现的开发者来说,这是一个值得关注的活项目。