new release doesn't work as advertised

ZombineDev via Digitalmars-d digitalmars-d at puremagic.com
Thu Aug 13 20:05:32 PDT 2015


On Thursday, 13 August 2015 at 22:32:05 UTC, learn wrote:
> yup - but on other pages visuald is advertised. when you order 
> aspirin you don't want get GABA. i  think it is a QS thing - 
> when you release you look at all the advertisements.

I'm sorry to hear that you had bad out-of-the-box experience on 
Win10 + VS2015. I want to clear some things up:
1) There's nowhere written on the homepage that DMD (D's 
reference compiler) supports VS 2015 so I don't know where got 
that impression from.

2) The problem is not with VisualD itself. VisualD is a VS 
extension which uses whatever D compiler you have installed to 
build your project. All the nice features that VisualD provides 
(http://rainers.github.io/visuald/visuald/StartPage.html) are 
independent of the compiler. Actually, at the moment *only* 
VisualD advertises that it has VS2015 support and in fact it 
works as advertised - VisualD correctly detects that you have 
VS2015 and registers with it. I've been using Windows 10 x64 + 
VS2015 + VisualD v0.3.42 for a couple of days now I didn't have 
any issues with VisualD itself - developing, building and 
debugging works as advertised (for 32-bit apps that is, though 
VisualD has no problem telling the compiler to produce 64-bit 
code, so when you install a version of DMD that *has* MSVCRT 14.0 
support it should all work out).

3) The real problem (as others have pointed out) is that MS made 
breaking changes in their lib C runtime
(List of changes: 
https://msdn.microsoft.com/en-us/library/bb531344.aspx
(see CRT, especially the part about <stdio.h> and <conio.h>)
Blog post: 
http://blogs.msdn.com/b/vcblog/archive/2014/06/10/the-great-crt-refactoring.aspx)
and we need to add support for this in DMD and the other 
compilers.

MSVC++ was not standards compliant for a long time and now the 
workarounds for it need to be reworked in druntime. It's not easy 
as it sounds because we need to support both MSVC++ v14.0  (that 
comes with VS 2015) and MSVC++ v12.0 and older (otherwise it's a 
breaking change for out users).

According to Steam, Windows 10 x64 users are only 2.2% and those 
who use VS2015 is an even smaller number, so I don't know why you 
are expecting first day support for a traditionally 
non-standards-compliant C runtime with insignificant userbase. 
Note that for 32-bit DMD ships with a custom C runtime lib and 
linker that work perfectly fine on Windows 10 and VS 2015.

AFAIU, for DMD there are three things that need to be done:
a) The installer needs to be able detect VS 2015 and Windows SDK 
10 so it can add the correct paths to DMD's configuration file 
(sc.ini).
b) MSVC C stdio runtime support wrapper needs to be put in a 
separate library from druntime and split in two parts: MSVCRT12 
and MSVCRT14.
c) DMD needs to able to detect the correct MSVCRT version at 
link-time and choose the appropriate wrapper to link druntime to.

a) could have been easily released with the latest DMD release, 
but I guess it was decided that it is better to wait till the 
full MSVCRT v14 support is finished (otherwise you would just get 
different kind of linker errors).

So sum up, support for MSVCRT 14 is in progress and should be 
complete for DMD v2.068.1 (expected ~1 month from now) or DMD 
v2.069.0 (expected ~2 months from now). Here you can follow the 
status of this issue: 
https://issues.dlang.org/show_bug.cgi?id=14849



More information about the Digitalmars-d mailing list