<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Sweet. <br>
    <br>
    Chris <br>
    <br>
    <div class="moz-cite-prefix">On 2015-08-19 9:31 PM, Mariano Martinez
      Peck wrote:<br>
    </div>
    <blockquote
cite="mid:CAA+-=mVsQ_7ynLMA8aRdqf-NA3gMWALxxLJ5YYp+ygJB7O_XsQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">Hi guys, 
        <div><br>
        </div>
        <div>As part of my PhD thesis I did take a deep look to
          ImageSegment before starting with Fuel. I wrote a journal
          paper about my experiments with ImageSegment which I thinks
          provides quite a documentation that is not written anywhere.
          Hope it helps: <a moz-do-not-send="true"
href="http://rmod.lille.inria.fr/archives/papers/Mart11c-COMLAN-ObjectSwapping.pdf">http://rmod.lille.inria.fr/archives/papers/Mart11c-COMLAN-ObjectSwapping.pdf</a></div>
        <div><br>
        </div>
        <div>Best, </div>
        <div><br>
        </div>
        <div><br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Wed, Aug 19, 2015 at 10:18 PM, Chris
          Cunnington <span dir="ltr">&lt;<a moz-do-not-send="true"
              href="mailto:brasspen@gmail.com" target="_blank">brasspen@gmail.com</a>&gt;</span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">As I've
            never seen (even on the wiki) an even halfway decent
            demonstration of using an ImageSegment, I'm providing on
            here.<br>
            <br>
                hex := Browser allInstances first.<br>
            <br>
                "let's check what we're saving to compare with later"<br>
                (hex buildWith: ToolBuilder default) openInWorld<br>
            <br>
                exporting := (ImageSegment new copyFromRootsForExport:
            (Array with: hex)).<br>
            <br>
                “let’s put it on disk”<br>
                exporting  writeForExport: 'browser.extSeg'.<br>
            <br>
                "Quit your image without saving. Actually, to get the
            full effect go to <a moz-do-not-send="true"
              href="http://ftp.squeak.org" rel="noreferrer"
              target="_blank">http://ftp.squeak.org</a> and get a fresh
            image of the same kind you exported with. Drag
            browser.extSeg into the new image directory"<br>
            <br>
                “let’s pull it in from the disk”<br>
                importing := (FileDirectory default readOnlyFileNamed:
            'browser.extSeg') fileInObjectAndCode.<br>
            <br>
                "let's check what we imported to see if it's what we
            saved"<br>
                ((importing originalRoots first) buildWith: ToolBuilder
            default) openInWorld<span class="HOEnZb"><font
                color="#888888"><br>
                <br>
                Chris</font></span>
            <div class="HOEnZb">
              <div class="h5"><br>
                <br>
                <br>
                On 2015-08-19 8:12 PM, David T. Lewis wrote:<br>
                <blockquote class="gmail_quote" style="margin:0 0 0
                  .8ex;border-left:1px #ccc solid;padding-left:1ex">
                  I think that image segments are a worthwhile idea,
                  regardless of whether<br>
                  we are worried about support project saving and other
                  image conversion<br>
                  issues. Here is a post by Dan Ingalls from 1999 that
                  summarizes the work<br>
                  on image segments at that time:<br>
                  <br>
                     <a moz-do-not-send="true"
href="http://lists.squeakfoundation.org/pipermail/squeak-dev/1999-October/014604.html"
                    rel="noreferrer" target="_blank">http://lists.squeakfoundation.org/pipermail/squeak-dev/1999-October/014604.html</a><br>
                  <br>
                  Dan also mentioned it in "the future of Squeak, 1999":<br>
                  <br>
                     <a moz-do-not-send="true"
                    href="http://wiki.squeak.org/squeak/393"
                    rel="noreferrer" target="_blank">http://wiki.squeak.org/squeak/393</a><br>
                  <br>
                  It is quite clear that saving projects was a proof of
                  concept to illustrate<br>
                  what might be done with image segments, but the
                  overall motivation had more<br>
                  to do with exploring modularity and mechanisms for
                  delivering minimal images.<br>
                  <br>
                  Tim Rowledge added a comment to that effect here:<br>
                  <br>
                     <a moz-do-not-send="true"
href="http://lists.squeakfoundation.org/pipermail/squeak-dev/1999-October/014604.html"
                    rel="noreferrer" target="_blank">http://lists.squeakfoundation.org/pipermail/squeak-dev/1999-October/014604.html</a><br>
                  <br>
                  I will also note that Spur is not the first time we
                  have needed to think<br>
                  about making image segments work on a new image
                  format. When Dan Ingalls and<br>
                  Ian Piumarta announced the first 64-bit Squeak image,
                  they said "We may ask for<br>
                  help from the Squeak community in converting the
                  remaining plugins, and also<br>
                  image segment code."<br>
                  <br>
                     <a moz-do-not-send="true"
href="http://lists.squeakfoundation.org/pipermail/squeak-dev/2004-August/081383.html"
                    rel="noreferrer" target="_blank">http://lists.squeakfoundation.org/pipermail/squeak-dev/2004-August/081383.html</a><br>
                  <br>
                  Quite a few of the things that Dan and Ian asked for
                  help on have since been<br>
                  done, but I don't think that image segment support for
                  the 64-bit image was<br>
                  among them. With the arrival of Spur, and the upcoming
                  Spur 64-bit image, it<br>
                  would be great if we can put some thought and effort
                  into doing this right.<br>
                  <br>
                  $0.02,<br>
                  <br>
                  Dave<br>
                  <br>
                  <br>
                  On Wed, Aug 19, 2015 at 02:09:32PM -0700, Eliot
                  Miranda wrote:<br>
                  <blockquote class="gmail_quote" style="margin:0 0 0
                    .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      Hi All, but especially Tobias,<br>
                    <br>
                         as we know, ImageSegments are broken in Spur.
                    They work occasionally,<br>
                    but when stressed the VM ends up crashing.  The
                    fundamental issue is that<br>
                    the ImageSegment code makes assumptions about object
                    ordering that Spur<br>
                    violates.  For example, here's ImageSegment's
                    install:<br>
                    <br>
                    install<br>
                    "This operation retrieves the segment if necessary
                    from file storage,<br>
                    installs it in memory, and replaces (using become:)
                    all the root stubs with<br>
                    the reconstructed roots of the segment."<br>
                    <br>
                    | newRoots |<br>
                    state = #onFile ifTrue: [self readFromFile].<br>
                    state = #onFileWithSymbols ifTrue: [self
                    readFromFileWithSymbols.<br>
                    endMarker := segment nextObject. "for enumeration of
                    objects"<br>
                    endMarker == 0 ifTrue: [endMarker := 'End' clone]].<br>
                    (state = #active) | (state = #imported) ifFalse:
                    [self errorWrongState].<br>
                    newRoots := self loadSegmentFrom: segment
                    outPointers: outPointers.<br>
                    state = #imported<br>
                    ifTrue: ["just came in from exported file"<br>
                    arrayOfRoots := newRoots]<br>
                    ifFalse: [<br>
                    arrayOfRoots elementsForwardIdentityTo: newRoots].<br>
                    state := #inactive.<br>
                    Beeper beepPrimitive<br>
                    <br>
                    So before the image segment bytes (the segment inst
                    var) is loaded, the<br>
                    object after it is assigned to endMarker, and if
                    there isn't an object<br>
                    after segment, a new object ('End' clone) is
                    assigned to endMarker.<br>
                    <br>
                    This makes the assumption that objects are allocated
                    in a strict order, and<br>
                    therefore endMarker will always be the object after
                    segment.<br>
                    <br>
                    Loading the segment via "newRoots := self
                    loadSegmentFrom: segment<br>
                    outPointers: outPointers" then turns segment into a
                    zero-length WordArray<br>
                    and its contents into the objects loaded by the
                    segment.  Therefore, in the<br>
                    V3 system, the objects loaded from segment can be
                    enumerated starting at<br>
                    segment nextObject and repeating until endMarker is
                    found:<br>
                    <br>
                    allObjectsDo: aBlock<br>
                    "Enumerate all objects that came from this segment. 
                    NOTE this assumes that<br>
                    the segment was created (and extracted).  After the
                    segment has been<br>
                    installed (install), this method allows you to
                    enumerate its objects."<br>
                    | obj |<br>
                    <br>
                    endMarker == nil ifTrue: [<br>
                    ^ self error: 'Just extract and install, don''t
                    writeToFile:'].<br>
                    segment size ~= 1 ifTrue: [<br>
                    ^ self error: 'Vestigial segment size must be 1
                    (version word)'].<br>
                    <br>
                    obj := segment nextObject.  "Start with the next
                    object after the vestigial<br>
                    header"<br>
                    [obj == endMarker] whileFalse:  "Stop at the next
                    object after the full<br>
                    segment"<br>
                    [aBlock value: obj.<br>
                    obj := obj nextObject].  "Step through the objects
                    installed from the<br>
                    segment."<br>
                    <br>
                    Now, as written, this just won't work in Spur.<br>
                    <br>
                    a) the only place where there is any kind of stable
                    order to objects is in<br>
                    oldSpace, so segment /has/ to be forced to old space
                    to have any chance of<br>
                    its objects being in order when it gets converted
                    from bytes to objects.<br>
                    <br>
                    b) 'End' clone will be in newSpace and so endMarker
                    isn't reliable unless<br>
                    it was obtained by segment nextObject when segment
                    was already in oldSpace.<br>
                    <br>
                    So it is perhaps possible to fix ImageSegments in
                    Spur by forcing segment<br>
                    to oldSpace and being more careful with endMarker. 
                    But I think there is a<br>
                    better way.<br>
                    <br>
                    If the set of objects the segment contains can be
                    obtained some how then<br>
                    this set can be simply enumerated, not depending on
                    nextObject.  The<br>
                    primitive has to answer the array of roots, so its
                    result can't be changed<br>
                    to be the entire array.  But segment could be
                    becomed into an Array of all<br>
                    the objects in segment prior to it being loaded, in
                    which case the above<br>
                    would become<br>
                    <br>
                    <br>
                    install<br>
                    "This operation retrieves the segment if necessary
                    from file storage,<br>
                    installs it in memory, and replaces (using become:)
                    all the root stubs with<br>
                    the reconstructed roots of the segment."<br>
                    <br>
                    | newRoots |<br>
                    state = #onFile ifTrue: [self readFromFile].<br>
                    state = #onFileWithSymbols ifTrue:<br>
                    [self readFromFileWithSymbols].<br>
                    (state = #active) | (state = #imported) ifFalse:
                    [self errorWrongState].<br>
                    newRoots := self loadSegmentFrom: segment
                    outPointers: outPointers.<br>
                    state = #imported<br>
                    ifTrue: "just came in from exported file"<br>
                    [arrayOfRoots := newRoots]<br>
                    ifFalse:<br>
                    [arrayOfRoots elementsForwardIdentityTo: newRoots].<br>
                    state := #inactive.<br>
                    Beeper beepPrimitive<br>
                    <br>
                    allObjectsDo: aBlock<br>
                    "Enumerate all objects that came from this segment. 
                    NOTE this assumes that<br>
                    the segment was created (and extracted).  After the
                    segment has been<br>
                    installed (install), this method allows you to
                    enumerate its objects."<br>
                    | obj |<br>
                    <br>
                    segment isArray ifFalse:<br>
                    [^ self error: 'Segment hasn''t been loaded?'].<br>
                    <br>
                    segment do: aBlock<br>
                    <br>
                    and the endMarker instVar would be deleted.<br>
                    <br>
                    I am willing and ready to modify the primitive to
                    convert the segment<br>
                    correctly.  Who will volunteer to rewrite the
                    image-level ImageSegment code<br>
                    to use the new primitive?<br>
                    <br>
                    <br>
                    <br>
                    On Wed, Aug 12, 2015 at 10:40 PM, Eliot Miranda &lt;<a
                      moz-do-not-send="true"
                      href="mailto:eliot.miranda@gmail.com"
                      target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a></a>&gt;<br>
                    wrote:<br>
                    <br>
                    <blockquote class="gmail_quote" style="margin:0 0 0
                      .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      Hi Tobias,<br>
                      <br>
                      On Wed, Aug 12, 2015 at 10:18 PM, Tobias Pape &lt;<a
                        moz-do-not-send="true"
                        href="mailto:Das.Linux@gmx.de" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:Das.Linux@gmx.de">Das.Linux@gmx.de</a></a>&gt;
                      wrote:<br>
                      <br>
                      <blockquote class="gmail_quote" style="margin:0 0
                        0 .8ex;border-left:1px #ccc
                        solid;padding-left:1ex">
                        Hi all<br>
                        On 13.08.2015, at 02:15, Eliot Miranda &lt;<a
                          moz-do-not-send="true"
                          href="mailto:eliot.miranda@gmail.com"
                          target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a></a>&gt;
                        wrote:<br>
                        <br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          Hi Tobias,<br>
                          <br>
                              forget that. I found it.  THis right?<br>
                          <br>
                          Trunk test suite for Spur<br>
                          Using existing cogspur r.3410<br>
                          cp -r
                          /var/lib/jenkins/workspace/Trunk/default/target/cogspur.r3410<br>
                        </blockquote>
                        /tmp/d20150812-28620-etbikj<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                             image test suite<br>
                          VM:
                          /tmp/d20150812-28620-etbikj/cogspur.r3410/cogspurlinuxht/bin/squeak<br>
/tmp/d20150812-28620-etbikj/cogspur.r3410/cogspurlinuxht/bin/squeak<br>
                        </blockquote>
                        -version<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          /var/lib/jenkins/workspace/Trunk/default/<a
                            moz-do-not-send="true"
                            href="http://tests.st" rel="noreferrer"
                            target="_blank">tests.st</a><br>
                          spawning command 0 with timeout 1800 seconds:<br>
                        </blockquote>
"/tmp/d20150812-28620-etbikj/cogspur.r3410/cogspurlinuxht/bin/squeak"<br>
                        "-vm-sound-null" "-vm-display-null"<br>
"/var/lib/jenkins/workspace/Trunk/default/target/SpurPostTestTrunkImage.image"<br>
                        "../<a moz-do-not-send="true"
                          href="http://tests.st" rel="noreferrer"
                          target="_blank">tests.st</a>"<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          (Command started with PID 28643)<br>
                          2015-08-12T23:31:48.17+01:00: Loading Hudson
                          build tools... from<br>
                        </blockquote>
/var/lib/jenkins/workspace/Trunk/default/target/HudsonBuildTools.st<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          2015-08-12T23:31:48.388+01:00: Running
                          tests...<br>
                          setsockopt: Protocol not available<br>
                          setsockopt: Protocol not available<br>
                          28646:error:140770FC:SSL
                          routines:SSL23_GET_SERVER_HELLO:unknown<br>
                        </blockquote>
                        protocol:s23_clnt.c:612:<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          Recursive not understood error encountered<br>
                          <br>
                          <br>
                          I bet this is ImageSegment related.<br>
                        </blockquote>
                        It sure is.<br>
                        <br>
                               
                         BitmapStreamTests&gt;testMatrixTransform2x3WithImageSegment<br>
                        sends<br>
                               
                         BitmapStreamTests&gt;validateImageSegment<br>
                        <br>
                      </blockquote>
                        Basically the ImageSegment code has been working
                      in Spur on a hope and a<br>
                      prayer.  The code assumes objects are allocated in
                      chronological order and<br>
                      that this order is preserved, not so with Spur. 
                      So post image segment<br>
                      loading someObject/nextObject is used to enumerate
                      the objects loaded.<br>
                      This can't work reliably in Spur.  I *think* (ok I
                      hope) that I've<br>
                      implemented the segment load primitive in Spur to
                      answer an Array of the<br>
                      objects loaded, so that these can be explicitly
                      enumerated.<br>
                      <br>
                      So the job is a) to check that I have indeed
                      implemented the primitive to<br>
                      do this and b) to rewrite the image segment
                      loading code in the light of<br>
                      this.<br>
                      <br>
                      David, this is an example of something that isn't
                      back portable and should<br>
                      not be back-ported.<br>
                      <br>
                      The most strange thing is that I cannot reproduce
                      this on my Mac???<br>
                      <blockquote class="gmail_quote" style="margin:0 0
                        0 .8ex;border-left:1px #ccc
                        solid;padding-left:1ex">
                        There the test does not crash the image???<br>
                        <br>
                      </blockquote>
                      Well then it may be a signed/unsigned bug in image
                      loading instead.  On<br>
                      linux the image typically gets loaded quite high
                      in the address space and<br>
                      so a good portion of the heap ends up above
                      0x7FFFFFFF, or negative<br>
                      territory if misinterpreted as signed integers. 
                      On Mac and Windows the<br>
                      image tends to get loaded quite low and so has to
                      be pretty big to fall<br>
                      foul of signedness issues.<br>
                      <br>
                      <br>
                      Busy right now but will check tomorrow.<br>
                      <br>
                      <br>
                      <blockquote class="gmail_quote" style="margin:0 0
                        0 .8ex;border-left:1px #ccc
                        solid;padding-left:1ex">
                        Best regards<br>
                                 -Tobias<br>
                        <br>
                        <br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          On Wed, Aug 12, 2015 at 5:11 PM, Eliot Miranda
                          &lt;<a moz-do-not-send="true"
                            href="mailto:eliot.miranda@gmail.com"
                            target="_blank">eliot.miranda@gmail.com</a>&gt;<br>
                        </blockquote>
                        wrote:<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          Hi Tobias,<br>
                          <br>
                          On Wed, Aug 12, 2015 at 12:49 PM, Tobias Pape
                          &lt;<a moz-do-not-send="true"
                            href="mailto:Das.Linux@gmx.de"
                            target="_blank">Das.Linux@gmx.de</a>&gt;
                          wrote:<br>
                          <br>
                          On 12.08.2015, at 20:55, Eliot Miranda &lt;<a
                            moz-do-not-send="true"
                            href="mailto:eliot.miranda@gmail.com"
                            target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a></a>&gt;
                          wrote:<br>
                          <br>
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            Hi All,<br>
                            <br>
                            <br>
                                 Fabio's kindly done most of the
                            changes.  But some questions<br>
                          </blockquote>
                        </blockquote>
                        remain for more general discussion.  See below.<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            Fabio,  thanks so much for doing this, and
                            so quickly!<br>
                            <br>
                            On Tue, Aug 11, 2015 at 8:51 PM, Eliot
                            Miranda &lt;<br>
                          </blockquote>
                        </blockquote>
                        <a moz-do-not-send="true"
                          href="mailto:eliot.miranda@gmail.com"
                          target="_blank">eliot.miranda@gmail.com</a>&gt;
                        wrote:<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            Hi All,<br>
                            <br>
                                 who will update <a
                              moz-do-not-send="true"
                              href="http://squeak.org/downloads/"
                              rel="noreferrer" target="_blank"><a class="moz-txt-link-freetext" href="http://squeak.org/downloads/">http://squeak.org/downloads/</a></a>
                            to include the 5.0<br>
                          </blockquote>
                        </blockquote>
                        release?<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            a) I suggest that the 5.0 all-in-one have a
                            line in the left-hand<br>
                          </blockquote>
                        </blockquote>
                        table that includes the 4.6 release and that it
                        precede the 4.6 release in<br>
                        the list.<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            Done.<br>
                            <br>
                            <br>
                            b) the Trunk link points to TrunkImage.zip
                            which contains a non-Spur<br>
                          </blockquote>
                        </blockquote>
                        image.<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            So this is the biggie.  What should we do?<br>
                            <br>
                            - add a Trunk 5.0 build with a different
                            link?  (Noooooo)<br>
                            <br>
                            - change  <a moz-do-not-send="true"
                              href="http://build.squeak.org/job/SqueakTrunk"
                              rel="noreferrer" target="_blank">http://build.squeak.org/job/SqueakTrunk</a>
                            to build what it<br>
                          </blockquote>
                        </blockquote>
                        says (Yessss please, who can do this?)<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          Done: <a moz-do-not-send="true"
                            href="http://build.squeak.org/job/Trunk/"
                            rel="noreferrer" target="_blank">build.squeak.org/job/Trunk/</a><br>
                          But as I said several times, Spur/trunk test
                          just crash for month???<br>
                          <br>
                          can you point me to the crash?  I'm looking at<br>
                        </blockquote>
                        <a moz-do-not-send="true"
href="http://build.squeak.org/job/Trunk/default/lastBuild/#showFailuresLink"
                          rel="noreferrer" target="_blank">http://build.squeak.org/job/Trunk/default/lastBuild/#showFailuresLink</a><br>
                        and see 8 test failures but no crash.<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <br>
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            - add a Squeak 4.6 build job?  Is that even
                            worth it any more<br>
                          </blockquote>
                        </blockquote>
                        considering 4.6 is released and stable?  If it
                        is then what should it<br>
                        build?  David?<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            <br>
                            c) Spur VMs need to be linked to by an added
                            line in the Virtual<br>
                          </blockquote>
                        </blockquote>
                        Machines list.<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            Not applicable.  the VM links point to the
                            root of my site so they<br>
                          </blockquote>
                        </blockquote>
                        effectively point to both old and Spur VMs.<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            <br>
                            d) Spur imagers need to be included in the
                            Image and Changes list<br>
                          </blockquote>
                        </blockquote>
                        under Custom Installation<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            Done.<br>
                            <br>
                            <br>
                            <br>
                            e) The SqueakV50.sources file also needs to
                            be included in the<br>
                          </blockquote>
                        </blockquote>
                        Current Sources list.<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            Done.<br>
                            <br>
                            <br>
                            f) we could start a History list for the 5.0
                            line<br>
                            <br>
                            This is probably quite a big reorg on the
                            page and not urgent.<br>
                            <br>
                            <br>
                            So there are a few things to fix before 5.0
                            is freely downloadable.<br>
                            <br>
                            On Tue, Aug 11, 2015 at 8:23 PM, Chris
                            Muller &lt;<a moz-do-not-send="true"
                              href="mailto:ma.chris.m@gmail.com"
                              target="_blank">ma.chris.m@gmail.com</a>&gt;<br>
                          </blockquote>
                        </blockquote>
                        wrote:<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            In the 17 months since Squeak 4.5 was
                            released, a huge development<br>
                            effort took place to create the next
                            generation virtual-machine for<br>
                            the Squeak / Pharo / Newspeak family of
                            programming systems.  Squeak<br>
                            is the modern incarnation of the
                            Smalltalk-80 programming environment<br>
                            originally developed at the Xerox PARC.<br>
                            <br>
                            "Squeak 5" introduces this new VM and
                            associated new memory model,<br>
                            collectively referred to as "Spur". 
                            Presented [1] by Eliot Miranda<br>
                            and Cl??ment B??ra at the 2015 International
                            Symposium on Memory<br>
                            Management, this new VM affords Squeak
                            applications a significant<br>
                            boost in performance and memory management. 
                            Among other<br>
                            optimizations, the #become operation no
                            longer requires a memory scan.<br>
                            Object pinning and ephemerons are also now
                            supported.  The release<br>
                            notes [2] provide more details.<br>
                            <br>
                            The new memory model requires a new image
                            file format.  Although this<br>
                            new format results in about a 15% increased
                            memory requirement for the<br>
                            same number of 4.x objects, a new segmented
                            heap allows memory to be<br>
                            given back to the OS when its no longer
                            needed, a great benefit for<br>
                            application servers.<br>
                            <br>
                            As forward compatibility is as important to
                            the Squeak community as<br>
                            backward compatibility, Squeak 5 is delivers
                            an image with identical<br>
                            content as the recent 4.6 release.  Although
                            this new Squeak 5 VM<br>
                            cannot open images saved under the prior 4.x
                            Cog format, objects and<br>
                            code can be easily exported from the 4.x
                            image and then imported into<br>
                            Squeak 5.  Applications whose code runs
                            strictly above the Smalltalk<br>
                            meta layer will prove remarkably compatible
                            with the new format, most<br>
                            applications will require no changes
                            whatsotever.<br>
                            <br>
                            Squeak 5 is the result of monumental effort
                            by a tiny group of very<br>
                            talented people, but its also just the
                            beginning of yet a new effort;<br>
                            Spur is just a stepping stone to a more
                            ambitious goals planned over<br>
                            the next five years.<br>
                            <br>
                            [1] -- A Partial Read Barrier for Efficient
                            Support of Live<br>
                            Object-oriented Programming<br>
                            <br>
                          </blockquote>
                        </blockquote>
                        <a moz-do-not-send="true"
href="http://conf.researchr.org/event/ismm-2015/ismm-2015-papers-a-partial-read-barrier-for-efficient-support-of-live-object-oriented-programming"
                          rel="noreferrer" target="_blank">http://conf.researchr.org/event/ismm-2015/ismm-2015-papers-a-partial-read-barrier-for-efficient-support-of-live-object-oriented-programming</a><br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            [2] -- Squeak 5 Release Notes<br>
                            <a moz-do-not-send="true"
                              href="http://wiki.squeak.org/squeak/6207"
                              rel="noreferrer" target="_blank">http://wiki.squeak.org/squeak/6207</a><br>
                          </blockquote>
                        </blockquote>
                        <br>
                        <br>
                        <br>
                        <br>
                      </blockquote>
                      <br>
                      --<br>
                      _,,,^..^,,,_<br>
                      best, Eliot<br>
                      <br>
                    </blockquote>
                    <br>
                    <br>
                    -- <br>
                    _,,,^..^,,,_<br>
                    best, Eliot<br>
                  </blockquote>
                  <br>
                </blockquote>
                <br>
                <br>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
        <br clear="all">
        <div><br>
        </div>
        -- <br>
        <div class="gmail_signature">Mariano<br>
          <a moz-do-not-send="true"
            href="http://marianopeck.wordpress.com" target="_blank">http://marianopeck.wordpress.com</a><br>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">
</pre>
    </blockquote>
    <br>
  </body>
</html>