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