https://github.com/smarr/jssom
JsSOM - The SOM (Simple Object Machine) Smalltalk implemented in JavaScript
https://github.com/smarr/jssom
Last synced: about 1 year ago
JSON representation
JsSOM - The SOM (Simple Object Machine) Smalltalk implemented in JavaScript
- Host: GitHub
- URL: https://github.com/smarr/jssom
- Owner: smarr
- License: mit
- Created: 2014-10-08T21:47:48.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2024-06-16T16:36:34.000Z (about 2 years ago)
- Last Synced: 2024-06-16T16:59:23.257Z (about 2 years ago)
- Language: JavaScript
- Size: 417 KB
- Stars: 3
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Authors: AUTHORS.md
Awesome Lists containing this project
README
JsSOM - The SOM (Simple Object Machine) Smalltalk implemented in JavaScript
===========================================================================
Introduction
------------
[SOM][SOM-st] is a minimal Smalltalk dialect used to teach VM construction. It
was originally built at the University of Århus (Denmark) where it was used for
teaching and as the foundation for [Resilient Smalltalk][RS]. Later is was also
used for instance at the [Hasso Plattner Institute (Potsdam, Germany)][SOM].
In addition to JsSOM, [other implementations][github] exist for Java (SOM,
TruffleSOM), C (CSOM), C++ (SOM++), Python (PySOM), RPython (RPySOM,
RTruffleSOM) and Squeak/Pharo Smalltalk (AweSOM).
A simple Hello World looks like:
```Smalltalk
Hello = (
run = (
'Hello World!' println.
)
)
```
This repository contains a JavaScript-based implementation of SOM, including
SOM's standard library and a number of examples. JsSOM is a simple abstract
syntax tree interpreter. It isn't optimized or tuned for performance. However,
some aspects were easier to implement by doing node-replacement in a
self-optimizing interpreter style.
To clone the repository, please use the `--recursive` option to load all
submodules:
$ git clone --recursive https://github.com/SOM-st/JsSOM.git
JsSOM's tests can be executed with:
$ make # note, it will download the Google Closure compiler
$ ./som.sh -cp Smalltalk TestSuite/TestHarness.som
A simple Hello World program is executed with:
$ ./som.sh -cp Smalltalk Examples/Hello.som
This code is distributed under the MIT License. Please see the LICENSE file for
details. To build JsSOM, you'll further need PyYAML.
Build Status
------------
Thanks to Travis CI, all commits of this repository are tested.
The current build status is: [](https://travis-ci.org/SOM-st/JsSOM)
[SOM-st]: http://som-st.github.io
[github]: http://github.com/SOM-st/
[SOM]: http://www.hpi.uni-potsdam.de/hirschfeld/projects/som/
[RS]: http://dx.doi.org/10.1016/j.cl.2005.02.003
[big-int]:https://www.npmjs.org/package/big-integer