MarshallOfSound

#52883: build: trim the non-link overhead of macOS release builds

Merged
Created: Aug 16, 2026, 10:35:30 PM
Merged: Aug 17, 2026, 1:03:01 PM
9 comments
Target: main

Four independent, low-risk changes for the macOS release job, which today spends over an hour outside the ThinLTO links themselves. Numbers from the siso reports of the 2026-08-14 arm64 nightly (98% cache hit, 3h18m).

  • Zip Symbols (31 min → ~6 min): tar --options xz:threads=0 does not actually multi-thread on macOS (Apple's liblzma emits a single block), so ~7 GB of dSYMs were compressed by one core at preset -6. Pipe the tar stream through the xz binary with -T0 (fallback to the tar options if xz is missing) and use preset -3 (~5x faster than -6 for ~12% larger output). Same .tar.xz format.
  • siso no-fallback on macOS: a remote compile that exceeds siso's 2-minute client-side deadline (RBE queueing, an upload stall) is re-run locally; on the 5-core / 14 GB runners a local ThinLTO compile takes 5-10 min and lands on the critical path (75 such fallbacks in that build, 570 in a testing build). no-fallback retries remotely with a 4x longer deadline instead.
  • thin_lto_enable_cache=false for macOS release builds: CI starts from a fresh out dir, so the ThinLTO cache is written (~100 GB across a release build's links) and never read, competing for IO with links that are already swapping. Local builds keep the default.
  • build-stats (~2.5 min → seconds): hash objects on worker threads and only walk obj/ and <toolchain>/obj/ instead of a recursive readdir of the whole out dir (~800k entries). Telemetry only; the change-rate metric compares files present in both snapshots so the (slightly smaller) file set doesn't affect it.

Measurement runs (macOS only, no publish) are in flight on release-build.yml for a baseline vs this branch; I'll post the before/after here.

Notes: none

Backports

41-x-y
Pending
Waiting for a manual backport
42-x-y
Pending
Waiting for a manual backport
43-x-y
Pending
Waiting for a manual backport
44-x-y
In-flight
PR Number
#52931
Waiting to be merged

Semver Impact

Major
Breaking changes
Minor
New features
Patch
Bug fixes
None
Docs, tests, etc.

Semantic Versioning helps users understand the impact of updates:

  • Major (X.y.z): Breaking changes that may require code modifications
  • Minor (x.Y.z): New features that maintain backward compatibility
  • Patch (x.y.Z): Bug fixes that don't change the API
  • None: Changes that don't affect using facing parts of Electron