Future

This sections contains my sometimes sundry about Haver’s future.

App Image Creation

Add support to create minimal images for application delivery by porting the SystemTracer to Haver. I hope it is not slow for serious application creation.

Single File Application Deployment

One way to deploy Smalltalk, Cuis or Haver application is to modify the virtual machine in the following way:

  • Only use internal plugins. Modify the display and audio-plugins and the VM’s C code in a way that does not need to be compiled as shared objects or dynamic link libraries.

  • Modify the image loading code in a way, that image can be appended to virtual machine’s executable.

  • Additional files, like font or icon-files, can either be incorporated into the image or stored in a ZIP-file that is also append to the image.

The memory layout is roughly like this:

+----------------+
|   Executable   |
|  . . . . . . . |
|       ZIP      |
|  . . . . . . . |<--+
|      Image     |   |
|  .  .  .  .  . |   |
|    Poiner to   |   |
|   Image Start  |---+
+----------------+

To my understanding ZIP-files are parsed by searching for their central directory, which points to single compressed files. Any cruft should be ignored.

On the other hand, we also can devise a simple linked list format of our own:

+----------------+
|   Executable   |
|  . . . . . . . |
|       nil      |
|  .  .  .  .  . |
|   Resource N   |<-+
|  . . . . . . . |  |
                    :
     .       .      :
     .       .      :
     .       .      :
                    :
|  . . . . . . . |  |
|   PTR to R 2   |--+
|  .  .  .  .  . |
|   Resource 1   |<-|
|  . . . . . . . |  |
|   PTR to R 1   |--+
|  .  .  .  .  . |
|      Image     |<-+
|  . . . . . . . |  |
|   PTR to Image |--+
+----------------+

Application and Package Distribution

An AppStore like application distribution application should also be very useful. Obviously there have been such ideas around for squeak.

I like to call this “App Store” Haver Silo. I should have the following features:

  • Distribution of Cuis/Haver updates.

  • Distribution of Apps,w hich are just Cuis or Haver images.

  • Distribution of packages.

  • Distributed hash table based implementation with UPD and builtin firewall traversal 1.

  • An integrated application to start other applications.

Really Far Reaching Ideas

All of these ideas need quite a bunch of developers and of course serious funding.

Implement Python inside Haver

With the help of parso it should be easy to create an abstract syntax-tree for Python code with Haver and compile it to byte code. This can be bootstrapped by inter-process communication between a Python interpreter running parso and a Haver image. Of course this will need a Python run-time-system implemented in Smalltalk, which is a lot of work, but doable.

I will enable Haver to use the huge amount of Python software. Combined with Smalltalk’s fix and continue capability it would make a great Python IDE.

Implement JavaScript inside Haver

The same approach as sketched above can be chosen to implement JavaScript on top of Smalltalk. Instead of using parso babel should be used. Alas I am by no way a JavaScript expert.

Implement a Sista Aware Compiler

Implement a new compiler that uses SSA throughout and targets the sista version of the opensmalltalkvm.

A Web Browser in Haver

Once we have JavaScript and Sista in place we can implement a complete web-browser. While this is a realy huge project, I can image there is demand for a hackable browser, that is not based on Google or Mozilla code.

1

I am aware this will not be usable behind the firewall of a big organisation, but that is not the target audience.