Thread overview
Initial Windows experience
Jun 14, 2019
Peter Alexander
Jun 14, 2019
Basile B.
Jun 14, 2019
Dennis
Jun 14, 2019
Basile B.
Jun 14, 2019
user
Jun 14, 2019
Andre Pany
Jun 14, 2019
Jonathan Marler
June 14, 2019
I just want to highlight https://github.com/vibe-d/vibe.d/issues/1908 -- building default vibe.d example applications on win32 fails due to obscure optlink error. It has been like this for nearly 2 years.

I am not asking for help with this issue.

Win32 with optlink is the default build for dub on Windows, and given that vibe.d is the most popular D project, this could very well be among the first things that a D newcomer tries. If I were new to D, I'd likely just give up there and assume the language and tooling are immature.

The thread over there says that lld is shipped now with DMD. Is there any reason not to move to that and move away from optlink? It seems unnecessary to maintain and debug a separate linker when another more mature linker is available, working, and already bundled. Are there any reasons to stick with optlink as the default?
June 14, 2019
On Friday, 14 June 2019 at 09:03:17 UTC, Peter Alexander wrote:
> I just want to highlight https://github.com/vibe-d/vibe.d/issues/1908 -- building default vibe.d example applications on win32 fails due to obscure optlink error. It has been like this for nearly 2 years.
>
> I am not asking for help with this issue.
>
> Win32 with optlink is the default build for dub on Windows, and given that vibe.d is the most popular D project, this could very well be among the first things that a D newcomer tries. If I were new to D, I'd likely just give up there and assume the language and tooling are immature.
>
> The thread over there says that lld is shipped now with DMD. Is there any reason not to move to that and move away from optlink? It seems unnecessary to maintain and debug a separate linker when another more mature linker is available, working, and already bundled. Are there any reasons to stick with optlink as the default?

Yes +1 for -m64 by default. This gives a working, out of the box package when people download the 7z, just like in the past.
June 14, 2019
On Friday, 14 June 2019 at 09:03:17 UTC, Peter Alexander wrote:
> Are there any reasons to stick with optlink as the default?

With the latest DUB, it defaults to mscoff now:
https://dlang.org/changelog/2.086.0.html#dmd-mscoff-default

DMD itself still uses OPTLINK I believe.
June 14, 2019
On Friday, 14 June 2019 at 10:29:07 UTC, Dennis wrote:
> On Friday, 14 June 2019 at 09:03:17 UTC, Peter Alexander wrote:
>> Are there any reasons to stick with optlink as the default?
>
> With the latest DUB, it defaults to mscoff now:
> https://dlang.org/changelog/2.086.0.html#dmd-mscoff-default
>
> DMD itself still uses OPTLINK I believe.

no when you pass -m64 to DMD then it uses LLD (shipped with the default distrib) and the static libraries from MinGW (shipped with the default distrib as well). So the idea would be that -m64 should be the default. In this case people who don't have the MS toolchain setup would see their stuff compiled seamlessly and the others too. Even LDC supports -m64 without MS stuff nowadays.
June 14, 2019
FINALLY ... I have been waiting for this since for ever.
I am about to cry now :)
Thanks for all the effort ... all the people who worked on it.

Now, I just have to see how can I port my Java code to D.


June 14, 2019
On Friday, 14 June 2019 at 16:04:11 UTC, user wrote:
> FINALLY ... I have been waiting for this since for ever.
> I am about to cry now :)
> Thanks for all the effort ... all the people who worked on it.
>
> Now, I just have to see how can I port my Java code to D.

One thing you should keep in mind when you want to distribute your applications.
Applications compiled with lld will have a dependency to a ms c runtime dll.
Your application will not work on systems without this dll.
On the other hand applications compiled with ms linker from e.g. MS Build Tools won't have this dependency.

This is nothing bad, just a detail you have to keep in mind whole setting up your production build pipeline.

Kind regards
Andre
June 14, 2019
On Friday, 14 June 2019 at 16:25:07 UTC, Andre Pany wrote:
> On Friday, 14 June 2019 at 16:04:11 UTC, user wrote:
>> FINALLY ... I have been waiting for this since for ever.
>> I am about to cry now :)
>> Thanks for all the effort ... all the people who worked on it.
>>
>> Now, I just have to see how can I port my Java code to D.
>
> One thing you should keep in mind when you want to distribute your applications.
> Applications compiled with lld will have a dependency to a ms c runtime dll.
> Your application will not work on systems without this dll.
> On the other hand applications compiled with ms linker from e.g. MS Build Tools won't have this dependency.
>
> This is nothing bad, just a detail you have to keep in mind whole setting up your production build pipeline.
>
> Kind regards
> Andre

Issue 19760 - Windows 10 -m64 undocumented dependency on MSVC ++ Redistributable when linking with LLD

https://issues.dlang.org/show_bug.cgi?id=19760