This project emerged from a bachelor's project at the HPI Software Architechture Group in the year 2017/18.
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.
├── bug-fixes - Temporary bug fixes for GemStone/S
├── 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
READMEs in the subfolders go into detail regarding installation and usage of the submodules.
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.
Install VMMaker using
MCMcmUpdater updateFromRepository: 'http://source.squeak.org/VMMaker'
Install GemStoneGUI and GsSqueakImport located in
Start a new GemStone session with
GSGRepositoryManager open.and login
Load GsSqueak. Choose the directory
squeak-modifications/squeak-diffs. This starts the bootstrapping process from Squeak into the specified stone
If Index support is intended run
gsSqueak.shto 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.
- 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.