D compilation is too slow and I am forking the compiler

Stefan Koch uplink.coder at googlemail.com
Wed Nov 21 13:31:46 UTC 2018


On Wednesday, 21 November 2018 at 13:05:27 UTC, Nicholas Wilson 
wrote:
> On Wednesday, 21 November 2018 at 11:58:25 UTC, Vladimir 
> Panteleev wrote:
>> Have we tried disabling -unittest for modules that aren't on 
>> the compiler's command line yet (or, in case of -i, not 
>> excluded)?
>
> Not that I know of, thats a great idea!
>
>> Maybe this hack could be developed further into a more generic 
>> "compiler server" idea.
>
> Wasn't that Robert's Masters thesis (Dconf 2013(?) 
> presentation)? ;)

The main problem with this, is the amount of context a compilers 
needs.
And the current design of DMD does not lend itself splitting out 
the context.
If you wanted you could consider the semantic pass of the 
compiler as a database, which answers queries such as:

  - which size does this type have.
  - which arguments does this function have
  - can the type A be casted to type B
  - which conversion function should be invoked for (B)A ?
  - is this function known to be pure?

The data-base containing this information needs to be maintained 
on the compile-nodes, and that possibly leads to many 
data-dependencies.
Which may degrade the performance of the "compiler server" to the 
point where it is quicker to do it locally.

I am currently working (albeit very slowly due to lack of time 
and focus) to enable programmers to circumvent slow parts in 
compiler. When completed this should make a compiler-server 
unnecessary for some time to come.



More information about the Digitalmars-d-announce mailing list