Prototype of Ownership/Borrowing System for D

rikki cattermole rikki at cattermole.co.nz
Wed Nov 27 10:24:57 UTC 2019


After having some time to think about the messages here and what the 
current specification document says, I have gotten a bit concerned about 
the complexity involved in having multiple states a pointer can be in.

Alternatively what I have derived from these discussions is that what is 
being described is essentially a head const reference type tied to 
lifetime (i.e. DIP25).

With a head const type, I think that we might be able to tick all the 
boxes without much iteration:

- Non-null
- Always points to valid memory
- Pointer cannot be modified _anywhere_ (this includes dynamic arrays 
appending, but not subslicing)
- Not possible to free (can't & or cast to void*)
- Tied to a point in the stack at CT with predetermined point of time 
deallocation

I wrote up some code which basically acts as a proposal for it (using 
``const ref`` as syntax, but that is not important).

https://gist.github.com/rikkimax/4cb2cc8ddcac33c1a9bb20de432f9dea

Am I completely bonkers to think that this might be a workable solution?



More information about the Digitalmars-d mailing list