GSOC Linker project
Steven Schveighoffer
schveiguy at yahoo.com
Mon May 7 10:21:10 PDT 2012
On Mon, 07 May 2012 12:59:24 -0400, Andrew Wiley
<wiley.andrew.j at gmail.com> wrote:
> On Mon, May 7, 2012 at 8:42 AM, Steven Schveighoffer
> <schveiguy at yahoo.com>wrote:
>> On Mon, 07 May 2012 09:27:32 -0400, Alex Rønne Petersen <
>>
>> That's exactly what storing the interface in the object file does. You
>> don't need the source because the object file contains the compiler's
>> interpretation of the source, and any inferred properties it has
>> discovered.
>>
>
> Putting inferred purity into an object file sounds like a bad idea. It's
> not hard to imagine this scenario:
> -function foo in libSomething is inferred as pure (but not declared pure
> by
> the author)
> -exeSomethingElse is compiled to use libSomething, and the compiler takes
> advantage of purity optimizations when calling foo
> -libSomething is recompiled and foo is no longer pure, and
> exeSomethingElse
> silently breaks
no, it just doesn't link.
> Purity inference is fine for templates (because recompiling the library
> won't change the generated template code in an executable that depends on
> it), but in all other cases, the API needs to be exactly what the author
> declared it to be, or strange things will happen.
I agree that's the case with the current object/linker model. Something
that puts inferred properties into the object file needs a new model, one
which does not blindly link code that wasn't compiled from the same
sources.
-Steve
More information about the Digitalmars-d
mailing list