Mozilla’s next-generation web browser Servo is making progress

[2012-06-27] browser, computers, servo, mozilla
(Ad, please don’t block)
Servo is Mozilla’s next-generation web browser [1], with a focus on parallelism and security. It’s not much more than a technology demo and will remain so for a while, but it’s making progress nonetheless. Quoting Patrick Walton in a thread on Google Groups:
As requested, here's the state of Servo as it stands.

We have a GitHub repository here: github.com/mozilla/servo

Currently what we have builds on Mac and Linux. There's no fundamental reason why it won't work on Windows, but none of us have put in the effort necessary to bring it up. The sole platform ("widget" backend in Gecko terminology) is SDL, but there's an in-process planned move to GLUT [...] Neither of these backends are intended to be long-term solutions; for production we will want true platform-native backends for each platform.
...
Where possible, we reuse existing C and C++ libraries. This doesn't preclude the possibility of rewriting the functionality provided by these libraries in safe and parallel Rust code, but it helps us get off the ground. At the moment, these libraries are:

  • HarfBuzz (and its dependency Ragel), for text shaping.
  • Azure, for 2D graphics.
  • SDL (soon to be replaced with GLUT), as an abstraction layer over the native windowing system.
  • stb_image, for image decoding. This is a very simple image library, likely insecure and missing support for progressive JPEG, but it's extremely small and simple, devoid of dependencies, and in the public domain.
  • SpiderMonkey, for JavaScript support.
  • libuv, for networking. This is a library closely associated with node.js, which abstracts over the asynchronous I/O mechanisms on each platform. Most notably, it works on Windows, unlike nearly all of the alternatives.
Our focus so far has been on laying the proper groundwork for a scalable rendering engine. In particular, we've been focused on decomposing the rendering pipeline into tasks (lightweight Rust threads), as this is the part that's most critical to get right and the most difficult to retrofit onto existing architectures. Right now, Servo has several tasks in the rendering pipeline. (When we get tab/window support, each of these tasks will be replicated for each origin.)
Related blog post:
  1. Servo: a vision for the future of Firefox