Servo (layout engine)

Servo

Screenshot of Servo rendering the Servo preview release page
Developer(s) Mozilla Research and Samsung
Preview release
Nightly build[1] / July 1, 2016 (2016-07-01)
Repository github.com/servo/servo
Written in Rust
Operating system Cross-platform
Type Layout engine
License MPL 2.0[2][3]
Website servo.org

Servo is an experimental web browser layout engine being developed by Mozilla Research, with Samsung porting it to Android and ARM processors.[4] The prototype seeks to create a highly parallel environment, in which many components (such as rendering, layout, HTML parsing, image decoding, etc.) are handled by fine-grained, isolated tasks. Source code for the project is written in the Rust programming language.

Servo provides a consistent API for hosting the engine within other software. It is designed to be compatible with Chromium Embedded Framework, an API used by Adobe and Valve Corporation to incorporate the Blink rendering engine within their own products. Allowing Servo to be dropped in as a replacement engine simplifies real-world testing.

Two significant components used by Servo are based on pre-existing C++ code from Mozilla. JavaScript support is provided by SpiderMonkey, and the 2D graphics library Azure is used to interface to OpenGL and Direct3D.[5]

Servo is named after Tom Servo, a robot from the television show Mystery Science Theater 3000.[6]

Features

Mozilla Servo showing the Acid2 test

Development on Servo is still at an early stage, however it can already render Wikipedia and GitHub and successfully passes the Acid2 test. It features innovations like a parallel layout algorithm and its own CSS3 and HTML5 parser implemented in Rust.[7][8]

Servo makes use of GPU acceleration to render web pages more quickly.[9] Servo is significantly faster than Gecko, Mozilla's other layout and rendering engine, as of November 2014.[10][11]

History

Mozilla Research's projects diagram featuring Servo

Development of Servo began in 2013. The very first commit on 8 February 2012 did not contain any source code.[12] The first rudimentary code commit occurred on 27 March 2012.[13]

On 3 April 2013 Mozilla announced that they and Samsung collaborate on Servo.[14][15]

As of the 1st of July 2016, a preview version is available for download. This is marked as 0.0.1 and is available for Mac and Linux.

Servo Project

Project Goals

The Servo project itself is officially a research project. The goal is to create a new layout engine using a modern programming language (Rust), and using parallelism and code safety, to achieve greater security and performance versus contemporary browsers.

Using Browser.HTML as a GUI, Servo can act as a standalone browser. This configuration of the browser was originally intended as a research project and proof-of-concept.[16]

Relationship to Firefox

Servo developers plan to merge parts of Servo into Gecko, thus lending the Servo project's advancements to Firefox.[17][18]

Chromium Embedded Framework

Servo intends to re-implement the Chromium Embedded Framework (CEF) API. This would allow Servo to be used as a drop-in replacement for Chromium in applications using CEF, and positions Servo as a competitor to Chromium in these cases.[19]

Project Structure

The Servo project is sponsored and maintained by Mozilla, with several Mozilla employees contributing a majority of code to the project. As an open-source, free software project, it is open to contributions from anyone.[20] Servo, including all community contributions, is licensed under the Mozilla Public License version 2.0.

See also

References

  1. "Servo Developer Preview Downloads". servo-builds.s3.amazonaws.com. Retrieved 2016-07-06.
  2. "Mozilla Foundation End-User Licensing Agreements". Mozilla. Retrieved 2016-07-06.
  3. "Mozilla Licensing Policies". mozilla.org. Retrieved 2013-03-26.
  4. "Samsung teams up with Mozilla to build browser engine for multicore machines". Ars Technica. 2013-04-03. Retrieved 2014-10-24.
  5. Willis, Nathan (2015-06-17). "Parallel page rendering with Mozilla Servo". LWN.net. Retrieved 2015-06-27.
  6. Eich, Brendan (Oct 13, 2012). "Add a new UI crate". Retrieved 2014-04-02.
  7. Moffitt, Jack (April 17, 2014). "Another Big Milestone for Servo—Acid2". Retrieved 2015-11-26.
  8. "Servo Continues Pushing Forward". May 1, 2015. Retrieved 2015-11-26.
  9. Bergstrom, Lars. "Mozilla's Project Quantum and Servo". mozilla.dev.servo - Google Groups. Retrieved 9 November 2016.
  10. Larabel, Michael. "Mozilla's Servo Engine Is Crazy Fast Compared To Gecko". Phoronix. Retrieved 10 May 2016.
  11. "Mozilla's Servo Is Whooping The Other Browsers In Performance". Phoronix. Retrieved 10 May 2016.
  12. "initial add · servo/servo@ce30d45".
  13. "Add some stubs and a makefile · servo/servo@783455f".
  14. "Mozilla and Samsung Collaborate on Next Generation Web Browser Engine".
  15. "Mozilla, Samsung team up on 'Servo' next-gen browser engine".
  16. "Design · servo/servo Wiki". GitHub. Retrieved 2016-10-28.
  17. "Quantum - MozillaWiki". wiki.mozilla.org. Retrieved 2016-10-28.
  18. Bryant, David (2016-10-27). "A Quantum Leap for the Web – Mozilla Tech". Medium. Retrieved 2016-10-28.
  19. Blumenkrantz, Mike; Bergstrom, Lars (2015-05-13). "Servo: The Embeddable Browser Engine - Samsung Open Source Group Blog". Samsung Open Source Group Blog. Retrieved 2016-10-28.
  20. Willis, Nathan (2015-06-17). "Parallel page rendering with Mozilla Servo". LWN.net. Retrieved 2016-10-30.
Wikimedia Commons has media related to Servo (layout engine).
This article is issued from Wikipedia - version of the 11/30/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.