Enhancements can enable memory-safe reference counting
    tsbockman 
    thomas.bockman at gmail.com
       
    Thu May 27 00:57:51 UTC 2021
    
    
  
On Thursday, 27 May 2021 at 00:20:44 UTC, vitoroak wrote:
> The same happens for a Vector implementation where you can call 
> push (that can reallocate) while having a reference to an 
> element.
Although it's not shown in my earlier code example, I did 
recognize the problem of reassignment/reallocation potentially 
invalidating extant borrowed references in my full system. (But, 
I missed the problem of manual destructor calls.)
My solution for reassignment/reallocation was simply to make 
`opAssign`, unique move operations, etc. `@system`. Of course 
this is a significant limitation, but I think there is still a 
lot of value in a reference counting system if the rest of its 
operations can be `@trusted`.
But, if the destructor has to be `@system` too, then it is no 
longer possible to use the reference counting system for any 
practical purpose in `@safe` code. For myself, I will just cheat 
and leave the destructor `@trusted` anyway, because why would I 
manually call it in `@safe` code to begin with? But, we'll need a 
better answer than that for the standard library.
    
    
More information about the Digitalmars-d
mailing list