DIP1000: Scoped Pointers
Mike via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Wed Aug 17 00:53:49 PDT 2016
On Wednesday, 17 August 2016 at 07:17:24 UTC, Rory McGuire wrote:
>
>> If DIP1000 is implemented, it will change that behavior, so
>> the
>> allocation will instead be on the GC heap, but the compiler
>> will do some
>> flow-control analysis to prevent escaping references. Is that
>> right?
>>
>> Mike
>>
>
> Not correct, the class would still be on the stack so we can
> have reference semantics during assignment etc, but the
> instance is on the stack so its faster and the function the
> code is inside can optionally be nogc.
>
> DIP1000 will just make the compiler check that a stack instance
> does not escape its scope (though it doesn't cover all cases).
>
> struct Astruct {} // - on stack by default
> class Aclass {} // - on heap by default
> void main() {
> Astruct a = new Astruct; // override, now Astruct is on the
> heap
> (because of "new")
> Aclass c = new Aclass; // on the heap as per-usual
> scope Aclass c1 = new Aclass; // override, now class is on
> the stack
> (most obvious use: to make all references use the same instance)
> }
Got it! Thank you! But it still appears that what's illustrated
on the deprecations page is not being deprecated.
Mike
More information about the Digitalmars-d-announce
mailing list