<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2653.12">
<TITLE>RE: [Modules] Unloading and Conflicting Versions</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>Dave, could you please repost these links?&nbsp; I couldn't find them in the squeak ML archives.</FONT>
</P>

<P><FONT SIZE=2>thank you,</FONT>
<BR><FONT SIZE=2>Rob</FONT>
</P>

<P><FONT SIZE=2>&gt; -----Original Message-----</FONT>
<BR><FONT SIZE=2>&gt; From: Dave [<A HREF="mailto:dave@bedarra.com">mailto:dave@bedarra.com</A>]</FONT>
<BR><FONT SIZE=2>&gt; Sent: Monday, August 20, 2001 9:06 PM</FONT>
<BR><FONT SIZE=2>&gt; To: Les Tyrrell</FONT>
<BR><FONT SIZE=2>&gt; Cc: squeak-dev@lists.squeakfoundation.org; modsqueak@bluefish.se</FONT>
<BR><FONT SIZE=2>&gt; Subject: Re: [Modules] Unloading and Conflicting Versions</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; 1. The mechanism for unloading is indeed a good deal more complex than</FONT>
<BR><FONT SIZE=2>&gt; loading and was one of the throny problems OTI had to address in</FONT>
<BR><FONT SIZE=2>&gt; building embedded Smalltalk and Java. </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; Perhaps the issue of unloading is something to be deferred until after</FONT>
<BR><FONT SIZE=2>&gt; the basic module and component mechanisms are defined and tested? </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; 2. To my knowledge the only existing system that supports current</FONT>
<BR><FONT SIZE=2>&gt; execution of multiple versions classes/methods is MS.NET with their</FONT>
<BR><FONT SIZE=2>&gt; assemblies. This itself gets problematic however if you want to run</FONT>
<BR><FONT SIZE=2>&gt; shared assemblies. I posted the references earlier for those </FONT>
<BR><FONT SIZE=2>&gt; interested</FONT>
<BR><FONT SIZE=2>&gt; in the problem.&nbsp; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; Regards,</FONT>
<BR><FONT SIZE=2>&gt; Dave</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; Les Tyrrell wrote:</FONT>
<BR><FONT SIZE=2>&gt; &gt; </FONT>
<BR><FONT SIZE=2>&gt; &gt; ----- Original Message -----</FONT>
<BR><FONT SIZE=2>&gt; &gt; From: Dan Moniz &lt;dnm@pobox.com&gt;</FONT>
<BR><FONT SIZE=2>&gt; &gt;&nbsp;&nbsp; &gt; I'm imagining that when you file in a ChangeSet (let's </FONT>
<BR><FONT SIZE=2>&gt; say Foo.cs)</FONT>
<BR><FONT SIZE=2>&gt; &gt;&nbsp;&nbsp; &gt; into your image (Bar.image), your image is writing out </FONT>
<BR><FONT SIZE=2>&gt; information to</FONT>
<BR><FONT SIZE=2>&gt; &gt;&nbsp;&nbsp; &gt; it's Bar.changes file that reflect the things Foo.cs is </FONT>
<BR><FONT SIZE=2>&gt; doing to your</FONT>
<BR><FONT SIZE=2>&gt; &gt;&nbsp;&nbsp; &gt; image. Then, to back out, you could use a currently </FONT>
<BR><FONT SIZE=2>&gt; fictional &quot;Undo&quot;</FONT>
<BR><FONT SIZE=2>&gt; &gt;&nbsp;&nbsp; &gt; feature which would allow you to back up steps as recorded in</FONT>
<BR><FONT SIZE=2>&gt; &gt;&nbsp;&nbsp; &gt; Bar.changes</FONT>
<BR><FONT SIZE=2>&gt; &gt; </FONT>
<BR><FONT SIZE=2>&gt; &gt; There are a few things that would need to be done when </FONT>
<BR><FONT SIZE=2>&gt; unloading a module.&nbsp; For</FONT>
<BR><FONT SIZE=2>&gt; &gt; one, you would like a rapid way of gc'ing or otherwise </FONT>
<BR><FONT SIZE=2>&gt; mutating any instances</FONT>
<BR><FONT SIZE=2>&gt; &gt; defined by that module.&nbsp; Then, you will want a rapid way of </FONT>
<BR><FONT SIZE=2>&gt; removing the</FONT>
<BR><FONT SIZE=2>&gt; &gt; definitions found in that module.&nbsp; ChangeSets are no </FONT>
<BR><FONT SIZE=2>&gt; better, and no worse, at</FONT>
<BR><FONT SIZE=2>&gt; &gt; doing this than any other scheme.&nbsp; There is no need to </FONT>
<BR><FONT SIZE=2>&gt; iterate over a change</FONT>
<BR><FONT SIZE=2>&gt; &gt; log- the ChangeSet already has an accounting of what it has </FONT>
<BR><FONT SIZE=2>&gt; modified.&nbsp; So would</FONT>
<BR><FONT SIZE=2>&gt; &gt; an OasisModule, or a Collage Layer.</FONT>
<BR><FONT SIZE=2>&gt; &gt; </FONT>
<BR><FONT SIZE=2>&gt; &gt; However, while associating a ChangeSet with either a </FONT>
<BR><FONT SIZE=2>&gt; Collage Layer or an</FONT>
<BR><FONT SIZE=2>&gt; &gt; OasisModule seems reasonable to me, trying to warp </FONT>
<BR><FONT SIZE=2>&gt; ChangeSet into becoming more</FONT>
<BR><FONT SIZE=2>&gt; &gt; like these things does not seem reasonable.</FONT>
<BR><FONT SIZE=2>&gt; &gt; </FONT>
<BR><FONT SIZE=2>&gt; &gt;&nbsp;&nbsp; &gt; This may necessitate modifications to userland tools to </FONT>
<BR><FONT SIZE=2>&gt; deal with</FONT>
<BR><FONT SIZE=2>&gt; &gt;&nbsp;&nbsp; &gt; .changes file, and perhaps some modification to the information</FONT>
<BR><FONT SIZE=2>&gt; &gt;&nbsp;&nbsp; &gt; and/or format of information stored in .changes files, </FONT>
<BR><FONT SIZE=2>&gt; but I don't</FONT>
<BR><FONT SIZE=2>&gt; &gt;&nbsp;&nbsp; &gt; think it would be too drastic and I don't think it </FONT>
<BR><FONT SIZE=2>&gt; would have much</FONT>
<BR><FONT SIZE=2>&gt; &gt;&nbsp;&nbsp; &gt; with the implementation of ChangeSets themselves.</FONT>
<BR><FONT SIZE=2>&gt; &gt; </FONT>
<BR><FONT SIZE=2>&gt; &gt; What's wrong with the idea of implementing the roles of a </FONT>
<BR><FONT SIZE=2>&gt; Components and</FONT>
<BR><FONT SIZE=2>&gt; &gt; Modules?&nbsp; In Oasis, a Module is a component that keeps </FONT>
<BR><FONT SIZE=2>&gt; track of Shared Globals,</FONT>
<BR><FONT SIZE=2>&gt; &gt; Undeclared variables, Pools, and a few other things.&nbsp; </FONT>
<BR><FONT SIZE=2>&gt; ChangeSets don't do this.</FONT>
<BR><FONT SIZE=2>&gt; &gt; </FONT>
<BR><FONT SIZE=2>&gt; &gt; The role of a changeset is to keep track of changes... the </FONT>
<BR><FONT SIZE=2>&gt; role of an</FONT>
<BR><FONT SIZE=2>&gt; &gt; OasisModule is to act as a place in which those changes </FONT>
<BR><FONT SIZE=2>&gt; take effect.&nbsp; These are</FONT>
<BR><FONT SIZE=2>&gt; &gt; separate roles, so I would not reccomend mixing them.&nbsp; </FONT>
<BR><FONT SIZE=2>&gt; ChangeSets are just fine</FONT>
<BR><FONT SIZE=2>&gt; &gt; the way they are, at least in the sense of the scoping of </FONT>
<BR><FONT SIZE=2>&gt; their responsibilities</FONT>
<BR><FONT SIZE=2>&gt; &gt; to tracking changes, and no more.</FONT>
<BR><FONT SIZE=2>&gt; &gt; </FONT>
<BR><FONT SIZE=2>&gt; &gt; Using ChangeSets as a means of identifying chunks of code </FONT>
<BR><FONT SIZE=2>&gt; to turn into a package</FONT>
<BR><FONT SIZE=2>&gt; &gt; is another issue, as far as I know there is nothing wrong with that.</FONT>
<BR><FONT SIZE=2>&gt; &gt; </FONT>
<BR><FONT SIZE=2>&gt; &gt; - les</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
</P>

</BODY>
</HTML>