This Week In Servo 29
2015-04-02 What's up with Servo for the weeks of 12 Mar- 2 April 2015
In the past three weeks, we merged 170 pull requests.
Servo has another browser chrome! Say hello to servo-shell,
an interface written with HTML, leveraging the
mozbrowser
API.
Try it out! At the most recent meeting, we discussed making this the default UI for ./mach run
.
html5ever celebrated its first birthday! Keegan published a project update with some plans for the future. h5e’s newest sibling is tendril, a multitalented string type!
If your favorite website looks wrong in Servo, you can help us figure out why! Glenn wrote up a detailed guide on getting started working on Servo’s layout code, with some useful tips for minimizing test cases. We are also working on automatic minimization via “abstract reftests”.
Notable additions
- We landed a Rust upgrade
- Glenn implemented a subset of the mozbrowser APIs and used these to make servo-shell work. This required a ton of iframe fixes.
- Patrick implemented CSS transitions
- Keegan pushed a rebased, remixed version of Clark’s zero-copy html5ever patch. With this PR, html5ever can locate tags and attributes in an input stream at 80 MB/s while keeping whole-process memory consumption to a few MB.
- Nicholas added support for fine-grained memory reporting, along with a tree-like prettified output
- Chris Paris landed
innerHTML
getter and setter implementations that use html5ever. - Mátyás added stroke and
arc()
support to canvas, along with many other APIs - Diego implemented the
drawImage
API for canvas - Matt McCoy added support for HTTP compression
- Yodalee implemented
TextEncoder
- Sebastian implemented
StorageEvent
- Zack added a shim for
localStorage
- Ms2ger implemented a safer replacement for
Vec<Root<T>>
- Manishearth added support for simple userscripts
- Jack fixed a memory leak in the flowtree
- hsavala made console.log messages appear in remote Firefox consoles
- Tetsuharu added support for unrestricted floating point WebIDL values
- Thiago implemented partial support for interacting with worker globals via remote devtools
New contributors
- Brandon DeRosier
- Chris Double
- Connor Jennings
- Daniel Le
- Edward Cho
- Eric Hegnes
- Falco Hirschenberger
- Himaja
- Kyle Cesare
- Martin Schröder
- Md. Enzam Hossain
- Mikko Vanhatalo
- Ryan Leavengood
- Sebastian N. Fernandez
- Tim Cuthbertson
Screenshots
A visualization of parallel layout on servo-shell + /r/rust:
The colored boxes indicate which CPU core performed layout for each document node. The box
around the active tab spinner is askew, because the spinner is a still image styled with
transform: rotate(...)
.
Meetings
We had meetings on March
16th and March
30th. We discussed
servo-shell, getting the PR queue under control, and restricting non-standard
APIs like <iframe mozbrowser>
. We also talked about the status of Servo on
Android; there are now “nightly” APK builds but they don’t work
yet.
We’ve had a lot of discussions recently about the project’s goals and plans for Q2. After months of landing new features at an incredible rate, Q2 is going to focus more on details: performance improvements, fixing compatibility bugs, and paying down technical debt. We’d like to find websites / create demos that showcase Servo’s advantages in a way that’s relevant to users.
We’re also going to work on security. This means finding and fixing issues, but also documenting what we don’t fix yet. Josh is going to upgrade our ancient version of SpiderMonkey, which is important for security and for the future of Servo in general.