#655: Kill non-working GC cores
-------------------------+--------------------------------------------------
 Reporter:  whiteknight  |       Owner:       
     Type:  RFC          |      Status:  new  
 Priority:  normal       |   Milestone:       
Component:  none         |     Version:  1.1.0
 Severity:  medium       |    Keywords:       
     Lang:               |       Patch:       
 Platform:               |  
-------------------------+--------------------------------------------------

Comment(by doughera):

 Replying to [ticket:655 whiteknight]:

 > src/gc/res_lea.c is an attempt to write a GC core transparently behind
 custom malloc calls, but it doesn't work. It also no longer respects the
 GC API, redefining several functions that will cause compile-time
 conflicts if we enable it.

 I think this, or something that plays a similar role, should not be
 lightly deleted.  It "no longer respects the GC AP", but that's only
 because the GC API has changed.  I think it's useful to maintain this file
 (or create a new "trivial" GC core under the new GC API that plays the
 same role).

 In any case, there are three lessons from res_lea.c that are worth
 carrying forward.  (These were all valid as of the last time I worked on
 the file; I don't know if recent changes have changed them, but I suspect
 not.)

 1.  The hand-rolled "Buffer + refcount" structure in resources.c is clunky
 to use and difficult to get right.  If buffers indeed are supposed to
 carry around a refcount member, they should explicitly do so.  (See the
 pictures in include/parrot/pobj.h.)

 2.  The combination of COW and strings is (or was, last I worked on this)
 too tangled in with the specific implementation in src/gc/reources.c.
 When last I worked on this, I had everything else working.  Only a couple
 of string tests failed.

 3.  The existing res_lea file might be at the wrong level of abstraction,
 but I think the idea is sound.  If parrot has a GC API, it ought to be
 possible to write a very simple GC implementation using that API without
 having to touch bits and pieces of other files.

 > I propose that all three of these be deleted to clear the way for new
 cores, and to require less maintenance going forward. Opinions?

 Pragmatically, it might indeed be easier to delete all three and then re-
 create something vaguely equivalent to res_lea.c as a way of testing
 whether the API is indeed sufficient.  I have no objections to such a
 plan.

-- 
Ticket URL: <https://trac.parrot.org/parrot/ticket/655#comment:3>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets

Reply via email to