Memory management design
Dicebot
public at dicebot.lv
Wed Jul 10 00:59:40 PDT 2013
On Tuesday, 9 July 2013 at 23:32:13 UTC, BLM768 wrote:
> 1. "scope": refers to stack-allocated memory (which seems to be
> the original design behind "scope"). "scope" references may not
> be stashed anywhere where they might become invalid. Since this
> is the "safest" type of reference, any object may be passed by
> "scope ref".
>
> 2. "owned": refers to an object that is heap-allocated but
> manually managed by another object or by a stack frame. "owned"
> references may only be stashed in other "owned" references. Any
> non-scope object may be passed by "owned ref". This storage
> class might not be usable in @safe code without further
> restrictions.
I think merging "scope" and "owned" can be usable enough to be
interesting without introducing any new concepts. Simply make it
that "scope" in a variable declaration means it is a
stack-allocated entity with unique ownership and "scope" as a
function parameter attribute is required to accept scope data,
verifying no references to it are taken / stored. Expecting
mandatory deadalnix comment about lifetime definition ;)
Only thing I have no idea about is if "scope" attribute should be
shallow or transitive. Former is dangerous, latter severely harms
usability.
More information about the Digitalmars-d
mailing list