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

Juan Vuletich JuanVuletich at zoho.com
Tue Aug 10 17:21:23 UTC 2021

Hi Folks,

On 8/10/2021 1:40 PM, Eliot Miranda wrote:
> Hi Dave, Hi Marcel,
>> On Aug 8, 2021, at 5:40 PM, David T. Lewis<lewis at mail.msen.com>  wrote:
>> 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
>> or:
>>   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?
> My preference is 1a :-). 1a is supporting a Compiler patch that allows one to assert the 'Allow underscore selectors' preference on a per-class basis and adding some class side state (a method? A method containing a pragma?) to VectorEnginePlugin that asserts the preference.  Maybe this is too elaborate, and there’s a bootstrap problem (the class side method must be loaded before methods containing a underscore assignments) but I like not having the preference globally.
>> Dave

I can change VectorEnginePlugin to use only ':=' assignments. I used '_' 
assignments only because it is what I am used to. But this is code that 
is meant to be used in Squeak and not only in Cuis. Dave, unless you see 
additional value in allowing '_' assignment in plugin code, I'll happy 
to make the change.


Juan Vuletich

More information about the Vm-dev mailing list