[Vm-dev] VM_VERSION triplet

David T. Lewis lewis at mail.msen.com
Sat Nov 21 03:11:02 UTC 2020

Hi David,

Eliot replied with respect to the oscog VMs, so let me just add a note
regarding the older "interpreter VM" virtual machines.

On Fri, Nov 20, 2020 at 04:00:26PM +0100, stes at PANDORA.BE wrote:
> Hash: SHA256
> An interesting side-effect of David Lewis's update of the subversion repo,
> was that I observed that the new VM is called :
> 4.19.2-3790    and	4.19.2-3790_64bit

The "64bit" here refers to the 64-bit image format, and is unrelated to
the 32/64 bit-ness of the VM executable. The 64-bit image was never in
wide circulation, but the VM for running that image format is available
and is installed with "_64bit" suffix to distinguish it from the executable
VM (32 or 64 bit) for the standard 32-bit V3 images.

> The subversion source code seems to be generated from the VMMaker 4.19.2,
> and this automatically sets VM_VERSION to 4.19.2 :
> The code in the configure script that is doing this:
> vmmversion="`tr '\015 ' '\012\012' < \"${interp_h}\" | sed '1,/VMMaker/d;q'`"
> VM_VERSION="${vmmversion}-${svnversion}${RELEASE_TAG}"
> So it automatically creates a 3 digit version with the subversion 3790 suffix,
> based on the SVN version and the VMMaker version.
> The subversion version number is 3790 so far is clear, but the VM version
> seems to be set by the above code now to "4.19.2".

This is just a naming convention to identify the VM executable. It is not
intended to be exact, but it shows you the version level of the Smalltalk
VM sources (VMMaker versionString ==> '4.19.2') and it shows you the revision
level of the platforms sources (svn info | grep Revision).

In practice this works well as an identifier for the VM, but it is important
to recognize that it has nothing to do with the version of the Squeak image.
One version of a VM is expected to be able to run many versions of the image,
and one image should be able to run on many different VMs.

As an example, suppose that you have a 4.19.2-3790 VM installed on your
computer, and suppose that you are running an application based on the
Squeak1.23.image (which was released back in October 1997). If you wanted
to provide a version identifier for your application, you might want to
base it on the 1.23 image version number, but you would not want to base
it on the version number of a VM that was built over 20 years later.


More information about the Vm-dev mailing list