DIP 45 - approval discussion
Benjamin Thaut
code at benjamin-thaut.de
Sun Nov 10 13:50:49 PST 2013
Am 10.11.2013 20:46, schrieb Walter Bright:
> On 11/10/2013 6:52 AM, Benjamin Thaut wrote:
>
> I understand the consistency argument, but I'll also argue that if one
> raises consistency as an overriding requirement, everything else
> suffers. Everything is a tradeoff.
>
> It's long been recognized that using global variables to communicate
> between interfaces is a bad idea. And it isn't even supported for dlls,
> because the proposed solution to making them work is to wrap them with a
> function (much like D properties).
>
> We'd be going out of our way to support a recognized bad paradigm. There
> is currently no existing D code that requires this. If we add it, then
> we'd be stuck with supporting it for backwards compatibility. If we
> don't add it, and it becomes some sort of crisis that it isn't
> supported, we can add it in later without breaking things.
>
You completely ignored my inlining argument. Lets assume there is some
small function that qualifies for inlining but accesses a TLS variable
marked with the export attribute. The compiler now wants to cross-module
inline it. How does it do that, if there is no way to access TLS
variables across DLL boundaries? The obvious solution would be, not do
it at all. That means to disqualify all functions that do TLS access for
cross-module inlining, because the compiler can't know if they are
linked in from a static or shared library.
With D beeing a language that aims for performance, do we really want to
do that?
Kind Regards
Benjamin Thaut
More information about the Digitalmars-d
mailing list