www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Help improving dub

Hello guys. I have been recently looking into ways for improving 
dub and I've find something which could make it get a lot faster 
for building the projects and the idea is fairly simple: It is 
possible to parallelize its dependencies build commands almost 
completely. No need to wait for the requirements to finish first.

All this process could be done in a single go, concurrently, and 
the only time it need to wait for the other to finish is in the 
link process.

So instead of doing:

A->[B -> C] -> [D -> E] -> Link

We could basically do

[A, B, C, D, E] -> Link


The reason for that is: for building the libraries all the import 
paths are basically reparsed anyway, so they don't actually 
depend on each other, the requirements could be solved upfront by 
simply saving the version statements in each build.

I would like to get this stuff working ASAP, here is the issue 
for that: https://github.com/dlang/dub/issues/2702


I started working on that but unfortunately my time is really 
short so any help is appreciated.

The main problem right now is basically making dub less statefull 
(a little hard since it uses classes and intermediate state 
everywhere). The thing is that I know this isn't too hard to make 
it happen.


If someone is worried about the pre/postBuildCommands, we could 
just get this stuff done firstly and use the existing --parallel 
build flag which only works together with the --single flag and 
then it could be fixed later since this has a massive improvement 
potential with almost no work.
Sep 28 2023