[dmd-internals] Are we going to have specific version identifiers for the C runtime?

Jonathan M Davis jmdavisProg at gmx.com
Sun Sep 2 23:00:26 PDT 2012


As I understand it, right now, with 32-bit Windows, we're using dmc's C 
runtime, which means that whatever C functions we need from the C runtime come 
from dmc's runtime ( http://www.digitalmars.com/rtl/rtl.html ) and may or may 
not match what Microsoft has. For instance, there's _open. Both dmc and 
Micosoft have it, but not only is it ill-advised to use char functions rather 
than wchar_t functions with Microsoft's runtime, but you're actually supposed 
to use the "secure" version (_wsopen_s) with Microsoft's runtime. As far as I 
can tell, dmc doesn't have any variants of _open, let alone _wsopen_s. So, you 
can't just use one of them and have it be right for both runtimes.

So, how is this sort of thing going to be handled with the new Windows 64 
stuff, since it's supposed to be using Microsoft's runtime? Are we going to 
have a version identifiers to distinguish Microsoft's runtime vs dmc's? Or do 
we have that already, and I missed it?

I don't know how much work will need to be done in the short term with regards 
to different Windows functions in druntime for dmc's and Microsoft's C runtime 
libraries, but if I understand the situation correctly, we're definitely going 
to need to do _some_ work there.

I'm in a position where I need to use _open (or _wsopen_s) in Phobos, which 
means adding it to druntime, and I'd like to know how we're going to handle 
this problem so that I can add it correctly.

- Jonathan M Davis


More information about the dmd-internals mailing list