Safe Memory Management and Ownership.

Chris M. chrismohrfeld at comcast.net
Fri Jul 13 13:43:58 UTC 2018


On Thursday, 12 July 2018 at 21:31:04 UTC, xray wrote:
> On Thursday, 12 July 2018 at 14:13:25 UTC, Chris M. wrote:
>> On Wednesday, 11 July 2018 at 22:59:50 UTC, xray wrote:
>>> [...]
>>
>> I feel the following should be disallowed, since we've moved 
>> some checking to runtime. Ideally this system would all happen 
>> at compile-time.
>>
>> auto r3 = r2; // Smooth reference
>> auto w = r3.getWidth(); // An exception is raised if r3 is not 
>> valid.
>
> If we disallow the use of smooth references, we fall into the 
> same paradigm as Rust. Then it's going to be hard to implement 
> data structures with many references to the same object and the 
> language becomes less flexible.
>
> But yes, I assume we are in Safe Memory Management so that we 
> can do :
>
> if ( isValidRef(r3) ) {
>    auto w = r3.getWidth();
> }
>
> Also, I have started to look at the dip-1000. At first glance, 
> "scope" is an approach that makes sense but it does not seem to 
> fit with the "ownership" concept that I suggest, ...unless 
> someone has a brilliant idea to reconcile all those concepts.

I was concerned there may have been a conflict between your idea 
and DIP1000, but now that I look closer that may not be true. 
Maybe it could even help with smooth references?

auto r1 := new Ref();
scope r2 = r1; // we know r2 will not outlive r1


More information about the Digitalmars-d mailing list