ideas for the IDE; 'obsolete pragmas'

Erik Zuurbier erik.zuurbier@klm.nl
Mon, 6 Apr 1998 11:46:40 +0200


>We have the following proposal: when a new version of a module is created
>we compare the types. If all types remain the same, a stored dynamic can refer
>to this new module instead of the old one. Otherwise the stored dynamic will
>remain to point to the old module containing the original definition.
>Old modules cannot be trown away if stored dynamics still refer to it.

My original idea had nothing to do with dynamics. I wonder what Arjan has to say
about the original idea.

About the dynamics proposal: How do you enforce that old modules cannot be
thrown away if ...? And how do you make sure in the end, at the moment
the last dynamic reference vanishes, that old module is actually removed? And how
do you ensure that newly created references to a module can only point to the
newest version (if that is what you want)?. I guess this last thing calls for a list of modules
which are 'visible' for new references.

And are evolutions of modules strictly linear? Could not a module be split in two
newer modules, or merge with a different module? If so, there may be two new
versions of a function. How do you pick the right one?

Most of it looks like a classical garbage collection issue, with files instead of memory nodes.
If dynamics references are not supposed to be circular, reference counting garbage
collection may be a good idea. But then where are you going to store the reference
counts? Probably in the modules themselves. I guess that is all part of the project to
implement a functional operating system.

The proces of how to transfer a reference from an old version to a new version still
sounds a bit shaky. It is not safe (type congruence is not enough to ensure that
the application with the new module version performs as it did with the old version:
both the semantics and all the run time behaviour could be different), nor is it enough
(function names and types may have changed while an easy source to source
transformation would have made a transfer possible).

The spirit of strictness analysis and uniqueness checking and inferencing is that
undecidable problems are given a 'safe approximation'. I trust that for the proces
of transfering a reference from an old to a new version will also be given a safe
approximation, possibly relying on pragma's stating the safety.

Regards Erik Zuurbier