Folks,
I thought I'd put out a 'gamma' before releasing the final 3.7. Archives of binaries and sources are available from the (new) usual place:
http://squeak.hpl.hp.com/unix/
The same sources can be checked out from our Subversion repository, if you prefer:
svn co http://squeak.hpl.hp.com/svn/squeak/tags/unix-3.7g-6
If there are no show-stoppers in the next 24 hours or so I'll promote it to 3.7-7 'final' and begin pulling in lots of new stuff for 3.8...
Thanks, Ian
[I don't think this'll get to the list; it doesn't want to let me post most of the time]
On Thursday 17 March 2005 2:08 pm, Ian Piumarta wrote:
Folks,
I thought I'd put out a 'gamma' before releasing the final 3.7. Archives of binaries and sources are available from the (new) usual place:
http://squeak.hpl.hp.com/unix/
The same sources can be checked out from our Subversion repository, if you prefer:
svn co http://squeak.hpl.hp.com/svn/squeak/tags/unix-3.7g-6
If there are no show-stoppers in the next 24 hours or so I'll promote it to 3.7-7 'final' and begin pulling in lots of new stuff for 3.8...
A question on module loading:
1. How come it insists on loading external modules when it has internal ones already loaded (see LargeIntegers, etc.) below:?
Smalltalk listLoadedModules #('FT2Plugin 17 March 2005 (e)' 'CairoPlugin 17 March 2005 (e)' 'LargeIntegers v1.3 5 July 2004 (e)' 'Matrix2x3Plugin 5 July 2004 (e)' 'FloatArrayPlugin 5 July 2004 (e)' 'B2DPlugin 5 July 2004 (e)' 'BitBltPlugin 5 July 2004 (e)' 'SecurityPlugin 5 July 2004 (e)' 'FilePlugin 5 July 2004 (e)' 'MiscPrimitivePlugin 5 July 2004 (e)')
Smalltalk listBuiltinModules #('B2DPlugin 16 March 2005 (i)' 'BitBltPlugin 16 March 2005 (i)' 'ZipPlugin 16 March 2005 (i)' 'FileCopyPlugin 16 March 2005 (i)' 'FilePlugin 16 March 2005 (i)' 'FloatArrayPlugin 16 March 2005 (i)' 'LargeIntegers v1.5 16 March 2005 (i)' 'Matrix2x3Plugin 16 March 2005 (i)' 'MiscPrimitivePlugin 16 March 2005 (i)' 'RePlugin 16 March 2005 (i)' 'SecurityPlugin 16 March 2005 (i)' 'SocketPlugin 16 March 2005 (i)')
I'm trying to run and debug from the directory just above the build directory:
#!/bin/sh here=$PWD build=bld export SQUEAK_PLUGINS="${here}/${build}/%n/.libs/%n" ${here}/${build}/squeak -plugins $SQUEAK_PLUGINS -vm-display-X11 -swapbtn -vm-sound-null "$@" squeak.image
I've attached the log from the sqUnixExternalPrims.c , if it'll help.
Thanks,
Ned Konz ned@squeakland.org wrote:
[I don't think this'll get to the list; it doesn't want to let me post most of the time]
:)
I am moderator of vm-dev and all posts that get stuck will end up in my inbox and I let them through when I see them (and I see that they are indeed "valid" posts). Somehow your subscription address was foobared (which I emailed you about) but I fixed it so you should be fine now.
regards, Göran
Am 17.03.2005 um 23:08 schrieb Ian Piumarta:
Folks,
I thought I'd put out a 'gamma' before releasing the final 3.7. Archives of binaries and sources are available from the (new) usual place:
http://squeak.hpl.hp.com/unix/
The same sources can be checked out from our Subversion repository, if you prefer:
svn co http://squeak.hpl.hp.com/svn/squeak/tags/unix-3.7g-6
If there are no show-stoppers in the next 24 hours or so I'll promote it to 3.7-7 'final' and begin pulling in lots of new stuff for 3.8...
The image segment loading bug is a show-stopper - changeset attached.
"Change Set: imageSegmentFix-jl Date: 18 March 2005 Author: Jens Lincke
Fix loading of image segments as proposed by Dan I."
- Bert -
On Friday 18 March 2005 1:48 am, Bert Freudenberg wrote:
The image segment loading bug is a show-stopper - changeset attached.
But I'm not sure that's all the problems we're seeing. For one thing, the comparison
oop < endOfMemory
when oop is < 2Gb and endOfMemory is >2Gb will fail. There are similar problems throughout the code.
I have some changes that make endOfMemory, youngSpaceStart, etc. into unsigned. I think they're more comprehensive, and still seem to work. You might want to take a look at them.
For instance, here's the memory load information on the image I'm running right now.
With the default arguments, it spans the 2Gb memory boundary, and works OK:
PID 16361: /home/ned/Squeak/cairo/bld-i386/squeak -plugins /home/ned/Squeak/cairo/bld-i386/%n/.libs/%n -vm-display-X11 -swapbtn -vm-sound-null squeak.image 77656000-b7656000 1048576 - - - rw--- [ anon ]
With an explicit '-mmap 100M', all the segments are above 2Gb. Still works OK:
PID 16428: /home/ned/Squeak/cairo/bld-i386/squeak -plugins /home/ned/Squeak/cairo/bld-i386/%n/.libs/%n -vm-display-X11 -swapbtn -vm-sound-null -mmap 100M squeak.image b0875000-b1253000 10104 - - - rw--- [ anon ] b1256000-b7656000 102400 - - - rw--- [ anon ]
You can get my VMMaker changes from SVN using Monticello:
MCHttpRepository location: 'http://squeak.hpl.hp.com/svn/squeak/branches/ned-branch/platforms' user: '' password: ''
On Mar 18, 2005, at 09:07, Ned Konz wrote:
On Friday 18 March 2005 1:48 am, Bert Freudenberg wrote:
The image segment loading bug is a show-stopper - changeset attached.
But I'm not sure that's all the problems we're seeing.
Fixing it a little might be better than not fixing it at all.
Bert: does applying this changeset turn a 3.7-5898 VM that you cannot use into a VM that you can use?
Cheers, Ian
Am 18.03.2005 um 18:13 schrieb Ian Piumarta:
On Mar 18, 2005, at 09:07, Ned Konz wrote:
On Friday 18 March 2005 1:48 am, Bert Freudenberg wrote:
The image segment loading bug is a show-stopper - changeset attached.
But I'm not sure that's all the problems we're seeing.
Fixing it a little might be better than not fixing it at all.
Bert: does applying this changeset turn a 3.7-5898 VM that you cannot use into a VM that you can use?
Yes. Project loading will fail on two of our Linux machines without this, now it works. The -mmap workaround only worked on one machine, with the CS applied it isn't even necessary. So, if all agree that it cannot hurt, it definitely helps in our case (which also was reported a few times by other Linux users).
- Bert -
Yes. Project loading will fail on two of our Linux machines without this, now it works. The -mmap workaround only worked on one machine, with the CS applied it isn't even necessary. So, if all agree that it cannot hurt, it definitely helps in our case (which also was reported a few times by other Linux users).
Let me second this. This is a *major* issue for Squeakland-people running on Linux.
Cheers, - Andreas
In message 200503180907.13741.ned@bike-nomad.com Ned Konz ned@bike-nomad.com wrote:
On Friday 18 March 2005 1:48 am, Bert Freudenberg wrote:
The image segment loading bug is a show-stopper - changeset attached.
But I'm not sure that's all the problems we're seeing. For one thing, the comparison
oop < endOfMemory
when oop is < 2Gb and endOfMemory is >2Gb will fail. There are similar problems throughout the code.
Exactly the point I was trying to make a week ago; did anyone compile and try the simple testcase I included?
I have some changes that make endOfMemory, youngSpaceStart, etc. into unsigned. I think they're more comprehensive, and still seem to work. You might want to take a look at them.
Will do. I'm trying to make some progress on the 64bit stuff anyway.
tim -- Tim Rowledge, tim@sumeru.stanford.edu, http://sumeru.stanford.edu/tim Useful random insult:- Sat under the ozone hole too long.
On Thursday 17 March 2005 2:08 pm, Ian Piumarta wrote:
I thought I'd put out a 'gamma' before releasing the final 3.7. Archives of binaries and sources are available from the (new) usual place:
http://squeak.hpl.hp.com/unix/
The same sources can be checked out from our Subversion repository, if you prefer:
svn co http://squeak.hpl.hp.com/svn/squeak/tags/unix-3.7g-6
If there are no show-stoppers in the next 24 hours or so I'll promote it to 3.7-7 'final' and begin pulling in lots of new stuff for 3.8...
What VMMaker version does that correspond to?
I see significant differences (for instance, in interp.c and in the LargeIntegersPlugin) between the sources generated from VMMaker-tpr.5.mcz (30 Mar 2004) on SqueakSource (repository at http://kilana.unibe.ch:8888/VMMaker) and the generated sources in your src directory.
Where is the Squeak source code available if someone wants to work on the VM? I can't find it on SVN or in your tarball.
In my opinion, this is why the VMMaker sources (the Squeak code, possibly in MCZ format) should be versioned along with the C sources in SVN.
BTW, it works fine to read MCZ files directly from the SVN repository; commits would be done in the usual way (save the mcz to the working directory and do a commit).
Attached are the diffs I found.
In message 200503181040.35034.ned@bike-nomad.com Ned Konz ned@bike-nomad.com wrote:
What VMMaker version does that correspond to?
I see significant differences (for instance, in interp.c and in the LargeIntegersPlugin) between the sources generated from VMMaker-tpr.5.mcz (30 Mar 2004) on SqueakSource (repository at http://kilana.unibe.ch:8888/VMMaker) and the generated sources in your src directory.
Whoah, that code is massively out of date; I was never able to get a decent working setup that would save there, then they had problems and I had network problems and then I guess I simply forgot about it. The SM version is the latest for public consumption. Hmm, I'm up to version 13 in my local repository which is (I think) equivalent to VMMaker3-8b2.1.cs from SM.
Right now I'm spending a little time trying to integrate the 64bit stuff and then I'll look at your changes to properly type the main oop values which should be a good step to fixing the >2Gb problems. It might save me some time if you could cast those changes in terms of the sqLong/sqInt etc #defines from the 64bit changes.
tim -- Tim Rowledge, tim@sumeru.stanford.edu, http://sumeru.stanford.edu/tim Performance is easier to add than clarity.
On Mar 18, 2005, at 11:13, Tim Rowledge wrote:
might save me some time if you could cast those changes in terms of the sqLong/sqInt etc #defines from the 64bit changes.
Wherever you see 'unsigned int' in Ned's changes attached to something that can be interpreted as an object pointer, use 'usqInt' instead in 64-bit compatible code.
[u]sqInt always describes an integer of the same width as an oop in the generated sources. This is described in detail in section 4 of http://squeak.hpl.hp.com/squeak64/. If you aren't intimately familiar with the contents of section 4 of that document, you are in very dangerous territory trying to pull the 64-bit changes I made to VMM and Interpreter forward into more recent 32-bit versions of the same.
Ian
On Mar 18, 2005, at 10:40, Ned Konz wrote:
On Thursday 17 March 2005 2:08 pm, Ian Piumarta wrote:
svn co http://squeak.hpl.hp.com/svn/squeak/tags/unix-3.7g-6
What VMMaker version does that correspond to?
The one in 3.7-5898-full.
1. It's a 3.7 VM, so the rule says it has to be built from a 3.7 image. The final 3.7 VM is built from the final 3.7-full image. 2. Look in configure.ac (or watch the first few lines printed by configure as it runs) and it tells you exactly which image version generated the (bundled) interpreter sources.
I see significant differences (for instance, in interp.c and in the LargeIntegersPlugin) between the sources generated from VMMaker-tpr.5.mcz (30 Mar 2004) on SqueakSource (repository at http://kilana.unibe.ch:8888/VMMaker) and the generated sources in your src directory.
I regenerated everything from scratch using the final 3.7 image. Here's what I do:
run the latest X.Y-Z image click on 'update' save the image iff anything VM-related was updated 'clear out' the 'src' directory 'generate all' into the empty 'src' directory quit type 'make clean; make' to build a VM from scratch type 'make dist-src dist-image dist-bin' to archive and release the new VM sources and binary (for the local platform) along with the image that generated it
IOW, whatever is in the latest 3.7 image is definitive for building a 3.7 VM. This is not negotiable. (Other than fixing show-stoppers like the image segment thing, given the fix is so trivial, but then I would also file that fix into my 3.7-5898-full.image before distributing it in a tarball, as above.)
If the released 3.7 full image is generating broken Interpreter or plugins, then either the released image should be fixed (or changes posted to its update stream), or they should be in the 3.8 stream and the 3.8 VM declared the minimum version suitable for anyone encountering problems with 3.7.
Where is the Squeak source code available if someone wants to work on the VM?
3.7-5898-full.image on the FTP site of your choice (given that nothing at all happened when I pressed 'update' in the process described earlier).
I can't find it on SVN or in your tarball.
It's on my download page (3.7-5898 image and changes tarball, which contains the Interpreter sources used to generate the core VM corresponding to the released sources, always).
I'm not about to check images into the repostory. OTOH, my generated 'src' tree is now included in the unix area within the repository (platforms/unix/src), to make life easier for anyone building with those sources. (configure now understands to look in two places for 'src', and to use the one nearest the top of the hierarchy -- corresponding to sources generated outside of the 'platforms/unix' tree, which is where most people will be generating them.)
In my opinion, this is why the VMMaker sources (the Squeak code, possibly in MCZ format) should be versioned along with the C sources in SVN.
The VM sources are stamped with the image version to which they apply (see above re: configure). You can ignore this if you really know what you're doing, but you get to keep all the pieces afterwards.
Attached are the diffs I found.
Thanks -- but I don't think I can do much with them. If they aren't in the 3.7 full image (or updates) then they aren't relevant to building a 3.7 VM. When 3.8 becomes current later today (hopefully), the Interpreter therein will be generated from the most recent 3.8 image and its update stream.
Hope this helps to clear up the process for anyone who wasn't already familiar with it.
Ian
On Friday 18 March 2005 11:16 am, Ian Piumarta wrote:
What VMMaker version does that correspond to?
The one in 3.7-5898-full.
- It's a 3.7 VM, so the rule says it has to be built from a 3.7
image. The final 3.7 VM is built from the final 3.7-full image. 2. Look in configure.ac (or watch the first few lines printed by configure as it runs) and it tells you exactly which image version generated the (bundled) interpreter sources.
Great. I'll apply my changes to it instead.
Thanks,
On Mar 18, 2005, at 11:39, Ned Konz wrote:
On Friday 18 March 2005 11:16 am, Ian Piumarta wrote:
What VMMaker version does that correspond to?
The one in 3.7-5898-full.
Great. I'll apply my changes to it instead.
Double great! If you (or anyone) then confirm that they fix the image segment loading problem seen by Bert and the Squeaklanders, they'll be in my final released source/binary VM and image archives. (Provided Bert sees no problem with using them instead of Jens' changeset.)
Is it too late to post these changes to the 3.7 update stream?
Cheers, Ian
In message 63e20d891d64b668384923b5b2423569@hp.com Ian Piumarta ian.piumarta@hp.com wrote:
On Mar 18, 2005, at 11:39, Ned Konz wrote:
On Friday 18 March 2005 11:16 am, Ian Piumarta wrote:
What VMMaker version does that correspond to?
The one in 3.7-5898-full.
Great. I'll apply my changes to it instead.
Double great! If you (or anyone) then confirm that they fix the image segment loading problem seen by Bert and the Squeaklanders, they'll be in my final released source/binary VM and image archives. (Provided Bert sees no problem with using them instead of Jens' changeset.)
Is it too late to post these changes to the 3.7 update stream?
Not so much too late as irrelevant. They are VMMaker changes and would go into a re-released VMMaker package on SM.
tim -- Tim Rowledge, tim@sumeru.stanford.edu, http://sumeru.stanford.edu/tim Do you like me for my brain or my baud?
On Mar 18, 2005, at 11:51, Tim Rowledge wrote:
Is it too late to post these changes to the 3.7 update stream?
Not so much too late as irrelevant. They are VMMaker changes and would go into a re-released VMMaker package on SM.
They would be very, very relevant to anyone trying to make a working VM from a 3.7 image and the 3.7 final VM sources. (Including me. I normally would refuse to include anything not in the image/update stream when building a release VM.)
As I understand it, this is just the point Ned was trying to make and address. The more places you have to look for particular versions of stuff (SVN source with tag X.Y + SqF image version X.Y-full + SM or other source for VMM package version P.Q + updates through but not passing ABCD + changeset posted to vm-dev on 2005-03-18 by Anonymouse Squeaklander + etc...) to make a compatible whole, the harder it is for anyone and everyone to recreate a VM from scratch.
Just saying "get all the latest stuff" doesn't really work if you're trying to recreate a particular version of the VM.
The simplest useful and scalable thing I can imagine is to say: VM X.Y "final" can be recreated verbatim from scratch by using X.Y final platform sources + X.Y final image + any big fixes subsequently retrofitted to its Interpreter through the X.Y update stream.
Ian
In message e03927d0aef6388f13b95ee9c20a5077@hp.com Ian Piumarta ian.piumarta@hp.com wrote:
On Mar 18, 2005, at 11:51, Tim Rowledge wrote:
Is it too late to post these changes to the 3.7 update stream?
Not so much too late as irrelevant. They are VMMaker changes and would go into a re-released VMMaker package on SM.
They would be very, very relevant to anyone trying to make a working VM from a 3.7 image and the 3.7 final VM sources. (Including me. I normally would refuse to include anything not in the image/update stream when building a release VM.)
It's a package. It isn't in the basic image to be updated. Yes, it is in the -full image but so far as I know updates to that are no different than those for the -basic. I was under the impression that packages included in -full are supposed to be updated via SM.
It's certainly possible I've missed something but in general my expected path for updating VMMaker is to load the more recent version from SM. For 3.8 or thereabouts I was planning on moving to using an mcz package.
tim -- Tim Rowledge, tim@sumeru.stanford.edu, http://sumeru.stanford.edu/tim Useful random insult:- Brain transplant donor.
Hang on mo'; it's just finally sunk in that you're talking about version 3-point-frigging-seven here. That is _so_ last year. June last year in fact.
tim -- Tim Rowledge, tim@sumeru.stanford.edu, http://sumeru.stanford.edu/tim Oxymorons: Religious tolerance
On Mar 18, 2005, at 12:09, Tim Rowledge wrote:
Hang on mo'; it's just finally sunk in that you're talking about version 3-point-frigging-seven here. That is _so_ last year. June last year in fact.
To a significantly large number of people, it is far (vastly, extremely, infinitely) more important to have a rock-solid out-of-date platform than one in which all the latest bells and whistles (almost) work. The 3.7 Unix VM is going to be very important to many of these people for a long time yet. Delivering a broken 3.7 final (or one that they cannot reproduce reliably for themselves from scratch) would be nothing short of irresponsible.
Ian
On Friday 18 March 2005 11:46 am, Ian Piumarta wrote:
On Mar 18, 2005, at 11:39, Ned Konz wrote:
On Friday 18 March 2005 11:16 am, Ian Piumarta wrote:
What VMMaker version does that correspond to?
The one in 3.7-5898-full.
Great. I'll apply my changes to it instead.
Double great! If you (or anyone) then confirm that they fix the image segment loading problem seen by Bert and the Squeaklanders, they'll be in my final released source/binary VM and image archives. (Provided Bert sees no problem with using them instead of Jens' changeset.)
Is it too late to post these changes to the 3.7 update stream?
OK, here's the changes.
I have built a VM with them applied to the full image, and with your unix sources, and verified that it can, in fact, load the SqueakMap package list (which usually breaks on my system).
Ned's Changes...
I'll note the use of signed versus unsigned might require a bit more thought. Really want *should* happen is getting an oops address back is really a squeakOopAddress type. Then when people do math on it it needs to be looked at carefully. Perhaps a add/subtract method that will do the right thing? The danger of piecemeal mod leaves you with an image that kinda works, but deep down when something says grab the oops address and add/subtract 4 under certain conditions means disaster. mmm really I've thought about defining that type then turning warnings on, then following the results, but that means of course cross checking all the platform dependent code too because they should be getting squeakOopAddress versus int.
PS many years ago I put together a change set to alter slang so that if you returned nothing from a method, or a typecasted value it would generate the C code as returning the void or data type. That could rid of the thousand warnings about routine does not return int but declared as returning int. However as Tim discovered we do evil things in the VM external API and say for example setting the error prim result returns int, when in fact it does not return int. Then people have coded routines and say return seterror().
On Mar 18, 2005, at 11:39 AM, Ned Konz wrote:
On Friday 18 March 2005 11:16 am, Ian Piumarta wrote:
What VMMaker version does that correspond to?
The one in 3.7-5898-full.
- It's a 3.7 VM, so the rule says it has to be built from a 3.7
image. The final 3.7 VM is built from the final 3.7-full image. 2. Look in configure.ac (or watch the first few lines printed by configure as it runs) and it tells you exactly which image version generated the (bundled) interpreter sources.
Great. I'll apply my changes to it instead.
Thanks,
Ned Konz http://bike-nomad.com
-- ======================================================================== === John M. McIntosh johnmci@smalltalkconsulting.com 1-800-477-2659 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com ======================================================================== ===
On Mar 18, 2005, at 12:41, John M McIntosh wrote:
I'll note the use of signed versus unsigned might require a bit more thought. Really want *should* happen is getting an oops address back is really a squeakOopAddress type. I've thought about defining that type then turning warnings on, then following the results, but that means of course cross checking all the platform dependent code too because they should be getting squeakOopAddress versus int.
The 64-bit changes I sent to Tim effectively do precisely that.
The one thing I didn't get around to doing before shipping it all to Tim (which I will retrofit when Tim is done holding the Interpreter/VMM token) is modify the types slightly to (1) make it absolutely impossible to mix integers and oops without going through the relevant conversion function, and (2) fix the current situation where sqInt and sqLong look similar but behave not quite the way you might expect relative to each other. (Dan and I are already overdue for some work on our 64-bit stuff anyway, and this is one thing I need to address during it. The impact on platform code will be minimal. If Tim doesn't mind receiving changesets relative to changeset that are still being pulled forward then I could start on this right away. Otherwise we're waiting on him, and when VMM is generating a 64-bit Interpreter correctly I'll just assume the token for day and fix it in-situ.)
Ian
vm-dev@lists.squeakfoundation.org