Thread overview
WinAPI and druntime [was: WinAPI for druntime and OpenGL for deimos]
Nov 25, 2012
Gor Gyolchanyan
Nov 25, 2012
Vladimir Panteleev
Nov 25, 2012
Jonathan M Davis
Nov 25, 2012
Vladimir Panteleev
November 25, 2012
So I've come to the point where I have the WinAPI modules from dsource.organd want to add them to druntime.

Here are the issues, that need to be discussed before I can send a pull request:

1. There is a number of version flags that are expected to be specified to the compiler, which specifies the Windows version, Internet Explorer version, winsock version and a bunch of other stuff. I suppose these will go into the sc.ini under Windows, because those won't change too often and are equivalent to linking with phobos (not necessary, but provided as a default).

2. There are some static libraries, which are pragma(lib, ...) -ed inside those modules, so those libraries will have to be included to the DMD distribution.

3. They include MinGW copyright and header comments, which I don't know if can be submitted to druntime as is and if they can be removed either.

4. They contain a special WindowsUnitTests version, which could probably be replaced with a regular unittests or removed from the DMD distribution.

5. The package to put them is to be decided, because core.sys.windows contains druntime-specific modules whic hare not to be mixed with WinAPI modules.

Please leave your comments regarding this.
Maintainers of druntime: is this ok?

-- 
Bye,
Gor Gyolchanyan.


November 25, 2012
On Sunday, 25 November 2012 at 07:13:15 UTC, Gor Gyolchanyan wrote:
> So I've come to the point where I have the WinAPI modules from
> dsource.organd want to add them to druntime.
>
> Here are the issues, that need to be discussed before I can send a pull
> request:
>
> 1. There is a number of version flags that are expected to be specified to
> the compiler, which specifies the Windows version, Internet Explorer
> version, winsock version and a bunch of other stuff. I suppose these will
> go into the sc.ini under Windows, because those won't change too often and
> are equivalent to linking with phobos (not necessary, but provided as a
> default).

I suggest changing the code to fall back to the minimum version Druntime supports if none of the version flags are specified on the command-line. I believe that would be Windows XP at the moment.

> 2. There are some static libraries, which are pragma(lib, ...) -ed inside
> those modules, so those libraries will have to be included to the DMD
> distribution.

Agreed.

> 3. They include MinGW copyright and header comments, which I don't know if
> can be submitted to druntime as is and if they can be removed either.

Copyright? Last I checked almost all files, except the WinSock ones, are explicitly specified to be in the public domain. Please clarify?

> 4. They contain a special WindowsUnitTests version, which could probably be
> replaced with a regular unittests or removed from the DMD distribution.

There are only two blocks:
The first (w32api.d) prints some information regarding the targeted Windows version, I believe. I guess the code could be removed or left as-is.
The second (dde.d) seems to tests some struct properties. This can be a normal unittest.

> 5. The package to put them is to be decided, because core.sys.windows
> contains druntime-specific modules whic hare not to be mixed with WinAPI
> modules.

I think non-binding code should be moved out of that package. Other OS-specific packages do not seem to contain non-binding code.

November 25, 2012
On Sunday, November 25, 2012 10:38:36 Vladimir Panteleev wrote:
> Copyright? Last I checked almost all files, except the WinSock ones, are explicitly specified to be in the public domain. Please clarify?

That's certainly what I remember. What's always confused me though is that I've heard that you can't copy from Microsoft's headers because of the copyright on them, but I have no idea where on earth anyone could ever have gotten any Windows headers except from Microsoft. But given that I've heard it disputed that you can even truly copyright headers in the first place (since they're essentially an API rather than an implementation), I really don't know what the legal situation with all of this is. However, many of the mingw headers definitely are definitely in the public domain from what I recall.

- Jonathan M Davis
November 25, 2012
On Sunday, 25 November 2012 at 12:28:11 UTC, Jonathan M Davis wrote:
> On Sunday, November 25, 2012 10:38:36 Vladimir Panteleev wrote:
>> Copyright? Last I checked almost all files, except the WinSock
>> ones, are explicitly specified to be in the public domain. Please
>> clarify?
>
> That's certainly what I remember. What's always confused me though is that
> I've heard that you can't copy from Microsoft's headers because of the
> copyright on them, but I have no idea where on earth anyone could ever have
> gotten any Windows headers except from Microsoft. But given that I've heard it
> disputed that you can even truly copyright headers in the first place (since
> they're essentially an API rather than an implementation), I really don't know
> what the legal situation with all of this is. However, many of the mingw
> headers definitely are definitely in the public domain from what I recall.

You might be able to recreate the headers using:
1) Documentation
2) Programs which print the values of various defines
3) Reimplementation, for macros (e.g. MAKE_HRESULT).

IIRC, this is similar to what Wine guidelines recommend.