Blink: Chromium的新渲染引擎

來源:互聯網
上載者:User

編自http://www.chromium.org/blink

關於blink

 Google Chrome/Chromium 從創始至今一直使用 WebKit(WebCore) 作為 HTML/CSS 渲染引擎。WebKit 早先由 Apple 由 KHTML 項目 fork 出來,用於 Safari 瀏覽器的 Web 引擎。由於寬鬆的協議、輕量級的設計和便捷的應用程式內嵌 API,WebKit 逐漸層得流行起來,除了 Google Chrome/Chromium 和 Safari,它在移動終端( Symbian S60,Android,iOS)到 Toolkit 整合(GTK+, Qt4)
都有不錯的收穫。
  儘管上面一眾經常被統稱為 WebKit,實際上各自都使用了自己的 WebKit 分支或者編譯時間選項,使得最終的渲染結果也是存在一定的差異的。不過大體上 WebKit 社區內部還是比較和諧的,各個成員之間也為維持相容性作出了努力,直到 2010 年隨著 OS X Lion 一起面世的 WebKit2。由於 WebKit2 在 WebCore 層面上實現的進程隔離在一定程度上與 Google Chrome/Chromium 自己的沙箱設計存在衝突,故 Google Chrome/Chromium 一直停留在
WebKit,使用 Backport 的方式實現和主線 WebKit2 的相容。顯而易見這增加了 WebKit 和 Chromium 的複雜性,且在一定程度上影響了 Chromium 的架構移植工作。
  基於以上原因,Google 決定從 WebKit fork 出自己的 Blink Web 引擎:
  現階段以精簡內部結構為主,將刪除大約 7000 個檔案和 450 萬行 WebKit2 相容代碼。
  未來將著重改善 DOM 架構,將使用 JavaScript 實現 DOM。
  提升安全性,實現進程外 iframes 。
  對於今年初宣布放棄自有渲染引擎跟隨 Chromium 的 Opera 來說,其開發人員也立刻發布部落格公告 Opera 亦將切換至 Blink 引擎。 [1]GoogleBlink的橫空出世將使它和其他的WebKit瀏覽器開發商包括——蘋果、諾基亞和黑莓——更徹底地分道揚鑣。這一舉措意味著,現在有四大渲染引擎線上:WebKit、Blink、Trident 和Gecko。對於使用者來說,渲染引擎的差異化意味著他們在使用不同瀏覽器開啟同一網頁時將得到不同的結果——在行動裝置上尤其如此。Google並在一篇部落格文章裡寫道:“我們知道,新的渲染引擎的出現將對網頁瀏覽產生重大影響。”但Google補充說,它認為多個渲染引擎 “能夠推動創新,並增進整個網路生態系統的健康。”Google此舉有很大風險。根據NetMarketShare的資料,Chrome 瀏覽器目前是台式機最常用的瀏覽器之一。而根據Statcounter的統計,Chrome 瀏覽器目前是台式機最常用的瀏覽器。NetMarketShare統計的是訪客數量,而Statcounter只統計點擊量。如果Google的新戰略不成功,Chrome
瀏覽器的統治地位或將不保。Chrome 28開發版本的版本說明中還在使用WebKit,而最新的Chrome 28.0.1469.0中已經替換為Blink。Blink 的架構變化

當chrome項目開始時,我們的目標是儘可能少的改動Webkit,易於同webkit的代碼合并。

對於blink我們興奮於建立一個更大的架構靈活性的代碼,而無需擔心其他webkit的使用者。

我們計劃增加一個 “out-of-process
iframes”, 這將使chromium能夠分離頁面中一個獨立的部分到一個分離的沙箱進程。

實現這一點需要大量改動webkit關於iframe的處理。

另外一個例子,我們將修複網路代碼,讓它更小更快。目前webkit中的網路代碼受限於老的mac webkit API,而且不能改變。

chromium已經在其周邊工作了很多年,但是這些周邊的工作易碎而且bug很多。

在Blink中,我們將使用新的網路代碼,而無需強制和其他webkit使用者統一。

最後,我們甚至希望將整個DOM樹用javascipt來實現。這將使javascript訪問更加迅速。但是這需要大量重寫Webkit DOM部分的實現。這也是Webkit同時支援兩個javascript引擎更近困難。

我們考慮的其他的一些改變

  • 讓WebCore支援多進程曆史(當前,它假定同一個進程同步曆史)
  • 刪除Widget 樹(Mac Webkit1的一個約束)
  • 分離WebCore到不同模組
  • 將直接使用沙箱平台的API,替代目前WebCore/Platform
  • Establish a simpler, stricter tree-gardening system that does not require 2 full time engineers per day (這句看不懂,誰能幫我翻譯下?謝謝了)
  • 嘗試將DOM 移動到JS的堆上
  • 增加多核複用(如 html 解析,style 引擎和javascript解析)
  • 移除DOM中模糊不清的部分和因為向後相容而引起的模糊不清部分,或者移除不必要的相容性
  • 使用現代的、更快的tcmalloc(google編寫的多線程記憶體配置軟體,替代malloc)來貫穿 Mac chrome
  • 嘗試並行布局
  • 通過移除ScriptValue/ScriptState抽象來避免記憶體流失
  • 使用WebIDL來替代WebKitIDL,並移除Javascript綁定代碼
  • 通過DOM3 Events/[DOM]UI Events提上WebCore速度

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.