[Vm-dev] Cuis Spur preview

Juan Vuletich JuanVuletich at zoho.com
Sat Jul 30 21:05:14 UTC 2016

Hi Eliot, Folks,

Eliot and I have been been working a bit, over some time, to make Cuis 
compatible with the Spur VMs. We prepared together the changes required 
to make the Cuis image ready for the Spur bootstrap process (also used 
for Newspeak, Squeak and Pharo). Eliot made any necessary changes to the 
Spur bootstrap to also handle Cuis. (Eliot, you might want to give 
additional details on what was required here?).

The result of the Spur bootstrap was a Cuis image that could start, but 
could do little else. Compiler and Decompiler were broken, so fixing was 

Then I came with the idea of doing the same I did when converting Cuis 
to Closures: Have two Compilers loaded, and switch between them easily. 
So, I added the necessary changesets to the "PreSpurBootstrap" stage, 
adding a verbatim copy of Squeak's Compiler, and making it active. The 
result of the Spur bootstrap was now a Cuis image that could not only 
start, but also browse and modify code. There were still many rough 
edges, but now they can be fixed from within the image, as we usually 
do. I fixed the most obvious ones, as part of "PostSpurBootstrap".

The resulting image is available at 
. The "PreSpurBootstrap" and "PostSpurBootstrap" changesets are there 
too, meaning that anybody can reproduce the procedure, and suggest fixes 
and enhancements.

This is not yet good enough to be added to the Cuis update stream. These 
are some of the things that are missing:

- Merge both Compilers into just one, that handles Cuis specific details 
correctly, but also includes any updates required for Spur.

- Check Decompiler. Decompile and recompile the code for all the system.

- Make the very same source code for the whole system work both for V3 
and Spur images. To build the Spur Cuis image, at the correct update 
number, the image is converted to Spur, and then run with a Spur VM, and 
the following updates are applied. To build a V3 image, the image is 
never converted to spur, and the very same updates are applied, always 
running with a non-Spur VM. This is not currently working, but I think 
it is possible, and allows both Spur and non-Spur Cuis images without 

- Check that optional packages work.

- Enable SmallFloat64, both as result of arithmetic, but also as 
literals in methods.

- Many details I'm not remembering right now, or I'm not aware of.

Eliot, let me than you for your wonderful work on Cog, Spur and Sista, 
for supporting Cuis along with the other OpenSmalltalk systems, and for 
guiding and encouraging me to keep Cuis up to date with latest VM 


Juan Vuletich

More information about the Vm-dev mailing list