I was thinking wrong. I thought Smalltalk is monolithic stuff, but recently I realized Smalltalk is separated into VM and image. And in this case, I can call the VM is essential part and image is just collection of applications. Language syntax is just helper to make the image code.
And this made me to have some questions.
It seems possible to run an image on any Smalltalk VM. Is this true? For example, can I run Seaside from any Smalltalk VM?
It seems all Smalltalk VMs should be fully compatible. At least in set of features and executing source codes. Is this true?
Is it possible to construct my own image on bare-bone VM? It wouldn't be practical, but should be nice for learning.
I'll try to answer your questions (thou surely other Smalltalkers here will provide more details):
- This seems it's possible running image on any Smalltalk VM. Is this possible? For example, can I run Seaside from any Smalltalk VM?
Smalltalk has many dialects, which means that there are many combinations of Image+Vm. Some of them are Pharo, Squeak, VisualWorks, Dolphin, GNU Smalltalk, Amber, Gemstone (and I'm surely missing some more). However, each image runs with its specific VM, since things like primitives or memory management are defined by each VM. As a matter of fact, depending on the Smalltalk flavor, images my be incompatible even between major releases.
Having said that, Seaside is a particular web framework, which has been ported to different Smalltalk flavors. So you can write a Seaside-based application in one St (e.g. Pharo) and export the code en import it in another St (e.g. Gemstone).
This seems all Smalltalk VMs should be fully compatible. At least in set of features and executing source codes. Is this true?
Yes, the basic conceptual idea is the same in most Smalltalks. If you want to be flavor-compatible you should try to stick to the ANSI Smalltalk specs, and you will be able (with some headaches :)) to move code across dialects. Note however that this is not a usual thing, since most of the time you will be working with a specific one (maybe the Squeak/Pharo <=> Gemstone combination is the most common and AFAIK it works quite good).
Is it possible to construct my own image on bare-bone VM? It wouldn't be practical, but should be nice for learning.
As I said before, there are many things inside an image that you should take care of in order to do that. So, technically, yes you can, practically, its hard. There were a series of blog posts by Mariano titled "Journey through the Virtual Machine” which you can find interesting. Also, AFAIK Tim Budd created Little Smalltalk as a learning source (I need to find the quote :( ). Anyway, there are countless example of people that build their own Smalltalk VM in order to learn how they work. It is a hard work, but you will definitely learn a lot (I know you asked to build an image, but it may be useful to know that you can also build a VM). Oh, you may also be interested in this link.
HTH