Smart pointers instead of GC?

Martin Cejp minexew at gmail.com
Sun Feb 2 01:03:00 PST 2014


On Sunday, 2 February 2014 at 05:12:05 UTC, Frank Bauer wrote:
> On Sunday, 2 February 2014 at 04:23:35 UTC, Adam Wilson wrote:
>> Maybe, but my point is that even with no allocations in 
>> phobos, you'd have to verify that ALL the libraries you use 
>> don't GC allocate. That's why so many people in the ARC camp 
>> want to make it the only GC system in D. Multiple GC systems 
>> increase your cognitive load considerably.
>
> Good point. What we DON'T want is a library that comes in 
> MySuperLib-GC, MySuperLib-ARC, MySuperLib-Owning and 
> MySuperLib-Borrowed flavors.
>
> But I don't think that is necessary.
>
> A library function would typically take arguments by reference 
> aka as a Borrowed(T). GC(T), ARC(T) and Owning(T) convert 
> equally well to Borrowed(T). So somebody who uses only GC(T) in 
> her code could use the library just as easily as someone who 
> prefers Owning(T). The library would be compatible with the 
> two, because it does not own the (reference to the) passed 
> object. GC(T) or Owning(T) at the call site would free the 
> object automatically (at the next collection cycle or when 
> leaving the scope). Everybody is happy!
>
> All that is left for the caller is to choose whether she wants 
> to use a library that uses GC *internally*. Interaction is 
> possible in every combination:
>
> 1. I use GC(T),     the library uses GC(T) internally     -> 
> works (with GC),
> 2. I use Owning(T), the library uses GC(T) internally     -> 
> works (with GC),
> 3. I use GC(T),     the library uses Owning(T) internally -> 
> works (with GC),
> 4. I use Owning(T), the library uses Owning(T) internally -> 
> works (w/o GC).

This exists. It's called C++.

I've pretty much given up on GC and do all my allocations in the 
real-time path manually. In a game, there shouldn't be that much 
stuff to allocate once live, anyway.


More information about the Digitalmars-d mailing list