Welcome to the July edition of the Engineering Effectiveness Newsletter! The Engineering Effectiveness org makes it easy to develop, test and release Mozilla software at scale. See below for some highlights, then read on for more detailed info!
Highlights
- Saying goodbye to MDN for Firefox developer docs
- Everything has been migrated to https://firefox-source-docs.mozilla.org/, which will host new Firefox-related development doc
- Huge performance improvements in both memory usage and startup time on Linux thanks to semi-headless support, especially with Fission
- As follow-ups to last month’s newsletter, more improvements landed around Phabricator for the reporting of warnings (ESLint warnings are now reported too) and to reduce the noise from emails and notifications
Contributors
- Surajeet Das
- Michelle Goossens (:masterwayz)
- Dominik Nakamura (:dnaka91)
Detailed Project Updates
Build System and Mach Environment
- Surajeet removed str/bytes ambiguities from Python environment variables
- The daily build of Firefox using clang-trunk showed its first fruits detecting the first build crash failure because of a nightly clang patch. The issue was fixed in under 2 hours from the reporting of the build failure
- mhentges updated mach so its virtualenv lifecycle is now entirely internally managed - no more “./mach create-mach-environment”
CI and Treeherder
- ahal updated taskcluster consumers to Python 3
- Aryx improved the performance of switching from a multi push view in Treeherder to a single push - from up to 40+ seconds to <1s
- Masterwayz has started migrating windows 10 tests from release 1803 to release 2004
- bhearsum re-enabled some tests on macOS M1 machines
Crash Management
- Gankra documented and explained The Apple Compact Unwinding Format
- gsvelto modernized the macOS exception handler to properly handle 64-bit crash address
- gsvelto implemented recording native thread names in macOS minidumps
- gsvelto prevented hangs from being intercepted by WER as if they were crashes
Fuzzing and Sanitizers
- Jason Kratzer, with help from Jesse Schwartzentruber and Tyson Smith, improved Bugmon’s ability to detect the proper configuration for reproducing test cases
- Previously, bugmon required bugs to match very specific criteria
- Now, Bugmon is capable of iterating over various combinations of build types, environment variables, and test case configurations
- Christian Holler, Jason Kratzer, and Jesse Scwhartzentruber coordinated several Fuzzmanager improvements:
- Migrated most interfaces to a modern VueJS configuration
- Significantly improved the process of submitting bugs directly to Bugzilla from within Fuzzmanager
- Added a notification interface for detecting problematic conditions and notifying the fuzz team of bugs that may require immediate attention
Lint, Static Analysis and Code Coverage
- Standard8 made it so ESLint warnings, in addition to errors, are published by reviewbot
- As a follow-up to the update of reviewbot to show all warnings
- Gijs landed a ESLint analyzer to discourage usage of OS.File in favor of the new IOUtils
- Dominik Nakamura replaced clap with structopt in grcov, making CLI options saner to handle and paving the way for a
cargo grcov
command
OS Integration and Security
- Jed Davis landed semi-headless support, increasing the number of processes we can run, without being limited by the amount of X11 connections
- As a consequence, GTK initialization is being skipped, leading to performance improvements such as a 1.5MB per process reduction heap usage as well as 35% faster process startup
- Bob Owen landed support to use Intel Control-flow Enforcement Technology in compatible modules only mode on Nightly
- Crashreporter will already be using this on platforms with this feature
- Non-content child processes will start to be enabled over the coming weeks, it is already enabled on the socket process
PDF.js
- Brendan Dahl fixed several PDFs that were missing contents because of incorrect handling of image masks and patterns
Phabricator , moz-phab, and Lando
- mhentges ensured that Phabricator Emails are now properly threaded in email clients, and integrated the new emails with Phabricator’s notifications so you aren’t told in-app about things you’ve been emailed
Release Engineering and Management
- bhearsum landed support for signing MSIX packages, to support ongoing work to distribute through the Microsoft Store
Version Control
- zeid, mhentges, and sheehan all worked through diagnosing and dealing with fallout from a broken Mercurial release
- sheehan freed up a ton of disk space on our hg servers by deleting very old user repositories (73 of which haven’t been touched in 10+ years!)
Other
- Sylvestre led the effort to stop using MDN for Firefox development docs
- Engineering Effectiveness is hiring! If you know of anyone who would be a great fit for any of the following roles, consider referring them for a bonus!
Thanks for reading and see you next month!