[squeak-dev] Modular Plugins

David T. Lewis lewis at mail.msen.com
Mon Dec 21 05:36:51 UTC 2009

On Mon, Dec 21, 2009 at 09:04:21AM +0530, K. K. Subramaniam wrote:
> Hi,
> Currently, the *Plugin.c file is generated from Slang code which is pre-loaded 
> into the vmm image and not distributed with the plugins/ directory. The first 
> line in such generated files is a cryptic:
>  /* Automatically generated from Squeak on #(7 March 2007 2:25:53 pm) */
> This line contains no clue about the version of the slang code or the vmm 
> which translated it to C.

Are you using an up to date VMMaker from SqueakSource? If so, you should
be seeing comments that look like this:

/* Automatically generated from Squeak on 20 December 2009 11:41:57 pm
   by VMMaker 3.11.10

The "3.11.10" version stamp comes from VMMaker class>>versionString.
The #versionString method is updated by hand, and therefore is subject
to human error, but it works fairly well in practice.

On the unix VMs (not sure of the others yet), the VM identifies itself
as e.g. "3.11.10-2146", which refers to a VM built with generated code
from VMMaker version 3.11.10 and platform sources from Subversion
revision level 2146. This provides at least a reasonable level of
traceability to the source code, some of which is managed under
Monticello, and some of which is managed under Subversion.

Having part of the source managed under Monticello and part of
it managed under Subversion does cause confusion, especially for
people who expect source code to be written in C and compiled with
"configure; make; make install". I don't know of a good solution
to this, although I have a personal bias towards keeping as much
of the system as possible in Smalltalk, hence Monticello. But
that's my just personal opinion, and I suspect that many others
are more comfortable keeping things in external files. I'll be
interested to hear other folks' POV on this.

One thing I do have a strong opinion on: The generated C source
code that is translated from Slang should *not* be treated as
source code. It is intermediate code, like the *.o from a C
compiler. I understand that Linux/GNU distribution maintainers
do need a copy of source code from which a VM can be built, and
the C version is much more convenient for this (hence the
platforms/unix/src files that are kept for this purpose).
But the real source is written in Smalltalk, and Monticello
is a much more effective version control system for this.


More information about the Squeak-dev mailing list