<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"><<a moz-do-not-send="true"
href="mailto:brasspen@gmail.com" target="_blank">brasspen@gmail.com</a>></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 <<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>><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 <<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>>
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 <<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>>
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>testMatrixTransform2x3WithImageSegment<br>
sends<br>
BitmapStreamTests>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
<<a moz-do-not-send="true"
href="mailto:eliot.miranda@gmail.com"
target="_blank">eliot.miranda@gmail.com</a>><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
<<a moz-do-not-send="true"
href="mailto:Das.Linux@gmx.de"
target="_blank">Das.Linux@gmx.de</a>>
wrote:<br>
<br>
On 12.08.2015, at 20:55, Eliot Miranda <<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>>
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 <<br>
</blockquote>
</blockquote>
<a moz-do-not-send="true"
href="mailto:eliot.miranda@gmail.com"
target="_blank">eliot.miranda@gmail.com</a>>
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 <<a moz-do-not-send="true"
href="mailto:ma.chris.m@gmail.com"
target="_blank">ma.chris.m@gmail.com</a>><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>