Hi
I just discovered Mirage and am quite fascinated by it. Is anyone aware of attempts to use Mirage OS as a host for a virtual machine supporting another language? In my case I am wondering if Mirage could host the VM that runs the Pharo
Smalltalk virtual image. http://pharo.org/ .
A bit of back ground, most Smalltalk systems consist of two components, a virtual image which contains the entire state of the system including classes, method bytecodes, user data etc. and a virtual machine that runs the image. The image
is usually bit compatible from host OS to host OS. Pharo Smalltalk is part of the Squeak family of Smalltalk where the VM is written in a dialect of Smalltalk called Slang, from this C code is generated with some variations depending on host. The C code is
then complied using the platform compiler. To ease portability the Squeak family asks as little of the host as possible, typically just memory, storage, network, a single windowed drawing surface and, user input events. In particular no UI or graphics system
calls, the Squeak windowing system is rendered by Squeak itself. For servers Squeak can be made to run headless without any UI.
There is a Squeak project underway to create an “embeddable” version of Squeak. If that existed as a C library would it be possible in principle to host that library on Mirage OS? Any ideas on how to proceed? I looked at
http://openmirage.org/blog/modular-foreign-function-bindings and if I understand correctly it looks like a c library could be linked to Mirage and Mirage configured so as to call the
entry point on boot. The Library could then call back into Mirage to set sockets and other resources.
If this worked for the Squeak VM I image a similar approach could be to host other languages, for example Scheme. Actually now that I think of it a small embeddable Scheme system may be a simpler place to start.
Any comments welcome, apologies if any of this is hopelessly naïve as regards Mirage.
Joerg