Friday, November 17, 2017

Firefox Quantum

Mark Mayo:

It’s fast. Really fast. Firefox Quantum is over twice as fast as Firefox from 6 months ago, built on a completely overhauled core engine with brand new technology stolen from our advanced research group, and graced with a beautiful new look designed to get out of the way and let you do what you do best: surf a ton of pages, open a zillion tabs, all guilt free because Firefox Quantum uses less memory than the competition. Your computer will thank you. 🙂

Via John Voorhees:

I haven’t had an opportunity to thoroughly test Firefox on my Mac, but even after opening 50 tabs on a fresh install of the browser, many of which were notoriously heavy sites, Firefox remained responsive.

I’m not sure it’s twice as fast, but it really does feel faster than previous versions of Firefox, and perhaps faster than Safari in some cases. I still prefer Safari, though, because it’s a better Mac app.

K.Q. Dreger:

If you haven’t tried Firefox since Chrome came out, or you’ve always used your operating system’s default browser, I’d encourage you give the new Firefox a shot. It’s free and I was left genuinely surprised.

Rui Carmo:

Another thing that worried me was that Firefox seems to have a larger energy footprint and was still claiming a significant percentage of CPU cycles (5-10%) while out of focus and “idle”.

Manish Goregaokar:

Rust code began shipping in Firefox last year, starting with relatively small pilot projects like an MP4 metadata parser to replace some uses of libstagefright. These components performed well and caused effectively no crashes, but browser development had yet to see large benefits from the full power Rust could offer. This changes today.

Firefox Quantum includes Stylo, a pure-Rust CSS engine that makes full use of Rust’s “Fearless Concurrency” to speed up page styling. It’s the first major component of Servo to be integrated with Firefox, and is a major milestone for Servo, Firefox, and Rust. It replaces approximately 160,000 lines of C++ with 85,000 lines of Rust.


This top-down structure is ripe for parallelism; however, since styling is a complex process, it’s hard to get right. Mozilla made two previous attempts to parallelize its style system in C++, and both of them failed. But Rust’s fearless concurrency has made parallelism practical! We use rayon —one of the hundreds of crates Servo uses from Rust’s ecosystem — to drive a work-stealing cascade algorithm. You can read more about that in Lin Clark’s post. Parallelism leads to a lot of performance improvements, including a 30% page load speedup for Amazon’s homepage.

Todd Ditchendorf:

While they’ve been inventing Rust, Firefox has lost most of its market share, completely missed mobile, & the latest Servo .app release is completely non-functional on my Mac. Meanwhile Mozilla is celebrating their greenfield research success story.

I guess it depends on what you find more important: a fantastic new programming language, or a relevant indie browser that’s not controlled by a BigCo or tracking your every move. But while there are lots of cool prog langs, there was only one relevant indie browser.

Now we have yet another cool programming language, and no relevant indie browsers.

Update (2017-11-21): Matt Birchler:

Both Apple and Google’s web apps make me feel like I’m living through the ActiveX days all over again. Firefox sadly feels like a second class citizen because of this.

8 Comments RSS · Twitter

From my experience, they've done a really good job at cleaning up, and speeding up, Firefox. Really good.

Firefox dominates on Windows - it's faster than both Edge and Chrome (this wasn't the case previously). And it's much improved on my personal home Mac, but not nearly as fast as it is on my Windows workstation at work.

I think that quote from Todd D. is a bit dramatic though. Firefox was under attack by Chrome well before I first remember reading about/hearing about Rust and Servo. IMO, what they've done here is exactly what needed to be done, and in a most important way. The performance of Firefox is now _so good_ that I don't feel the need to prefer Edge or Chrome over it anymore. It feels like a new lease on life.

> Firefox was under attack by Chrome well before I first remember reading about/hearing about Rust and Servo

I guess the question is whether they could have made Firefox faster without inventing a whole new language.

@Lukas: From the Lin Clark's post (follow the link), the answer is Cleary "no". They try 2 times to write an efficient CSS engine in C++ and failed due to a lots of issues that rust don't have. It may have been possible to do the same in C++, but it would have taken far more times and wouldn't have been as reliable.

There seems to be a lot of excitement around Rust in the various non-Apple dev circles I encounter, mostly because it's a modern alternative to C/C++ that seems to serve its purpose well as a systems language. I'm seeing lots of folks tinkering and starting personal/greenfield projects with it... saying how much they like working with it. By comparison, I see less enthusiasm for Swift... while we may enjoy some (sorely-needed) improvements vs ObjC, we're also hindered by tooling/IDE issues and just a general 'impedance mismatch' between the language and the frameworks.

Long term, this makes me wonder if Apple made the right call in designing Swift to serve both high-level and low-level roles. With Rust being a much more mature language at this point, I foresee anyone outside of Apple's orbit preferring Rust over Swift for systems stuff. If that ends up being the case, Swift's compromises on high-level app dev will have been for comparatively little gain.

I think this may affect Apple down the line as well, because regardless of how Firefox Quantum fares, the other browser vendors will eventually evolve or rewrite their engines to achieve the same kinds of parallelism that the Servo project is working on. What language will Microsoft or Google use when that time comes? I find it difficult to see those companies picking Swift over Rust.

Now, when the time comes for WebKit to get that same overhaul, what options will Apple have? They could use Rust of course, but that seems unlikely if only for political reasons. Will they write the next WebKit in Swift, or continue with C++? Either path seems sub-optimal compared to Apple's competition. If they pick Swift, will there be folks to hire who can write good low-level Swift? Currently that's an open question, whereas folks who can write good Rust already seem to exist. If they stick with C++, then they will have to invest additional time and money to address the types of problems Mozilla faced when trying to do it that way.

Adrian Bengtson

Firefox Quantum is indeed fast and that's nice. I have two issues, one minor and one major:

First, the use of the black color scheme for tabs and tab background makes me think I'm in privacy mode since both Safari and Chrome uses darker colors to indicate privacy mode.

Second, and this is annoying, a lot of useful add-ons are not supported anymore since they moved to only allow WebExtensions and not XUL. This means that some of the add-ons cannot be recreated for Firefox Quantum since WebExtensions doesn't allow as much change as XUL did. For me this means that I can't change the built-in keyboard shortcuts with Dorando keyconfig. That wouldn't be a problem if Firefox allowed the user to change shortcuts, but that is something people have asked for for 17 years and counting…

Adrian Bengtson

(And yes, I know I can change the color scheme by selecting the light theme.)

One nice thing I noticed about Firefox: You can enable a proper title bar instead of a unified one. This setting also changes the title/tab bars to a light color that's more in line with the system color for the active window.

@remmah Cool, thanks. FYI, this is in the Customize window for the toolbar, not the preferences.

Leave a Comment