[squeak-dev] squeak 4.19.14 ?

David T. Lewis lewis at mail.msen.com
Fri Mar 18 02:17:21 UTC 2022

On Thu, Mar 17, 2022 at 05:36:38PM +0100, stes at PANDORA.BE wrote:
> Hi,
> The current subversion sources have an update:
>  plugins/BitBltPlugin/BitBltPlugin.c 
> /* Smalltalk from Squeak4.6 with VMMaker 4.19.14 translated as C source on 6 Mar
> ch 2022 5:46:26 pm */
> However I'm puzzled by this version VMMaker 4.19.14.
> The subversion sources are 4.19.9 right ?
> Should this be regenerated/refreshed/updated in subversion to 4.19.14 ?
> Thanks,
> David Stes

Hi David,

This is probably of interest on the vm-dev list, but it may also be
of some general interest so I'll try to answer here. Your question
relates to the classic VM (used through Squeak 4.6) but the answer
is the same for the current opensmalltalk-vm VM and for the classic VM.

The VM is written largely in Smalltalk and managed in Montecello
packages ('VMMaker' and 'VMMaker.oscog' for the classic and new
VMs respectively). The C language intermediate sources are translated
from the actual Smalltalk source, and this intermediate C code is managed
in the traditional git and SVN repositories along with the hand-written
platform support code.

When a VMMaker[.oscog] Smalltalk package is updated, the translated
intermediate C code also changes, and should be updated accordingly
in the git/SVN repositories. However, in practice it is common
for just a limited number of the intermediate C files to contain
meaningful changes. 

In those cases, the person doing the update may exercise some
editorial discretion and commit only the generated sources that
contain meaningful changes. This avoids cluttering up the git/SVN
repositories with trivial changes (generated C modules for which
only the version stamp information has changed, as opposed to
functional code).

The BitBltPlugin.c code that you are asking about is an example
of this. You can see from the version information that this
intermediate C module was generated from a newer version of the
VMMaker Smalltalk source package than the Smalltalk source
package that was used to generate the other intermediate C files.

The latest VMMaker 4.19.14 update contains Levente's new updates
to BitBltPlugin to support the new BitBlt rules. The Smalltalk
source changes had a meaningful impact only on BitBltPlugin.c,
so that is the only intermediate C file that I chose to update
in the most recent SVN repository commit. Thus the BitBltPlugin.c
module has a version stamp that identifies 'VMMaker 4.19.14',
while the other intermediate C files have earlier version
identifiers, but overall the generated intermediate sources
are consistent with the latest Smalltalk source package.

In summary, the generated sources in SVN (or git in the case
of opensmalltalk-vm) are consistent with the latest respective
VMMaker[.oscog] Smalltalk package versions. And every once in
a while, the person doing the git/SVN commits may choose to
update the entire generated C source just to get all of those
confusing version stamps back in sync and make sure the code
base is consistent.

As an aside, I would also point out that the management of intermediate
generated C modules is just a concession to the target environments
on which we want Squeak to run. We here on the squeak-dev list
know that the VM is written in Smalltalk. But a person managing
e.g. a Linux source distribution may not know anything about
Smalltalk, and they expect the "source code for an application"
to be delivered for a language and compiler that they understand.
For that reason we separately manage and distribute the intermediate
generated C code.


More information about the Squeak-dev mailing list