[Issue 9673] New: Add --incremental option to rdmd
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Mar 9 06:47:49 PST 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9673
Summary: Add --incremental option to rdmd
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: andrei at erdani.com
--- Comment #0 from Andrei Alexandrescu <andrei at erdani.com> 2013-03-09 06:47:47 PST ---
Currently rdmd follows the following process for building:
1. Fetch the main file (e.g. main.d) from the command line
2. Compute transitive dependencies for main.d and cache them in a main.deps
file in a private directory. This computation is done only when dependencies
change the main.deps file gets out of date.
3. Build an executable passing main.d and all of its dependencies on the same
command line to dmd
This setup has a number of advantages and disadvantages. For large projects
built of relatively independent parts, an --incremental option should allow a
different approach to building:
1. Fetch the main file (e.g. main.d) from the command line
2. Compute transitive dependencies for main.d and cache them in a main.deps
file in a private directory
3. For each such discovered file compute its own transitive dependencies in a
worklist approach, until all dependencies of all files in the project are
computed and cached in one .deps file for each .d file in the project. This
computation shall be done only when dependencies change and some .deps files
get out of date.
4. Invoke dmd once per .d file, producing object files (only for object files
that are out of date). Invocations should be runnable in parallel, but this may
be left as a future enhancement.
5. Invoke dmd once with all object files to link the code.
The added feature should not interfere with the existing setup. Users should
compare and contrast the two approaches just by adding or removing
--incremental in the rdmd command line.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list