Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: e331c09641345277aa6f2ef1ba7147466028c40f
https://github.com/WebKit/WebKit/commit/e331c09641345277aa6f2ef1ba7147466028c40f
Author: Tim Horton <[email protected]>
Date: 2026-03-17 (Tue, 17 Mar 2026)
Changed paths:
M Source/WebCore/DerivedSources.make
M Source/WebCore/bindings/scripts/generate-bindings-all.pl
M Source/WebCore/bindings/scripts/generate-bindings.pl
Log Message:
-----------
Bindings generator spends a lot of time launching Perl and re-parsing the
same files needlessly
https://bugs.webkit.org/show_bug.cgi?id=310049
rdar://172693536
Reviewed by Darin Adler, Megan Gardner, and Abrar Rahman Protyasha.
There is a significant amount of clean build overhead when generating derived
sources,
from launching a Perl instance per IDL file.
It turns out that the CMake build uses a wrapper which first determines the set
of stale IDLs, then shards them between a small number of Perl instances. Adopt
this wrapper in the Xcode build, and make a few adjustments to it to make that
work:
- Make it possible to exclude generation for given hand-written implementations
(EventListener)
- Default the number of shards to the number of CPUs, instead of 1
- Make the preprocess-idls step optional, because the Xcode build does it
separately
Also, drive-by hoist shared work (parsing supplemental dependency files) out of
the
inner loop, which makes the win from sharing a process even bigger.
This cuts a full minute (almost 5%) off clean builds for me, and has no
measurable impact
on incremental builds that touch IDL files.
* Source/WebCore/DerivedSources.make:
* Source/WebCore/bindings/scripts/generate-bindings-all.pl:
* Source/WebCore/bindings/scripts/generate-bindings.pl:
(generateBindings):
Canonical link: https://commits.webkit.org/309433@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications