On Tue, Aug 28, 2018, at 10:42 PM, Jeff Walden wrote:
> jsapi.h and jsfriendapi.h are mega-huge, monolithic headers.  A one-stop 
> shop is maybe (maybe) convenient for users.  But it's terrible for Gecko 
> and SpiderMonkey: touching jsapi.h rebuilds the world.  (The one-stop 
> shop approach is also pretty terrible for users because js*api.h are 
> unreadable, disorganized messes.)

Nice! I don't know if you saw, but this summer our intern Sofia completed a 
project to report on the effective build-time cost of changes to specific 
files. Her intern presentation is available on AirMo[1]. I don't have a link to 
her final slides handy, but you can see some interim results here[2]. 
chmanchester has been working on running the reports she developed regularly in 
CI, you can see the output from a recent run[3].

The short version is "take the full transitive cost of building everything in 
the dependency graph upstream of a file, multiply by how often the file gets 
changed (from the pushlog)". You can see in the third link that jsapi.h is 
pretty far up the list, it's #8! Changing the code so that jsapi.h gets changed 
less often will definitely result in faster rebuilds for lots of people.

At some point even a perfect build system can't save us from dependencies like 
this--only changing the code can make things better.

-Ted

1. 
https://onlinexperiences.com/Launch/Event.htm?ShowKey=44908&DisplayItem=E297612
2. 
https://docs.google.com/presentation/d/1jRLZueb9PKFb6o2NsbB7dv5gTF1V0ZEBiOGj7R_1JfI/edit#slide=id.gc6f9544c1_0_0
3 
.https://taskcluster-artifacts.net/CLtUuQugTjKONONL4hh5Nw/0/public/14day_report.html
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to