Firefox 82 on POWER goes PGO

But let’s not bury the lede here: after several days of screaming, ranting and scaring the cat with various failures, this blog post is finally being typed in a fully profile-guided and link-time optimized Firefox 82 tuned for POWER9 little-endian. Although it multiplies compile time by nearly a factor of 3 and the build process intermittently can consume a terrifying amount of memory, the PGO-LTO build is roughly 25% faster than the LTO-only build, which was already 4% faster than the “baseline” -O3 -mcpu=power9 build. That’s worth an 84-minute coffee break! (-j24 on a dual-8 Talos II [64 threads], 64GB RAM.)

This whole post is a ringing endorsement of Firefox and why the technology landscape – especially the alternative operating systems and hardware platforms landscape – needs Firefox. There really isn’t any other viable option.

Chromium? Chromium is open source, but a lot of its important functionality is hidden behind a needlessly complex process of setting up and registering API keys that’s about as intuitive as designing an atomic bomb from scratch on a deserted island. On top of that, Chromium is still a Google project, and as Google’s reluctance to support important features on Linux shows, Chromium is designed for Google’s interests – nobody else’s.

WebKit? WebKit requires developers to build an entire web browser around it from scratch. While that can lead to awesome applications, it also means replicating every single bit of functionality users have come to expect from their browsers. Things like bookmark and tab sync, extensions, and so on – all have to be built and maintained form scratch.

Firefox is the only complete package someone can port to another platform and end up with a complete browser package. Sure, it’s definitely not an easy undertaking to port a program as complex as Firefox, but in a lot of cases, it’s probably easier than porting WebKit/Blink and building a browser around it from scratch.

16 Comments

  1. 2020-10-30 10:17 pm
    • 2020-10-31 2:06 am
  2. 2020-10-31 1:01 am
    • 2020-10-31 8:00 am
    • 2020-10-31 10:17 am
    • 2020-10-31 1:17 pm
      • 2020-10-31 2:08 pm
    • 2020-11-06 4:36 pm
  3. 2020-10-31 10:20 am
    • 2020-11-06 4:37 pm
      • 2020-11-06 5:42 pm
  4. 2020-10-31 12:15 pm
  5. 2020-10-31 4:30 pm