
#8255: GC Less Operation -------------------------------------+------------------------------------- Reporter: sirinath | Owner: Type: feature request | Status: new Priority: lowest | Milestone: _|_ Component: Compiler | Version: 7.7 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: Runtime | Difficulty: Project (more performance bug | than a week) Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------- Changes (by ezyang): * priority: highest => lowest * difficulty: Unknown => Project (more than a week) * version: 7.6.3 => 7.7 * milestone: => _|_ Comment: A very interesting research question! It should be possible, but there are a number of problems you have to overcome (and if overcome, would probably be a very interesting publication): * GHC programs generate a lot of garbage, and it is probably still better to do tracing GC for nurseries (if it's dead, a reference counting implementation has to traverse it anyway) and only turn to reference counts when objects graduate. So you'll want to actually implement some sort of deferred reference counting such as [http://grothoff.org/christian/teaching/2007/4705/urc-oopsla-2003.pdf Ulterior Reference Counting], where non-nursery is reference counted. * Reference counting schemes have to deal with data cycles. Immutability gets you part of the way there, since a non-cyclic immutable data structure is guaranteed to remain non-cyclic. But mutually recursive definitions as well as traditional mutation would have to be dealt with, or you'd have garbage. * And of course, you'd have to actually implement reference counting. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8255#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler