Prototype of Ownership/Borrowing System for D

Ola Fosheim Grøstad ola.fosheim.grostad at gmail.com
Tue Nov 26 14:10:35 UTC 2019


On Tuesday, 26 November 2019 at 13:07:07 UTC, Timon Gehr wrote:
> Yes, but `scope` does not track the allocator. `scope` 
> restricts lifetime, and possibly aliasing. As I also said, 
> alternatively, and perhaps preferably, we could annotate 
> aliasing restrictions separately, but the accepted DIP1021 
> already introduces some checking against aliasing outside @live 
> code.

One possibility for thread local objects:

Add "lifetime-names" and let scope be one, and deduce as many as 
possible. Then have a stack of thread local allocators (i.e. 
arena).

Then let lifetime-name track the allocator-position on that stack.

Then only allow the popping of an allocator when there are no 
pointers carrying the life-time name with allocator-stack-depth 0 
(top).

The problem is shared objects...



More information about the Digitalmars-d mailing list