News for hackers. Stuff that matters.
Re:Why Not Make? by rusk on Thursday November 08, 2018 @08:50AM (#18406193)
So what I guess is that this is for building at scale?

In my experience this kind of incremental build is a matter of developer convenience so that small changes can be made and checked quickly, but builds for test and release are always built clean.

I guess the codebases we're talking about here are at such a scale that the incremental approach is actually used for releases too?

It still seems to me as though this is something that s should be solved architecturally though with an appropriate composition of modules ...

Re:Why Not Make? by tom_ on Thursday November 08, 2018 @09:12AM (#18406325)
It's for your day-to-day builds, so when you switch between build types while working you don't have to suffer a full rebuild.
Re:Why Not Make? by rusk on Thursday November 08, 2018 @09:18AM (#18406381)
by build-types you mean release to test vs. build for my own work? All my code gets released off a build server, and I'd consider it bad practice for a developer to be releasing their own code from their own workspace ...
Re:Why Not Make? by tom_ on Thursday November 08, 2018 @09:59AM (#18406628)
Same build, sure, but you don't release it - you just run it on your own computer, as opposed to the development build you might ordinarily run, to make sure you didn't break anything.
Re:Why Not Make? by rusk on Thursday November 08, 2018 @10:35AM (#18406954)
I still can't help but feel this could be obviated by a more top-down approach, like decomposing into modules.

Even with a well-specified dependency tree there are areas where an incremental build can still bite you in the ass. Things like inlining and transitive dependencies ... I think you still need to build from scratch to be sure.

Re:Why Not Make? by dfgdghdf on Thursday November 08, 2018 @09:11AM (#18406320)
If your choices are:

- A: Builds well for small projects, scales poorly for large projects

- B: Builds well for small projects and scales well for large projects

Why not choose B?

Re:Why Not Make? by rusk on Thursday November 08, 2018 @09:16AM (#18406365)
I'd always choose B given a green field, but it's when you already have A that you have to justify the effort to migrate ...

EDIT my proposition is that the described build system actually scales poorly for large projects, because you've to maintain an entire tree of hashes! Notwithstanding of course having a helper process in the background to do this for me ...

Re:Why Not Make? by dfgdghdf on Thursday November 08, 2018 @09:34AM (#18406469)
Ah, I see your point now. However, in practice this is not the case. These hash-based systems scale very well in large organizations. Some more info from Google about Bazel: https://qconsf.com/sf2010/dl/qcon-sanfran-2010/slides/Ashish...
Re:Why Not Make? by rusk on Thursday November 08, 2018 @09:52AM (#18406578)
Very interesting ...

Two bullet points jumped out at me straightway:

- Single monolithic code tree with mixed language code

- Development on head; all releases from source

Just one other concern I have now.

Something like Make, or most other build-systems run pretty much straight out of the box.

Something like Bazel lets say is apparently an order of magnitude more complicated. There's a few more moving parts.

My only remaining qualm relates to the additional cognitive load of this stuff. At scale, as in Google this isn't so much a problem because these costs would diminish at the point where you can actually assign people to look after it.

I really like the idea though! Would be nice to work in a place like Google some day ...