low-latency GC

IGotD- nise at nise.com
Sun Dec 6 12:58:44 UTC 2020


On Sunday, 6 December 2020 at 11:07:50 UTC, Ola Fosheim Grostad 
wrote:
>
> ARC can be done incrementally, we can do it as a library first 
> and use a modified version existing GC for detecting failed 
> borrows at runtime during testing.
>
> But all libraries that use owning pointers need ownership to be 
> made explicit.
>
> A static borrow checker an ARC optimizer needs a high level IR 
> though. A lot of work though.

The Rust approach is interesting as it doesn't need an ARC 
optimizer. Everything is a  move so no increase/decrease is done 
when doing that. Increase is done first when the programmer 
decides to 'clone' the reference. This inherently becomes 
optimized without any compiler support. However, this requires 
that the programmer inserts 'clone' when necessary so it isn't 
really automatic.

I was thinking about how to deal with this in D and the question 
is if it would be better to be able to control move as default 
per type basis. This way we can implement Rust style reference 
counting without intruding too much on the rest of the language. 
The question is if we want this or if we should go for a fully 
automated approach where the programmer doesn't need to worry 
about 'clone'.


More information about the Digitalmars-d-learn mailing list