Escaping the Tyranny of the GC: std.rcstring, first blood
Manu via Digitalmars-d
digitalmars-d at puremagic.com
Tue Sep 23 05:17:02 PDT 2014
On 23 September 2014 17:17, Dmitry Olshansky via Digitalmars-d
<digitalmars-d at puremagic.com> wrote:
> 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(); }
Problem with this is you can't make a refcounted int[] without
mangling the type, and you also can't allocate a ref counted 3rd-party
type.
>> 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.
It's important to be able to override opInc/opDec for user types, but
I think a default scheme for foreign or builtin types is very
important.
>> 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.
Perhaps I'm not clear what you mean by intrusive/non-intrusive?
More information about the Digitalmars-d
mailing list