Gecko
Gecko是一套自由及開放原始碼、以C++編寫的排版引擎,目前為Mozilla Firefox網頁瀏覽器以及Mozilla Thunderbird電子郵件客戶端等Mozilla基金會相關產品所使用。Gecko原本由網景通訊公司開發,現在則由Mozilla基金會維護。
開發者 | Mozilla基金會/Mozilla公司 |
---|---|
目前版本 |
|
原始碼庫 | |
程式語言 | C++、JavaScript、Rust |
作業系統 | 跨平台 |
類型 | 排版引擎 |
許可協定 | MPL 2.0[2] |
網站 | developer |
這套排版引擎提供了一個豐富的應用程式介面以供互聯網相關的應用程式使用,如網頁瀏覽器、HTML編輯器、客戶端及伺服器等[3]。Gecko最初的主要用於網景瀏覽器和後繼的Firefox瀏覽器,但現在已有很多其他軟件在使用這個排版引擎。Gecko是跨平台的,能在Microsoft Windows、Linux和Mac OS X等主流作業系統上運行。
發展史
編輯1997年,網景領航員在程式的執行速度、對W3C標準的支援度等方面的表現已經比不上它的主要競爭對手Internet Explorer。於是,網景收購了DigitalStyle,開始研發下一代的排版引擎,並期望把新的排版引擎應用於下一版本的網景瀏覽器上。
1998年初,網景發佈個新的排版引擎Raptor,以開放原始碼的方式發放於網絡上。後來因為商標問題,Raptor改名為NGLayout,意味Next Generation Layout。而最後NGLayout被網景市場部門重新命名為Gecko。但由於Gecko為網景公司的商標,因此Mozilla.org(網景成立的非正式組織,Mozilla基金會前身)一度以NGLayout來稱呼這個新的排版引擎[4]。
1998年10月,網景宣佈下一版的瀏覽器將會使用這個排版引擎,而該瀏覽器亦需要被大幅度重寫。對於致力推動網絡標準的人,這是一個令人振奮的消息。然而,對於網景開發者而言,這是一個長達六個月的大工程[5],而他們在Netscape 5.0上(包括舊有的Mariner排版引擎)所花的心血亦被白白浪費,結果導致採用Gecko引擎的Netscape 6.0在2000年11月才被正式發佈。
隨着Gecko排版引擎的開發,越來越多應用程式開始使用它。美國線上作為網景的母公司,終於在CompuServe 7.0和AOL for Mac OS X上使用了Gecko。可惜,Windows版的AOL瀏覽器始終沒有使用過Gecko。
2003年7月15日,美國線上解散了網景公司,大部分網景開發者被解僱。而Mozilla基金會亦在當天成立,繼續推動着Gecko的發展。直到今天,Gecko排版引擎繼續由Mozilla員工和社群所維護和發展。
2016年10月,Mozilla宣佈了Quantum計劃,涵蓋了多個軟件開發工作,目標是「構建下一代Firefox瀏覽器引擎」,其中包括從Servo實驗性計劃中提取對Gecko的許多改進[6][7]。2017年11月發佈的Firefox 57是啟用來自Servo計劃中重要組件的最初版本,這些改進包括CSS和GPU渲染元件的效能提升,未來版本中,將逐步從Servo將其他組件合併到Gecko中[8][9]。
標準支援
編輯- CSS Level 2.1(支援部份CSS 3)[10]
- DOM Level 1和2(支援部份DOM 3)
- HTML 4.01(支援部分HTML5)
- JavaScript 1.8.5(完全支援ECMAScript 5.1[11])由SpiderMonkey實現
- MathML
- RDF
- XForms(藉由官方的擴充套件)
- XHTML 1.0
- XML 1.0
- XSLT和XPath由TransforMiiX實現
- SVG(支援部份SVG 1.1)[12][13]
Gecko將會繼續支援更多的網絡標準,例如:XForms和SVG。Mozilla基金會身為WHATWG組織的成員,Gecko和其他排版引擎將會率先支援WHATWG所定下的規格,例如:可供繪畫的Canvas。
Gecko的繪圖引擎在1.9版有重大的改變。它使用跨平台的Cairo繪圖引擎來取代作業平台的繪圖介面,這個改變將會令Gecko擁有更佳的繪圖能力[14][15]。
Firefox於2012年開始使用C++所編寫的Azure引擎取代Cairo[16][17]。Azure這個名字是對早期網景創始人吉姆·克拉克和他早期在SGI貢獻的致敬[18]。
使用
編輯Gecko主要用於網頁瀏覽器,最早使用於Netscape 6和Mozilla Suite(後來改名為SeaMonkey)。Mozilla還在其它瀏覽器衍生產品使用它,如Firefox和Firefox流動版。Mozilla也在其Thunderbird電子郵件客戶端使用。
使用Gecko的其他網頁瀏覽器包括Airfox、Waterfox、K-Meleon、Lunascape、Pale Moon、Firefox Portable、Conkeror、Classilla、TenFourFox、HP Secure Web Browser,Oxygen和Sylera(用於流動裝置)。
其他使用Gecko的產品包括Conkeror、Oxygen、Nightingale、Instantbird和Google的圖片管理軟件Picasa(用於Linux)[19]。
DevHelp是用於API檔案的GTK+/GNOME瀏覽器,使用Gecko來渲染檔案[20]。
Gecko也被Sugar用於OLPC XO-1電腦[21]。
歷史上使用Gecko的產品包括Songbird、Epiphany(現在稱為GNOME Web,使用WebKitGTK+)、Sunbird,以及其他網頁瀏覽器,包括Swiftfox、Flock、Galeon、Camino、Minimo、Beonex Communicator、Kazehakase和MicroB。
在Netscape時代,開發技術和管理決策的不足導致了Gecko軟件膨脹[22][23][24]。因此,蘋果公司於2001年放棄了Gecko,選擇KHTML分支來為其Safari瀏覽器建構了WebKit引擎[23][24]。然而,到了2008年,Mozilla已經解決了一些軟件膨脹問題,讓Gecko效能大幅度改善[25]。
參考資料
編輯- ^ Firefox 106.0.5, See All New Features, Updates and Fixes.
- ^ 存档副本. [2013-09-02]. (原始內容存檔於2021-02-02).
- ^ Embedding Mozilla. Mozilla.org. 2012-10-25 [2012-10-31]. (原始內容存檔於2011-06-04).
- ^ nglayout project: identity crisis. Mozilla.org. [2012-10-31]. (原始內容存檔於2011-06-29).
- ^ Castro, Jorge O. Ars Technica interviews Scott Collins. Arstechnica.com. 2004-06-16 [2012-10-31]. (原始內容存檔於2008-10-25).
- ^ Quantum. Mozilla Wiki. [2017-04-20]. (原始內容存檔於2019-05-20).
- ^ Cimpanu, Catalin. Mozilla Announces Quantum, a New Browser Engine for Firefox. softpedia. [2016-11-07]. (原始內容存檔於2021-01-01).
- ^ Firefox 57.0, See All New Features, Updates and Fixes. Mozilla. [2018-10-30]. (原始內容存檔於2017-11-14).
- ^ Introducing the New Firefox: Firefox Quantum – The Mozilla Blog. The Mozilla Blog. [2018-10-30]. (原始內容存檔於2018-06-27).
- ^ Mozilla CSS support chart. Developer.mozilla.org. 2012-08-04 [2012-10-31]. (原始內容存檔於2014-04-05).
- ^ ECMAScript 5 support in Mozilla. Developer.mozilla.org. 2013-11-14 [2013-12-02]. (原始內容存檔於2014-04-05).
- ^ The SVG font, color profile, animation, view, and cursor modules are yet to be implemented and the filter and text modules are only partially implemented. The extensibility module is also implemented but is currently disabled
- ^ Mozilla SVG Status. Mozilla.org. 2012-08-25 [2012-10-31]. (原始內容存檔於2011-02-24).
- ^ Glimpse Of The Future. [2019-11-17]. (原始內容存檔於2020-09-30).
- ^ Mozilla2:GFXEvolution. [2015-08-31]. (原始內容存檔於2020-10-31).
- ^ Parfeni, Lucian. Firefox Now Uses the Azure Graphics API for Canvas on All Platforms. [2019-11-17]. (原始內容存檔於2020-08-07).
- ^ Azure Replacing Cairo In Mozilla Firefox - Phoronix. [2019-11-17]. (原始內容存檔於2021-01-26).
- ^ Introducing the Azure project - JOEDREW!. [2019-11-17]. 原始內容存檔於2013-12-02.
- ^ Picasa 3.0 for Linux. Google. [2008-12-28]. (原始內容存檔於2009-01-07).
- ^ Official package devhelp (0.19.1-6 and others) on Debian Lenny. Debian Project. [2009-08-12]. (原始內容存檔於2020-04-08).
- ^ Martens, China. One Laptop Per Child readies 'Sugar' interface. IDG News Service. 2007-01-03 [2007-12-28]. (原始內容存檔於2008-01-18).
- ^ Jorge O. Castro. Ars Technica sits down with Scott Collins from Mozilla.org. Ars Technica. 2004-06-15 [2017-02-16]. (原始內容存檔於2020-11-30).
- ^ 23.0 23.1 Paul Festa. Apple snub stings Mozilla. CNET Networks. 2003-01-14 [2017-02-16]. (原始內容存檔於2009-09-06).
- ^ 24.0 24.1 David Baron. Thursday 2003-01-09. David Baron's weblog. self-published. 2003-01-09 [2017-02-16]. (原始內容存檔於2009-09-06).
- ^ Ryan Paul. Why Mozilla is committed to Gecko as WebKit popularity grows. 2008-09-09 [2017-02-16]. (原始內容存檔於2020-11-12).