[GHC] #8255: GC Less Operation

GHC ghc-devs at haskell.org
Sun Sep 8 21:18:47 CEST 2013


#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




More information about the ghc-tickets mailing list