I talked to a room of Gecko platform engineers about Servo today. I drew
a diagram of the most recent architecture plans (constellation; multiple
pipelines of script (with copy-on-write DOM planned), layout, renderer,
and compositer; script tasks with multiple pages per origin;
cross-origin frames linked to separate pipelines; resource and image
cache tasks) and took any questions that people had to the best of my
ability. Here are the questions for which I had no good answers; please
discuss them!
* Are there viability criteria? How much better (performance-wise) than
other engines does Servo have to be considered worth continued investment?
* What are the expectations of parallel wins relative to Gecko? Where
are the wins, and how much?
* What's the timeline for determining viability?
* What is the plan to handle cycles between the DOM and JS?
* Do same-origin pages that can't communicate synchronously need to be
on the same script task? (scenario: two tabs pointing at google.com
properties)
* What's the status of allocating DOM objects on the JS heap and/or
using the JS GC for the DOM task?
* Are we ignoring the major known issue on the web (synchronous layout
operations) in favour of fixing the less important ones? (mentioned
running GC during sync layout; audience not particularly impressed)
* Could we "freeze" background pages (on a language level?) and unload
them in order to conserve memory and avoid extra processing work, with
the expectation of resurrecting them later as needed?
* How can we handle individual task failure, such as layout/rendering?
Could we recover by spawning a new task, or do we need to create a whole
pipeline from scratch?
* Is abortable layout being considered for short-circuiting in-progress
operations when new results are needed?
* If compositing ends up happening no sooner than Gecko (ie. we're still
a sequential pipeline starting from layout), aren't we wasting effort
being parallel (more cores, more work, same amount of time)?
* Do we have data showing how many security bugs we could be avoiding in
Servo in comparison to Gecko? Is the security benefit truly as valuable
if expected performance benefits don't pan out?
* For cases with lots of synchronous layout, could there be a way to run
layout and script sequentially, same-task, such that no async
message-passing is necessary?
* Can we have more traffic on dev-servo for people who want to follow
what's going on? (one suggestion: posting links to meeting notes every week)
Cheers,
Josh
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo