This project emerged from a bachelor's project at the HPI Software Architechture Group in the year 2017/18.
Part of the project was to modify Squeak/Smalltalk to be able to import it into the GemStone/Smalltalk ecosystem. The core modifications are necessary to use the GemStone VM instead of the Squeak VM.
The project is based on ideas first developed in Ruby MagLev. GemStone was extended by an environment concept to separate method dictionaries of classes. That way multiple different implementations of methods and even different languages could be integrated into GemStone without changing the programming environment or VM. Another project similar to this one was started, called PharoGS, where Pharo was modified the same way we did with Squeak. The project is discontinued though.
BP2017RH1
├── bug-fixes
- Temporary bug fixes for GemStone/S
├── deprecated
├── docs
├── graffics
- Graphics Library for SDL
├── GsDevKit_home
- GsDevKit_home installation
├── misc
- helper scripts and WIP tODE integration
├── monticello-environment-switch
- Monticello Extension to load packages to environments
├── squeak-environments
- SmalltalkImage and Environment classes from Squeak for Namespacing
├── squeak-modifications
- Squeak bootstrap files
├── squeak-parser
- Modified Squeak Parser for GemStone/S
├── tools
- GemStone/S tools for Squeak
└── install.sh
READMEs in the subfolders go into detail regarding installation and usage of the submodules.
Installation (Video Guide)
-
Install SDL2 using
sudo apt-get install libsdl2-dev
-
Execute and follow
install.sh
. This will also make changes to the rights management of the stone. DataCurator will be able to write System user classes, compile primitives and subclass from Behavior. -
Download
Squeak6.0alpha-17822-64bit
-
Install VMMaker using
MCMcmUpdater updateFromRepository: 'http://source.squeak.org/VMMaker'
-
Install GemStoneGUI and GsSqueakImport located in
/tools
-
Start a new GemStone session with
GSGRepositoryManager open.
and login -
Click
Load GsSqueak
. Choose the directorysqueak-modifications/squeak-diffs
. This starts the bootstrapping process from Squeak into the specified stone -
If Index support is intended run
misc/gsIndexes.tpz
in topaz -
Execute
gsSqueak.sh
to open GsSqueak
If you don't want to add GS_HOME to your path every time, add the following lines to your .profile
file and insert the path:
export GS_HOME=<path to your GsDevKit_home directory>
export PATH="$GS_HOME/bin":$PATH
GsSqueak is currently a proof of concept. The World renders, mouse clicks register and tools can be used. Crashes are excpected in the current state.
Tested Working
- Workspace
- inspector & explorer (flakey, inspecting certain objects like morphs will fail)
- Read-only browser
As the Debugger in Squeak does not handle errors yet, the call stack will be printed into your terminal after GsSqueak closes.