Skip to content
SOM - Simple Object Machine
Branch: master
Clone or download
Pull request Compare This branch is 6 commits ahead of smarr:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
specification Added a SOM grammar based on ANTLR 4 May 21, 2019
.gitignore Added SOMCore.csp (generated by CSOM) to .gitignore Sep 29, 2013
.travis.yml Restructure Travis setup to allow for more customization Jul 5, 2019
AUTHORS Import SOM sourcecode May 13, 2012
LICENSE Get links in implementation list correct Oct 26, 2013

SOM - Simple Object Machine

SOM is a minimal Smalltalk dialect used to teach VM construction at the Hasso Plattner Institute. It was originally built at the University of Århus (Denmark) where it was also used for teaching.

Currently, implementations exist for Java (SOM), C (CSOM), C++ (SOM++), and Squeak/Pharo Smalltalk (AweSOM).

A simple SOM Hello World looks like:

Hello = (
  run = (
    'Hello World!' println.

This repository contains the standard library of SOM, without an actual SOM implementation. Please see the main project page for links to the VM implementation.

With CSOM, the given example could be executed for instance like: ./CSOM -cp Smalltalk Hello.som

AweSOM can be asked to directly evaluate a given string, for instance like: SOMUniverse new eval: '''Hello World!'' println'.'.

A version of AweSOM is available for Pharo via:

Gofer it
    url: '';
    package: 'ConfigurationOfAweSOM';
(Smalltalk at: #ConfigurationOfAweSOM) loadDevelopment

To install it into a recent Squeak, use the following expression:

Installer ss3
    project: 'AweSOM';
    install: 'ConfigurationOfAweSOM'.
(Smalltalk at: #ConfigurationOfAweSOM) perform: #loadDevelopment

Information on previous authors are included in the AUTHORS file. This code is distributed under the MIT License. Please see the LICENSE file for details.

Build Status

Thanks to Travis CI, all commits of this repository are tested. The current build status is: Build Status

The build status of the SOM implementations is as follows:

  • CSOM: CSOM Build Status
  • SOM (Java): SOM Java Build Status
  • PySOM: PySOM Build Status
  • RPySOM: RPySOM Build Status
  • TruffleSOM: TruffleSOM Build Status
You can’t perform that action at this time.