On Saturday, 6 June 2015 at 19:44:15 UTC, Andrei Alexandrescu wrote:
On 6/6/15 11:47 AM, Jacob Carlborg wrote:
[...]
I mean that rdmd should compile all files that has changed
including its dependencies, no more, no less. It should compile all
these files in one go.

Yah, that's the traditional C-style module-at-a-time approach.

I think the traditional approach would be to compile modules separately, not "all [...] in one go".

Somewhat paradoxically, for D it's faster to compile several files at once, even though not all were affected by the change.

So in the package-at-a-time approach if at least one module in a package is affected by a change, the entire package gets rebuilt.

This may beat separately compiling modules that needs rebuilding. But it doesn't beat compiling all of them at once, does it?

My understanding of things:

Current behaviour: When any module changed, pass all source files to one dmd invocation.

The makefile approach: Separately recompile every module that needs rebuilding; then link the new object files with the cached ones.

Your proposal, variant 1: For every module that needs rebuilding, separately recompile its whole package; then link the new object files with the cached ones of other packages.

Variant 2: For every module that needs rebuilding, determine what package it belongs to; then pass the source files of those packages and the cached object files of other packages to one dmd invocation.

The seemingly obvious thing to do: Pass the source files that need rebuilding and the object files of other modules to one dmd invocation.

Reply via email to