4 ms·
When Pharo and Squeak people do VM development, they do it inside a special image equipped with the VMMaker package [1]. What this package has is both "slang" -
by scroot 8y ago
When Pharo and Squeak people do VM development, they do it inside a special image equipped with the VMMaker package [1]. What this package has is both "slang" -- which can easily compile to C -- and an emulator running the development VM inside the smalltalk image.
So with some exceptions, VM development occurs almost exclusively inside Smalltalk itself. In fact, this is how Alan Kay, Dan Ingalls, and others brought Squeak to life from an old Apple Smalltalk implementation. They touched C directly as minimally as possible and took the Smalltalk concept very seriously.
[1] http://pharo.gemtalksystems.com/book/Virtual-Machine/Building/VMMakerTool/ http://pharo.gemtalksystems.com/book/Virtual-Machine/Buildin...
- jecel 8y agoWhen the original Smalltalk-80 "blue book" came out in 1983, it included a complete listing of a reference implementation of the virtual machine. http://sdmeta.gforge.inria.fr/FreeBooks/BlueBook/ http://sdmeta.gforge.inria.fr/FreeBooks/BlueBook/ Instead of using Pascal or C, the code was written in a subset of Smalltalk-80 itself. This subset (later named Slang in the Squeak project in 1996) doesn't use objects nor polymorphism. It only deals with an Array of integers and only uses a few control structures, so every expression has a C equivalent. The first VM implementers at Apple, DEC, Tektronix and HP manually translated this code into Pascal, assembly or C as their starting point and then evolved their code from there. Much later it was shown that this code could actually run inside Smalltalk-80. http://ftp.squeak.org/docs/OOPSLA.Squeak.html http://ftp.squeak.org/docs/OOPSLA.Squeak.html
- scroot 8y agoYeah anyone reading this who is curious should really check out the Blue Book, it is fantastic. There is a follow up book called "Smalltalk-80: Bits of History, Words of Advice" that discusses some of those early VM implementations
- derefr 8y ago...which is not all that strange. If you were using a Lisp machine (or, say, IBM z/OS), and you wanted to do POSIX software development, you'd probably 1. use your own POSIX machine to cross-compile a POSIX ABI simulator for the target OS; and then 2. deploy a POSIX sandbox to the target, with POSIX tools like gcc inside, and continue work on things like the POSIX ABI simulator in there.