Vaev:一款新型輕量級 HTML/CSS 引擎引發關於瀏覽器技術選擇的爭論

BigGo Editorial Team
Vaev:一款新型輕量級 HTML/CSS 引擎引發關於瀏覽器技術選擇的爭論

網路瀏覽器領域長期以來一直由少數幾個主要參與者主導,因此任何新進入者都值得關注。Vaev 是一個自稱閃電般快速、輕量級且安全的 HTML/CSS 引擎,它最近的出現在開發者社群中引發了關於瀏覽器技術未來、安全考慮因素以及網頁渲染替代方法可行性的重要討論。

Vaev 專案及其目的

Vaev 由四名貢獻者團隊開發,目前支援網路標準的一個子集,包括大多數顯示型別(不包括網格)、標準 CSS 層疊行為、使用 @page 規則的分頁、列印為 PDF 輸出,以及各種 CSS 單位,包括百分比、var() 和 calc()。雖然其網路功能目前僅限於 HTTP 和檔案協議,但該專案代表了從頭開始建立新瀏覽器引擎的雄心勃勃的嘗試。

該專案的主要開發者之一透露,Vaev 除了作為學習練習外,還有一個特定的實際應用。它正在被開發為 paper-muncher 的核心,這是一個 PDF 渲染引擎,旨在替代 Odoo 中的 wkhtmltopdf,Odoo 是一個流行的開源商業軟體套件。這個專注的用例有助於解釋該專案對列印為 PDF 功能和分頁特性的重視。

Vaev 當前支援的功能:

  • 大多數顯示型別(不包括網格)
  • 標準 CSS 層疊行為
  • 使用 @page 規則的分頁
  • 列印為 PDF 輸出
  • 所有 CSS 單位,包括百分比、var() 和 calc()
  • 載入 HTML 和 XHTML 文件
  • 基本網路功能(僅支援 http:// 和 file://)

專案貢獻者:

  • Lou!
  • LuneMercier
  • Paulo Medeiros
  • Sleepy Monax

主要用途:

  • "paper-muncher" PDF 渲染引擎的核心
  • 旨在替代 Odoo 使用的 wkhtmltopdf

語言選擇爭議

圍繞 Vaev 的最激烈討論可能是關於其使用 C++ 實現的問題。許多評論者質疑這一選擇,認為瀏覽器本質上是設計好的 RCE(遠端程式碼執行)漏洞,而 C++ 在歷史上一直是瀏覽器程式碼庫中眾多安全問題的來源。

「我很好奇為什麼選擇 C++ 來實現這個?瀏覽器眾所周知很難保證安全,它們實際上就是被設計成 RCE 漏洞!保護 C++ 二進位制檔案很困難,近年來已被眾多組織和公司指出是許多類別安全漏洞的根本原因。」

這一選擇的支持者指出,開發者可能擁有豐富的 C++ 經驗,而編寫瀏覽器引擎需要深厚的語言熟練度。一些人還注意到,該程式碼庫展示了高質量的現代 C++ 實踐,使用智慧指標和 RAII 模式,可以減輕許多傳統 C++ 安全問題。

Vaev 團隊已經回應了安全問題,指出他們正在探索 Clang 中的編譯器強制安全功能,包括生命週期檢查屬性和在指定塊外限制指標使用——這些方法提供了一些在 Rust 等語言中發現的安全優勢。

Smolweb 討論

Vaev 的出現重新點燃了關於標準化網路技術最小子集的反覆討論。許多開發者表示有興趣定義一個 smolweb 標準——一個一致的、有限的網路標準子集,替代瀏覽器可以實現,而無需實現完整的網路相容性。

對這個假設標準的建議範圍從採用較舊的規範(如 HTML 4.01 和 CSS 2.1)到專注於現代但必要的功能(如 CSS Grid)同時消除不必要的複雜性。一些人提議使用電子郵件 HTML 相容性作為基線,而其他人則建議從 Markdown 渲染所需的最低要求開始。

這一討論突顯了人們對更簡單、更專注的網路技術的日益增長的需求,這些技術可以實現更大的瀏覽器多樣性,而無需目前與主流瀏覽器競爭所需的巨大工程資源。

挑戰和未來前景

構建一個新的瀏覽器引擎是一項非常複雜的工作,許多評論者指出,瀏覽器實際上已經成為了自己的作業系統。即使是基本功能所需的程式碼量(Vaev 已經包含了許多 500 多行的檔案)也表明為什麼很少有新的瀏覽器引擎出現。

雖然 Vaev 的近期未來似乎專注於文件渲染和 PDF 生成而非通用網路瀏覽,但開發者並未排除最終支援 JavaScript 和更全面的網路功能。該專案的架構從一開始就被設計為跨平臺的,不像一些其他替代瀏覽器專案最初是作為特定作業系統的實現。

隨著網路技術變得越來越複雜,像 Vaev 這樣的專案提供了對替代方法和專業用例的寶貴探索。無論是專注於文件渲染、最小網路標準還是安全改進,這些實驗都為關於網路技術和瀏覽器多樣性的未來方向的更廣泛對話做出了貢獻。

參考:skift-org/vaev