[Cuis-dev] Haver a Cuis based Smalltalk with Modules

Gerald Klix cuis.01 at klix.ch
Fri Apr 30 08:33:23 PDT 2021

Hi Juan,

On 2021-04-30 16:00, Juan Vuletich via Cuis-dev wrote:
> Hi Gerald,
> This is great! It is nice to know that you have kept developing this 
> project. You have put a lot of work in this, and it is really impressive.

Thank you very much!

> On 4/28/2021 5:26 PM, Gerald Klix wrote:
>> Hi all, Hi Juan,
>> I am proud to announce the first alpha-release
>> of Haver, a Cuis based Smalltalk with extensive
>> support for Modules, including Browsers
>> for module-management.
>> No more name clashes!
>> Haver is a complete distribution of Cuis
>> with all packages from the various
>> Cuis Smalltalk Repos at
>> https://github.com/Cuis-Smalltalk.
>> Virtual Machines for Linux X86, Windows and
>> Raspberry OS are also included.
>> Of course the virtual machines include
>> Juan's awesome VectorEnginePlugin.
>> Even if you think you don't need Modules,
>> it still provides you with
>> a turn-key Cuis-distribution.
>> You can find more about Haver at:
>> http://haver.klix.ch
>> Many thanks to Juan Vuletich for providing
>> a simple and understandable Smalltalk
>> implementation.
>> Please note: Haver is not a fork of Cuis,
>> it is an extension.
>> Have fun and Best Regards,
>> Gerald
> I just read the documentation, and started playing a bit with the system.
> I wanted to get a feel of how would it be do use it for real. So, I 
> created 2 modules, each with a class. Then I tried to reference a class 
> in M2 from a class in M1. I could do it with an explicit reference:
> toto
> "
> M1Class new toto
> "
>      ^(Modules >> #M2 >> #M2Class) new
> This is reasonable. Then I tried to "import" M2 into M1, so M1 can use 
> all the stuff in M2, without an explicit access path. I think this is 
> the preferred way to reference to external stuff. But I couldn't make 
> this work. I'm not sure if the Modules tool and the Module Browser allow 
> some way I could not find, or if this use case is not yet supported.
Oh yes I added that tutorial to the documentation:

And there a  SimpleEnvironments implementation.
that is -- among other uses -- used as a indirect super-class for Modules.

If you only want explicit imports, you
can create environments like:

SimpleEnvironments environment" #MyFunnyEnv

Of course no tooling, no default module support

> So, my suggestions are:
> - Support my preferred style if not already supported
This should work with every environment
implementation, but it needs to be documented:
Ars longa, vita brevis ....

> - Make tools "more obvious" (i.e., what is API / SPI?)
> - HowTo docs, using the tools, following a few simple and real-life-like 
> examples, and helping the user understand how to navigate the system.
As I tools you I consider implementing a simple module browser.

I filed an issue:
> An additional idea: I think Modules and Packages should be tightly 
> integrated, at least in the mind of the user. Making them completely 
> orthogonal forces the user to consider many probably useless 
> combinations. Especially when dependencies are included!
I will consider it. But the orthogonality has to
stay, I am making use of it.

Anyway, I filed an issue:

I hope I described your wish correctly.
> BTW, you built VMs for various platforms with the VectorEnginePlugin!!! 
> This is also wonderful. Thank you. I'll test them. May I have your 
> permission to exctract those VMs and make them available to others for 
> use with Cuis, until the VectorGraphics plugin gets integrated into the 
> official OpenSmalltalk VMs?
Of course, you are welcome.

May I make a suggestion:
Haver contains a package named 'Distributor'.
With some refactoring, e.g. adding some abstract
super classes it can be used to create a Cuis
distribution in a zip-file.
The distributor, included in that package,
packs the running VM.
In a nutshell: With 3 hours of work, you will
have the means to create Cuis-distribution packages like breading 
rabbits (or cuises).

I considered doing this myself but as  i said:
Art is long, life is short ...

There is also cheap and dirty way.
Try to use the distributor package to
create a Haver distribution and write a shell
script, that strips the Haver parts, e.g.
packages/haver and the two images in Images.

HTH and Best Regards


More information about the Cuis-dev mailing list