It's been a long while since I sent a public jumbo project update so here goes.
Background: Jumbo is a unity build system aimed at dramatically lowering the multi hour build times when working with chromium. A unity build system works by compiling many cc files in the same translation unit. The speedup varies between 6x (v8) and 25x (blink bindings). It is used officially by some companies and by individual engineers at many more companies and lowers the threshold for external contributors to join the project.
Documentation: https://chromium.googlesource.com/chromium/src/+/master/docs/jumbo.md
Result/status:
So far jumbo compilation is supported in chrome/browser, content, blink, v8 and in a number of smaller targets. Most targets don't yet support jumbo compilation. The current total effect is about 2.7x faster full builds for non-goma (1 hour instead of 3 hours) with use_jumbo_build=true (was 1.9x last mail I think).
Sadly sometimes code changes are necessary to support jumbo compilations so it won't just work by itself (which clearly would have been too good to be true). This means that jumbo support sometimes breaks on master, like it's broken by a v8 change right now (waiting for a v8 roll to include the fix). The plan is to get support in CQ to prevent this from happening but lack of resources keep delaying that to "RSN".
The lack of CQ support has meant that someone has had to fix problems on master, often several times per week, sometimes more than once in a day. That CQ does not test jumbo has slowed down, or nearly stopped, further expansion of jumbo support. Despite that de facto pause the measurable value of jumbo keeps increasing as normal builds become slower every week (+1% per week) in a way that jumbo builds do not. See attached graph.
Beyond unintentional symbol name clashes jumbo keeps detecting duplicate code. Most of the time shorter functions that should be in some utility library but are instead copied.
Some people from Opera and Vewd have been looking at adding clang features to prevent certain clashes that appear when you combine cc files. It is not possible to do in a plugin but there are promising results with minor changes to core clang code.
I plan to talk about jumbo and other ways of getting builds faster at BlinkOn9. Hope to see you there.
/Daniel
--
/* Opera Software, Linköping, Sweden: CET (UTC+1) */