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.
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 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
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!
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).
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.
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.
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.
41 comments
[ 1926 ms ] story [ 2856 ms ] threadif it doesn't seem like the gains are great, they'll probably have to prove that the added safety is worth it
https://github.com/mozilla/rust/blob/master/src/libstd/rt/ut...
(I really hope some spoil-sport doesn't get rid of them)
[1] as others HN readers have commented in related threads about Rust
Updates when necessary. As the language gets more stable, that gets easier.
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.
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.
It has been for a good long while! :)
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.
That's because it downloads and compiles it when compiling Servo. I wish they'd mention this.