Future ====== This sections contains my sometimes sundry about |Havers| 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: .. code-block:: none +----------------+ | 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: .. code-block:: none +----------------+ | 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 [#]_. - 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. .. _SystemTracer: http://wiki.squeak.org/squeak/2315 .. _AppStore: https://www.apple.com/app-store/ .. _parso: https://pypi.org/project/parso/ .. _babel: https://babeljs.io/ .. _sista: https://clementbera.wordpress.com/category/sista/ .. [#] I am aware this will not be usable behind the firewall of a big organisation, but that is not the target audience. .. LocalWords: Smalltalk