Instead of "owned", I would propose "iso" for read-and-write-uniqueness and 
"trn" for write-uniqueness. With "iso", the "Owner" can safely delete the 
object - no other references exist. With "trn", the object is aliased, but the 
aliases are thread-local. So the owner can safely write to the object, but not 
delete it. With "iso", an object can be transferred/send to another thread 
safely ; but then, the object is lost for the sending thead since it isn't 
reachable for it longer. With "trn", an object can not be given to another 
thread - but it can be converted into a val and values can be aliased always, 
making the object untouchable for any kind of writing or removing from the heap 
as long as other threads might still run. An object that has been transferred 
to another object via "iso" is under full responsibility of the receiving 
thread - it might be deleted or transferred further. If this: 
[https://www.imperial.ac.uk/media/imperial-college/faculty-of-engineering/computing/public/GeorgeSteed.pdf](https://www.imperial.ac.uk/media/imperial-college/faculty-of-engineering/computing/public/GeorgeSteed.pdf)
 or this: 
[https://www.ponylang.io/media/papers/formalizing-generics-for-pony.pdf](https://www.ponylang.io/media/papers/formalizing-generics-for-pony.pdf)
 is of some interest for you, please let me know, Araq. BTW I appreciate your 
approach, it's a wonderful thing for NIM. There are some pecularities though.

Reply via email to