close

作者 | 閆園園
近期,SerenityOS 的發起者 Andreas Kling 在博客中宣布了他最新開源跨平台瀏覽器項目 Ladybird,Ladybird 瀏覽器基於 SerenityOS 的 LibWeb 和 LibJS 引擎,LibWeb 始於 2019 年開發,其 JavaScript 引擎 LibJS 則於 2020 年開發。

Andreas 寫道,他和他的團隊不再只是想開發一個基於 Linux 的瀏覽器,而是想開發一個跨平台的瀏覽器,「建造一些有朝一日可能對更多人有用的東西」。根據文章末尾的常見問題解答,Ladybird 已經在 Linux、macOS、Windows 和 Android 上運行。

瀏覽器的誕生
Ladybird 瀏覽器誕生於 7 月 4 日,最初是作為 LibWeb 瀏覽器引擎調試工具,隨後 Andreas 決定繼續推進並為它構建一個簡單的 GUI 。然而兩個月後,Andreas 發現自己使用 Ladybird 完成了一個 Web 瀏覽器的大部分開發工作,這也讓他意識到可以將 SerenityOS 的瀏覽器引擎」調整為「跨平台瀏覽器引擎」。
基本架構

從時間上來看,LibWeb 和 LibJS 都是比較新的引擎。並且 Andreas 有開發 Qt 和 WebKit 項目的經歷,從中也吸取了一部分經驗。「但所有的代碼都是新的」,他在博文中表示,瀏覽器和庫都是用 C++ 編寫,並且在 2-clause BSD 許可下是免費的。「沒有人可以購買該項目,但歡迎志願者。畢竟,SerenityOS 不是一個人的表演。這項工作只有在 SerenityOS 社區的支持下才能實現,該社區已經發展到數百名貢獻者,並正在幫助開發操作系統和瀏覽器。」

當前瀏覽器主要組件:

Ladybird : 選項卡式瀏覽器 GUI 應用程序

LibWeb:Web 引擎,多種標準:HTML、DOM、CSS、SVG,……

LibJS:ECMAScript 語言、運行時庫、垃圾收集器LibGfx:2D 圖形、文本渲染、圖像格式(PNG、JPG、GIF,...)

LibRegex:正則表達式引擎

LibXML : XML 解析器

LibWasm:WebAssembly 解析器和解釋器

LibUnicode:Unicode 支持庫

LibTextCodec : 文本編碼轉換庫

LibMarkdown : Markdown 解析器

LibCore:其他支持功能(I/O、日期時間、MIME 數據……)

Qt:跨平台 GUI 和網絡

LibWeb 有一個 Platform 層,Ladybird 在這裡為事件循環、計時器、系統字體設置等注入 Qt 支持代碼。Ladybird 使用 Qt 進行聯網,因為多進程的 RequestServer 系統在 SerenityOS 之外還沒有使用。同時,Ladybird 是單進程的,「所有這些都是暫時的,並且會隨着時間而改變。」

仍處於開發初期

Andreas 坦言目前該瀏覽器仍處於開發初期,許多功能要麼根本無法使用,要麼存在錯誤,甚至還需要很長時間才能真正投入日常使用。「我們處於『讓它工作,讓它變得更好,讓它更快』中的『讓它工作』階段中,因此,我們現階段更多地還是在關注正確性和功能支持,而不是優化。」

Ladybird 已經通過了經典的 Acid3 標準測試,它涵蓋了基本的 CSS 布局特性和各種 DOM/HTML API。但該測試並未涵蓋最新 Web 標準及功能,如 CSS flexbox、CSS Gird 等。這意味着,即便在 Ladybird 中瀏覽最新網站的穩定性正在提高,但仍然會出現很多布局和兼容性問題。

例如用 Ladybird 瀏覽器瀏覽 Reddit 頁面:

寫在最後

傳統觀點認為,如果沒有巨大的資本支出和人力、時間成本的付出,從頭開始構建一個新的瀏覽器引擎幾乎是不可能的,然而,Andreas 正在做的事情似乎反駁了這一觀點。

同時 Ladybird 的出現,也增加了瀏覽器和瀏覽器引擎的多樣性,不少開發者表示對此項目的期待,並希望此項目和其他瀏覽器項目能夠成功,「這似乎是一項令人難以置信的艱巨任務,但他們似乎確實有樂觀的前景。」

本周薦文

京東零售平台:前端組件資源共享與中心化管理實踐

微軟為Vue.js推出Power BI組件;谷歌CEO暗示將裁員;微信輸入法體積524MB;React Native 0.7發布

React 老矣,我建議大家用用別的框架

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()