On Friday, 18 March 2016 at 15:31:26 UTC, Dicebot wrote:
Hmm, the build module could be compiled once. It sources are supposed to stay unchanged, right?

Even "once" will be too much for majority of D users (those who are not also Gentoo users at least :D). Remember - we are not speaking about build as simple as `rdmd std/build.d` at this point, it will have numerous additional dependencies, including linker dependencies. And has to be perfectly cross-platform.

I think that std.build could be up to 10KLOC so the compilation time would be not relevant.

Tight coupling of dependency management and build tool in one entity is just too inflexible. This is single biggest issue I have with dub in its current form.

Can you explain it by example (I don't mean dub problems, which I agree
exist, but the inflexibility in general)?
I can't see a conflict between the two functionalities.

Typical example - we use custom Makefile based framework for internal Sociomantic D projects, one which is much more capable than existing dub build support and works decently for our needs overall. There is no way it can be replaced with dub at its current state. However using the very same dub to fetch sources of 3d-party libraries and ensure version compatibility is something quite desired.

When build tool and package management system are packed into one tool, you pretty much need for both to be perfect to match everyones desires. And that is simply impossible.

Thanks for explanation. Then let me quote Teoh's great description of a practical build tool:

"I think a good balance can be drawn between providing enough primitives that cover almost all conceivable use cases in a build tool, and at the same time provide an "escape hatch" into a full-fledged programming language for those rare but inevitable cases where you need to go outside the box and do what the designers didn't anticipate."

IMO this applies to all of compiling, configuring and fetching sources or binaries and their dependencies.

I'm aware it's not possible to cover all use cases. But 90-95% is achievable. The rest is relatively easily to be covered by custom d code.

I started that

Piotrek

Reply via email to