[Vm-dev] Underscore for assignment in VMMaker and related plugins

David T. Lewis lewis at mail.msen.com
Mon Aug 9 00:40:26 UTC 2021

Background: By convention the assignment operator in modern day Squeak
is ':=' and it Cuis it is '_'. The actual fonts are rendered nicely in
either case for Cuis and Squeak.

The VMs used for Cuis and Squeak consist of the VM proper along with various
VM plugins such as OSProcessPlugin and VectorEnginePlugin. The VM plugins
are written in Smalltalk ("slang") with supporting external code as needed.
The Smalltalk code for each VM plugin is translated to C code, and the
resulting C code is expected to be correct regardless of the dialect of
Squeak/Cuis in which the plugin is written.

The generated C code for a VM plugin is the same regardless of whether the
Smalltalk source is written in the '_' or ':=' convention. However, mixing
these two conventions in the same VMMaker image may be confusing, especially
if the (Squeak) image has disabled its 'Allow underscore selectors' preference.

OK, enough background. The question I want to present is this:

The new VectorEnginePlugin is being developed in Cuis, and therefore uses
the '_' convention in its Smalltalk source code. When building a new
opensmalltalk-vm VMMaker image from primary sources, the 'Allow underscore
selectors' preference' is disabled, presumably in order to catch VM plugin
code that accidentally uses the '_' convention. However, in the case of
VectorEnginePlugin, the use of '_' is intentional, and we can expect it
to be used for current and future versions of the plugin Smalltalk code
as development proceeds.

So should we:

  1) Relax the restriction and allow VectorEnginePlugin to be loaded without
     modification in a VMMaker image


  2) Convert current and future versions of the VectorEnginePlugin Smalltalk
    to use ':=' for assigments prior to loading in a Squeak VMMaker image
    (method author/timestamps would be preserved).

I personally prefer 1) but consider either option to be reasonable and doable.

Comments? Preferences?


More information about the Vm-dev mailing list