Hello everyone, i would like to make anyone know, what i have done during December in a collaboration with Andreas, for creating a VM, which can run multiple squeak images in separate native threads, running in parallel.
Hydra VM is codename, which we have choose to call this project :)
Currently, i had refactored enough code in Interpreter/Plugins and win32 platform-specific code to be able to load and run multiple images in same process.
There is much to be done left, but i think, at the moment, there is enough support in VM to write tests and experiment, without much risk of crashes. If you run single image, and don't start second or more, it's stable! (i'm sitting in VM, editing code during the day, saving image e.t.c. - about 8 hours or so, and no crashes ). Of course, expect crashes, when you run new image. :) But there is nuances: since i'm too lazy to look for a stripped down image with limited number of facilities, i'm using stock image to run in second thread. Of course, this is very risky , because it's trying to use everything (display/input) and this leads to crash. So, currently, to prevent that, i changed snapshot:andQuit:embedded: method to simply don't go past tests, which are running at starting image (there is a ways to detect if you running as main interpreter or not).
I'm going to make further changes to ensure, that VM will not crash, even when trying to run stock images which may think that they are interactive. Meanwhile, to one, who might have interest, you can download and start playing with it. Sorry, it's currently running on win32 platform only. If there any interest in porting to other platforms i would glad to help.
Lately, i have done implementing channels , a framework for fast and cheap inter-image communication. If you load a HydraVM package, there is already some code, which using them:
#transcript channel, used by HydraTranscript class , as a simple way to see what other image doing, by redirecting all transcript output to main, interactive, image.
#doIt channel - a channel, which listen non-interactive image, where you can send doits.
You can download VMMaker and HydraVM from here: MCHttpRepository location: 'http://jabberwocky.croquetproject.org:8889/HydraVM' user: '' password: ''
And platform source code, for building it, from here: http://squeakvm.org/svn/squeak/branches/qwaq
Any questions? ask away!