Reflective GC

Fare Rideau rideau@nef.ens.fr
Thu, 22 May 1997 20:28:02 +0200 (MET DST)


>>>>: Fare
>>>: ET
>>: Fare
>: Basile Starynkevitch <Basile.Starynkevitch@cea.fr>
[Answer to a message in french that I translated]
[To Basile: alors, il est bon, mon thème?]

>>>> Note that a reflective architecture allows you to choose
>>>> and/or write your GC without breaking code that lives above.
>>>> With multi-object-space support, you can even have objects
>>>> that live in different GC spaces, yet seamlessly communicate.
>>>  Yes, but would the flexibility of dynamically changing the GC
>>> algorithm be worth it?
>>>
>> Yes it is. Every program has different requirements,
>> different usage patterns, etc.  Providing a real-time GC for
>> everything is just horrible; yet many things would
>> appreciate having one.  Same goes for generational GCs, GC
>> guardians, etc.
>
> I wholeheartedly agree on the principle, but I stumble on a slight
> conceptual difficulty.
>
> Your reflective GC reflexif eats some memory.
> How can you prove that it needn't be GCed itself?
>
I can no more no less prove it in the case of a reflective GC
as in the case of a non-reflective GC! The problem is quite independent.
After all, reflection will allow a better factoring of the program,
which might make a proof easier.
Note that there needn't be a dynamic reflection involved
(at least to begin with); to obtain an optimized, static GC,
all the meta-code will have been reduced long before the GC runs.
The day we're heading for dynamic change of GC,
the main problem will rather be with correct preservation
of existing persistent data.

> Of course I know and share the usual arguments (bootstrap et al.)
> in favor of a completely reflective approach
>
Thanks.

> The only difficulty for the GC, it seems to me, is that the system
> (or the human author) must prove that the GC implementation
> runs correctly.
> 
> I don't believe it's impossible, but quite difficult.
>
Well, proving GC in general is difficult. It's been done.
(see Damien Doligez's thesis at INRIA).
I don't think that reflection will make it harder (or easier).
Well, granted, it will in that there's no good theory
of reflection with proofs currently. But such theory is precisely
the subject of my PhD thesis, and proving a GC would be a good application!

> Do you have papers or implementations of reflective GCs?
>
I fear I don't. The cream of GC scientist and hackers,
on gclist@iecc.com, haven't heard about one,
and seem not to be interested in developing it. :( :( :(

> Thanks.
>
> Regards,
>
> N.B. Any opinions expressed here are solely mine, and not of my organization.
> N.B. Les opinions exprimees ici me sont personnelles et n engagent pas le CEA.
>
>
> ----------------------------------------------------------------------
> Basile STARYNKEVITCH   ----  Commissariat à l Energie Atomique
> DRN/DMT/SERMA * CEA/Saclay bat.470 * 91191 GIF/YVETTE CEDEX * France
> fax: (33) 01,69.08.85.68; phone: 01,69.08.40.66; home: 01,46.65.45.53
> email: Basile . Starynkevitch @ cea . fr  (but remove white space)
> I speak french, english, russian. Je parle français, anglais, russe.
> ----------------------------------------------------------------------

== Fare' -- rideau@ens.fr -- Franc,ois-Rene' Rideau -- DDa(.ng-Vu~ Ba^n ==
Join the TUNES project for a computing system based on computing freedom !
                TUNES is a Useful, Not Expedient System
URL: "http://www.eleves.ens.fr:8080/home/rideau/Tunes/"