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

Reply via email to