digitalmars.D - Usability of D on windows?
- John Burton (33/33) Aug 23 2016 I've recently gone back to looking at D and like what I see.
- Cauterite (8/8) Aug 23 2016 On Tuesday, 23 August 2016 at 21:15:40 UTC, John Burton wrote:
- John Burton (5/14) Aug 23 2016 Thanks, I'm more worried about the speed of the produced code for
- Cauterite (6/7) Aug 23 2016 Remember, if you don't like the compiler's output, you can always
- Adam D. Ruppe (3/5) Aug 23 2016 It is at the bottom of the downloads page.
- John Burton (3/8) Aug 23 2016 Although they have windows as a host it says that the target is
- Adam D. Ruppe (3/5) Aug 23 2016 geeze, you're right. I thought they used to have it.
- Cauterite (4/6) Aug 23 2016 I heard that GDC worked with MinGW at some point in the past, so
- John Colvin (12/28) Aug 23 2016 LDC is what you want. I predict you will run into some bugs
- John Burton (5/10) Aug 23 2016 Interestingly I found that LDC is crashing when I compile my code
- Kagamin (3/5) Aug 24 2016 I probably use LDC since it appeared and never seen it crash, but
- rikki cattermole (3/8) Aug 24 2016 A couple of releases ago it use to crash for me most of the time. Now
- Seb (7/10) Aug 23 2016 Forgot the part about the struggling fight of LDC. Their
- Sean Campbell (4/15) Aug 23 2016 A MingW version of GDC can be found here:
- Joakim (8/15) Aug 23 2016 Dmd is very well-supported on Windows, but its optimizing backend
- kink (23/42) Aug 24 2016 The times when Windows wasn't a first class target for LDC are
- Chris (4/11) Aug 24 2016 Cool. I'll soon (try to) switch to LDC on Windows for release
- Guillaume Piolat (10/17) Aug 24 2016 Since several versions the configuration on Windows became
- kinke (7/13) Aug 24 2016 There's a multilib edition for the CI builds for the time being.
- John Burrton (11/24) Aug 25 2016 Thanks everyone for the information here.
- Kagamin (3/6) Aug 25 2016 Did you try to get error messages from LDC? IIRC it will print
- John Burton (7/13) Aug 25 2016 I will try to get the exact messages tomorrow but I found that
- David Nadlinger (7/8) Aug 25 2016 Please do – the -deps switch is certainly not the most
- John Burton (23/32) Aug 25 2016 If I try to compile this :-
I've recently gone back to looking at D and like what I see. I've mostly been looking at it on Linux where it seems efficient and stable. However the project I'd really like to use it for is on windows (x86-64 but if at all possible I'd like to compiler for x86 as well). But my experience on windows has been poor. What I want to build is a 3d opengl graphics application. Performance is fairly important. My experience on Linux is that DMD is a great compiler but if you want decent speed you need to use GDC or LDC. (And from looking at the generated code, which backs up that opinion...) The problem I have is that I can't see to find a decent, stable platform on windows. I installed DMD and visual D and it works well enough. And it's great for trying stuff out, but I worry about speed of produced code for my application. The website front page tells me that I can run GDC but search all I can and I can't find any kind of installer for windows, only for Linux. I managed to find and install LDC, and that mostly, somewhat works. Except that half the time the compiler crashes with a stack trace, and sometimes it just hangs. Occasionally if I move and rearrange the code it will manage to compile it. There are also worrying comments on the LDC web page about how "Most programs work just fine" and "Several unit tests still fail" and stuff about it relying on stuff from visual c++ in order to work that make me seriously doubt it's stability and correctness. I'm like an honest opinion... Am I wasting my time trying to do this project in D on Windows? I'll continue to use and support the language but I don't want to fight a losing battle and end up having to move away anyway... Is there a stable LDC, or is there possibly something wrong with my install? Is LDC sufficiently working to use for "production"? If there a GDC port to windows at all? It seems there is, but if there is it's well hidden...
Aug 23 2016
On Tuesday, 23 August 2016 at 21:15:40 UTC, John Burton wrote:Well, you're fighting a losing battle by trying to use GDC/LDC on You make the Digital Mars backend sound unusable, but I think you should give it another chance. I personally find most bugs originating from the backend are triggered by corner-cases which can be easily avoided until the bug is fixed.
Aug 23 2016
On Tuesday, 23 August 2016 at 21:25:29 UTC, Cauterite wrote:On Tuesday, 23 August 2016 at 21:15:40 UTC, John Burton wrote:Thanks, I'm more worried about the speed of the produced code for DMD. I need to do a lot of vector math and the code produced by DMD just seems way slower. It might be fast enough though so I could try it.Well, you're fighting a losing battle by trying to use GDC/LDC You make the Digital Mars backend sound unusable, but I think you should give it another chance. I personally find most bugs originating from the backend are triggered by corner-cases which can be easily avoided until the bug is fixed.
Aug 23 2016
On Tuesday, 23 August 2016 at 21:36:12 UTC, John Burton wrote: It might be fast enoughthough so I could try it.Remember, if you don't like the compiler's output, you can always substitute it with your own (inline assembly!). Incidentally I'm in the process of fixing a number of IASM bugs in the frontend right now.
Aug 23 2016
On Tuesday, 23 August 2016 at 21:15:40 UTC, John Burton wrote:If there a GDC port to windows at all? It seems there is, but if there is it's well hidden...It is at the bottom of the downloads page. https://gdcproject.org/downloads
Aug 23 2016
On Tuesday, 23 August 2016 at 21:29:31 UTC, Adam D. Ruppe wrote:On Tuesday, 23 August 2016 at 21:15:40 UTC, John Burton wrote:Although they have windows as a host it says that the target is arm-linux-gnueabi so I assumed they were cross compilers?If there a GDC port to windows at all? It seems there is, but if there is it's well hidden...It is at the bottom of the downloads page. https://gdcproject.org/downloads
Aug 23 2016
On Tuesday, 23 August 2016 at 21:37:57 UTC, John Burton wrote:Although they have windows as a host it says that the target is arm-linux-gnueabi so I assumed they were cross compilers?geeze, you're right. I thought they used to have it. I always just use dmd on windows anyway myself.
Aug 23 2016
On Tuesday, 23 August 2016 at 21:37:57 UTC, John Burton wrote:Although they have windows as a host it says that the target is arm-linux-gnueabi so I assumed they were cross compilers?I heard that GDC worked with MinGW at some point in the past, so it may still be feasible without cross-compilation. You'll have to ask someone else about this though.
Aug 23 2016
On Tuesday, 23 August 2016 at 21:15:40 UTC, John Burton wrote:Except that half the time the compiler crashes with a stack trace, and sometimes it just hangs. Occasionally if I move and rearrange the code it will manage to compile it. There are also worrying comments on the LDC web page about how "Most programs work just fine" and "Several unit tests still fail" and stuff about it relying on stuff from visual c++ in order to work that make me seriously doubt it's stability and correctness. I'm like an honest opinion... Am I wasting my time trying to do this project in D on Windows? I'll continue to use and support the language but I don't want to fight a losing battle and end up having to move away anyway... Is there a stable LDC, or is there possibly something wrong with my install? Is LDC sufficiently working to use for "production"? If there a GDC port to windows at all? It seems there is, but if there is it's well hidden...LDC is what you want. I predict you will run into some bugs occasionally, but some of the documentation / wiki stuff is probably old and overly pessimistic about the state of affairs. Please report any bugs you do hit to https://github.com/ldc-developers/ldc/issues (any compiler crash is a bug). If you have no patience for any bugs and must have the best optimised code on windows, D isn't quite there yet. However, if you can stomach a little pain, the reward is pretty good. P.S. relying on the microsoft linker is not much different (once it's installed) to relying on ld on linux.
Aug 23 2016
On Tuesday, 23 August 2016 at 22:15:33 UTC, John Colvin wrote:If you have no patience for any bugs and must have the best optimised code on windows, D isn't quite there yet. However, if you can stomach a little pain, the reward is pretty good. P.S. relying on the microsoft linker is not much different (once it's installed) to relying on ld on linux.Interestingly I found that LDC is crashing when I compile my code from visual D but not from the command line. It looks like it's using the same options but it's hard to tell exactly. I'll investigate further tomorrow and give it another try.
Aug 23 2016
On Tuesday, 23 August 2016 at 22:30:29 UTC, John Burton wrote:Interestingly I found that LDC is crashing when I compile my code from visual D but not from the command line.I probably use LDC since it appeared and never seen it crash, but I compile from command line.
Aug 24 2016
On 25/08/2016 12:54 AM, Kagamin wrote:On Tuesday, 23 August 2016 at 22:30:29 UTC, John Burton wrote:A couple of releases ago it use to crash for me most of the time. Now though? I'm quite happy using it, fairly stable (only through CLI).Interestingly I found that LDC is crashing when I compile my code from visual D but not from the command line.I probably use LDC since it appeared and never seen it crash, but I compile from command line.
Aug 24 2016
On Tuesday, 23 August 2016 at 21:15:40 UTC, John Burton wrote:Is there a stable LDC, or is there possibly something wrong with my install? Is LDC sufficiently working to use for "production"?Forgot the part about the struggling fight of LDC. Their development has caught up quite a lot lately and they are now on par with the DMD frontend. Also LDC does support Windows, unfortunately the link is a bit hidden from the official downloads page: https://github.com/ldc-developers/ldc/releases
Aug 23 2016
On Tuesday, 23 August 2016 at 21:15:40 UTC, John Burton wrote:I've recently gone back to looking at D and like what I see. I've mostly been looking at it on Linux where it seems efficient and stable. [...]A MingW version of GDC can be found here: http://botcode.net/gdc-5.2.0+2.066.1.7z It seems to work most of the time.trace, and sometimes it just hangs. Occasionally if I move and rearrange the code it will manage to compile it. There are also worrying comments on the LDC web page about how "Most programs work just fine" and "Several unit tests still fail" and stuff about it relying on stuff from visual c++ in order to work that make me seriously doubt it's stability and correctness. [...]
Aug 23 2016
On Tuesday, 23 August 2016 at 21:15:40 UTC, John Burton wrote:I'm like an honest opinion... Am I wasting my time trying to do this project in D on Windows? I'll continue to use and support the language but I don't want to fight a losing battle and end up having to move away anyway... Is there a stable LDC, or is there possibly something wrong with my install? Is LDC sufficiently working to use for "production"?Dmd is very well-supported on Windows, but its optimizing backend is not as good as llvm. Ldc's MSVC support has only been around for a year or two, so while it produces faster code, you may run into some bugs. If you have to have speed, your best bet is to use ldc and report any issues you run into. I don't think gcc supports Windows very well, so I doubt gdc can either.
Aug 23 2016
I managed to find and install LDC, and that mostly, somewhat works. Except that half the time the compiler crashes with a stack trace, and sometimes it just hangs. Occasionally if I move and rearrange the code it will manage to compile it. There are also worrying comments on the LDC web page about how "Most programs work just fine" and "Several unit tests still fail" and stuff about it relying on stuff from visual c++ in order to work that make me seriously doubt it's stability and correctness.The times when Windows wasn't a first class target for LDC are over. We've got Windows CI for a year now, so there should be no severe Windows-specific bugs (all unittests and the LDC-specific set of DMD tests work). What's still missing is proper debuginfos, and I'm unsure about DLL support. As you didn't mention the LDC version you tried, I recommend using bleeding-edge master for Windows: https://github.com/ldc-developers/ldc/releases/tag/LDC-Win64-master I've never experienced any hangs; compiler crashes may occur, but should be very rare. Be sure to let us know when you hit something at https://github.com/ldc-developers/ldc/issues - we can't fix stuff we don't know about!Interestingly I found that LDC is crashing when I compile my code from visual D but not from the command line.Worth investigating.I'm like an honest opinion... Am I wasting my time trying to do this project in D on Windows? I'll continue to use and support the language but I don't want to fight a losing battle and end up having to move away anyway...I've been working on LDC for a couple of years (focusing on Windows), mainly because I want to be able to replace C++ at work at some point. Instead of waiting for others to fix it, I realized one needs to get involved to push things forward. I still don't write any D code except for unittests and occasional DMD front-end mods, so I'd love to get some feedback on real-world usage of LDC on Windows. On Tuesday, 23 August 2016 at 21:25:29 UTC, Cauterite wrote:Well, you're fighting a losing battle by trying to use GDC/LDCCauterite: You obviously have no idea about LDC at least, so please stop making such noninformed claims.
Aug 24 2016
On Wednesday, 24 August 2016 at 08:23:26 UTC, kink wrote:I've been working on LDC for a couple of years (focusing on Windows), mainly because I want to be able to replace C++ at work at some point. Instead of waiting for others to fix it, I realized one needs to get involved to push things forward. I still don't write any D code except for unittests and occasional DMD front-end mods, so I'd love to get some feedback on real-world usage of LDC on Windows.Cool. I'll soon (try to) switch to LDC on Windows for release builds, since it seems to have improved a lot. I'll keep you updated.
Aug 24 2016
On Wednesday, 24 August 2016 at 08:23:26 UTC, kink wrote:I've been working on LDC for a couple of years (focusing on Windows), mainly because I want to be able to replace C++ at work at some point. Instead of waiting for others to fix it, I realized one needs to get involved to push things forward. I still don't write any D code except for unittests and occasional DMD front-end mods, so I'd love to get some feedback on real-world usage of LDC on Windows.Since several versions the configuration on Windows became "plug'n play". Using DUB I still use --combined because of a bug that may have been fixed already. A minor problem is that on Windows users expect both x86 and x86_64 builds so one has to juggle with the 2 LDC PATH to release both. I've said this thrice already and it's quite minor really. Honestly since 1.0.0-b2 it's pure bliss and I've come to trust it very much.
Aug 24 2016
On Wednesday, 24 August 2016 at 21:13:45 UTC, Guillaume Piolat wrote:A minor problem is that on Windows users expect both x86 and x86_64 builds so one has to juggle with the 2 LDC PATH to release both. I've said this thrice already and it's quite minor really.There's a multilib edition for the CI builds for the time being. Just make NOT to run it inside a 'VS Tools Command Prompt', so that LDC can set up the MSVC++ environment variables for 32/64 bit linking.Honestly since 1.0.0-b2 it's pure bliss and I've come to trust it very much.Thanks, appreciated!
Aug 24 2016
On Thursday, 25 August 2016 at 06:08:50 UTC, kinke wrote:On Wednesday, 24 August 2016 at 21:13:45 UTC, Guillaume Piolat wrote:Thanks everyone for the information here. I think my best approach is to use visual D with DMD for most of my development work as it seems better supported and debugger works better etc. And then make *frequent* builds from command line to test with LDC and use that for "production". It sounds from what I read here that it's stable enough to use for that :) I'll try to find a small test case that crashes the compiler in visual D and check out what version I'm using etc, and submit a bug report if I am able.A minor problem is that on Windows users expect both x86 and x86_64 builds so one has to juggle with the 2 LDC PATH to release both. I've said this thrice already and it's quite minor really.There's a multilib edition for the CI builds for the time being. Just make NOT to run it inside a 'VS Tools Command Prompt', so that LDC can set up the MSVC++ environment variables for 32/64 bit linking.Honestly since 1.0.0-b2 it's pure bliss and I've come to trust it very much.Thanks, appreciated!
Aug 25 2016
On Thursday, 25 August 2016 at 09:57:28 UTC, John Burrton wrote:I'll try to find a small test case that crashes the compiler in visual D and check out what version I'm using etc, and submit a bug report if I am able.Did you try to get error messages from LDC? IIRC it will print colored text, which may not work with a pipe.
Aug 25 2016
On Thursday, 25 August 2016 at 11:52:51 UTC, Kagamin wrote:On Thursday, 25 August 2016 at 09:57:28 UTC, John Burrton wrote:I will try to get the exact messages tomorrow but I found that the difference is that under visual D it adds (amongst others) the -O and -deps filename options. If I add _both_ of those on the ldc2.exe command line it often crashes. without either it's stable. I'll try to get a self contained report tomorrow.I'll try to find a small test case that crashes the compiler in visual D and check out what version I'm using etc, and submit a bug report if I am able.Did you try to get error messages from LDC? IIRC it will print colored text, which may not work with a pipe.
Aug 25 2016
On Thursday, 25 August 2016 at 20:31:59 UTC, John Burton wrote:I'll try to get a self contained report tomorrow.Please do – the -deps switch is certainly not the most well-tested part of LDC. It mostly inherits this part of the code from DMD, but there might be a subtle, unintentional difference hiding somewhere. (There is also https://github.com/ldc-developers/ldc/issues/1625.) — David
Aug 25 2016
On Thursday, 25 August 2016 at 20:47:28 UTC, David Nadlinger wrote:On Thursday, 25 August 2016 at 20:31:59 UTC, John Burton wrote:If I try to compile this :- import std.stdio; void process(ref float[1] data) { for(int i = 0; i < 1; i++) data[i] = data[i] + 1.0f; } void main() { float[1] data; readf("%s", &data[0]); process(data); writefln("The answer is %s\n", data[0]); } using the command line :- ldc2 -O -deps=out.txt test.d Then sometimes it works and sometimes it crashes with a traceback (but without useful symbols for most of it). Sounds like it could be that bug that was linked. I don't care about the deps myself but the visual D seems to add it.I'll try to get a self contained report tomorrow.Please do – the -deps switch is certainly not the most well-tested part of LDC. It mostly inherits this part of the code from DMD, but there might be a subtle, unintentional difference hiding somewhere. (There is also https://github.com/ldc-developers/ldc/issues/1625.) — David
Aug 25 2016