Idea #1 on integrating RC with GC

Dmitry Olshansky dmitry.olsh at gmail.com
Wed Feb 5 12:35:52 PST 2014


05-Feb-2014 03:51, Andrei Alexandrescu пишет:
> Consider we add a library slice type called RCSlice!T. It would have the
> same primitives as T[] but would use reference counting through and
> through. When the last reference count is gone, the buffer underlying
> the slice is freed. The underlying allocator will be the GC allocator.
>
> Now, what if someone doesn't care about the whole RC thing and aims at
> convenience? There would be a method .toGC that just detaches the slice
> and disables the reference counter (e.g. by setting it to uint.max/2 or
> whatever).
>
> Then people who want reference counting say
>
> auto x = fun();

How abut just adding a template argument that indicates which container 
type to use for internal allocation?

Array!T a = fun!(Array)(); //Ref-counted
T[] a = fun(); //default args - GC

IMHO solves Phobos side of equation.

-- 
Dmitry Olshansky


More information about the Digitalmars-d mailing list