[Modules] Unloading and Conflicting Versions
Allen Wirfs-Brock
Allen_Wirfs-Brock at Instantiations.com
Tue Aug 21 07:03:52 UTC 2001
Actually, what's really hard is what Team/V called "migration". That is
taking a module or set of modules and atomically replacing them with
different versions of the same modules. Envy does something similar. In
VisualAge Java they call it "replace".
While it's hard, I see this a pretty essential operation in a collaborative
development environment. It's one of those things like working with
incomplete or inconsistent modules that isn't strictly necessary for
deployment but is integral to incremental development.
Alllen
At 09:06 PM 8/20/2001 -0400, Dave wrote:
>1. The mechanism for unloading is indeed a good deal more complex than
>loading and was one of the throny problems OTI had to address in
>building embedded Smalltalk and Java.
>
>Perhaps the issue of unloading is something to be deferred until after
>the basic module and component mechanisms are defined and tested?
>
>2. To my knowledge the only existing system that supports current
>execution of multiple versions classes/methods is MS.NET with their
>assemblies. This itself gets problematic however if you want to run
>shared assemblies. I posted the references earlier for those interested
>in the problem.
>
>Regards,
>Dave
>
>
>Les Tyrrell wrote:
> >
> > ----- Original Message -----
> > From: Dan Moniz <dnm at pobox.com>
> > > I'm imagining that when you file in a ChangeSet (let's say Foo.cs)
> > > into your image (Bar.image), your image is writing out information to
> > > it's Bar.changes file that reflect the things Foo.cs is doing to your
> > > image. Then, to back out, you could use a currently fictional "Undo"
> > > feature which would allow you to back up steps as recorded in
> > > Bar.changes
> >
> > There are a few things that would need to be done when unloading a
> module. For
> > one, you would like a rapid way of gc'ing or otherwise mutating any
> instances
> > defined by that module. Then, you will want a rapid way of removing the
> > definitions found in that module. ChangeSets are no better, and no
> worse, at
> > doing this than any other scheme. There is no need to iterate over a
> change
> > log- the ChangeSet already has an accounting of what it has
> modified. So would
> > an OasisModule, or a Collage Layer.
> >
> > However, while associating a ChangeSet with either a Collage Layer or an
> > OasisModule seems reasonable to me, trying to warp ChangeSet into
> becoming more
> > like these things does not seem reasonable.
> >
> > > This may necessitate modifications to userland tools to deal with
> > > .changes file, and perhaps some modification to the information
> > > and/or format of information stored in .changes files, but I don't
> > > think it would be too drastic and I don't think it would have much
> > > with the implementation of ChangeSets themselves.
> >
> > What's wrong with the idea of implementing the roles of a Components and
> > Modules? In Oasis, a Module is a component that keeps track of Shared
> Globals,
> > Undeclared variables, Pools, and a few other things. ChangeSets don't
> do this.
> >
> > The role of a changeset is to keep track of changes... the role of an
> > OasisModule is to act as a place in which those changes take
> effect. These are
> > separate roles, so I would not reccomend mixing them. ChangeSets are
> just fine
> > the way they are, at least in the sense of the scoping of their
> responsibilities
> > to tracking changes, and no more.
> >
> > Using ChangeSets as a means of identifying chunks of code to turn into
> a package
> > is another issue, as far as I know there is nothing wrong with that.
> >
> > - les
More information about the Squeak-dev
mailing list
|