<!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.4134.100" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Yes, it has been educational for me.&nbsp; I 
initially tore it apart pretty badly, then went back and only changed just a few 
things.&nbsp; The match: algorithm and added a collection api.&nbsp; The new 
EventTupleSpace, which is not in the version on the CD, uses an async message 
sending mechanism to generate events during access (read, take, write, 
scan).</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>I looked briefly at unification, in Lisp, to 
attempt to bring this to LindaTalk, but I quickly ran out of steam.&nbsp; 
Another idea was expressed where we can use a TupleSpace as a parser, adding 
token rules and grammar productions, then streaming input into the space.&nbsp; 
I believe it would just act as a state machine, where matches for particular 
productions would transition the parser state, allowing other productions to be 
matched.&nbsp; I was to the point where I thought there might be a context 
tuple, which contains the current state,&nbsp; and it would be taken, modified, 
then written, by the productions (eval actions).&nbsp; It's 
complicated!</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Welcome home!&nbsp; ;-)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Rob</FONT></DIV>
<BLOCKQUOTE dir=ltr 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=mqm@magma.ca href="mailto:mqm@magma.ca">Marcio Marchini</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A 
  title=squeak-dev@lists.squeakfoundation.org 
  href="mailto:squeak-dev@lists.squeakfoundation.org">squeak-dev@lists.squeakfoundation.org</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Wednesday, August 22, 2001 1:02 
  AM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> RE: [Modules] Unloading and 
  Conflicting Versions</DIV>
  <DIV><BR></DIV>
  <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> <A 
    href="mailto:squeak-dev-admin@lists.squeakfoundation.org">squeak-dev-admin@lists.squeakfoundation.org</A> 
    [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></BLOCKQUOTE></BODY></HTML>