On Monday, 23 October 2017 at 11:02:41 UTC, Martin Nowak wrote:
On Monday, 23 October 2017 at 06:05:50 UTC, drug wrote:
20.10.2017 17:46, Martin Nowak пишет:
My 2 cent:
1. dub needs ability to work with other repository than standard ones.

You mount or clone whatever you want and use `dub add-local`.

2. multicore building - entire project in D builds faster than C++ one (I have two implementation of the same), but in case of incremental building C++ faster.

I always assumed this to be the main point why people are asking for a better build tool, but it's not sth. dub can do atm. It's a limitation of the compiler that requires various changes and a slight redesign of our build model.

Does it? Reggae can do parallel per-package builds (in fact, the default) right now.

In C++ incremental rebuilds are simple as you compile each file individually anyhow, but that's the crux for why C++ compilations are so slow in the first place.

Not really. C++ is slow to compile anyway because parsing it is slow. C has the same compilation model and is much much faster to compile than C++. There's also the fact that the same headers are parsed over and over again. `#include <iostream>` requires parsing thousands of lines of code from dozens of files.

However, if all you touched was a C++ implementation file, then incremental builds are faster than D. Really.

Compiling multiple modules at once provides lots of speedups as you do not have to reparse and analyze common/mutual imports, but on the downside it cannot be parallelized that well.

I measured, and indeed compiling per package is faster than compiling all of the modules that have to be recompiled individually, even if done in parallel. Weirdly enough this is a disadvantage (time-wise) of having implementation and declarations in the same file.

Dub could parallelize building individual packages/sub-packages (target + dependencies) right now though.

reggae already does, just point it at a dub package directory. By default it'll even build the default target and a unittest one in parallel.


3. dub single build mode does not caches builds so it builds entire project every time.

Could you please file an issue with a test case for that.
Why do you use single build mode in the first place?

I'd assume it'd be to only rebuild the necessary files C++-style. However, and as stated by you above, that's usually slower anyway.

Atila

Reply via email to