Ladybird跨平臺(tái) Web 瀏覽器
Ladybird 瀏覽器于 2022 年 7 月 4 日誕生,最初 Ladybird 的開發(fā)是作為 SerenityOS 系統(tǒng)的 “LibWeb” 瀏覽器引擎調(diào)試工具,隨后作者 Andreas Kling 想給它構(gòu)建一個(gè)簡單的 GUI 。
隨著 Ladybird 的不斷完善,兩個(gè)月后,Andreas 發(fā)現(xiàn)自己完成了一個(gè) Web 瀏覽器的大部分開發(fā)工作, Ladybird 已經(jīng)算是一個(gè)跨平臺(tái)的 Web 瀏覽器。
LibWeb 和 LibJS 都是新的引擎。作者有 Qt 和 WebKit 項(xiàng)目的開發(fā)歷史,所以從中得到了一些靈??感,但所有的代碼都是新的,瀏覽器和庫用則 C++ 編寫。
這是當(dāng)前瀏覽器堆棧的粗略細(xì)分:
- Ladybird : 選項(xiàng)卡式瀏覽器 GUI 應(yīng)用程序
- LibWeb:Web 引擎,多種標(biāo)準(zhǔn):HTML、DOM、CSS、SVG,……
- LibJS:ECMAScript 語言、運(yùn)行時(shí)庫、垃圾收集器
- LibGfx:2D 圖形、文本渲染、圖像格式(PNG、JPG、GIF,...)
- LibRegex:正則表達(dá)式引擎
- LibXML : XML 解析器
- LibWasm:WebAssembly 解析器和解釋器
- LibUnicode:Unicode 支持庫
- LibTextCodec : 文本編碼轉(zhuǎn)換庫
- LibMarkdown : Markdown 解析器
- LibCore:其他支持功能(I/O、日期時(shí)間、MIME 數(shù)據(jù)……)
- Qt:跨平臺(tái) GUI 和網(wǎng)絡(luò)
LibWeb 有一個(gè) Platform 層,Ladybird 為事件循環(huán)、計(jì)時(shí)器、系統(tǒng)字體設(shè)置等注入 Qt 支持代碼。目前 Ladybird 使用 Qt 進(jìn)行網(wǎng)絡(luò)任務(wù),因?yàn)樵?SerenityOS 之外還沒有多進(jìn)程 RequestServer 系統(tǒng)。同樣,Ladybird 目前是單進(jìn)程的,而 SerenityOS 瀏覽器是每個(gè)選項(xiàng)卡的進(jìn)程。
構(gòu)建條件
需要 Qt6 開發(fā)包和支持 c++20 的編譯器。在 Debian/Ubuntu 上,所需的軟件包包括但不限于:
sudo apt install build-essential cmake libgl1-mesa-dev ninja-build qt6-base-dev qt6-tools-dev-tools
在 Arch Linux/Manjaro 上:
sudo pacman -S base-devel cmake libgl ninja qt6-base qt6-tools qt6-wayland
對(duì)于 c++ 編譯器,至少需要 gcc-11 或 clang-13 才能支持 c++20。
對(duì)于 Ubuntu 20.04 及更高版本,請(qǐng)確保 Qt6 Wayland 軟件包可用:
sudo apt install qt6-wayland
