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

Marcel Taeumel marcel.taeumel at hpi.de
Thu Aug 12 07:07:04 UTC 2021


Hi Dave --

> Do you (or someone else) want to implement 1a)?
> If yes, can we do 1) near term until the implementation
> is available?

We do not have enough control over code-load order to make this work without hacking something we might regret into Monticello. :-) I would love to extent Monticello to give packages more control over code-load order by themselves. Maybe I will get some idea while working on FFI. There is this rather inflexible MethodAddtion >> postLoad ...

Best,
Marcel
Am 12.08.2021 01:07:41 schrieb David T. Lewis <lewis at mail.msen.com>:

On Tue, Aug 10, 2021 at 09:40:05AM -0700, Eliot Miranda wrote:
>
> Hi Dave, Hi Marcel,
>
> > On Aug 8, 2021, at 5:40 PM, David T. Lewis 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.
>

Hi Eliot,

Do you (or someone else) want to implement 1a)? If yes, can we do 1) near
term until the implementation is available?

Otherwise, Juan has offered to replace underscores with := in the upstream
source.

Thanks,
Dave

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20210812/701c167b/attachment-0001.html>


More information about the Vm-dev mailing list