Hi, Tony,
At Wed, 16 Feb 2011 19:15:39 -0500, Tony Garnock-Jones wrote:
Hi Yoshiki,
Thanks very much for SqueakBootstrapper. It's a most interesting idea!
Hehe, thanks. "Most interesting" is probably overstatement^^;
I'd like to experiment further with the code you've shared, but I am having trouble getting your SqueakBootstrapper.image to start, and so I hope you don't mind if I ask a few questions, namely:
- Which virtual machine are you using it with?
Any pre-Cog VM should work. On Windows. I happened to use 3.11.8.
- How different is the MObject hierarchy inside it from the MObject hierarchy in John's original (current) MicroSqueak? Could I start from John's MObject code and simply add your MCompiler code?
John's version for example didn't have SymbolTable for example. The host image is a weird amalgam of 3.8-based image with some trunk ideas such as method properties so AdditionalMethodState has its counterpart in MObject. It is quite possible to start from John's MObject code and add MCompiler related code. There will be a lot of unimplemented methods, so you need to add these also. You can check them by "MicroSqueak unimplemented", and it should work (mostly).
But there are other differences. Some of the collection classes were adapted from the trunk version and then I had a whisper of Bad Idea Bears to make "Dictionary be identity-based and make a class called "EqualityDictionary" for equality-based dictionary. I still like the idea that the default behavior of a Dictionary is identity-based and with MicroSqueak, I can make that kind of changes without worry about what other Squeaks do... But these changes does not affect the Compiler much but certain places I changed them because of it.
I actually made a similar thing but a bit different; a MicroSqueak-derived image and some files that lets you write OMeta2 grammar in text file and process things from command line. In that one, classes and methods are more closer to John's MicroSqueak. (But to support the compiler the other classes needed some more methods.)
- Alternatively, would you be willing to provide fileouts of the MObject and MicroSqueak code from your dev image that others could file in to theirs?
The image should run. But the iamge is still BlockContext-based, and if you want to use it with the latest trunk image for example, you need fto fix it.
Again, thanks very much for sharing your work.
You're welcome!
-- Yoshiki