Category: Servo

  • December 21, 2015 - Josh Matthews, Lars Bergstrom and Mike Blumenkrantz

    Adding Community-Driven Wayland Support to Servo

    It’s been some time since the last Servo article on the OSG blog, but this has no relation to the speed at which the browser engine’s development has been progressing. In the last post, the Offscreen Rendering (OSR) integration status was explored, culminating in both some code snippets as well as videos of an embedded browser application. That post can be considered the foundation for the recently-tweeted screenshot of Servo running with Wayland support. The Technical Hurdle Before delving into the technical details of Wayland integration, it’s important to know the background of Servo’s rendering stack. In order to provide support for a broad range of platforms, Servo uses the rust-layers library to create hardware-accelerated drawing abstractions for Android, Linux, MacOS, and Windows; this enables the browser engine to use a unified API for all its internal compositor painting. Under Linux, rust-layers uses GLX, the OpenGL extension for X11, to […]

    Read More
  • June 1, 2015 - Lars Bergstrom and Mike Blumenkrantz

    Servo: The Countdown To Your Next Browser Continues

    Huge progress is being made on the Servo browser engine, and development continues moving forward at full speed. Now, it’s even possible to write applications that embed Servo to display web content, and these applications can drop Chromium in at any point, with very few changes, in order to have a more functional product while Servo continues its heavy development. This article will take a look at the new code that provides this detection ability to toggle functionality based on the running engine, in addition to the new improvements that have been introduced to Servo’s rendering and embedding capabilities. Detecting Servo to Work in Harmony With Chromium Detection of the engine is made possible by a symbol added into Servo’s embedding library, which can be detected in C with a bit of code like this:

    This returns the address of the symbol and sets a boolean variable “servo” based […]

    Read More
  • May 13, 2015 - Lars Bergstrom and Mike Blumenkrantz

    Servo: The Embeddable Browser Engine

    Embedding, in the context of this article, is the process of hosting a web rendering engine inside another application. This engine displays content exactly as a regular web browser would, but allows the application author to customize the user’s experience further than what is possible in the typical display of a normal website. Development time can be reduced by keeping part of the content of an application in web-related languages due to the relative ease of writing web content and the widespread knowledge of HTML5. The technique of embedding web content is used in many places by many companies, including: Popular Linux applications such as Rhythmbox, Kate, Eclipse, and Evolution have support for embedding web content. Microsoft Entourage and Apple Mail for Mac OS both utilize embedding for displaying web content and parts of the UI. Adobe products, including their constantly-running updater, embed full web runtimes. Valve’s Steam client also […]

    Read More
  • May 1, 2015 - Adenilson Cavalcanti and Lars Bergstrom

    Servo Continues Pushing Forward

    Servo is a new prototype web browser layout engine written in Rust that was launched by Mozilla in 2012 with a new architecture to achieve high parallelism on components like layout and painting. It has been progressing at an amazing pace, with over 120 CSS properties currently supported, and work is ongoing to implement the remaining properties. For a full list of the current set of CSS properties with initial support in Servo, check out the Google Docs spreadsheet servo team is using to track development. The current supported properties allow Servo to be mostly operational on static sites like Wikipedia and GitHub, with a surprisingly small code footprint. It has only about 126K lines of Rust code, and the Rust compiler and libraries are about 360K lines. For comparison, in 2014 Blink had about 700K lines of C++ code, and WebKit had around 1.3M lines, including platform specific code. […]

    Read More
  • April 22, 2015 - Lars Bergstrom and Mike Blumenkrantz

    Servo: Building a High-Performance, Safe Web Browser

    Servo is a new web rendering engine that was launched by Mozilla in 2012 and is now receiving significant contributions from both Samsung and independent community members. Our goal is to produce an embeddable engine that can be used in both browsers and applications to make the web platform faster and safer, and bring it to more devices. We started this project to address fundamental limitations of current browser engines. First, the C family of programming languages doesn’t ensure safe use of memory, which leads to the majority of all zero-day browser security bugs. Second, current engines were originally designed for use on a PC, and are challenging to scale down to low memory and low power devices. Finally, as the web platform has evolved, the tightly-coupled design of current browser engines has made it difficult to provide performance guarantees, such as 60 fps screen updates. Memory Safety Investigations have […]

    Read More