back

by Rochus·6y ago·view on hn ↗
Thanks. It's work in progress since I currently implement a transpiler from ST to LuaJIT bytecode which will hopefully result in a substantial speedup. The current interpreter runs decently fast on modern machines though and looks and feels like ST80 in the old days.

Also note that Squeak is not compatible with ST80 in both the bytecode and object memory format. If I succeed with my LuaJIT based implementation (i.e. if it performs better than Cog or the Graal or RPython version) I might try to make it compatible with Squeak or Pharo.

1 comments
The evolution from Apple Smalltalk to Squeak did change the object memory quite a bit but only added a few bytecodes. The Cog project added even more to the bytecodes in several steps (specially with the change of blocks into proper closures) and more recently moved to a very different object memory called Spur.
Do you happen to have specifications of the bytecodes, primitives and object memory format compared to the Blue Book? I only have a plethora of (outdated) papers and presentations, nothing systematical.
The best documentation is inside Squeak itself, specially very early ones. In later version the VM code was spun off as an external VMMaker package that you have to explicitly load.

This 2008 post in Eliot's blog shows the first changes he made to Squeak's bytecodes: http://www.mirandabanda.org/cogblog/category/cog/page/15/

Thanks.
Here is a 2016 paper about the changes to the OpenSmalltalk bytecodes:

https://rmod.inria.fr/archives/papers/Bera14a-IWST-BytecodeS...