DIP69 - Implement scope for escape proof references
Dicebot via Digitalmars-d
digitalmars-d at puremagic.com
Sun Dec 7 06:12:04 PST 2014
On Thursday, 4 December 2014 at 09:25:11 UTC, 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.
Thanks a lot of trying to move forward with this. Also glad to
see DIP36 didn't vanish completely useless :P It will take me
some time to provide a detailed response so I'll post a summary
of my impression first.
I recognize and respect your attempt to go for most simple
solution that is still useful in practice. Can't say I am happy
about it but it is better to have something working than awesome
plans that never get implemented. In this context trying to get
most of scope as storage class seems right.
But from existing cases it doesn't seem working good enough. For
example, not being able to represent idiom of `scope ref int
foo(scope ref int x) { return x; }` seems very limiting. There
are also issues that pop up because of missing transitivity.
Maybe this can be fixed within existing proposal, maybe not.
Right now I don't have any strong opinion.
I also don't consider `ref` design as a storage class any kind of
success at all and generally agree with Manu on this topic. At
the same time alternative proposals that make it a qualifier
(like Marc did) do impact existing language much more and this no
small concern.
This won't be easy.
More information about the Digitalmars-d
mailing list