DIP 45 - approval discussion

Rainer Schuetze r.sagitario at gmx.de
Tue Nov 12 23:31:53 PST 2013



On 10.11.2013 12:38, Benjamin Thaut wrote:
> Attached you will find a e-mail conversation about the discussion of DIP
> 45. I moved the discussion here so everyone can contribute.
>
> Hi,
>
> DIP 45 is waiting for some offical approval / comment so it can be
> implemented. It would be great if one of you could look into the topic
> and give official approval or improvement suggestions as the DIP has
> been in limbo for quite some time now. I'm not willing to start working
> on it before there is official approval, because I made bad experiences
> with this in the past.
>
> In my opinion the DIP is in a state where further discussion will not
> lead to any improvements. The DIP should be implemented to see which
> problems arrise during implementation to then discuss how to solve them.
>
> I've also seen a couple of questions to the state of Windows DLL support
> and shared libraries on the newsgroup. A working export keyword is
> required to actually implement that support on windows.
>
> The DIP: http://wiki.dlang.org/DIP45
> The latest discussion on the NG:
> http://forum.dlang.org/post/kvhu2c$2ikq$1@digitalmars.com
> Bug associated with the problem:
> http://d.puremagic.com/issues/show_bug.cgi?id=9816
>
> Kind Regards
> Benjamin Thaut

I think the DIP is very reasonable. Some random comments:

- when building a single object file or library, I would expect that it 
won't be torn apart later, so optimizations currently limited to 
accesses within the same module by the DIP could be extended to the 
modules included in current compilation target.

- a better example where cross-DLL data accesses to globals are needed 
is TypeInfo, e.g. when a class info references it's base class or 
interfaces.

- I'd be fine with reversing the default for stripping exports from a 
library, i.e. replacing "-libexports" with "-stripexports".

- I agree that cross DLL TLS accesses should be possible, though it 
might be implemented in a second step. Last time I tried it with C++, it 
wasn't supported, but it is probably not missed that much as thread 
local data is not as ubiquitous as in D.

- The DIP should state what happens to template instances. Assuming the 
definition is marked "export", I guess instances will be dllexport if 
they are compiled together with the module that contains the definition. 
What will happen if it is instantiated, but the defining module is 
merely imported?

Rainer


More information about the Digitalmars-d mailing list