
Servo – A parallel browser engine in Rust by Mozilla - snird
https://github.com/mozilla/servo
======
agumonkey
Just recently passed Acid 1
[https://twitter.com/metajack/status/371041675633647616](https://twitter.com/metajack/status/371041675633647616)

~~~
dbaupp
Note that the master branch is actually still 1 patch from passing:
[https://github.com/mozilla/servo/pull/764](https://github.com/mozilla/servo/pull/764).

------
doe88
I would be interested in knowing how they accomplish such a huge undertaking
given the fact Rust seems [1] to be a language in constant evolution right
now. Do they target a fixed subset of Rust (is it even possible) or do they
make continual updates to their code? (disclaimer I know nothing about Rust
other than having read some of the previous posts linked from HN)

[1] as others HN readers have commented in related threads about Rust

~~~
Cowen
Servo right now is more of a Rust reference project than a serious engine.
They use the most up-to-date features of Rust and don't worry about having to
rewrite the code with the next version because they know they're working with
a somewhat unstable language spec.

The real value of Servo right now isn't really as a browser engine, but
instead its value as the largest software project currently written in Rust.
When you're creating a programming language, you always want to know what it
will be like to build large projects in that language, and that's exactly the
experience being gained right now with Servo.

~~~
tbe
Knowing what it's like to write an HTML rendering engine in Rust is especially
useful since the purpose of this language in the first place is to write the
next generation Mozilla engine.

------
illektr1k
I will be the first to admit to having a soft-spot for any program that will
quote H.P. Lovecraft on abort/error.

[https://github.com/mozilla/rust/blob/master/src/libstd/rt/ut...](https://github.com/mozilla/rust/blob/master/src/libstd/rt/util.rs)

~~~
bjz_
brson likes scatter those around. Rust's new runtime has gave me a few of when
it first landed. Unfortunately I haven't seen any in quite a while. :(

(I really hope some spoil-sport doesn't get rid of them)

------
erikpukinskis
It's funny to take a moment and notice that a cutting edge new project comes
with build instructions for _Mac_ first and then _Debian_. It wasn't so long
ago that if you weren't on Windows or RedHat you were going have to figure it
out yourself.

~~~
bjz_
And unfortunately Windows support is one of Rust's weak spots. Which will be
sorted in the future of course, but it needs some tenacious souls to donate
some time if it's going to happen any sooner. Game devs will need this in
particular, and they are probably going to be one of Rust's primary groups of
users. (in fact, anecdotally it feels like they already are)

~~~
weavie
How is it weaker? I've just started running it on windows this week. Needs to
run under MinGw, but other than that I'm not aware of any probs. Am just
starting on it though, so it would be interesting to know.

~~~
eslaught
I don't know if this is still true, but at one point in time you needed to
have installed the exact same version of MinGW that Rust itself was compiled
with. That meant, for example, that you couldn't rebuild Rust with a newer
version of MinGW.

Also, and this isn't really a Rust problem so much as an LLVM one, I believe
exception handling was broken on Windows for some time. Presumably this is
fixed now, but I haven't actually checked recently.

------
Avshalom
Is there a good high level post any where about the architecture of servo
(particularly compared to gecko)? All I ever hear is "parallel-er" with out
any detail about which bits can/can't/aren't-but-could-be or anything.

~~~
bjz_
[https://github.com/mozilla/servo/wiki/Design](https://github.com/mozilla/servo/wiki/Design)

------
ciupicri
> Servo builds its own copy of Rust, so there is no need to provide a Rust
> compiler.

That's because it downloads and compiles it when compiling Servo. I wish
they'd mention this.

~~~
ics
I was a little surprised when I caught that in my terminal as well. About to
enter hour two of building...

------
santialbo
Is this supposed to replace Gecko in the future? or is it just a "toy"
project?

~~~
pcwalton
It's a research project. There are no product plans at this time.

------
nawitus
What is specifically a "browser engine"?

~~~
agumonkey
AFAIK Servo is mostly a DOM layout parallel renderer. I mistook it for a full
browser but the dev corrected me saying it's "just" rendering engine. Right
now they're using separate css lib, js interpreter, etc. Servo deals with the
layout.

~~~
sanxiyn
There is a plan to replace the separate CSS library with its own.

~~~
agumonkey
Yeah they were saying it was probably causing performance issues, so the
sooner the better.

~~~
lillycat
It is a (long, hard) work in progress. One dev started this huge task about 3
weeks ago :-)

~~~
agumonkey
I hope this didn't come across like an impatient rant. I just wish them a
quick path toward advancing state of the art ideas about DOM rendering and
parallelism.

