As I understand it, this is shipping with WebRender enabled, right? How far out is WebRender 2 from making it into the nightly?
A very general question: what's the high-level plan for Servo regarding Firefox? I see a lot of requests/issues dealing with stuff that doesn't seem related to a layout engine. Is the plan to have browser.html as a temporary incubator for Servo and eventually migrate it to replace FF's layout engine, or is it to "grow" an entire new browser around this new engine?
There are efforts to make various components work in Firefox. The largest effort is "Stylo", which replaces Firefox's selector matching with ours. I'm not sure what the future is on Firefox using Webrender or our layout; though I suspect it depends on how well stylo works.
The plan seems to be to let Servo continue to evolve as a testbed for new ideas (like webrender), and share components with firefox whenever ready. An independent Servo product is not likely in the near future, since there's a lot of work to make it fully web compat. In the far future ... well, we can't tell :)
Admittedly, android-specific efforts have slowed down in the past few months, but I believe it is still a goal :)
I mean, Servo-as-a-product isn't even planned yet, and may never be, so by the time that question is relevant the ios rules may have changed, too :)
As for Firefox, later on this year we should see the integration of Servo's style engine ("Stylo") into Gecko, and going forward we should expect to see the two codebases share even more components. However, wholesale replacement of Gecko with Servo in Firefox isn't on the table at the moment.
Well, it depends on some privileged APIs, of course. But we've tried to keep that API surface minimal.
In addition, the browser needs to act as a sort of broker between sites and the OS. Storing cookies and session data, showing notifications or dialogs, and entering fullscreen mode are just a few examples of this. (Note that most of these things aren't even implemented yet. Browsers are complex applications in their own right, even after accounting for the browser engine.)
We are deliberately trying to keep this to the bare minimum, and will likely try and find someway to standardize those few things we do if possible.
Servo's style engine is parallelized and scales nearly linearly with number of cores, and style time is a non-trivial amount of the total rendering time.
Can't wait to try it out. When is the Windows build will be available? Days? Week(s)?
Servo works fine, and we have an installer, but when run from the installer there are some weird things we weren't able to track down in time.
The Windows port didn't ship yesterday because of technical glitches post-install. Servo works fine, but after installation it had some strange behavior we couldn't track down in time. It should come in a few days.
Fixed that for you :P
PS. It is considered bad etiquette to ignore the issues of a Windows user and simply "recommend Linux" in a tech community like this, especially when a Windows build has already been promised. You don't know the reasons why someone is using Windows (ex. because of a policy of their employer).
Download Linux. Download Servo. Run Linux. Run Servo. Profit.
I've less and less love for MS (though Visual Studio...), but even with having to install crappy hacks to fix Win8, it's _still_ a smoother end-user experience than Linux desktop.
With Win10's Linux layer, assuming there's an accelerated X server for Windows, I can't think I'll keep even a VM around much. (If I can turn off Win10's spyware.)
Jokes aside, I stopped fighting desktop environments and embraced Ubuntu's Unity some years ago, at the end I learned to appreciate it and nowadays I feel more comfortable with Ubuntu than with OS X.
I still prefer Windows over Ubuntu, but because I have added several utilities to my workflow like Everything Search Engine or WinSplit Revolution (now defunct), not because of Windows' own merits.
I just wish there could be a way to have OS X's hotkeys in Windows, since CMD + <anything> is more comfortable to press than Ctrl + <anything>. I also miss having the behavior CMD + Tab / CMD + ` and the ubiquity of CMD + ,
This is not the place to discuss about operating systems, and people expect from you to respect their preference.
Linux has its technical merits, and because of them it is the most used OS in servers, supercomputers and niches like web development, but it also has its weaknesses, and because of them it isn't the most used OS in homes or corporations.
OTOH, there already exists a Linux distribution which is more popular than Windows, it's named Android, you've probably heard of it. It is a disaster in comparison with Windows, it gets locked, bloated and abandoned by phone manufacturers, phones get declared obsolete ridiculously fast and people are left without even security updates, you don't even have the ability to "format" a phone unless someone breaks a vulnerability to gain root access.
People blinded by Linux usually overlook the disaster behind Android because they're too accustomed to focus their attention in the issues of Windows, but no OS is perfect and people will choose the OS that works better for them, you must learn to accept and respect their decision.
Either way, I'm already impressed by how zippy it is :D
There's a more serious error in the url parsing that caused this, due to some wierd stuff google is doing with punycode. I haven't looked into that yet. But youtube no longer crashes -- so you can now enjoy window-shopping on youtube!
Note that youtube won't work on servo right now since video/flash doesn't work :)
I really don't mean this in a snarky way: wasn't this kind of thing supposed to be obviated by the switch to Rust? It often seems that every other post about Rust on HN says that if it compiles, it works.
Your compiler doesn't know what you're trying to do, so you can't prevent all bugs.
That leaves crashes, and ... well it may also depend on what you mean by a crash. The UI becomes unresponsive? Might have absolutely nothing to do with memory issues or even code written in rust. Maybe your rust code is fine but you're trying to open and write to the same file from two places which you don't realise because the users file system is case insensitive but you've only tested on a case sensitive one, etc.
It's also multi-threaded and while languages can significantly help improve the safety of multi-threaded code, I don't think anything can stop you from creating a deadlock or putting your system into an inconsistent state.
And finally, they may not even particularly expect those things, but putting out early nightly builds to a wider audience and expecting nothing to go wrong would be cavalier. A typical warning on many early releases is "don't blame me if this destroys all your files".
That sounds too precise to be just an example :) We've all been there!
It's now on my mental list for "but it works on my machine", checking filenames and their cases.
This is just a hypothetical example, I bet image loading is one of the things Servo does fine. Just to give you an idea of when Rust might panic.
Earlier in this thread, someone did indeed find a bug in our image loading: https://news.ycombinator.com/item?id=12014108
We were basically panicking when an invalid URL was given to us. There was a comment there noting this -- which means that this was probably written when it wasn't so important to handle all the cases, and more important to handle some cases so that we can test out various ideas. We're still sort of in that stage, and you may see other comments like this throughout the code :)
I'm always careful not to say that "if it compiles, it works"--no language can guarantee that (well, except those that prove your program correct). Instead I like to say "if it compiles, it will fail for a not-stupid reason". :)
When talking about the usage of unsafe code in rust, we generally ignore encapsulated unsafe code in libstd since it has the same safety guarantees as tgr compiler itself. all unsafe code encapsulated in a safe API has these guarantees, but you trust libstd more :)
explicitly_crashPlease file bugs for layout being off -- we know that this sometimes happens, but it's good to have testcases. As for embeds, that's not priority now, but we should eventually get them.
P.S. The app icon is the best part by far!
I noticed that the Servo Nightly build is already about as big as Chrome or Firefox. As it's not yet a complete browser, I expected it to have a lighter executable. Do you know what lead to this? Is it a matter of build artifacts or optimization? Is Servo going to grow even larger while achieving feature-parity with other engines?
It looks like Servo could be a great alternative for Chromium Content -- one of the things that keeps me from (ab)using Electron/NW/CEF is the massive initial overhead, and a WebRender-based UI with lower admittance price would change the whole scenario.
Probably not apples to apples. I don't believe optimizing for executable size to be too high in their priority list.
Happy to see a nightly already, I must read the source at some point :)
Speaking of which, do you have any systematic benchmark testing set-up for comparing various performance aspects? If so, what are the numbers?
It's not really ready for public consumption, just a dashboard for us to tell how we are doing.
It goes without saying, but as this is the very first nightly (not by any means a full-fledged release), expect severe bugs, crashes, and missing functionality. Many of your favorite sites will be broken. Don't expect to use this as your everyday browser. We'd love feedback on what issues folks hit the most, so we can prioritize—especially if you're a Web developer!