@Araq:

> As I said "araqsgc" is a hybrid, it will work with async too.

I can see how "araqgc" is intended to be a hybrid; **what I fail to see in the 
code or in testing is how to make the ``traverseObjHook`` fire** so I can test 
it without calling dispose, deepDispose, or `collect`, which would be the other 
manual part of the "hybrid".

But also, being a hybrid, **it also has all the disadvantages of mark-and-sweep 
GC 's in nondeterministic destruction, execution overheads, etc**., even if the 
overheads have been reduced in this simplification.

> However, to me it's an open question of whether `async` intrinsically really 
> needs it (atomic ref counting) or the current `async` implementations need it 
> or neither...

I haven't looked at the code for `async` yet; guess it's time I did. Maybe its 
good that I am coming from outside the dev team, as all of you have been buried 
in the current implementations and problems for so many years that maybe there 
is something else that is so simple that it has been missed: I've got something 
cooking that I think might be possible within the current general code base 
framework that should be compatible with owned although having owned shouldn't 
be necessary to make it work based on how clever the current Nim compiler is at 
managing data flow analysis built around the AST; another good thing about it 
is that it isn't a tracing GC, but I think it should be able to support some 
implementation of `async`.

Give me a few hours to let it stew and to try to test some of the ideas within 
the current version (now up to version 1.0.2 I see - unannounced?) and I'll 
present it here for your opinion. I may not be able to easily test it within 
the current code as I need to be able to use some sort of "hooks" to tie into 
the handling of `ref`'s, so I may need to emulate that with some use of 
destructors plus some manual code.

Reply via email to