This article is more than 1 year old
Rusty revenant Servo returns to render once more
Mozilla gave it the boot, but the Linux Foundation Europe gave it the kiss of life instead
Open Source Summit A pleasant surprise from Open Source Summit is that Servo, the Rusty rendering engine that Mozilla was working on – until COVID, that is – is showing green shoots of renewed vigor.
Servo has been around for about a decade, so as experimental software projects go, it's a mature one. Igalia developer Manuel Rego presented a talk which reports that the project is back under active development, almost exactly three years after Mozilla terminated its Rust efforts and laid off the whole Rust team, including the Servo developers.
In November 2020, the Linux Foundation adopted Servo. However, the global operation has a lot of projects – we think we count 625 of them, but we could be wrong. Early this year, it handed the project over to its new European division, which has a slightly more manageable list of four, among them the OpenWallet foundation and the RISC-V Software Ecosystem. Now this also includes Servo.
Servo first appeared in tandem with Rust a full decade ago, and by 2016 Mozilla was discussing releasing a prototype. Previews started to appear that July, when as we put it: "If Google has the language of Go, Moz has the language of No: Rust."
The new engine is quite capable. It supports the now elderly WebGL API as well as its more modern successor WebGPU, which is much more powerful. For now, Rego said, it is mainly aimed at Windows, macOS, and desktop Linux, although the team is also testing mobile versions for both Android and more generic Linux, initially being tested on Pine64's PinePhone Pro hardware.
As well as being independent of any browser vendor, it is designed to be embeddable, memory-safe, modular, and parallel. The latter in particular benefits from the concurrency features provided by Rust. So far this year, the project has seen 1,682 commits from 77 developers, compared to just 523 from 22 people in 2022. A big change has been a new layout engine, replacing what is now called the legacy engine.
- GNU turns 40: Stallman's baby still not ready for prime time, but hey, there's cake
- Ubuntu's 'Mantic Minotaur' peeks out of the labyrinth
- These days you can teach old tech a bunch of new tricks
- Linux Mint Debian Edition 6 hits beta with reassuringly little drama
It still can't pass the Web Standards Project ACID tests, which way back in 2008 WebKit was the first browser to successfully handle, so there's clearly some way to go yet. Even so, Rego's presentation [PDF] illustrates the improvements it's made so far this year.
At least for now, its goals have been scaled back from being a full web browser in its own right. One of the targets, though, is as a web runtime that can be embedded into standalone local web apps. At the moment, Electron.js is the dominant tool in this space, but it's based on the Chromium engine, and is therefore another cog in the giant Google machine. However, for that to work, it also needs a JavaScript runtime, which is something that Servo doesn't include. For that, it depends on Mozilla's SpiderMonkey, which is also the basis of the GNOME desktop's GJS and accordingly Cinnamon's CJS too.
The SpiderMonkey code base is much less modern than Servo itself: it consists of about one half C++ and one quarter C, plus a sprinkling of Java. For Rustaceans, we suspect this counts as embarrassing legacy code. A Rust JavaScript runtime called Boa does exist, but it's still in the early stages of development.
There aren't many modern web-rendering engines in existence, and several of them are close relatives: Chrome's Blink is derived from Apple's WebKit, itself derived from KDE's KHTML. Firefox's Gecko is the principal independent one still standing. Since Mozilla canceled development of its successor, it's good to know that it's in active development again. Much of the world is held together by the web, and if that were entirely controlled by one company, it would be scary. ®