<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>RE: [Modules] Unloading and Conflicting Versions</TITLE>

<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT color=#0000ff face=Arial size=2><SPAN class=409214302-22082001>That's 
where I saw it.&nbsp; Thanks, Marcio.&nbsp; By the way, did you notice that 
LindaTalk is on the new Squeak CD?&nbsp; I have many changes to it, mainly the 
EventTupleSpace and recursive tuple matching, but it isn't quite ready.&nbsp; I 
can send it to you if you would like.</SPAN></FONT></DIV>
<DIV><FONT color=#0000ff face=Arial size=2><SPAN 
class=409214302-22082001></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT color=#0000ff face=Arial size=2><SPAN 
class=409214302-22082001>cheers,</SPAN></FONT></DIV>
<DIV><FONT color=#0000ff face=Arial size=2><SPAN 
class=409214302-22082001>Rob</SPAN></FONT></DIV>
<BLOCKQUOTE dir=ltr 
style="BORDER-LEFT: #0000ff 2px solid; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px; PADDING-LEFT: 5px">
  <DIV align=left class=OutlookMessageHeader dir=ltr><FONT face=Tahoma 
  size=2>-----Original Message-----<BR><B>From:</B> Marcio Marchini 
  [mailto:marcio@bedarra.com]<BR><B>Sent:</B> Tuesday, August 21, 2001 2:55 
  PM<BR><B>To:</B> Withers, Robert; 
  squeak-dev@lists.squeakfoundation.org<BR><B>Cc:</B> 
  modsqueak@bluefish.se<BR><B>Subject:</B> RE: [Modules] Unloading and 
  Conflicting Versions<BR><BR></DIV></FONT>
  <DIV><FONT color=#0000ff face=Arial size=2><A 
  href="http://swiki.squeakfoundation.org/squeakfoundation/31">http://swiki.squeakfoundation.org/squeakfoundation/31</A></FONT></DIV>
  <DIV><FONT color=#0000ff face=Arial size=2></FONT>&nbsp;</DIV>
  <DIV><SPAN class=705445418-21082001><FONT color=#0000ff face=Arial 
  size=2>marcio</FONT></SPAN></DIV>
  <BLOCKQUOTE dir=ltr 
  style="BORDER-LEFT: #0000ff 2px solid; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px; PADDING-LEFT: 5px">
    <DIV class=OutlookMessageHeader><FONT face="Times New Roman" 
    size=2>-----Original Message-----<BR><B>From:</B> Withers, Robert 
    [mailto:rwithers@quallaby.com]<BR><B>Sent:</B> August 21, 2001 2:21 
    PM<BR><B>To:</B> 'squeak-dev@lists.squeakfoundation.org'<BR><B>Cc:</B> 
    modsqueak@bluefish.se<BR><B>Subject:</B> RE: [Modules] Unloading and 
    Conflicting Versions<BR><BR></FONT></DIV>
    <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 "Undo"</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></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>