www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - DSSS 0.72-0.73 and problems with DMD

reply Gregor Richards <Richards codu.org> writes:
OK, a lot of people are having issues with DSSS 0.72 and 0.73 using DMD. 
This is because of a fix to a problem lots of OTHER people were having 
with DSSS 0.71 and DMD.

Here's the timeline:

  - Gregor releases numerous DSSS versions, and finally 0.71.
  - People start reporting problems with libraries and incremental 
compilation using DMD.
  - After investigating, Gregor finds out that DMD never marks anything 
as common data when all files are passed as once, and everything seems 
to work as expected when passing one file at a time.
  - Gregor reports this problem to the newsgroup. Walter: "It's faster."
  - Gregor releases DSSS 0.72 and DSSS 0.73, passing one file at a time 
for DMD.
  - People start reporting different problems with libraries and 
incremental compilation using DMD.
  - After investigating, Gregor finds out that DMD occasionally and 
arbitrarily decides not to mark template instantiations as common, so 
they conflict and the build fails.

Conclusion: DMD cannot reliably build libraries, DMD cannot reliably 
reuse object files. The ONLY configuration that works is passing all .d 
files to the compiler in a one-pass compile. In my opinion, DMD is an 
extremely poor compiler.

So, in 0.74, these changes will go into effect:
1) I am reverting the change that made files pass one at a time.
2) DSSS will /never/ build libraries with DMD. They just don't work 
reliably. For those up on the jargon, the "library" build type will be 
interpreted as the "sourcelibrary" build type.
3) DSSS will never reuse object files for DMD. That implies that DSSS 
will never use incremental compilation with DMD.

None of this will happen until I determine whether the problems are 
GNU/Linux-specific or if they happen on Windows as well, by the way.

Will this cause other problems? Yes. Absolutely. At this point, I'm 
constantly expecting a plethora of bugs from DMD. DMD is essentially a 
plethora of bugs compiled into a single binary. But this setup should 
invoke /less/ bugs than previous setups.

  - Gregor Richards
Nov 03 2007
next sibling parent reply Walter Bright <newshound1 digitalmars.com> writes:
Gregor Richards wrote:
  - After investigating, Gregor finds out that DMD never marks anything 
 as common data when all files are passed as once, and everything seems 
 to work as expected when passing one file at a time.

  - After investigating, Gregor finds out that DMD occasionally and 
 arbitrarily decides not to mark template instantiations as common, so 
 they conflict and the build fails.

Which bugzilla numbers are these two issues?
Nov 03 2007
next sibling parent Bill Baxter <dnewsgroup billbaxter.com> writes:
Walter Bright wrote:
 Gregor Richards wrote:
  - After investigating, Gregor finds out that DMD never marks anything 
 as common data when all files are passed as once, and everything seems 
 to work as expected when passing one file at a time.

  - After investigating, Gregor finds out that DMD occasionally and 
 arbitrarily decides not to mark template instantiations as common, so 
 they conflict and the build fails.

Which bugzilla numbers are these two issues?

I think the "definition different" bug I posted recently may be an instance of the second issue Gregor mentions: http://d.puremagic.com/issues/show_bug.cgi?id=1629 --bb
Nov 03 2007
prev sibling next sibling parent Brad Roberts <braddr puremagic.com> writes:
Bill Baxter wrote:
 Walter Bright wrote:
 Gregor Richards wrote:
  - After investigating, Gregor finds out that DMD never marks 
 anything as common data when all files are passed as once, and 
 everything seems to work as expected when passing one file at a time.

  - After investigating, Gregor finds out that DMD occasionally and 
 arbitrarily decides not to mark template instantiations as common, so 
 they conflict and the build fails.

Which bugzilla numbers are these two issues?

I think the "definition different" bug I posted recently may be an instance of the second issue Gregor mentions: http://d.puremagic.com/issues/show_bug.cgi?id=1629 --bb

I'm pretty sure this bug is also in the exact same family of problems: http://d.puremagic.com/issues/show_bug.cgi?id=1508 Later, Brad
Nov 03 2007
prev sibling parent Gregor Richards <Richards codu.org> writes:
Walter Bright wrote:
 Gregor Richards wrote:
  - After investigating, Gregor finds out that DMD never marks anything 
 as common data when all files are passed as once, and everything seems 
 to work as expected when passing one file at a time.

  - After investigating, Gregor finds out that DMD occasionally and 
 arbitrarily decides not to mark template instantiations as common, so 
 they conflict and the build fails.

Which bugzilla numbers are these two issues?

According to our last conversation regarding the first one, it's a feature. ( http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmar .D&article_id=57477 ) As per the second one, Brad mentioned them: 1508 is precisely it, a few others seem to be instances of the same issue. - Gregor Richards
Nov 04 2007
prev sibling next sibling parent Sebastian Beschke <s.beschke gmx.de> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Gregor Richards schrieb:
 None of this will happen until I determine whether the problems are
 GNU/Linux-specific or if they happen on Windows as well, by the way.

I'm using Windows and having template errors, so I guess they aren't Linux specific. Don't know about libraries, though. Sebastian -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFHLZ9tKb/1n5A2TAMRAq1jAJ9QZe07/KWfMJv4hc0tn/rt5HTazgCePaaM ew/2+Sju5kXauq8bgDJPjBk= =BS7M -----END PGP SIGNATURE-----
Nov 04 2007
prev sibling parent BCS <ao pathlink.com> writes:
Reply to Gregor,

 OK, a lot of people are having issues with DSSS 0.72 and 0.73 using
 DMD. This is because of a fix to a problem lots of OTHER people were
 having with DSSS 0.71 and DMD.
 
 Here's the timeline:
 
 - Gregor releases numerous DSSS versions, and finally 0.71.
 - People start reporting problems with libraries and incremental
 compilation using DMD.
 - After investigating, Gregor finds out that DMD never marks
 anything
 as common data when all files are passed as once, and everything seems
 to work as expected when passing one file at a time.
 - Gregor reports this problem to the newsgroup. Walter: "It's
 faster."

Who cares?!?! The only time I have every had a problem with build times under DMD I was using more 4x swap space than I had RAM*. DMD is never slow! If it worked right twice a often and was 4 times slower I don't think most people would even notice let alone complain. Add a compiler flag if you want but make it work right with incremental build. *BTW this same project will never compile with the all at once solution, I would run out off address space (I wold need ~10GB of RAM to stay out of swap) Hmm... Can GDC be built as a 64bit app?
Nov 04 2007