Escaping the Tyranny of the GC: std.rcstring, first blood

Dmitry Olshansky via Digitalmars-d digitalmars-d at puremagic.com
Tue Sep 23 00:17:41 PDT 2014


23-Sep-2014 10:47, Manu via Digitalmars-d пишет:
> On 23 September 2014 16:19, deadalnix via Digitalmars-d
> <digitalmars-d at puremagic.com <mailto:digitalmars-d at puremagic.com>> wrote:
>
>     On Tuesday, 23 September 2014 at 03:03:49 UTC, Manu via
>     Digitalmars-d wrote:
>
>         I still think most of those users would accept RC instead of GC.
>         Why not
>         support RC in the language, and make all of this library noise
>         redundant?
>         Library RC can't really optimise well, RC requires language
>         support to
>         elide ref fiddling.
>
>
>     I think a library solution + intrinsic for increment/decrement (so
>     they can be better optimized) would be the best option.
>
>
> Right, that's pretty much how I imagined it too. Like ranges, where
> foreach makes implicit calls to contractual methods, there would also be
> a contract for refcounted objects, and the compiler will emit implicit
> calls to inc/dec if they exist?

In my imagination it would be along the lines of
@ARC
struct MyCountedStuff{ void opInc(); void opDec(); }

> That should eliminate 'RefCounted', you would only need to provide
> opInc()/opDec() and rc fiddling calls would be generated automatically?

Non-intrusive ref-counts are useful too. And not everybody is thrilled 
by writing inc/dec code again and again.

> Then we can preserve the type of things, rather than obscuring them in
> layers of wrapper templates...

This would be intrusive ref-counting which may be more efficient.


-- 
Dmitry Olshansky


More information about the Digitalmars-d mailing list