The next iteration of scope

Oren Tirosh via Digitalmars-d digitalmars-d at puremagic.com
Wed Mar 18 06:01:49 PDT 2015


On Sunday, 15 March 2015 at 19:11:36 UTC, Marc Schütz wrote:
> On Sunday, 15 March 2015 at 17:31:17 UTC, Nick Treleaven wrote:
>> On 15/03/2015 14:10, "Marc =?UTF-8?B?U2Now7x0eiI=?= 
>> <schuetzm at gmx.net>" wrote:
>>> Here's the new version of my scope proposal:
>>> http://wiki.dlang.org/User:Schuetzm/scope2
>>>
>>> It's still missing real-life examples, a section on the 
>>> implementation,
>>> and a more formal specification, as well as a discussion of 
>>> backwards
>>> compatibility. But I thought I'd show what I have, so that it 
>>> can be
>>> discussed early on.
>>>
>>> I hope it will be more digestible for Walter & Andrei. It's 
>>> more or less
>>> an extended version of DIP25, and avoids the need for most 
>>> explicit
>>> annotations.
>>
>> I too want a scope attribute e.g. for safe slicing of static 
>> arrays, etc. I'm not sure if it's too late for scope by 
>> default though, perhaps.
>
> If we get @safe by default, we automatically get scope by 
> default, too.

The scope storage class is a two way contract. The function 
promises not to escape the reference. The caller promises to 
ensure the storage that the reference is pointing to will remain 
valid for the duration of the function call. In some cases, the 
caller code may need to take active steps to ensure that, like 
keeping an otherwise temporary reference alive to prevent it from 
being deallocated.

But what if the pointer is null? Can this be considered to 
fulfill the caller's part of the deal?

Yes, the old @notnull debate again. For me, @safe by default and 
scope by default also suggests @notnull by default for scope 
references. Sorry if this opens up directions you don't want to 
think about at the moment...


More information about the Digitalmars-d mailing list