July 12, 2007
It looks like a bug in the cygwin version of gdc. dmd works fine. I've filed it as:

http://d.puremagic.com/issues/show_bug.cgi?id=1338

This is the 3rd compiler bug I've found in 2 days of using D (and all on hello world level projects).

2 in gdc and 1 in dmd. Someone is trying to tell me something.
  a) use linux more
  b) get involved and help fix the cygwin port.

Unfortunately I fear other users with these kinds of problem may end up getting message c) "don't use D on windows until its more stable".
Which is also equivalent to don't use D for projects that need to be portable (to windows anyway).

Regards,

Bruce.
July 13, 2007
Bruce Adams wrote:
> It looks like a bug in the cygwin version of gdc. dmd works fine.
> I've filed it as:
> 
> http://d.puremagic.com/issues/show_bug.cgi?id=1338
> 
> This is the 3rd compiler bug I've found in 2 days of using D (and all on hello world level projects).
> 
> 2 in gdc and 1 in dmd. Someone is trying to tell me something.
>   a) use linux more
>   b) get involved and help fix the cygwin port.
> 
> Unfortunately I fear other users with these kinds of problem may end up getting message c) "don't use D on windows until its more stable".
> Which is also equivalent to don't use D for projects that need to be portable (to windows anyway).

Well the DMD bug you found is actually an OPTLINK bug (the long env vars trip up the linker thing, right), not really a bug in the compiler, per se.  But still, a DMD toolchain bug, yeh.  I'm surprised no one has run into that yet in 10 years or more of DMD/DMC usage.  Maybe it's a known issue in the DMC community?

But anyway, crazy linker bug aside -- the message I get is "When on Windows, use DMD".  Set yourself up a special dmd.bat that puts environment variables the way DMD likes em, and zero out any crazy long vars from Cygwin.  I use 'console' (http://sourceforge.net/projects/console) and have a tab set up to run a dmdvars.bat with this in it:

-----------------------
@echo off

echo Setting up environment for the DMD D compiler


set PATH=%DMDDIR%\dmd\bin;%DMDDIR%\dm\bin;%DMDDIR%\dsss\bin;%PATH%
set LIB=%DMDDIR%\dmd\lib;%DMDDIR%\dm\lib;%LIB%;"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib"
set INCLUDE=%INCLUDE%;"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include"
set WXDIR=c:\usr\pkg\wxWidgets\wxMSW-2.8.4
-------------------------

--bb