DIP69 - Implement scope for escape proof references

Shammah Chancellor via Digitalmars-d digitalmars-d at puremagic.com
Wed Dec 10 23:25:09 PST 2014


On 2014-12-05 15:27:41 +0000, Steven Schveighoffer said:

> On 12/4/14 4:24 AM, Walter Bright wrote:
>> http://wiki.dlang.org/DIP69
>> 
>> Despite its length, this is a fairly simple proposal. It adds the
>> missing semantics for the 'scope' storage class in order to make it
>> possible to pass a reference to a function without it being possible for
>> it to escape.
>> 
>> This, among other things, makes a ref counting type practical. It also
>> makes it more practical to use other storage allocation schemes than
>> garbage collection.
>> 
>> It does not make scope into a type constructor, nor a general
>> type-annotation system.
>> 
>> It does not provide an ownership system, though it would complement one.
> 
> Can we take a step back here?
> 
> I read many people's comments and I understand only about half of them.
> 
> Can someone who knows what this new feature is supposed to do give some 
> Ali Çehreli-like description on the feature? Basically, let's strip out 
> the *proof* in the DIP (the how it works and why we have it), and focus 
> on how it is to be used.
> 
> I still am having a hard time wrapping my head around the benefits and 
> when to use scope, scope ref, why I would use it. I'm worried that we 
> are adding all this complication and it will confuse the shit out of 
> users, to the point where they won't use it.
> 
> -Steve

This is exactly why this feature should be default behavior with 
compiler warnings generated when things escape scope.

The basic idea is that most things should be on the stack and go away 
when the stack goes away.   The proposal codifies how the compiler 
should infer that references to variables which are to be placed on the 
stack are not escaping their scope.   The benefit is that the GC has to 
do *way* less work from what it has to do now for most of the use cases 
of D.

-Shammah



More information about the Digitalmars-d mailing list