Thread overview
How to setup GDC with Visual D?
Jul 03, 2015
Marko Grdinic
Jul 03, 2015
rsw0x
Jul 03, 2015
Guy Gervais
Jul 04, 2015
Nicholas Wilson
Jul 04, 2015
Marko Grdinic
Jul 04, 2015
Johannes Pfau
Jul 04, 2015
Guy Gervais
Jul 05, 2015
Johannes Pfau
Jul 06, 2015
Guy Gervais
July 03, 2015
DMC works fine, but when I try to compile using GDC it seems it can't find the compiler:

Building Release GDC x64\ConsoleApp1.exe...
failed launching gdc -m64 -O3 -frelease "-fXf=Release GDC x64\ConsoleApp1.json" "-fdeps=Release GDC x64\ConsoleApp1.dep" -o "Release GDC x64\ConsoleApp1.exe" main.d
Building Release GDC x64\ConsoleApp1.exe failed!

I've tried setting the GDC directory to different levels in the tree, but it gives me the same error regardless. I haven't tried adding GDC binaries to the PATH yet, but I am not sure whether I should. I am (trying) to use the latest unsupported alpha build because the supported version in from 2013 and so I am unsure whether I should use it.

I only dabbled in D a few months ago when I was writing the compiler project for the online course, but did not study it much. Lately though, I've been trying to solve a tough problem on CodeChef and F# is 4x slower than the C++ version on the online judge which makes all my solutions time out. It would have been fine had it been only 2x just as it is on my machine locally.

At any rate, as I've acquired the functional programming style recently, I do not want to go back to writing C++ unless I am forced to and I know GDC can match it in speed based on what I've read on the web.

Any advice regarding how I can get this to work? Thanks.
July 03, 2015
On Friday, 3 July 2015 at 19:17:28 UTC, Marko Grdinic wrote:
> [...]

Have you tried using LDC? I'm unsure of GDC's support on Windows. LDC is D's LLVM compiler, and GDC/LDC generally produce binaries with similar performance.
You can find a download link here: https://github.com/ldc-developers/ldc/releases

I believe you want the ldc2-0.15.2-beta1-win64-msvc.zip package, but I don't use windows so I'm unsure.
July 03, 2015
On Friday, 3 July 2015 at 19:17:28 UTC, Marko Grdinic wrote:
> Any advice regarding how I can get this to work? Thanks.

I got GDC to work with VS2013 + VisualD by going into "Tools->Options" (The VS menu, not the one under "Visual D") and adding the paths under "Projects and Solutions -> Visual D Settings -> GDC Directories". I put the path to the bin folder in MinGW64 and the bin folder in GDC.

I get a 10%-15% speed improvement, which is nice, but my binaries are 10 times larger.

July 04, 2015
On Friday, 3 July 2015 at 23:45:15 UTC, Guy Gervais wrote:
> On Friday, 3 July 2015 at 19:17:28 UTC, Marko Grdinic wrote:
>> Any advice regarding how I can get this to work? Thanks.
>
> I got GDC to work with VS2013 + VisualD by going into "Tools->Options" (The VS menu, not the one under "Visual D") and adding the paths under "Projects and Solutions -> Visual D Settings -> GDC Directories". I put the path to the bin folder in MinGW64 and the bin folder in GDC.
>
> I get a 10%-15% speed improvement, which is nice, but my binaries are 10 times larger.

Thats probably due to debug info which GDC does not strip by default.
July 04, 2015
On Friday, 3 July 2015 at 23:45:15 UTC, Guy Gervais wrote:
> On Friday, 3 July 2015 at 19:17:28 UTC, Marko Grdinic wrote:
>> Any advice regarding how I can get this to work? Thanks.
>
> I got GDC to work with VS2013 + VisualD by going into "Tools->Options" (The VS menu, not the one under "Visual D") and adding the paths under "Projects and Solutions -> Visual D Settings -> GDC Directories". I put the path to the bin folder in MinGW64 and the bin folder in GDC.
>
> I get a 10%-15% speed improvement, which is nice, but my binaries are 10 times larger.

I have no idea where Visual D is supposed to be looking at, but I managed to get it to work by adding the Gdc/bin directory into path. With that it finds it anywhere.
July 04, 2015
Am Sat, 04 Jul 2015 06:30:31 +0000
schrieb "Marko Grdinic" <mrakgr@gmail.com>:

> On Friday, 3 July 2015 at 23:45:15 UTC, Guy Gervais wrote:
> > On Friday, 3 July 2015 at 19:17:28 UTC, Marko Grdinic wrote:
> >> Any advice regarding how I can get this to work? Thanks.
> >
> > I got GDC to work with VS2013 + VisualD by going into "Tools->Options" (The VS menu, not the one under "Visual D") and adding the paths under "Projects and Solutions -> Visual D Settings -> GDC Directories". I put the path to the bin folder in MinGW64 and the bin folder in GDC.
> >
> > I get a 10%-15% speed improvement, which is nice, but my binaries are 10 times larger.
> 
> I have no idea where Visual D is supposed to be looking at, but I managed to get it to work by adding the Gdc/bin directory into path. With that it finds it anywhere.

It's kinda fascinating that GDC/MinGW seems to work for some real world applications. Please note that it's in early alpha state, mostly unsupported and not really well-tested though. (I hope this will change later this year)

Then 10x larger binaries are indeed caused by debug info. If you don't need the debug info you can use the included strip.exe to remove it:

strip.exe yourapp.exe
July 04, 2015
On Saturday, 4 July 2015 at 08:34:00 UTC, Johannes Pfau wrote:

> It's kinda fascinating that GDC/MinGW seems to work for some real world applications.

I haven't really tried a "real world application" as of yet; mostly small puzzle-type problems to get a feel for D.

I did run into a problem with this code:

    int answer = to!(int[])(split("7946590 6020978")).sum;

It compiles fine under DMD but gives the error "Error: no property 'sum' for type 'int[]'" with GDC.

> Then 10x larger binaries are indeed caused by debug info. If you don't need the debug info you can use the included strip.exe to remove it:
>
> strip.exe yourapp.exe

Yes, that helps. My exe went from 6.9MB to 1MB. The DMD exe is 370K.

July 05, 2015
Am Sat, 04 Jul 2015 11:15:57 +0000
schrieb "Guy Gervais" <ggervais@videotron.ca>:

> On Saturday, 4 July 2015 at 08:34:00 UTC, Johannes Pfau wrote:
> 
> > It's kinda fascinating that GDC/MinGW seems to work for some real world applications.
> 
> I haven't really tried a "real world application" as of yet; mostly small puzzle-type problems to get a feel for D.
> 
> I did run into a problem with this code:
> 
>      int answer = to!(int[])(split("7946590 6020978")).sum;
> 
> It compiles fine under DMD but gives the error "Error: no property 'sum' for type 'int[]'" with GDC.
> 

GDC uses a slightly older phobos version. It seems quite some imports
changed in the last phobos version. You need to import std.algorithm
and your code should work with gdc:
http://goo.gl/l4zKki
July 06, 2015
On Sunday, 5 July 2015 at 19:50:41 UTC, Johannes Pfau wrote:
> GDC uses a slightly older phobos version. It seems quite some imports
> changed in the last phobos version. You need to import std.algorithm
> and your code should work with gdc:
> http://goo.gl/l4zKki

Thanks. Turns out my imports are fine, it's my version of GDC that seems to be too old (it's 4.8.0). I tried to install 4.9.2 (as per the one in used in your link) but now I get a bunch of different errors. (half a dozen of "Error 1 undefined reference to `D2rt5tlsgc4initFZPv (void* rt.tlsgc.init())' ...\src\gcc-4.9.2\libphobos\libdruntime\core\thread.d	")

It doesn't really matter; I'm learning D for fun; DMD is more than enough for that purpose.