#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=0does 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 thexzbinary 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.xzformat. - siso
no-fallbackon 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-fallbackretries remotely with a 4x longer deadline instead. thin_lto_enable_cache=falsefor 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
PendingWaiting for a manual backport
42-x-y
PendingWaiting for a manual backport
43-x-y
PendingWaiting for a manual backport
44-x-y
In-flightSemver 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