On Sat, 2 Jul 2011 16:51:53 +0100, you wrote: >Apple recently announced a new static analysis in Clang called ARC >(Automatic Reference Counting). The idea is to provide what GC >provides (zero memory management code by the programmer), but not to >incur the runtime penalty of having to have the GC run. It seems to be >extremely effective in objective-C land. > >I was wondering if any of the compiler gurus out there could comment on >the applicability of this kind of analysis to Haskell. Dropping the GC >and hence stopping it blocking all threads and killing parallel >performance seems like nirvana.
Reference counting as a means of lifetime management has been around for a long time in Microsoft's Component Object Model. And in both (Microsoft) Visual Basic and (Borland/CodeGear/Embarcadero) Delphi, reference counting is automatic, in a way that appears to be essentially identical to what Apple is describing. So, the concept is nothing new; the new part is that it is being offerred in a C dialect. >The one major problem that's still left with ARC is that it does not >solve the retain cycle problem of reference counting. Programmers must >insert a "weak" keyword to break cycles in their data graphs. Could >even this analysis be automated statically? Could we put up with a >language extension that added this annotation? For handling cycles, there are alternatives to weak references, but I don't know that any of them is better than weak references. Excluding weak references, I don't know of a way to deal with cycles that isn't computationally equivalent to what full-blown garbage collectors already do, so there's really nothing to be gained there. If there were a way to do static analysis, there would be no need for garbage collection as it is currently implemented--the compiler would be able to insert explicit object lifetime management directly into the code. -Steve Schafer _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe