<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>RE: [Modules] Unloading and Conflicting Versions</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 5.50.4807.2300" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff size=2>It's 
nice to see LindaTalk surviving all these years, in one way or another... 
:-)</FONT></SPAN></DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff 
size=2>Hopefully I'll get around to doing more Squeak from now on, we'll see. 
I'll then take a look at it ;-)</FONT></SPAN></DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff size=2>Keep 
up the good work !!</FONT></SPAN></DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff 
size=2>marcio</FONT></SPAN></DIV>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader><FONT face="Times New Roman" 
  size=2>-----Original Message-----<BR><B>From:</B> 
  squeak-dev-admin@lists.squeakfoundation.org 
  [mailto:squeak-dev-admin@lists.squeakfoundation.org]<B>On Behalf Of</B> 
  Withers, Robert<BR><B>Sent:</B> August 21, 2001 10:41 PM<BR><B>To:</B> 
  'squeak-dev@lists.squeakfoundation.org'<BR><B>Subject:</B> RE: [Modules] 
  Unloading and Conflicting Versions<BR><BR></FONT></DIV>
  <DIV><FONT face=Arial color=#0000ff 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 face=Arial color=#0000ff size=2><SPAN 
  class=409214302-22082001></SPAN></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial color=#0000ff size=2><SPAN 
  class=409214302-22082001>cheers,</SPAN></FONT></DIV>
  <DIV><FONT face=Arial color=#0000ff size=2><SPAN 
  class=409214302-22082001>Rob</SPAN></FONT></DIV>
  <BLOCKQUOTE dir=ltr 
  style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
    <DIV class=OutlookMessageHeader dir=ltr align=left><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 face=Arial color=#0000ff size=2><A 
    href="http://swiki.squeakfoundation.org/squeakfoundation/31">http://swiki.squeakfoundation.org/squeakfoundation/31</A></FONT></DIV>
    <DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV>
    <DIV><SPAN class=705445418-21082001><FONT face=Arial color=#0000ff 
    size=2>marcio</FONT></SPAN></DIV>
    <BLOCKQUOTE dir=ltr 
    style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
      <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></BLOCKQUOTE></BODY></HTML>