Thread overview
[Issue 14654] rdmd should compile package at a time
Jun 06, 2015
Vladimir Panteleev
Jun 06, 2015
Vladimir Panteleev
Jun 14, 2015
ag0aep6g@gmail.com
Jun 13
Basile-z
June 06, 2015
https://issues.dlang.org/show_bug.cgi?id=14654

Vladimir Panteleev <thecybershadow@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |thecybershadow@gmail.com

--- Comment #1 from Vladimir Panteleev <thecybershadow@gmail.com> ---
If we want to improve build times with rdmd, the best thing we can do is get rid of rdmd (and only leave it as a thin wrapper around dmd). This is because rdmd needs to run dmd -o- to get the dependency graph, and then run dmd again to actually build the program. This means that lexing, parsing, semantics - everything except code gen and linking - must happen twice. For template or mixin-heavy code, this nearly doubles compilation time.

--
June 06, 2015
https://issues.dlang.org/show_bug.cgi?id=14654

--- Comment #2 from Andrei Alexandrescu <andrei@erdani.com> ---
(In reply to Vladimir Panteleev from comment #1)
> If we want to improve build times with rdmd, the best thing we can do is get rid of rdmd (and only leave it as a thin wrapper around dmd). This is because rdmd needs to run dmd -o- to get the dependency graph, and then run dmd again to actually build the program. This means that lexing, parsing, semantics - everything except code gen and linking - must happen twice. For template or mixin-heavy code, this nearly doubles compilation time.

This improvement stands.

--
June 06, 2015
https://issues.dlang.org/show_bug.cgi?id=14654

--- Comment #3 from Vladimir Panteleev <thecybershadow@gmail.com> ---
Yes, they are orthogonal. But:

1. It is potentially higher-impact. Even with per-package compilation, DMD will still need to lex/parse/etc. ALL modules.

2. Any improvements we make now to rdmd may be harder to migrate into dmd

--
June 06, 2015
https://issues.dlang.org/show_bug.cgi?id=14654

--- Comment #4 from Andrei Alexandrescu <andrei@erdani.com> ---
(In reply to Vladimir Panteleev from comment #3)
> Yes, they are orthogonal. But:
> 
> 1. It is potentially higher-impact. Even with per-package compilation, DMD will still need to lex/parse/etc. ALL modules.

It's almost surprising rdmd is so immensely useful, eh :o).

BTW there was work on collecting dependencies while actually building. One nice solution would be for dmd -v to generate a line at the end of imports to mean "done". Then rdmd can run dmd concurrently and terminate if no need to generate code.

> 2. Any improvements we make now to rdmd may be harder to migrate into dmd

I see it as the polar opposite. Improvements in rdmd clarify what sort of primitives and interfaces we need for highly modular compilation.

--
June 14, 2015
https://issues.dlang.org/show_bug.cgi?id=14654

ag0aep6g@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ag0aep6g@gmail.com

--- Comment #5 from ag0aep6g@gmail.com ---
I implemented an alternative mentioned in the forum discussion: Compile all outdated files, and only those, with one compiler invocation to multiple object files.

https://github.com/D-Programming-Language/tools/pull/170

--
May 16, 2016
https://issues.dlang.org/show_bug.cgi?id=14654

greensunny12@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |greensunny12@gmail.com

--
June 13
https://issues.dlang.org/show_bug.cgi?id=14654

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|dmd                         |tools

--
January 09
https://issues.dlang.org/show_bug.cgi?id=14654

Mathias LANG <pro.mathias.lang@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |pro.mathias.lang@gmail.com
         Resolution|---                         |MOVED

--- Comment #6 from Mathias LANG <pro.mathias.lang@gmail.com> ---
Moved to https://github.com/dlang/tools/issues/428

--