DSSS 0.72-0.73 and problems with DMD
Gregor Richards
Richards at codu.org
Sat Nov 3 18:12:54 PDT 2007
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
More information about the Digitalmars-d
mailing list