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).