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