41 comments

[ 1926 ms ] story [ 2856 ms ] thread
Is this supposed to replace Gecko in the future? or is it just a "toy" project?
It's a research project. There are no product plans at this time.
if early benchmarks find that it scales better on more cores, it will probably be pushed to replace Gecko

if it doesn't seem like the gains are great, they'll probably have to prove that the added safety is worth it

What is specifically a "browser engine"?
The definition is a little fluid. At the absolute minimum you'd need an HTML renderer and Internet access, but this wouldn't get you so far on the modern Web. Most people would expect some level of CSS and JavaScript support too.
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.
There is a plan to replace the separate CSS library with its own.
Yeah they were saying it was probably causing performance issues, so the sooner the better.
It is a (long, hard) work in progress. One dev started this huge task about 3 weeks ago :-)
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.
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.
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...

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)

Yeah, as long as it isn't a quote of his cat's name.
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

> Do they target a fixed subset of Rust (is it even possible) or do they make continual updates to their code?

Updates when necessary. As the language gets more stable, that gets easier.

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.

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.
I believe Servo uses a particular version of Rust for 1-2 weeks, then updates to the new version. But somebody closer to the project would have to confirm that.

Servo is extremely important to the language's development because it is such a huge undertaking. Along with the self-hosting compiler, it allows the core devs to get invaluable feedback on how their language is performing practically.

Thanks for your replies guys. I think it's interesting to develop a massive piece of software at the same time than its language it must certainly contribute quick valuable feedbacks to the language's designers based this concrete application. Added to the fact that Rust is now developed in Rust!
> Added to the fact that Rust is now developed in Rust!

It has been for a good long while! :)

That same principle really applies to just about all major software projects: using high-quality feedback loops as early as possible can be a huge win. Whether that's having (carefully selected) pre-alpha customers for your product or in Rust's case, co-development with a serious target application (i.e. Servo).
Servo's name is fitting, then.
It helps that many of the Rust developers are also working on Servo. :)
(comment deleted)
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.
This probably has more to do with the relative maturity of LLVM (used for Rust's compiler's back end) on each target.
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)
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.
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.

Oh really? That's great! To be honest I don't follow the Windows situation too closely, as I work on OSX. So things might have improved.
(comment deleted)
I'm curious, how do you envision game devs using this? Most games are currently done in a plugin of one type or another. Do you think the parallel-ism of Servo is going to finally push html5 gaming to where it needs to be, performance wise?
He means games written in Rust, not in html5. If someone would work on windows support for Rust, then both Servo and other rust projects, like games potentially could run on Windows.
> 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.

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